def create_tracker(self, tracker_on = True, sensitivity_class = 0, split_screen = False, screen_half = 'L', auto_trigger_calibration = 1, calibration_type = 'HV9', sample_rate = 1000): """ tracker sets up the connection and inputs the parameters. only start tracker after the screen is taken, its parameters are set, and output file names are created. """ self.eyelink_temp_file = self.subject_initials[:2] + '_' + str(self.index_number) + '_' + str(np.random.randint(99)) + '.edf' # self.tracker.openDataFile(self.eyelink_temp_file) if tracker_on: # create actual tracker try: # self.tracker = EyeLink() #shell() self.tracker = eyetracker.EyeTracker(self.display, trackertype='eyelink', resolution=self.display.dispsize, data_file=self.eyelink_temp_file, bgc=self.display.bgc) self.tracker_on = True except: print '\ncould not connect to tracker' self.tracker = None self.tracker_on = False self.eye_measured, self.sample_rate, self.CR_mode, self.file_sample_filter, self.link_sample_filter = 'N', sample_rate, 1, 1, 1 return else: # not even create dummy tracker self.tracker = None self.tracker_on = False return self.apply_settings(sensitivity_class = sensitivity_class, split_screen = split_screen, screen_half = screen_half, auto_trigger_calibration = auto_trigger_calibration, calibration_type = calibration_type, sample_rate = sample_rate)
def __init__(self, user_interface, subj_id, exp_type): self.user_interface = user_interface #So before we index and 'a' or and 'b' to the .edf (see commented code below) -perhaps we could shoce this based on exp_type # a is 'lose' and b is 'leave' data_file_suffix = 'a' if exp_type == 'lose' else 'b' data_file = str(subj_id) + data_file_suffix if os.path.isfile(data_file + '.edf'): data_file = data_file + '_' self.tracker = eyetracker.EyeTracker(self.user_interface.disp, data_file=data_file + '.edf')
import random import constants from pygaze import libscreen from pygaze import libtime from pygaze import liblog from pygaze import libinput from pygaze import eyetracker # # # # # # experiment setup # create display object disp = libscreen.Display() # create eyetracker object tracker = eyetracker.EyeTracker(disp) # create keyboard object keyboard = libinput.Keyboard(keylist=['space'], timeout=None) # create logfile object log = liblog.Logfile() log.write(["trialnr", "trialtype", "endpos", "latency", "correct"]) # create screens inscreen = libscreen.Screen() inscreen.draw_text( text= "When you see a cross, look at it and press space. Then make an eye movement to the black circle when it appears.\n\n(press space to start)", fontsize=24) fixscreen = libscreen.Screen()
def __init__(self): self.expName = 'Bird' self.path = os.getcwd() self.subjInfo = { '1': { 'name' : 'subjCode', 'prompt' : 'EXP_XXX', 'options': 'any', 'default':self.expName+'_101'}, '2' : { 'name' : 'gender', 'prompt' : 'Subject Gender m/f: ', 'options' : ("m","f"), 'default':'', 'type' : str}, '3' : { 'name' : 'age', 'prompt' : 'Subject Age: ', 'options' : 'any', 'default':'', 'type' : str}, '4' : {'name' : 'seed', 'prompt' : 'Seed: ', 'options' : 'any', 'default' : 101, 'type' : 101}, '5' : {'name' : 'expInitials', 'prompt' : 'Experiment Initials: ', 'options' : 'any', 'default' : '', 'type' : str}, '6' : { 'name' : 'activeMode', 'prompt' : 'input / gaze', 'options' : ("input","gaze"), 'default':"gaze", 'type' : str}, '7' : { 'name' : 'inputDevice', 'prompt' : 'keyboard / mouse', 'options' : ("keyboard","mouse"), 'default':'keyboard'}, '8' : { 'name' : 'eyetracker', 'prompt' : '(yes / no)', 'options' : ("yes","no"), 'default' : "yes", 'type' : str}, '9' : { 'name' : 'pygazeVersion', 'prompt' : '(04 / 06)', 'options' : ("04","06"), 'default' : "06", 'type' : str}, } optionsReceived = False fileOpened = False while not fileOpened: [optionsReceived, self.subjVariables] = enterSubjInfo(self.expName, self.subjInfo) constants.LOGFILENAME=constants.LOGFILEPATH+self.subjVariables['subjCode'] constants.LOGFILE=constants.LOGFILENAME[:] if self.subjVariables['pygazeVersion'] == "06": from pygaze import display from pygaze import settings settings.LOGFILE = constants.LOGFILENAME[:] print settings.LOGFILE if not optionsReceived: popupError(self.subjVariables) elif not os.path.isfile('data/'+'data_'+self.subjVariables['subjCode']+'.txt'): #if using an eyetracker if self.subjVariables['eyetracker']=="yes": #import eyetracking package from pygaze from pygaze import eyetracker if not os.path.isfile(constants.LOGFILENAME+'_TOBII_output.tsv'): fileOpened = True self.outputFile = open('data/'+'data_'+self.subjVariables['subjCode']+'.txt','w') else: fileOpened = False popupError('That subject code for the eyetracking data already exists! The prompt will now close!') core.quit() else: fileOpened = True self.outputFile = open('data/'+'data_'+self.subjVariables['subjCode']+'.txt','w') else: fileOpened = False popupError('That subject code already exists!') # create display object self.disp = libscreen.Display(disptype='psychopy') #create psychopy window based on Display() object if self.subjVariables['pygazeVersion'] == "06": self.win = pygaze.expdisplay else: self.win = self.disp.expdisplay if self.subjVariables['eyetracker']=="yes": # create eyetracker object self.tracker = eyetracker.EyeTracker(self.disp) if self.subjVariables['inputDevice'] == 'keyboard': print "Using keyboard..." self.inputDevice = "keyboard" self.validResponses = {'1':'space','2': 'enter'} ## create keyboard object self.input = libinput.Keyboard(keylist=['space', 'enter', 'left', 'right'], timeout=None) elif self.subjVariables['inputDevice'] == 'mouse': print "Using mouse..." self.inputDevice = "mouse" self.input = libinput.Mouse(mousebuttonlist=[1], timeout=None) if self.subjVariables['activeMode']=="input": self.input.set_visible(visible=True) self.imagePath=self.path+'/stimuli/images/' self.soundPath=self.path+'/stimuli/sounds/' self.moviePath=self.path+'/stimuli/movies/' self.imageExt='.png'
from pygaze import eyetracker from pygaze import logfile # # # # # # benchmark RUNS = 1001 # # # # # # experiment setup # create display object disp = display.Display() # create eyetracker object tracker = eyetracker.EyeTracker(disp, trackertype='dummy') # create keyboard object keyboard = keyboard.Keyboard(keylist=['space'], timeout=None) # Logfile log = logfile.Logfile() # create screens scr = screen.Screen() # # # # # # run the experiment # calibrate eye tracker tracker.calibrate()
def __init__(self, user_interface, subj_id): self.user_interface = user_interface data_file = '%s.edf' % (subj_id) self.tracker = eyetracker.EyeTracker(self.user_interface.disp, data_file=data_file)
import random import constants from pygaze import libscreen from pygaze import libtime from pygaze import liblog from pygaze import libinput from pygaze import eyetracker # start timing libtime.expstart() # create display object disp = libscreen.Display() # create eyetracker object tracker = eyetracker.EyeTracker(disp, trackertype='eyetribe') # create keyboard object # create logfile object log = liblog.Logfile() # create screens inscreen = libscreen.Screen() inscreen.draw_text(text="Recording data", fontsize=24) # # # # # # run the experiment # calibrate eye tracker # tracker.calibrate()