def init_tracker(self): self.tracker = eyelinker.EyeLinker( self.experiment_window, self.experiment_name + '_' + self.experiment_info['Subject Number'] + '.edf', 'BOTH') self.tracker.initialize_graphics() self.tracker.open_edf() self.tracker.initialize_tracker() self.tracker.send_tracking_settings()
from psychopy import visual import eyelinker monitor = monitors.Monitor('test_monitor', width=53, distance=70) monitor.setSizePix([1920, 1080]) win = visual.Window([800, 600], units="pix", color=[0, 0, 0], monitor=monitor) text_stim = visual.TextStim(win, 'Beginning EyeLinker test...') text_stim.draw() win.flip() # Will attempt to default to MockEyeLinker if no tracker connected tracker = eyelinker.EyeLinker(win, 'test.edf', 'BOTH') # initialize tracker.initialize_graphics() tracker.open_edf() tracker.initialize_tracker() tracker.send_tracking_settings() print('Initalization tests passed...') time.sleep(1) win.flip() # most basic functionality tracker.display_eyetracking_instructions() tracker.setup_tracker() # forced setup tracker.calibrate() # choice given tracker.send_status('Recording...')
def run(self): self.chdir() print('Note: EDF file will be overwritten if identical subject numbers are used!') ok = self.get_experiment_info_from_dialog(self.questionaire_dict) if not ok: print('Experiment has been terminated.') sys.exit(1) self.save_experiment_info() self.open_csv_data_file() self.open_window(screen=0) self.display_text_screen('Loading...', wait_for_input=False) self.tracker = eyelinker.EyeLinker( self.experiment_window, 'CDET' + self.experiment_info['Subject Number'] + '.edf', 'BOTH' ) self.tracker.initialize_graphics() self.tracker.open_edf() self.tracker.initialize_tracker() self.tracker.send_calibration_settings() for instruction in self.instruct_text: self.display_text_screen(text=instruction) self.tracker.display_eyetracking_instructions() conditions = ['FreeGaze', 'Fixated'] random.shuffle(conditions) for condition in conditions: if condition == 'FreeGaze': self.display_text_screen(text=freegaze_instruct_text) else: self.display_text_screen(text=fixated_instruct_text) for block_num in range(self.number_of_blocks): block = self.make_block() self.tracker.setup_tracker() self.display_text_screen(text='Get ready...', wait_for_input=False) psychopy.core.wait(2) for trial_num, trial in enumerate(block): self.tracker.send_message('BLOCK %d' % block_num) self.tracker.send_message('TRIAL %d' % trial_num) status = '%s: Block %d, Trial %d' % (condition, block_num, trial_num) self.tracker.send_status(status) self.tracker.start_recording() data = self.run_trial(trial, block_num, trial_num) self.tracker.stop_recording() data.update({'Condition': condition}) self.send_data(data) self.save_data_to_csv() if block_num + 1 != self.number_of_blocks: self.display_break() if condition == 'FreeGaze': self.display_text_screen(text='Remember:\n\n' + freegaze_instruct_text) else: self.display_text_screen(text='Remember:\n\n' + fixated_instruct_text) self.display_text_screen( 'The experiment is now over, please get your experimenter.', bg_color=[0, 0, 255], text_color=[255, 255, 255], wait_for_input=False) psychopy.core.wait(10) self.quit_experiment()