Home | Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 # 3 # The Vision Egg: FlatGratingServer 4 # 5 # Copyright (C) 2001-2003 Andrew Straw. 6 # Author: Andrew Straw <astraw@users.sourceforge.net> 7 # URL: <http://www.visionegg.org/> 8 # 9 # Distributed under the terms of the GNU Lesser General Public License 10 # (LGPL). See LICENSE.TXT that came with this file. 11 # 12 # $Id$ 13 14 """Handle sinusoidal gratings (server-side)""" 15 16 import VisionEgg, string 17 __version__ = VisionEgg.release_name 18 __cvs__ = string.split('$Revision$')[1] 19 __date__ = string.join(string.split('$Date$')[1:3], ' ') 20 __author__ = 'Andrew Straw <astraw@users.sourceforge.net>' 21 22 import sys, os, math 23 import VisionEgg.Core 24 import VisionEgg.FlowControl 25 import VisionEgg.Gratings 26 import VisionEgg.PyroHelpers 27 import Pyro.core 28 29 from VisionEgg.PyroApps.FlatGratingGUI import FlatGratingMetaParameters 309833 34 # get stimulus 35 assert( stimuli[0][0] == '2d_overlay') 36 grating = stimuli[0][1] 37 38 Pyro.core.ObjBase.__init__(self) 39 self.meta_params = FlatGratingMetaParameters() 40 if not isinstance(screen,VisionEgg.Core.Screen): 41 raise ValueError("Expecting instance of VisionEgg.Core.Screen") 42 if not isinstance(presentation,VisionEgg.FlowControl.Presentation): 43 raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation") 44 if not isinstance(grating,VisionEgg.Gratings.SinGrating2D): 45 raise ValueError("Expecting instance of VisionEgg.Gratings.SinGrating2D") 46 self.p = presentation 47 self.stim = grating 48 49 screen.parameters.bgcolor = (0.5, 0.5, 0.5, 0.0) 50 51 self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController( 52 during_go_func=self.on_function_during_go, 53 between_go_func=self.on_function_between_go))54 5860 """Compute when the grating is on""" 61 if t <= self.meta_params.pre_stim_sec: 62 return 0 # not on yet 63 elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec): 64 return 1 # on 65 else: 66 return 0 # off again67 71 7476 if isinstance(new_parameters, FlatGratingMetaParameters): 77 self.meta_params = new_parameters 78 else: 79 raise ValueError("Argument to set_parameters must be instance of FlatGratingMetaParameters") 80 self.update()8183 stim_params = self.stim.parameters # shorthand 84 meta_params = self.meta_params # shorthand 85 stim_params.contrast = meta_params.contrast 86 stim_params.orientation = meta_params.orient 87 stim_params.spatial_freq = meta_params.sf 88 stim_params.temporal_freq_hz = meta_params.tf 89 stim_params.size = (meta_params.size_x, meta_params.size_y) 90 stim_params.position = (meta_params.center_x, meta_params.center_y) 91 self.p.parameters.go_duration = ( meta_params.pre_stim_sec + meta_params.stim_sec + meta_params.post_stim_sec, 'seconds')92 9597 self.p.parameters.quit = 1100 return FlatGratingExperimentMetaController101103 stimulus = VisionEgg.Gratings.SinGrating2D( spatial_freq=1.0/100.0, # wavelength = 100 pixels 104 temporal_freq_hz = 1.0, 105 anchor='center', 106 ) 107 return [('2d_overlay',stimulus)]108 111 112 # Don't do anything unless this script is being run 113 if __name__ == '__main__': 114 115 pyro_server = VisionEgg.PyroHelpers.PyroServer() 116 117 screen = VisionEgg.Core.Screen.create_default() 118 119 # get Vision Egg stimulus ready to go 120 stimuli = make_stimuli() 121 stimulus = stimuli[0][1] 122 viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus]) 123 p = VisionEgg.FlowControl.Presentation(viewports=[viewport]) 124 125 # now hand over control of grating and mask to FlatGratingExperimentMetaController 126 meta_controller = FlatGratingExperimentMetaController(screen,p,stimuli) 127 pyro_server.connect(meta_controller,get_meta_controller_stimkey()) 128 129 # get listener controller and register it 130 p.add_controller(None,None, pyro_server.create_listener_controller()) 131 132 # enter endless loop 133 p.run_forever() 134
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0beta1 on Sat Jun 7 09:06:47 2008 | http://epydoc.sourceforge.net |