[visionegg] Re: help on viewport

Hi Alessandra,

Don't forget to re-set the value of color1 that your controllers changed:

after the "b.go()" and "c.go()" lines:

   grating_ds.parameters.color1 = (1,1,1,1) # or whaterver color you want
   grating_sx.parameters.color1 = (1,1,1,1)


alessandra.stella@xxxxxx wrote:

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()





--
Andrew D. Straw  Post-doctoral scholar
,-.              Dickinson Lab
\_/              California Institute of Technology
8||}             Mailcode 138-78
/ \              Pasadena CA 91125, USA
`-^
                email:  astraw@xxxxxxxxxxx
                 office: +1 626 395 5828


====================================== The Vision Egg mailing list Archives: http://www.freelists.org/archives/visionegg Website: http://www.visionegg.org/mailinglist.html

Other related posts: