[visionegg] help on viewport
- From: alessandra.stella@xxxxxx
- To: visionegg@xxxxxxxxxxxxx
- Date: Fri, 22 Apr 2005 16:20:25 +0200
Hello Everyone,
I have a script that shows two grating stimuli. Ideally, at first the gratings
stay still and after one second they start flickering. This routine has
to be repeated, say, four times. I have a "for" loop to do that but the
gratings remain still just the first run and they, instead to appear still,
disappear for the following three runs. Being a "for" loop the "viewport"
for the first part is the same; I don't understand why the first time it
works and the followings it doesn't ...
I have attached the script below.
Any help is really appreciated!
Cheers!
Alessandra
import os
import VisionEgg
import VisionEgg.Daq
import random
VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
#VisionEgg.logger.setLevel( VisionEgg.logging.DEBUG )
from VisionEgg.Core import *
from VisionEgg.FlowControl import Presentation
from VisionEgg.Gratings import *
from VisionEgg.Textures import *
from VisionEgg.MoreStimuli import *
from math import *
from VisionEgg.DaqLPT import *
import VisionEgg.ParameterTypes as ve_types
import time
from VisionEgg.Text import *
screen = get_default_screen()
screen.parameters.bgcolor = (0,0,0,1.0)
ecc=150
temporal_freq1 = 8
temporal_freq2 = 12
LPT1 = 0x378
BIT0 = 0x01 # pin 2 on DB25 connector
BIT1 = 0x02 # pin 3 on DB25 connector
BIT2 = 0x04 # pin 4 on DB25 connector
bit0_set = False
bit1_set = False
bit2_set = False
fixation_p = FixationCross(position= (screen.size[0]/2,screen.size[1]/2),
size=(25,25),
texture_size=(30,30))
fixation_p2 = FixationCross(position= (screen.size[0]/2,screen.size[1]/2),
size=(25,25),
texture_size=(30,30))
grating_ds = SinGrating2D( contrast = 0.75,
position = ((screen.size[0]/2+ecc),
(screen.size[1]/2+ecc)),
size = ( 150 , 150 ),
spatial_freq = 0.02,
orientation = 90.0,
temporal_freq_hz = 0.0,)
grating_sx = SinGrating2D( contrast = 0.75,
position = ((screen.size[0]/2-ecc),
(screen.size[1]/2+ecc)),
size = ( 150 , 150 ),
spatial_freq = 0.02,
orientation = 90.0,
temporal_freq_hz = 0.0,)
filename_cue_sx =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","cue_v_quadr.png")
texture_cue_sx = Texture(filename_cue_sx)
cue_sx = TextureStimulus(texture=texture_cue_sx,
position =
((screen.size[0]/2)-15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_cue_ds =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","cue_v_quadr.png")
texture_cue_ds = Texture(filename_cue_ds)
cue_ds = TextureStimulus(texture=texture_cue_ds,
position =
((screen.size[0]/2)+15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_quad =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","quadrato.png")
texture_quad = Texture(filename_quad)
quad = TextureStimulus(texture=texture_quad,
position =
((screen.size[0]/2)-15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_quad1 =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","quadrato.png")
texture_quad1 = Texture(filename_quad1)
quad1 = TextureStimulus(texture=texture_quad1,
position =
((screen.size[0]/2)+15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
def update_lpt():
global bit0_set, bit1_set, bit2_set
out_value = ((bit0_set and BIT0) | (bit1_set and BIT1) |
(bit2_set and BIT2))
raw_lpt_module.out(LPT1,out_value)
def get_target_color_ds(t):
val0 = 0.75+0.25*sin((temporal_freq1*2)*pi*t)
if (val0 >= 0.75):
val1 = 1
elif (val0 < 0.75):
val1 = 0
return (val1,val1,val1,1.0)
def get_target_color_sx(t):
val0 = 0.75+0.25*sin((temporal_freq2*2)*pi*t)
if (val0 >= 0.75):
val1 = 1
elif (val0 < 0.75):
val1 = 0
return (val1,val1,val1,1.0)
def on_go_loop_enter_exit_controller_fp(**kw):
global bit0_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit0_set = 1
update_lpt()
else:
bit0_set = 0
update_lpt()
def on_go_loop_enter_exit_controller_ds(**kw):
global bit1_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit1_set = 1
update_lpt()
else:
bit1_set = 0
update_lpt()
def on_go_loop_enter_exit_controller_sx(**kw):
global bit2_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit2_set = 1
update_lpt()
else:
bit2_set = 0
update_lpt()
def add_trigger_controllers(p):
viewports = p.parameters.viewports
for viewport in viewports:
if cue_ds in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_ds,
between_go_func=on_go_loop_enter_exit_controller_ds,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
for viewport in viewports:
if cue_sx in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_sx,
between_go_func=on_go_loop_enter_exit_controller_sx,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
for viewport in viewports:
if fixation_p2 in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_fp,
between_go_func=on_go_loop_enter_exit_controller_fp,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
viewport1 = Viewport( screen=screen, stimuli=[grating_ds, grating_sx,fixation_p,
quad, quad1] )
viewport2 = Viewport( screen=screen, stimuli=[grating_ds,
grating_sx,fixation_p2,
quad, quad1] )
viewport3 = Viewport( screen=screen, stimuli=[grating_ds, grating_sx,fixation_p,
cue_ds, quad] )
viewport4 = Viewport( screen=screen, stimuli=[grating_ds, grating_sx,fixation_p,
quad1, cue_sx] )
lista = [viewport3,viewport4]
for i in range (1,4):
a = Presentation(go_duration=(1,'seconds'),viewports=[viewport1])
a.go()
b = Presentation(go_duration=(2,'seconds'),viewports=[viewport2])
add_trigger_controllers(b)
b.add_controller(grating_ds,'color1',FunctionController(during_go_func=get_target_color_ds))
b.add_controller(grating_sx,'color1',FunctionController(during_go_func=get_target_color_sx))
b.go()
c = Presentation(go_duration=(3,'seconds'),viewports=[random.choice(lista)])
add_trigger_controllers(c)
c.add_controller(grating_ds,'color1',FunctionController(during_go_func=get_target_color_ds))
c.add_controller(grating_sx,'color1',FunctionController(during_go_func=get_target_color_sx))
c.go()
a = Presentation(go_duration=(1,'seconds'),viewports=[viewport1])
a.go()
import os
import VisionEgg
import VisionEgg.Daq
import random
VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
#VisionEgg.logger.setLevel( VisionEgg.logging.DEBUG )
from VisionEgg.Core import *
from VisionEgg.FlowControl import Presentation
from VisionEgg.Gratings import *
from VisionEgg.Textures import *
from VisionEgg.MoreStimuli import *
from math import *
from VisionEgg.DaqLPT import *
import VisionEgg.ParameterTypes as ve_types
import time
from VisionEgg.Text import *
# attenzione : risoluzione monitor 1280x1024
screen = get_default_screen()
screen.parameters.bgcolor = (0,0,0,1.0)
ecc=150
temporal_freq1 = 8
temporal_freq2 = 12
LPT1 = 0x378
BIT0 = 0x01 # pin 2 on DB25 connector
BIT1 = 0x02 # pin 3 on DB25 connector
BIT2 = 0x04 # pin 4 on DB25 connector
bit0_set = False
bit1_set = False
bit2_set = False
fixation_p = FixationCross(position= (screen.size[0]/2,screen.size[1]/2),
size=(25,25),
texture_size=(30,30))
fixation_p2 = FixationCross(position= (screen.size[0]/2,screen.size[1]/2),
size=(25,25),
texture_size=(30,30))
grating_ds = SinGrating2D( contrast = 0.75,
position = ((screen.size[0]/2+ecc),
(screen.size[1]/2+ecc)),
size = ( 150 , 150 ),
spatial_freq = 0.02,
orientation = 90.0,
temporal_freq_hz = 0.0,)
grating_sx = SinGrating2D( contrast = 0.75,
position = ((screen.size[0]/2-ecc),
(screen.size[1]/2+ecc)),
size = ( 150 , 150 ),
spatial_freq = 0.02,
orientation = 90.0,
temporal_freq_hz = 0.0,)
filename_cue_sx =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","cue_v_quadr.png")
texture_cue_sx = Texture(filename_cue_sx)
cue_sx = TextureStimulus(texture=texture_cue_sx,
position =
((screen.size[0]/2)-15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_cue_ds =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","cue_v_quadr.png")
texture_cue_ds = Texture(filename_cue_ds)
cue_ds = TextureStimulus(texture=texture_cue_ds,
position =
((screen.size[0]/2)+15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_quad =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","quadrato.png")
texture_quad = Texture(filename_quad)
quad = TextureStimulus(texture=texture_quad,
position =
((screen.size[0]/2)-15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
filename_quad1 =
os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","quadrato.png")
texture_quad1 = Texture(filename_quad1)
quad1 = TextureStimulus(texture=texture_quad1,
position =
((screen.size[0]/2)+15,(screen.size[1]/2)+15),
anchor = 'center',
size = (10.0,10.0),
shrink_texture_ok = 1)
def update_lpt():
global bit0_set, bit1_set, bit2_set
out_value = ((bit0_set and BIT0) | (bit1_set and BIT1) |
(bit2_set and BIT2))
raw_lpt_module.out(LPT1,out_value)
def get_target_color_ds(t):
val0 = 0.75+0.25*sin((temporal_freq1*2)*pi*t)
if (val0 >= 0.75):
val1 = 1
elif (val0 < 0.75):
val1 = 0
return (val1,val1,val1,1.0)
def get_target_color_sx(t):
val0 = 0.75+0.25*sin((temporal_freq2*2)*pi*t)
if (val0 >= 0.75):
val1 = 1
elif (val0 < 0.75):
val1 = 0
return (val1,val1,val1,1.0)
def on_go_loop_enter_exit_controller_fp(**kw):
global bit0_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit0_set = 1
update_lpt()
else:
bit0_set = 0
update_lpt()
def on_go_loop_enter_exit_controller_ds(**kw):
global bit1_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit1_set = 1
update_lpt()
else:
bit1_set = 0
update_lpt()
def on_go_loop_enter_exit_controller_sx(**kw):
global bit2_set
entering_go_loop = bool( len(kw))
if entering_go_loop:
bit2_set = 1
update_lpt()
else:
bit2_set = 0
update_lpt()
def add_trigger_controllers(p):
viewports = p.parameters.viewports
for viewport in viewports:
if cue_ds in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_ds,
between_go_func=on_go_loop_enter_exit_controller_ds,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
for viewport in viewports:
if cue_sx in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_sx,
between_go_func=on_go_loop_enter_exit_controller_sx,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
for viewport in viewports:
if fixation_p2 in viewport.parameters.stimuli:
p.add_controller(None,None,FunctionController(during_go_func=on_go_loop_enter_exit_controller_fp,
between_go_func=on_go_loop_enter_exit_controller_fp,
eval_frequency =
VisionEgg.FlowControl.TRANSITIONS,
return_type =
ve_types.get_type(None),
))
break
viewport1 = Viewport( screen=screen, stimuli=[grating_ds,
grating_sx,fixation_p, quad, quad1] )
viewport2 = Viewport( screen=screen, stimuli=[grating_ds,
grating_sx,fixation_p2, quad, quad1] )
viewport3 = Viewport( screen=screen, stimuli=[grating_ds,
grating_sx,fixation_p, cue_ds, quad] )
viewport4 = Viewport( screen=screen, stimuli=[grating_ds,
grating_sx,fixation_p, quad1, cue_sx] )
lista = [viewport3,viewport4]
for i in range (1,4):
a = Presentation(go_duration=(1,'seconds'),viewports=[viewport1])
a.go()
b = Presentation(go_duration=(2,'seconds'),viewports=[viewport2])
add_trigger_controllers(b)
b.add_controller(grating_ds,'color1',FunctionController(during_go_func=get_target_color_ds))
b.add_controller(grating_sx,'color1',FunctionController(during_go_func=get_target_color_sx))
b.go()
c = Presentation(go_duration=(3,'seconds'),viewports=[random.choice(lista)])
add_trigger_controllers(c)
c.add_controller(grating_ds,'color1',FunctionController(during_go_func=get_target_color_ds))
c.add_controller(grating_sx,'color1',FunctionController(during_go_func=get_target_color_sx))
c.go()
a = Presentation(go_duration=(1,'seconds'),viewports=[viewport1])
a.go()
- Follow-Ups:
- [visionegg] Re: help on viewport
- From: Andrew Straw
Other related posts:
- » [visionegg] help on viewport
- » [visionegg] Re: help on viewport
- [visionegg] Re: help on viewport
- From: Andrew Straw