示例#1
0
	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)
示例#2
0
    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()
示例#4
0
    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'
示例#5
0
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()
示例#6
0
 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)
示例#7
0
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()