1
2
3
4
5
6
7
8
9
10
11
12
13
14 """Handle sinusoidal gratings (client-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
23 import Tkinter
24 import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
25
28
42
44 title = "Grating (2D) Experiment"
45 - def __init__(self, master=None, suppress_go_buttons=0,**kw):
46 client_utils.StimulusControlFrame.__init__(self,
47 master,
48 suppress_go_buttons,
49 FlatGratingControlFrame.title,
50 FlatGratingMetaParameters,
51 **kw)
52
53 param_frame = self.param_frame
54
55
56 param_frame.columnconfigure(0,weight=1)
57 param_frame.columnconfigure(1,weight=1)
58
59 pf_row = 0
60 Tkinter.Label(param_frame,text="Contrast:").grid(row=pf_row,column=0)
61 self.contrast_tk_var = Tkinter.DoubleVar()
62 self.contrast_tk_var.set(self.meta_params.contrast)
63 self.make_callback_entry(textvariable=self.contrast_tk_var).grid(row=pf_row,column=1)
64 self.loopable_variables["Contrast"] = ("contrast",self.contrast_tk_var)
65
66 pf_row += 1
67 Tkinter.Label(param_frame,text="Orientation (deg):").grid(row=pf_row,column=0)
68 self.orient_tk_var = Tkinter.DoubleVar()
69 self.orient_tk_var.set(self.meta_params.orient)
70 self.make_callback_entry(textvariable=self.orient_tk_var).grid(row=pf_row,column=1)
71 self.loopable_variables["Orientation"] = ("orient",self.orient_tk_var)
72
73 pf_row += 1
74 Tkinter.Label(param_frame,text="Spatial frequency (Cpp):").grid(row=pf_row,column=0)
75 self.sf_tk_var = Tkinter.DoubleVar()
76 self.sf_tk_var.set(self.meta_params.sf)
77 self.make_callback_entry(textvariable=self.sf_tk_var).grid(row=pf_row,column=1)
78 self.loopable_variables["Spatial frequency"] = ("sf",self.sf_tk_var)
79
80 pf_row += 1
81 Tkinter.Label(param_frame,text="Temporal frequency (Hz):").grid(row=pf_row,column=0)
82 self.tf_tk_var = Tkinter.DoubleVar()
83 self.tf_tk_var.set(self.meta_params.tf)
84 self.make_callback_entry(textvariable=self.tf_tk_var).grid(row=pf_row,column=1)
85 self.loopable_variables["Temporal frequency"] = ("tf",self.tf_tk_var)
86
87 pf_row += 1
88 Tkinter.Label(param_frame,text="Size X (pixels):").grid(row=pf_row,column=0)
89 self.size_x_tk_var = Tkinter.DoubleVar()
90 self.size_x_tk_var.set(self.meta_params.size_x)
91 self.make_callback_entry(textvariable=self.size_x_tk_var).grid(row=pf_row,column=1)
92 self.loopable_variables["Size X"] = ("size_x",self.size_x_tk_var)
93
94 pf_row += 1
95 Tkinter.Label(param_frame,text="Size Y (pixels):").grid(row=pf_row,column=0)
96 self.size_y_tk_var = Tkinter.DoubleVar()
97 self.size_y_tk_var.set(self.meta_params.size_y)
98 self.make_callback_entry(textvariable=self.size_y_tk_var).grid(row=pf_row,column=1)
99 self.loopable_variables["Size Y"] = ("size_y",self.size_y_tk_var)
100
101 pf_row += 1
102 Tkinter.Label(param_frame,text="Center X (pixels):").grid(row=pf_row,column=0)
103 self.center_x_tk_var = Tkinter.DoubleVar()
104 self.center_x_tk_var.set(self.meta_params.center_x)
105 self.make_callback_entry(textvariable=self.center_x_tk_var).grid(row=pf_row,column=1)
106 self.loopable_variables["Center X"] = ("center_x",self.center_x_tk_var)
107
108 pf_row += 1
109 Tkinter.Label(param_frame,text="Center Y (pixels):").grid(row=pf_row,column=0)
110 self.center_y_tk_var = Tkinter.DoubleVar()
111 self.center_y_tk_var.set(self.meta_params.center_y)
112 self.make_callback_entry(textvariable=self.center_y_tk_var).grid(row=pf_row,column=1)
113 self.loopable_variables["Center Y"] = ("center_y",self.center_y_tk_var)
114
115 pf_row += 1
116 Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0)
117 self.prestim_dur_tk_var = Tkinter.DoubleVar()
118 self.prestim_dur_tk_var.set(self.meta_params.pre_stim_sec)
119 self.make_callback_entry(textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=1)
120
121 pf_row += 1
122 Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0)
123 self.stim_dur_tk_var = Tkinter.DoubleVar()
124 self.stim_dur_tk_var.set(self.meta_params.stim_sec)
125 self.make_callback_entry(textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=1)
126
127 pf_row += 1
128 Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0)
129 self.poststim_dur_tk_var = Tkinter.DoubleVar()
130 self.poststim_dur_tk_var.set(self.meta_params.post_stim_sec)
131 self.make_callback_entry(textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=1)
132
134 return "flat_grating"
135
137 self.contrast_tk_var.set( self.meta_params.contrast )
138 self.orient_tk_var.set( self.meta_params.orient )
139 self.sf_tk_var.set( self.meta_params.sf )
140 self.tf_tk_var.set( self.meta_params.tf )
141 self.size_x_tk_var.set( self.meta_params.size_x )
142 self.size_y_tk_var.set( self.meta_params.size_y )
143 self.center_x_tk_var.set( self.meta_params.center_x )
144 self.center_y_tk_var.set( self.meta_params.center_y )
145 self.prestim_dur_tk_var.set( self.meta_params.pre_stim_sec )
146 self.stim_dur_tk_var.set( self.meta_params.stim_sec )
147 self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
148
150 self.meta_params.contrast = self.contrast_tk_var.get()
151 self.meta_params.orient = self.orient_tk_var.get()
152 self.meta_params.sf = self.sf_tk_var.get()
153 self.meta_params.tf = self.tf_tk_var.get()
154 self.meta_params.size_x = self.size_x_tk_var.get()
155 self.meta_params.size_y = self.size_y_tk_var.get()
156 self.meta_params.center_x = self.center_x_tk_var.get()
157 self.meta_params.center_y = self.center_y_tk_var.get()
158 self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
159 self.meta_params.stim_sec = self.stim_dur_tk_var.get()
160 self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
161 if self.connected:
162 self.meta_controller.set_parameters( self.meta_params )
163
165 self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
166 self.meta_params.stim_sec = self.stim_dur_tk_var.get()
167 self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
168 return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
169
170 if __name__=='__main__':
171 frame = FlatGratingControlFrame()
172 frame.pack(expand=1,fill=Tkinter.BOTH)
173 frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
174 frame.mainloop()
175