def __init__(self, win, timing, colors, mark_mode, input_mode): self.win = win self.timing = timing self.colors = colors self.mark_mode = mark_mode self.input_mode = input_mode if self.input_mode == 'RTBox': if RTBOXLIB_EXISTS: self.RTBox = RTBox() self.RTBox.prep() else: print "RTBox drivers not found, defaulting to keyboard" self.input_mode = "Keyboard" self.calib_seq = [201, 251, 101, 151, 51, 1] self.fixation = visual.TextStim(self.win, text='+', alignHoriz='center', alignVert='center', units='norm', pos=(0, 0), height=0.3, color=[255, 255, 255], colorSpace='rgb255', wrapWidth=2) self.cue = visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(0, 0), lineWidth=15, lineColor=self.colors['blue']) self.search_keymap = {'1': 'left', '2': 'right', '3': 'invalid', '4': 'invalid'} self.search = {} self.search['top'] = visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(0, 0.2), lineWidth=15, lineColor=self.colors['red']) self.search['bot'] = visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(0, -0.2), lineWidth=15, lineColor=self.colors['green']) line_color = (255, 255, 255) self.line = {} self.line[('top', 'left')] = visual.Line(self.win, lineColor=line_color, units='height', start=(-0.06, 0.26), end=(0.06, 0.14), lineWidth=15, lineColorSpace='rgb255') self.line[('top', 'right')] = visual.Line(self.win, lineColor=line_color, units='height', start=(0.06, 0.26), end=(-0.06, 0.14), lineWidth=15, lineColorSpace='rgb255') self.line[('top', 'straight')] = visual.Line(self.win, lineColor=line_color, units='height', start=(0, 0.26), end=(0, 0.14), lineWidth=15, lineColorSpace='rgb255') self.line[('bot', 'left')] = visual.Line(self.win, lineColor=line_color, units='height', start=(-0.06, -0.14), end=(0.06, -0.26), lineWidth=15, lineColorSpace='rgb255') self.line[('bot', 'right')] = visual.Line(self.win, lineColor=line_color, units='height', start=(0.06, -0.14), end=(-0.06, -0.26), lineWidth=15, lineColorSpace='rgb255') self.line[('bot', 'straight')] = visual.Line(self.win, lineColor=line_color, units='height', start=(0, -0.26), end=(0, -0.14), lineWidth=15, lineColorSpace='rgb255') self.mem_keymap = { '1': 'blue', '2': 'yellow', '3': 'green', '4': 'red'} self.memory = [] self.memory.append(visual.TextStim(self.win, text='Which color do you remember?', font='Helvetica', alignHoriz='center', alignVert='center', units='norm', pos=(0, 0.5), height=0.1, color=[255, 255, 255], colorSpace='rgb255', wrapWidth=2)) self.memory.append(visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(-0.45, 0), lineWidth=15, lineColor=self.colors[self.mem_keymap['1']])) self.memory.append(visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(-0.15, 0), lineWidth=15, lineColor=self.colors[self.mem_keymap['2']])) self.memory.append(visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(0.15, 0), lineWidth=15, lineColor=self.colors[self.mem_keymap['3']])) self.memory.append(visual.Circle(self.win, units='height', radius=0.1, fillColorSpace='rgb255', lineColorSpace='rgb255', fillColor=(0, 0, 0), pos=(0.45, 0), lineWidth=15, lineColor=self.colors[self.mem_keymap['4']])) self.memory.append(visual.TextStim(self.win, text='1', font='Helvetica', alignHoriz='center', alignVert='center', units='height', pos=(-0.45, 0), height=0.1, color=[255, 255, 255], colorSpace='rgb255')) self.memory.append(visual.TextStim(self.win, text='2', font='Helvetica', alignHoriz='center', alignVert='center', units='height', pos=(-0.15, 0), height=0.1, color=[255, 255, 255], colorSpace='rgb255')) self.memory.append(visual.TextStim(self.win, text='3', font='Helvetica', alignHoriz='center', alignVert='center', units='height', pos=(0.15, 0), height=0.1, color=[255, 255, 255], colorSpace='rgb255')) self.memory.append(visual.TextStim(self.win, text='4', font='Helvetica', alignHoriz='center', alignVert='center', units='height', pos=(0.45, 0), height=0.1, color=[255, 255, 255], colorSpace='rgb255')) if not TESTING: if self.mark_mode == 'Plexon': self.plexon = PlexClient.PlexClient() self.plexon.InitClient() if not self.plexon.IsSortClientRunning(): raise Exception('Please start Sort Client to use Plexon.') print 'Using Plexon' elif self.mark_mode == 'NI-DAQ': print 'Using NI-DAQ' elif self.mark_mode == 'Photodiode': print 'Using Photodiode' else: raise Exception('Event marking mode unknown')