From 6450c16bed9492ccad725e287827f21c33b4ef70 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 23 Mar 2022 14:24:26 -0500 Subject: [PATCH] Lots of updates: Changin Necker instructions, making Necker default, removing binocular rivalry from default. And many more. --- .DS_Store | Bin 0 -> 8196 bytes Images/neckerInstruction.tif | Bin 0 -> 127132 bytes SaccadePursuit.py | 9 +- SaccadePursuitEyeTracking.py | 109 ++++- Screening.py | 849 +++++++++++++++++++++++++++++++++++ calibrate.py | 63 +++ eyelinker.py | 546 +++++++++++----------- template.py | 19 +- 8 files changed, 1289 insertions(+), 306 deletions(-) create mode 100644 .DS_Store create mode 100644 Images/neckerInstruction.tif mode change 100755 => 100644 SaccadePursuit.py mode change 100755 => 100644 SaccadePursuitEyeTracking.py create mode 100644 Screening.py create mode 100644 calibrate.py mode change 100755 => 100644 eyelinker.py mode change 100755 => 100644 template.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0b92519632e234d3cd9cf4c3bc98e9343232e2fa GIT binary patch literal 8196 zcmeHML2nyH6n>M2c1;qxNn;wIAPZlR8l@>TP{e_))2dh?#fqbnC@Jpldg83Io^f~A z2_}laZpepH3p&3)uys9H*A|FvW20T$f3Hg)}r=<~XJ75{G3|Iy%1C{~Hz`ub3 zJhN4C&Ux;eS=(9$ECc^b2GsdbLRHesW#34BbfD2G0OTZwbwM9_fX0+^>E*I-q=v$# z$sSk^WqFFh3>@<%r4H%kvTvk;6EkpP`N}NMP?%mFxRO>U<{4>Q%YbEIlmYeZpQaF5 zdrZ-({JlfHYAnMbmH~8BSlvPW_K7a&5xqh8sE1tt6Cefc(<({i|D5jYTYwJjVLYUi zYN$Q*_Ap;VZ;8g+UK+AJ4Li!V+Lf}+VRIbrd+cKvcaf^phBqxB($o8AuRlvSI7~aa zuRjHyI7+kSqA3q6vMZXY#@5Y*Q*a6m_v+En?UlvS%I%xSi>0IY-(FrU-FoNU z(MN(`H&2H`J z)id6%id~5n)ehD=N-cfBlN53Uzq#cni7#5b(t8;D0gu;2MP`|7Z$|J!?OZQV@AzRP zTICP_FjP8a?=91FsXSoUaoL8Df)~nO&5V`3kMl`~t|K<;v_p@nPv6jY^dtRDztHdW zCp}>^>}B>QyUrHb3VV-v><(LHAF(Q1H|UAM$9ZkAl#y&3^3=z9P)|fGMGNB!Gm8~{ zM3su&Ccf=8>LNx`v=MIL#>5Ky8mQq|x%Ny8Cbl;5c65 zd>pCR9X?N{^vz)#r$Y>%%q`-`Nim`PKk>po|3QZ>mVxJB;DW&{sNVqh&cFYE4$Br| z8L$leR~TTEck6d6*zMq_$k~mnT)Tw&2vrrO*Edo_(CBm=Qm5mPPyaAPzXVl<@p9QW S5+f+~B0$q%8_U2y%D~@as7c5G literal 0 HcmV?d00001 diff --git a/Images/neckerInstruction.tif b/Images/neckerInstruction.tif new file mode 100644 index 0000000000000000000000000000000000000000..aed203b36d42e37fa64fe18dcf42f728070ffec4 GIT binary patch literal 127132 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 vf98pJpOg6CI^n(k^zX6%oP++q<`@32`u!~^g#T 0: + printString = printString + " (Right)" + else: + printString = printString + " (Left)" + print(printString) + if not self.disableTracker: + self.tracker.send_message('CONDITION %s' % condition) + self.tracker.send_message('BLOCK %d' % block_num) + self.tracker.send_message('TRIAL %d' % trial_num) + self.tracker.send_message('Location: %d,%d' % ( + trial['locations'][0], trial['locations'][1])) + status = '%s: Block %d, Trial %d' % ( + condition, block_num, trial_num) + self.tracker.send_status(status) + # psychopy.sound.Sound('C').play() + self.tracker.start_recording() + # if condition == 'Pursuit' and trial_num == 0: + # self.display_fixation( + # self.fixation_trial_time, self.tracker) + data = self.run_trial( + trial, block_num, trial_num, self.tracker) + self.tracker.stop_recording() + # psychopy.sound.Sound('C').play() + else: + # if condition == 'Pursuit' and trial_num == 0: + # self.display_fixation( + # self.fixation_trial_time, self.tracker) + data = self.run_trial(trial, block_num, trial_num) + data.update({'Condition': condition}) + self.send_data(data) + if condition == 'Saccade' or condition == 'AntiSaccade': + self.display_saccade_fixation(self.isi_time) + else: + self.display_fixation(self.isi_time, []) + + if condition == 'Saccade' or condition == 'AntiSaccade': + self.display_saccade_fixation(1) + else: + self.display_fixation(0.5, []) + self.save_data_to_csv() + + # Display text to prepare for next block + if block_num + 1 != numBlocks: + self.display_break() + + if condition == 'Saccade': + self.display_saccade_instructions() + elif condition == 'AntiSaccade': + self.display_saccade_instructions(anti=True) + elif condition == 'Fixation': + self.display_text_screen( + text='Prepare for next trial.') + elif condition == 'Pursuit': + self.display_pursuit_instructions() + elif condition == 'Necker': + self.display_text_screen(text='Remember:\n\n' + necker_instruct_text, + image_file=self.necker_response_box_file, + image_scale=self.necker_response_box_scale) + elif condition == 'Rivalry': + self.display_rivalry_instructions( + image_file=self.response_box_file, + image_scale=self.response_box_scale) + + self.display_text_screen( + 'The experiment is now over.', + bg_color=[50, 150, 50], text_color=[255, 255, 255], + wait_for_input=False) + + psychopy.core.wait(5) + + self.quit_experiment() + + def display_pursuit_instructions( + self, bg_color=[0, 0, 0], wait_for_input=True, **kwargs): + + bg_color = convert_color_value(bg_color) + fg_color = convert_color_value([255, 255, 255]) + + backgroundRect = psychopy.visual.Rect( + self.experiment_window, fillColor=bg_color, units='norm', width=2, + height=2) + backgroundRect.draw() + + borderFrame = psychopy.visual.Rect( + self.experiment_window, lineColor=fg_color, units='deg', + width=self.pursuit_distance*2.1, height=1.5, pos=(0, self.instHeight)) + + textObject = psychopy.visual.TextStim( + self.experiment_window, text='** Smooth Pursuit Example **', color=fg_color, units='deg', + height=1, pos=(0, self.instHeight+2), **kwargs) + + color = self.stim_color + + Xposition = [0] + num_frames_per_second = 60 + counter = 0 + stim_frequency = [0.1] + stim_time = [10] + for freq in stim_frequency: + stim_frames = int(round(stim_time[counter]*num_frames_per_second)) + for time in range(stim_frames): + Xposition.append(math.sin( + freq*math.radians((time+1)*360/num_frames_per_second))*self.pursuit_distance) + counter += 1 + + stim = psychopy.visual.Circle( + self.experiment_window, radius=self.stimulus_size/2, + pos=(0, 0), fillColor=color, + lineColor=color, units='deg') + + keys = None + while keys != ['space']: + for Xpos in Xposition: + textObject.draw() + borderFrame.draw() + stim.pos = (Xpos, self.instHeight) + stim.draw() + self.experiment_window.flip() + keys = psychopy.event.getKeys() + if keys == ['space']: + break + + return keys + + def display_saccade_instructions( + self, anti=False, bg_color=[0, 0, 0], wait_for_input=True, **kwargs): + + bg_color = convert_color_value(bg_color) + fg_color = convert_color_value([255, 255, 255]) + + backgroundRect = psychopy.visual.Rect( + self.experiment_window, fillColor=bg_color, units='norm', width=2, + height=2) + backgroundRect.draw() + + borderFrame = psychopy.visual.Rect( + self.experiment_window, lineColor=fg_color, units='deg', + width=self.pursuit_distance*2.1, height=3, pos=(0, self.instHeight)) + + if anti: + dispText = '** Anti-Saccade Example **' + else: + dispText = '** Saccade Example **' + + textObject = psychopy.visual.TextStim( + self.experiment_window, text=dispText, color=fg_color, units='deg', + height=1, pos=(0, self.instHeight+3), **kwargs) + + color = self.stim_color + + stim = psychopy.visual.Circle( + self.experiment_window, radius=self.stimulus_size/2, + pos=(1, 0), fillColor=color, + lineColor=color, units='deg') + + #arrowVert = [(-0.8,0.1),(-0.8,-0.1),(-0.4,-0.1),(-0.4,-0.2),(0,0),(-0.4,0.2),(-0.4,0.1)] + arrowVert = numpy.array([(-.25, -2), (.25, -2), (.25, -.75), + (.5, -.75), (0, 0), (-.5, -.75), (-.25, -.75), (-.25, -2)]) + arrowVert = arrowVert + (0, self.instHeight + 5.25) + arrowStim = psychopy.visual.ShapeStim( + self.experiment_window, vertices=arrowVert, fillColor=color, size=0.5, lineColor=color, units='deg') + + fixation = psychopy.visual.TextStim( + self.experiment_window, text='+', color=self.saccade_fixation_color, + height=self.fixation_size, units='deg', pos=[0, self.instHeight]) + + stimList = [] + temp = list(range(-self.saccade_distance, self.saccade_distance, 1)) + for circleN in temp: + if circleN < 0: + tempCoord = circleN + else: + tempCoord = circleN+1 + + tempStim = psychopy.visual.Circle( + self.experiment_window, radius=self.stimulus_size/2, + pos=[tempCoord, self.instHeight], fillColor=self.saccade_dot_color, + lineColor=self.saccade_dot_color, units='deg') + stimList.append(tempStim) + + temp1 = random.sample( + range(1, self.saccade_distance+1), self.number_of_saccade_lights) + temp2 = random.sample( + range(1, self.saccade_distance+1), self.number_of_saccade_lights) + saccade_locations = [x*-1 for x in temp1] + temp2 + + keys = None + while keys != ['space']: + for ii in range(4): + if anti: + stim_time = 5 + else: + stim_time = round(random.uniform(1, self.saccade_time), 3) + for frameN in range(90): + textObject.draw() + borderFrame.draw() + for s in stimList: + s.draw() + fixation.color = color + fixation.draw() + self.experiment_window.flip() + keys = psychopy.event.getKeys() + if keys == ['space']: + break + if keys == ['space']: + break + Xpos = random.randint(1, 15)*random.choice([-1, 1]) + for frameN in range(int(round(stim_time*60))): + textObject.draw() + borderFrame.draw() + for s in stimList: + s.draw() + stim.pos = (Xpos, self.instHeight) + stim.draw() + fixation.color = self.saccade_fixation_color + fixation.draw() + if anti and frameN > stim_time*30: + arrowVert2 = arrowVert + (-Xpos*2, 0) + arrowStim.vertices = arrowVert2 + arrowStim.draw() + self.experiment_window.flip() + keys = psychopy.event.getKeys() + if keys == ['space']: + break + if keys == ['space']: + break + + if keys == ['space']: + break + if anti: + textObject.draw() + borderFrame.draw() + for s in stimList: + s.draw() + fixation.color = color + fixation.draw() + self.experiment_window.flip() + keys = psychopy.event.waitKeys() + + return keys + + def display_fixation_instructions( + self, anti=False, bg_color=[0, 0, 0], wait_for_input=True, **kwargs): + + bg_color = convert_color_value(bg_color) + fg_color = convert_color_value([255, 255, 255]) + + backgroundRect = psychopy.visual.Rect( + self.experiment_window, fillColor=bg_color, units='norm', width=2, + height=2) + backgroundRect.draw() + + borderFrame = psychopy.visual.Rect( + self.experiment_window, lineColor=fg_color, units='deg', + width=self.pursuit_distance*2.1, height=3, pos=(0, self.instHeight)) + + dispText = '** Target Fixation Example **' + + textObject = psychopy.visual.TextStim( + self.experiment_window, text=dispText, color=fg_color, units='deg', + height=1, pos=(0, self.instHeight+3), **kwargs) + + fixation = psychopy.visual.TextStim( + self.experiment_window, text='+', color=self.stim_color, + height=self.fixation_size, units='deg', pos=[0, self.instHeight]) + + borderFrame.draw() + textObject.draw() + fixation.draw() + self.experiment_window.flip() + + keys = None + while keys != ['space']: + keys = psychopy.event.waitKeys() + + return keys + + def display_rivalry_instructions( + self, anti=False, bg_color=[0, 0, 0], wait_for_input=True, + image_file=[], image_scale=0.25, **kwargs): + + fg_color = convert_color_value([255, 255, 255]) + bg_color = convert_color_value(bg_color) + + backgroundRect = psychopy.visual.Rect( + self.experiment_window, fillColor=bg_color, units='norm', width=2, + height=2) + backgroundRect.draw() + + textObject = psychopy.visual.TextStim( + self.experiment_window, text='** Binocular Rivalry Example **', color=fg_color, units='deg', + height=1, pos=(0, self.instHeight+2), **kwargs) + + color = self.rivalry_border_color + lineSize = self.rivalry_border_width + + stimPos = self.experiment_window.size[0]/4 + stimPos = psychopy.tools.monitorunittools.pix2deg( + stimPos, self.experiment_monitor) + stim1 = psychopy.visual.ImageStim( + self.experiment_window, + image=self.rivalry_file1, pos=(-stimPos, 0)) + stim1.size = (self.rivalry_width, self.rivalry_height) + stim2 = psychopy.visual.ImageStim( + self.experiment_window, + image=self.rivalry_file2, pos=(stimPos, 0)) + stim2.size = (self.rivalry_width, self.rivalry_height) + + borderScale = stim1.size[0]*0.4 + borderWidth1 = stim1.size[0]+borderScale + borderHeight1 = stim1.size[1]+borderScale + borderWidth2 = stim2.size[0]+borderScale + borderHeight2 = stim2.size[1]+borderScale + stimBorder1 = psychopy.visual.Rect( + self.experiment_window, width=borderWidth1, + height=borderHeight1, + pos=stim1.pos, lineWidth=lineSize, + lineColor=color, units='deg') + stimBorder2 = psychopy.visual.Rect( + self.experiment_window, width=borderWidth2, + height=borderHeight2, + pos=stim2.pos, lineWidth=lineSize, + lineColor=color, units='deg') + stimFix1_top = psychopy.visual.Line( + self.experiment_window, start=( + stim1.pos[0], stim1.pos[1]+borderHeight1/2), + end=(stim1.pos[0], stim1.pos[1]+stim1.size[1]/1.9), units='deg', + lineColor=color, lineWidth=lineSize) + stimFix1_left = psychopy.visual.Line( + self.experiment_window, start=( + stim1.pos[0]-borderWidth1/2, stim1.pos[1]), + end=(stim1.pos[0]-stim1.size[0]/1.9, stim1.pos[1]), units='deg', + lineColor=color, lineWidth=lineSize) + stimFix2_bottom = psychopy.visual.Line( + self.experiment_window, start=( + stim2.pos[0], stim2.pos[1]-borderHeight2/2), + end=(stim2.pos[0], stim2.pos[1]-stim2.size[1]/1.9), units='deg', + lineColor=color, lineWidth=lineSize) + stimFix2_right = psychopy.visual.Line( + self.experiment_window, start=( + stim2.pos[0]+borderWidth2/2, stim2.pos[1]), + end=(stim2.pos[0]+stim2.size[0]/1.9, stim2.pos[1]), units='deg', + lineColor=color, lineWidth=lineSize) + + textObject.draw() + #stim1.draw() + #stim2.draw() + stimBorder1.draw() + stimBorder2.draw() + stimFix1_top.draw() + stimFix1_left.draw() + stimFix2_bottom.draw() + stimFix2_right.draw() + + imageObject = psychopy.visual.ImageStim( + self.experiment_window, units='pix', + image=image_file) + sizex = int(round(imageObject.size[0])*image_scale) + sizey = int(round(imageObject.size[1])*image_scale) + bottomOfScreen = int( + math.floor(-self.experiment_window.size[1]/2+sizey/2))+5 + imageObject.size = [sizex, sizey] + imageObject.pos = (0, bottomOfScreen) + imageObject.draw() + + self.experiment_window.flip() + + keys = None + showImages = False + if wait_for_input: + psychopy.core.wait(.2) # Prevents accidental key presses + keys = psychopy.event.waitKeys() + while keys != ['space']: + showImages = not showImages + if showImages: + textObject.draw() + stim1.draw() + stim2.draw() + stimBorder1.draw() + stimBorder2.draw() + stimFix1_top.draw() + stimFix1_left.draw() + stimFix2_bottom.draw() + stimFix2_right.draw() + imageObject.draw() + else: + textObject.draw() + # stim1.draw() + # stim2.draw() + stimBorder1.draw() + stimBorder2.draw() + stimFix1_top.draw() + stimFix1_left.draw() + stimFix2_bottom.draw() + stimFix2_right.draw() + imageObject.draw() + self.experiment_window.flip() + keys = psychopy.event.waitKeys() + self.experiment_window.flip() + + +experiment = EyeTrackingSaccadePursuit( + experiment_name='ETSP', + data_fields=data_fields, + data_directory=data_directory, + instruct_text=instruct_text, + monitor_name=monitor_name, + monitor_width=monitor_width, + monitor_px=monitor_px, + monitor_distance=distance_to_monitor, + pursuit_time=pursuit_time, stim_color=stim_color, + pursuit_frequencies=pursuit_frequencies, + saccade_distance=saccade_distance, + saccade_time=saccade_time, + number_of_saccade_lights=number_of_saccade_lights, + saccade_fixation_color=convert_color_value(saccade_fixation_color), + saccade_dot_color=convert_color_value(saccade_dot_color), + isi_time=isi_time, stimulus_size=stimulus_size, + fixation_size=fixation_size, + pursuit_distance=pursuit_distance, + necker_time=necker_time, necker_color=necker_color, + necker_scale=necker_scale, + necker_bg_color=convert_color_value(necker_bg_color), + fixation_trial_time=fixation_trial_time, + rivalry_time=rivalry_time, + rivalry_height=rivalry_height, + rivalry_width=rivalry_width, + necker_file=necker_file, + rivalry_file1=rivalry_file1, + rivalry_file2=rivalry_file2, + rivalry_border_color=convert_color_value(rivalry_border_color), + disableTracker=disableTracker, + rivalry_border_width=rivalry_border_width, + rivalry_distance=rivalry_distance, + new_trial_sound=new_trial_sound +) + +if __name__ == '__main__': + try: + experiment.run() + except Exception: + print(traceback.format_exc()) + if not experiment.quit: + experiment.quit_experiment() diff --git a/calibrate.py b/calibrate.py new file mode 100644 index 0000000..46b875d --- /dev/null +++ b/calibrate.py @@ -0,0 +1,63 @@ +from __future__ import division +from __future__ import print_function + +import os +import random +import sys +import traceback +import subprocess +import math +import numpy + +# Necesssary to access psychopy paths +import psychopy # noqa:F401 + +import eyelinker + +import SaccadePursuit + +def convert_color_value(color): + """Converts a list of 3 values from 0 to 255 to -1 to 1. + + Parameters: + color -- A list of 3 ints between 0 and 255 to be converted. + """ + + return [round(((n/127.5)-1), 2) for n in color] + + +#myPR655 = PR655(5) +#print(myPR655) +#myPR655.getLum() +#nm, power = myPR655.getLastSpectrum() + +#print(nm) +#print(power) + +#phot = hardware.findPhotometer() +#print(phot) +#print(phot.measure()) +#print(phot.getLum()) + +#bg_color = convert_color_value(bg_color) +fg_color = convert_color_value([0,0,255]) + +monitor_px = [1440,900] +window_screen = 1 + +experiment_monitor = psychopy.monitors.Monitor( + 'testMonitor', width=41, + distance=74) +experiment_monitor.setSizePix(monitor_px) + +experiment_window = psychopy.visual.Window(monitor_px, + monitor=experiment_monitor, fullscr=True, color=fg_color, + colorSpace='rgb', units='deg', allowGUI=False, screen=1) + +keys = psychopy.event.waitKeys() + +#backgroundRect = psychopy.visual.Rect( +# experiment_window, fillColor=fg_color, units='norm', width=2, +# height=2) +#backgroundRect.draw() + diff --git a/eyelinker.py b/eyelinker.py old mode 100755 new mode 100644 index 02d4ba7..8608d81 --- a/eyelinker.py +++ b/eyelinker.py @@ -1,273 +1,273 @@ -from __future__ import print_function -from __future__ import division - -import os -import sys -import time - -import pylink as pl -#from PsychoPyCustomDisplay import PsychoPyCustomDisplay -from EyeLinkCoreGraphicsPsychoPy import EyeLinkCoreGraphicsPsychoPy - -import psychopy.event -import psychopy.visual - - -class EyeLinker(object): - def __init__(self, window, filename, eye): - if len(filename) > 12: - raise ValueError( - 'EDF filename must be at most 12 characters long including the extension.') - - if filename[-4:] != '.edf': - raise ValueError( - 'Please include the .edf extension in the filename.') - - if eye not in ('LEFT', 'RIGHT', 'BOTH'): - raise ValueError('eye must be set to LEFT, RIGHT, or BOTH.') - - self.window = window - self.edf_filename = filename - self.edf_open = False - self.eye = eye - self.resolution = tuple(window.size) - self.tracker = pl.EyeLink() - #self.genv = PsychoPyCustomDisplay(self.window, self.tracker) - self.genv = EyeLinkCoreGraphicsPsychoPy(self.tracker, self.window) - - if all(i >= 0.5 for i in self.window.color): - self.text_color = (-1, -1, -1) - else: - self.text_color = (1, 1, 1) - - def initialize_graphics(self): - self.set_offline_mode() - pl.openGraphicsEx(self.genv) - - def initialize_tracker(self): - if not self.edf_open: - raise RuntimeError('EDF file must be open before tracker can be initialized.') - - pl.flushGetkeyQueue() - self.set_offline_mode() - - self.send_command("screen_pixel_coords = 0 0 %d %d" % self.resolution) - self.send_message("DISPLAY_COORDS 0 0 %d %d" % self.resolution) - - #self.tracker.setFileEventFilter( - # "LEFT,RIGHT,FIXATION,SACCADE,BLINK,MESSAGE,BUTTON,INPUT") - #self.tracker.setFileSampleFilter( - # "LEFT,RIGHT,GAZE,AREA,GAZERES,STATUS") - #self.tracker.setLinkEventFilter( - # "LEFT,RIGHT,FIXATION,FIXUPDATE,SACCADE,BLINK,BUTTON,INPUT") - #self.tracker.setLinkSampleFilter( - # "LEFT,RIGHT,GAZE,GAZERES,AREA,STATUS") - self.tracker.sendCommand("file_event_filter = LEFT,RIGHT,FIXATION,SACCADE,BLINK,MESSAGE,BUTTON,INPUT") - self.tracker.sendCommand("link_event_filter = LEFT,RIGHT,FIXATION,FIXUPDATE,SACCADE,BLINK,BUTTON,INPUT") - self.tracker.sendCommand("file_sample_data = LEFT,RIGHT,GAZE,GAZERES,PUPIL,HREF,AREA,STATUS,HTARGET,INPUT") - self.tracker.sendCommand("link_sample_data = LEFT,RIGHT,GAZE,GAZERES,PUPIL,HREF,AREA,STATUS,HTARGET,INPUT") - - def send_calibration_settings(self, settings=None): - defaults = { - 'automatic_calibration_pacing': 1000, - 'background_color': (0, 0, 0), - 'calibration_area_proportion': (0.5, 0.5), - 'calibration_type': 'HV5', - 'elcl_configuration': 'BTABLER', - 'enable_automatic_calibration': 'YES', - 'error_sound': '', - 'foreground_color': (255, 255, 255), - 'good_sound': '', - 'preamble_text': None, - 'pupil_size_diameter': 'NO', - 'saccade_acceleration_threshold': 9500, - 'saccade_motion_threshold': 0.15, - 'saccade_pursuit_fixup': 60, - 'saccade_velocity_threshold': 30, - 'sample_rate': 1000, - 'target_sound': '', - 'validation_area_proportion': (0.5, 0.5), - } - - if settings is None: - settings = {} - - settings.update(defaults) - - self.send_command('elcl_select_configuration = %s' % settings['elcl_configuration']) - - pl.setCalibrationColors(settings['foreground_color'], settings['background_color']) - pl.setCalibrationSounds( - settings['target_sound'], settings['good_sound'], settings['error_sound']) - - if self.eye in ('LEFT', 'RIGHT'): - self.send_command('active_eye = %s' % self.eye) - - self.send_command( - 'automatic_calibration_pacing = %i' % settings['automatic_calibration_pacing']) - - if self.eye == 'BOTH': - self.send_command('binocular_enabled = YES') - else: - self.send_command('binocular_enabled = NO') - - #self.send_command( - # 'calibration_area_proportion %f %f' % settings['calibration_area_proportion']) - - - self.send_command('calibration_type = %s' % settings['calibration_type']) - self.send_command( - 'enable_automatic_calibration = %s' % settings['enable_automatic_calibration']) - if settings['preamble_text'] is not None: - self.send_command('add_file_preamble_text %s' % '"' + settings['preamble_text'] + '"') - self.send_command('pupil_size_diameter = %s' % settings['pupil_size_diameter']) - #self.send_command( - # 'saccade_acceleration_threshold = %i' % settings['saccade_acceleration_threshold']) - #self.send_command('saccade_motion_threshold = %i' % settings['saccade_motion_threshold']) - #self.send_command('saccade_pursuit_fixup = %i' % settings['saccade_pursuit_fixup']) - #self.send_command( - # 'saccade_velocity_threshold = %i' % settings['saccade_velocity_threshold']) - self.send_command('sample_rate = %i' % settings['sample_rate']) - #self.send_command( - # 'validation_area_proportion %f %f' % settings['validation_area_proportion']) - - def open_edf(self): - self.tracker.openDataFile(self.edf_filename) - self.edf_open = True - - def close_edf(self): - self.tracker.closeDataFile() - self.edf_open = False - - def transfer_edf(self, newFilename=None): - if not newFilename: - newFilename = self.edf_filename - - # Prevents timeouts due to excessive printing - sys.stdout = open(os.devnull, "w") - self.tracker.receiveDataFile(self.edf_filename, newFilename) - sys.stdout = sys.__stdout__ - print(newFilename + ' has been transferred successfully.') - - def setup_tracker(self): - self.window.flip() - self.tracker.doTrackerSetup() - - def display_eyetracking_instructions(self): - self.window.flip() - - psychopy.visual.Circle( - self.window, units='pix', radius=18, lineColor='black', fillColor='white' - ).draw() - psychopy.visual.Circle( - self.window, units='pix', radius=6, lineColor='black', fillColor='black' - ).draw() - - psychopy.visual.TextStim( - self.window, text='Sometimes a target that looks like this will appear.', - color=self.text_color, units='norm', pos=(0, 0.22), height=0.05 - ).draw() - - psychopy.visual.TextStim( - self.window, color=self.text_color, units='norm', pos=(0, -0.18), height=0.05, - text='We use it to calibrate the eye tracker. Stare at it whenever you see it.' - ).draw() - - psychopy.visual.TextStim( - self.window, color=self.text_color, units='norm', pos=(0, -0.28), height=0.05, - text='Press any key to continue.' - ).draw() - - self.window.flip() - psychopy.event.waitKeys() - self.window.flip() - - def calibrate(self, text=None): - self.window.flip() - - if text is None: - text = ( - 'Experimenter:\n' - 'If you would like to calibrate, press space.\n' - 'To skip calibration, press the escape key.' - ) - - psychopy.visual.TextStim( - self.window, text=text, pos=(0, 0), height=0.05, units='norm', color=self.text_color - ).draw() - - self.window.flip() - - keys = psychopy.event.waitKeys(keyList=['escape', 'space']) - - self.window.flip() - - if 'space' in keys: - self.tracker.doTrackerSetup() - - def drift_correct(self, position=None, setup=1): - if position is None: - position = tuple([int(round(i/2)) for i in self.resolution]) - - try: - self.tracker.doDriftCorrect(position[0], position[1], 1, setup) - self.tracker.applyDriftCorrect() - except RuntimeError as e: - print(e.message) - #self.tracker.doTrackerSetup() - - def record(self, trial_func): - def wrapped_func(): - self.start_recording() - trial_func() - self.stop_recording() - return wrapped_func - - def start_recording(self): - self.tracker.startRecording(1, 1, 1, 1) - time.sleep(.1) # required - - def stop_recording(self): - time.sleep(.1) # required - self.tracker.stopRecording() - - @property - def gaze_data(self): - sample = self.tracker.getNewestSample() - - if self.eye == 'LEFT': - return sample.getLeftEye().getGaze() - elif self.eye == 'RIGHT': - return sample.getRightEye().getGaze() - else: - return (sample.getLeftEye().getGaze(), sample.getRightEye().getGaze()) - - @property - def pupil_size(self): - sample = self.tracker.getNewestSample() - - if self.eye == 'LEFT': - return sample.getLeftEye().getPupilSize() - elif self.eye == 'RIGHT': - return sample.getRightEye().getPupilSize() - else: - return (sample.getLeftEye().getPupilSize(), sample.getRightEye().getPupilSize()) - - def set_offline_mode(self): - self.tracker.setOfflineMode() - - def send_command(self, cmd): - self.tracker.sendCommand(cmd) - - def send_message(self, msg): - self.tracker.sendMessage(msg) - - def send_status(self, status): - if len(status) >= 80: - print('Warning: Status should be less than 80 characters.') - - self.send_command("record_status_message '%s'" % status) - - def close_connection(self): - self.tracker.close() - pl.closeGraphics() +from __future__ import print_function +from __future__ import division + +import os +import sys +import time + +import pylink as pl +#from PsychoPyCustomDisplay import PsychoPyCustomDisplay +from EyeLinkCoreGraphicsPsychoPy import EyeLinkCoreGraphicsPsychoPy + +import psychopy.event +import psychopy.visual + + +class EyeLinker(object): + def __init__(self, window, filename, eye): + if len(filename) > 12: + raise ValueError( + 'EDF filename must be at most 12 characters long including the extension.') + + if filename[-4:] != '.edf': + raise ValueError( + 'Please include the .edf extension in the filename.') + + if eye not in ('LEFT', 'RIGHT', 'BOTH'): + raise ValueError('eye must be set to LEFT, RIGHT, or BOTH.') + + self.window = window + self.edf_filename = filename + self.edf_open = False + self.eye = eye + self.resolution = tuple(window.size) + self.tracker = pl.EyeLink() + #self.genv = PsychoPyCustomDisplay(self.window, self.tracker) + self.genv = EyeLinkCoreGraphicsPsychoPy(self.tracker, self.window) + + if all(i >= 0.5 for i in self.window.color): + self.text_color = (-1, -1, -1) + else: + self.text_color = (1, 1, 1) + + def initialize_graphics(self): + self.set_offline_mode() + pl.openGraphicsEx(self.genv) + + def initialize_tracker(self): + if not self.edf_open: + raise RuntimeError('EDF file must be open before tracker can be initialized.') + + pl.flushGetkeyQueue() + self.set_offline_mode() + + self.send_command("screen_pixel_coords = 0 0 %d %d" % self.resolution) + self.send_message("DISPLAY_COORDS 0 0 %d %d" % self.resolution) + + #self.tracker.setFileEventFilter( + # "LEFT,RIGHT,FIXATION,SACCADE,BLINK,MESSAGE,BUTTON,INPUT") + #self.tracker.setFileSampleFilter( + # "LEFT,RIGHT,GAZE,AREA,GAZERES,STATUS") + #self.tracker.setLinkEventFilter( + # "LEFT,RIGHT,FIXATION,FIXUPDATE,SACCADE,BLINK,BUTTON,INPUT") + #self.tracker.setLinkSampleFilter( + # "LEFT,RIGHT,GAZE,GAZERES,AREA,STATUS") + self.tracker.sendCommand("file_event_filter = LEFT,RIGHT,FIXATION,SACCADE,BLINK,MESSAGE,BUTTON,INPUT") + self.tracker.sendCommand("link_event_filter = LEFT,RIGHT,FIXATION,FIXUPDATE,SACCADE,BLINK,BUTTON,INPUT") + self.tracker.sendCommand("file_sample_data = LEFT,RIGHT,GAZE,GAZERES,PUPIL,HREF,AREA,STATUS,HTARGET,INPUT") + self.tracker.sendCommand("link_sample_data = LEFT,RIGHT,GAZE,GAZERES,PUPIL,HREF,AREA,STATUS,HTARGET,INPUT") + + def send_calibration_settings(self, settings=None): + defaults = { + 'automatic_calibration_pacing': 1000, + 'background_color': (0, 0, 0), + 'calibration_area_proportion': (0.5, 0.5), + 'calibration_type': 'HV5', + 'elcl_configuration': 'BTABLER', + 'enable_automatic_calibration': 'YES', + 'error_sound': '', + 'foreground_color': (255, 255, 255), + 'good_sound': '', + 'preamble_text': None, + 'pupil_size_diameter': 'NO', + 'saccade_acceleration_threshold': 9500, + 'saccade_motion_threshold': 0.15, + 'saccade_pursuit_fixup': 60, + 'saccade_velocity_threshold': 30, + 'sample_rate': 1000, + 'target_sound': '', + 'validation_area_proportion': (0.5, 0.5), + } + + if settings is None: + settings = {} + + settings.update(defaults) + + self.send_command('elcl_select_configuration = %s' % settings['elcl_configuration']) + + pl.setCalibrationColors(settings['foreground_color'], settings['background_color']) + pl.setCalibrationSounds( + settings['target_sound'], settings['good_sound'], settings['error_sound']) + + if self.eye in ('LEFT', 'RIGHT'): + self.send_command('active_eye = %s' % self.eye) + + self.send_command( + 'automatic_calibration_pacing = %i' % settings['automatic_calibration_pacing']) + + if self.eye == 'BOTH': + self.send_command('binocular_enabled = YES') + else: + self.send_command('binocular_enabled = NO') + + #self.send_command( + # 'calibration_area_proportion %f %f' % settings['calibration_area_proportion']) + + + self.send_command('calibration_type = %s' % settings['calibration_type']) + self.send_command( + 'enable_automatic_calibration = %s' % settings['enable_automatic_calibration']) + if settings['preamble_text'] is not None: + self.send_command('add_file_preamble_text %s' % '"' + settings['preamble_text'] + '"') + self.send_command('pupil_size_diameter = %s' % settings['pupil_size_diameter']) + #self.send_command( + # 'saccade_acceleration_threshold = %i' % settings['saccade_acceleration_threshold']) + #self.send_command('saccade_motion_threshold = %i' % settings['saccade_motion_threshold']) + #self.send_command('saccade_pursuit_fixup = %i' % settings['saccade_pursuit_fixup']) + #self.send_command( + # 'saccade_velocity_threshold = %i' % settings['saccade_velocity_threshold']) + self.send_command('sample_rate = %i' % settings['sample_rate']) + #self.send_command( + # 'validation_area_proportion %f %f' % settings['validation_area_proportion']) + + def open_edf(self): + self.tracker.openDataFile(self.edf_filename) + self.edf_open = True + + def close_edf(self): + self.tracker.closeDataFile() + self.edf_open = False + + def transfer_edf(self, newFilename=None): + if not newFilename: + newFilename = self.edf_filename + + # Prevents timeouts due to excessive printing + sys.stdout = open(os.devnull, "w") + self.tracker.receiveDataFile(self.edf_filename, newFilename) + sys.stdout = sys.__stdout__ + print(newFilename + ' has been transferred successfully.') + + def setup_tracker(self): + self.window.flip() + self.tracker.doTrackerSetup() + + def display_eyetracking_instructions(self): + self.window.flip() + + psychopy.visual.Circle( + self.window, units='pix', radius=18, lineColor='black', fillColor='white' + ).draw() + psychopy.visual.Circle( + self.window, units='pix', radius=6, lineColor='black', fillColor='black' + ).draw() + + # psychopy.visual.TextStim( + # self.window, text='Sometimes a target that looks like this will appear.', + # color=self.text_color, units='norm', pos=(0, 0.22), height=0.05 + # ).draw() + + # psychopy.visual.TextStim( + # self.window, color=self.text_color, units='norm', pos=(0, -0.18), height=0.05, + # text='We use it to calibrate the eye tracker. Stare at it whenever you see it.' + # ).draw() + + # psychopy.visual.TextStim( + # self.window, color=self.text_color, units='norm', pos=(0, -0.28), height=0.05, + # text='Press any key to continue.' + # ).draw() + + self.window.flip() + psychopy.event.waitKeys() + self.window.flip() + + def calibrate(self, text=None): + self.window.flip() + + if text is None: + text = ( + 'Experimenter:\n' + 'If you would like to calibrate, press space.\n' + 'To skip calibration, press the escape key.' + ) + + psychopy.visual.TextStim( + self.window, text=text, pos=(0, 0), height=0.05, units='norm', color=self.text_color + ).draw() + + self.window.flip() + + keys = psychopy.event.waitKeys(keyList=['escape', 'space']) + + self.window.flip() + + if 'space' in keys: + self.tracker.doTrackerSetup() + + def drift_correct(self, position=None, setup=1): + if position is None: + position = tuple([int(round(i/2)) for i in self.resolution]) + + try: + self.tracker.doDriftCorrect(position[0], position[1], 1, setup) + self.tracker.applyDriftCorrect() + except RuntimeError as e: + print(e.message) + #self.tracker.doTrackerSetup() + + def record(self, trial_func): + def wrapped_func(): + self.start_recording() + trial_func() + self.stop_recording() + return wrapped_func + + def start_recording(self): + self.tracker.startRecording(1, 1, 1, 1) + time.sleep(.1) # required + + def stop_recording(self): + time.sleep(.1) # required + self.tracker.stopRecording() + + @property + def gaze_data(self): + sample = self.tracker.getNewestSample() + + if self.eye == 'LEFT': + return sample.getLeftEye().getGaze() + elif self.eye == 'RIGHT': + return sample.getRightEye().getGaze() + else: + return (sample.getLeftEye().getGaze(), sample.getRightEye().getGaze()) + + @property + def pupil_size(self): + sample = self.tracker.getNewestSample() + + if self.eye == 'LEFT': + return sample.getLeftEye().getPupilSize() + elif self.eye == 'RIGHT': + return sample.getRightEye().getPupilSize() + else: + return (sample.getLeftEye().getPupilSize(), sample.getRightEye().getPupilSize()) + + def set_offline_mode(self): + self.tracker.setOfflineMode() + + def send_command(self, cmd): + self.tracker.sendCommand(cmd) + + def send_message(self, msg): + self.tracker.sendMessage(msg) + + def send_status(self, status): + if len(status) >= 80: + print('Warning: Status should be less than 80 characters.') + + self.send_command("record_status_message '%s'" % status) + + def close_connection(self): + self.tracker.close() + pl.closeGraphics() diff --git a/template.py b/template.py old mode 100755 new mode 100644 index df22a0d..e3e9af5 --- a/template.py +++ b/template.py @@ -121,9 +121,9 @@ class BaseExperiment(object): """ overwrite_dlg = psychopy.gui.Dlg( - 'New File?', labelButtonOK='New File', - labelButtonCancel='Cancel', screen=0) - overwrite_dlg.addText('File already exists.') + 'Overwrite?', labelButtonOK='Overwrite', + labelButtonCancel='New File', screen=0) + overwrite_dlg.addText('File already exists. Overwrite?') overwrite_dlg.show() return overwrite_dlg.OK @@ -181,7 +181,7 @@ class BaseExperiment(object): if os.path.isfile(filename + '.txt'): if self.overwrite_ok is None: self.overwrite_ok = self._confirm_overwrite() - if self.overwrite_ok: + if not self.overwrite_ok: # If the file exists make a new filename i = 1 new_filename = filename + '(' + str(i) + ')' @@ -189,8 +189,6 @@ class BaseExperiment(object): i += 1 new_filename = filename + '(' + str(i) + ')' filename = new_filename - else: - raise Exception('Filename Error') filename = filename + '.txt' @@ -217,7 +215,7 @@ class BaseExperiment(object): if os.path.isfile(data_filename + '.csv'): if self.overwrite_ok is None: self.overwrite_ok = self._confirm_overwrite() - if self.overwrite_ok: + if not self.overwrite_ok: # If the file exists and we can't overwrite make a new filename i = 1 new_filename = data_filename + '(' + str(i) + ')' @@ -225,8 +223,6 @@ class BaseExperiment(object): i += 1 new_filename = data_filename + '(' + str(i) + ')' data_filename = new_filename - else: - raise Exception('Filename Error') self.experiment_data_filename = data_filename + '.csv' @@ -378,7 +374,10 @@ class BaseExperiment(object): bottomOfScreen = int(math.floor(-self.experiment_window.size[1]/2+sizey/2))+5 imageObject.size = [sizex,sizey] #imageObject.pos = (0,belowText) - imageObject.pos = (0,bottomOfScreen) + if text: + imageObject.pos = (0,bottomOfScreen) + else: + imageObject.pos = (0,0) imageObject.draw() else: textObject.draw()