Public Member Functions | |
| __init__ (self, display, logfile=settings.LOGFILE, eventdetection=settings.EVENTDETECTION, saccade_velocity_threshold=35, saccade_acceleration_threshold=9500, blink_threshold=settings.BLINKTHRESH, **args) | |
| calibrate (self, calibrate=True, validate=True) | |
| close (self) | |
| connected (self) | |
| drift_correction (self, pos=None, fix_triggered=False) | |
| fix_triggered_drift_correction (self, pos=None, min_samples=10, max_dev=60, reset_threshold=30) | |
| get_eyetracker_clock_async (self) | |
| log (self, msg) | |
| log_var (self, var, val) | |
| prepare_backdrop (self) | |
| prepare_drift_correction (self, pos) | |
| pupil_size (self) | |
| sample (self) | |
| send_command (self, cmd) | |
| set_backdrop (self) | |
| set_eye_used (self) | |
| start_recording (self) | |
| status_msg (self, msg) | |
| stop_recording (self) | |
| set_detection_type (self, eventdetection) | |
| wait_for_event (self, event) | |
| wait_for_blink_end (self) | |
| wait_for_blink_start (self) | |
| wait_for_fixation_end (self) | |
| wait_for_fixation_start (self) | |
| wait_for_saccade_end (self) | |
| wait_for_saccade_start (self) | |
| is_valid_sample (self, gazepos) | |
Public Member Functions inherited from pygaze._eyetracker.baseeyetracker.BaseEyeTracker | |
| __init__ (self) | |
| draw_drift_correction_target (self, x, y) | |
| draw_calibration_target (self, x, y) | |
| set_draw_calibration_target_func (self, func) | |
| set_draw_drift_correction_target_func (self, func) | |
Public Attributes | |
| disp = display | |
| screen = Screen() | |
| dispsize = settings.DISPSIZE | |
| screensize = settings.SCREENSIZE | |
| screendist = settings.SCREENDIST | |
| tuple | pixpercm = (self.dispsize[0]/float(self.screensize[0]) + self.dispsize[1]/float(self.screensize[1])) / 2.0 |
| kb = Keyboard(keylist=['space', 'escape', 'q'], timeout=1) | |
| errorbeep = Sound(osc='saw',freq=100, length=100) | |
| outputfile = logfile | |
| str | description = "experiment" |
| str | participant = "participant" |
| bool | recording = False |
| int | eye_used = 0 |
| int | left_eye = 0 |
| int | right_eye = 1 |
| int | binocular = 2 |
| int | errdist = 2 |
| pxerrdist = deg2pix(self.screendist, self.errdist, self.pixpercm) | |
| int | maxtries = 100 |
| tuple | prevsample = (-1,-1) |
| int | nvalsamples = 1000 |
| float | fixtresh = 1.5 |
| int | fixtimetresh = 100 |
| spdtresh = saccade_velocity_threshold | |
| accthresh = saccade_acceleration_threshold | |
| blinkthresh = blink_threshold | |
| str | eventdetection = eventdetection |
| int | weightdist = 10 |
| controller = TobiiController(display) | |
| list | pxaccuracy = [(numpy.mean(lxacc), numpy.mean(lyacc)), (numpy.mean(rxacc), numpy.mean(ryacc))] |
| tuple | pxdsttresh = (XRMS, YRMS) |
| sampletime = numpy.mean(ist) | |
| samplerate = int(1000.0 / self.sampletime) | |
| pxfixtresh = deg2pix(self.screendist, self.fixtresh, self.pixpercm) | |
| pxspdtresh = deg2pix(self.screendist, self.spdtresh/1000.0, self.pixpercm) | |
| pxacctresh = deg2pix(self.screendist, self.accthresh/1000.0, self.pixpercm) | |
Public Attributes inherited from pygaze._eyetracker.baseeyetracker.BaseEyeTracker | |
| draw_calibration_target = func | |
| draw_drift_correction_target = func | |
A class for Tobii EyeTracker objects
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.__init__ | ( | self, | |
| display, | |||
| logfile = settings.LOGFILE, | |||
| eventdetection = settings.EVENTDETECTION, | |||
| saccade_velocity_threshold = 35, | |||
| saccade_acceleration_threshold = 9500, | |||
| blink_threshold = settings.BLINKTHRESH, | |||
| ** | args ) |
Initializes a TobiiTracker instance
arguments
display -- a pygaze.display.Display instance
keyword arguments
None
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.calibrate | ( | self, | |
| calibrate = True, | |||
| validate = True ) |
Calibrates the eye tracking system
arguments
None
keyword arguments
calibrate -- Boolean indicating if calibration should be
performed (default = True)
validate -- Boolean indicating if validation should be performed
(default = True)
returns
success -- returns True if calibration succeeded, or False if
not; in addition a calibration log is added to the
log file and some properties are updated (i.e. the
thresholds for detection algorithms)
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.close | ( | self | ) |
Neatly close connection to tracker
arguments
None
returns
None -- saves data and sets self.connected to False
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.connected | ( | self | ) |
Checks if the tracker is connected
arguments
None
returns
connected -- True if connection is established, False if not
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.drift_correction | ( | self, | |
| pos = None, | |||
| fix_triggered = False ) |
Performs a drift check
arguments
None
keyword arguments
pos -- (x, y) position of the fixation dot or None for
a central fixation (default = None)
fix_triggered -- Boolean indicating if drift check should be
performed based on gaze position (fix_triggered
= True) or on spacepress (fix_triggered =
False) (default = False)
returns
checked -- Boolaan indicating if drift check is ok (True)
or not (False); or calls self.calibrate if 'q'
or 'escape' is pressed
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.fix_triggered_drift_correction | ( | self, | |
| pos = None, | |||
| min_samples = 10, | |||
| max_dev = 60, | |||
| reset_threshold = 30 ) |
Performs a fixation triggered drift correction by collecting
a number of samples and calculating the average distance from the
fixation position
arguments
None
keyword arguments
pos -- (x, y) position of the fixation dot or None for
a central fixation (default = None)
min_samples -- minimal amount of samples after which an
average deviation is calculated (default = 10)
max_dev -- maximal deviation from fixation in pixels
(default = 60)
reset_threshold -- if the horizontal or vertical distance in
pixels between two consecutive samples is
larger than this threshold, the sample
collection is reset (default = 30)
returns
checked -- Boolaan indicating if drift check is ok (True)
or not (False); or calls self.calibrate if 'q'
or 'escape' is pressed
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.get_eyetracker_clock_async | ( | self | ) |
Retrieve difference between tracker time and experiment time
arguments
None
keyword arguments
None
returns
timediff -- tracker time minus experiment time
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.is_valid_sample | ( | self, | |
| gazepos ) |
Checks if the sample provided is valid, based on Tobii specific
criteria (for internal use)
arguments
gazepos -- a (x,y) gaze position tuple, as returned by
self.sample()
returns
valid -- a Boolean: True on a valid sample, False on
an invalid sample
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.log | ( | self, | |
| msg ) |
Writes a message to the log file
arguments
ms -- a string to include in the log file
returns
Nothing -- uses native log function of iViewX to include a line
in the log file
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.log_var | ( | self, | |
| var, | |||
| val ) |
Writes a variable to the log file
arguments
var -- variable name
val -- variable value
returns
Nothing -- uses native log function of iViewX to include a line
in the log file in a "var NAME VALUE" layout
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.prepare_backdrop | ( | self | ) |
Not supported for TobiiTracker (yet)
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.prepare_drift_correction | ( | self, | |
| pos ) |
Not supported for TobiiTracker (yet)
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.pupil_size | ( | self | ) |
Returns newest available pupil size
arguments
None
returns
pupilsize -- a float or -1 on an error
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.sample | ( | self | ) |
Returns newest available gaze position
arguments
None
returns
sample -- an (x,y) tuple or a (-1,-1) on an error
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.send_command | ( | self, | |
| cmd ) |
Not supported for TobiiTracker (yet)
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.set_backdrop | ( | self | ) |
Not supported for TobiiTracker (yet)
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.set_detection_type | ( | self, | |
| eventdetection ) |
Set the event detection type to either PyGaze algorithms, or
native algorithms as provided by the manufacturer (only if
available: detection type will default to PyGaze if no native
functions are available)
arguments
eventdetection -- a string indicating which detection type
should be employed: either 'pygaze' for
PyGaze event detection algorithms or
'native' for manufacturers algorithms (only
if available; will default to 'pygaze' if no
native event detection is available)
returns -- detection type for saccades, fixations and
blinks in a tuple, e.g.
('pygaze','native','native') when 'native'
was passed, but native detection was not
available for saccade detection
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.set_eye_used | ( | self | ) |
Logs the eye_used variable, based on which eye was specified
(if both eyes are being tracked, the left eye is used)
arguments
None
returns
Nothing -- logs which eye is used by calling self.log_var, e.g.
self.log_var("eye_used", "right")
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.start_recording | ( | self | ) |
Starts recording eye position
arguments
None
returns
None -- sets self.recording to True when recording is
successfully started
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.status_msg | ( | self, | |
| msg ) |
Not supported for TobiiTracker (yet)
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.stop_recording | ( | self | ) |
Stop recording eye position
arguments
None
returns
Nothing -- sets self.recording to False when recording is
successfully started
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_blink_end | ( | self | ) |
Waits for a blink end and returns the blink ending time
arguments
None
returns
timestamp -- blink ending time in milliseconds, as
measured from experiment begin time
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_blink_start | ( | self | ) |
Waits for a blink start and returns the blink starting time
arguments
None
returns
timestamp -- blink starting time in milliseconds, as
measured from experiment begin time
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_event | ( | self, | |
| event ) |
Waits for event
arguments
event -- an integer event code, one of the following:
3 = STARTBLINK
4 = ENDBLINK
5 = STARTSACC
6 = ENDSACC
7 = STARTFIX
8 = ENDFIX
returns
outcome -- a self.wait_for_* method is called, depending on the
specified event; the return values of corresponding
method are returned
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_fixation_end | ( | self | ) |
Returns time and gaze position when a fixation has ended;
function assumes that a 'fixation' has ended when a deviation of
more than self.pxfixtresh from the initial fixation position has
been detected (self.pxfixtresh is created in self.calibration,
based on self.fixtresh, a property defined in self.__init__)
arguments
None
returns
time, gazepos -- time is the starting time in milliseconds (from
expstart), gazepos is a (x,y) gaze position
tuple of the position from which the fixation
was initiated
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_fixation_start | ( | self | ) |
Returns starting time and position when a fixation is started;
function assumes a 'fixation' has started when gaze position
remains reasonably stable (i.e. when most deviant samples are
within self.pxfixtresh) for five samples in a row (self.pxfixtresh
is created in self.calibration, based on self.fixtresh, a property
defined in self.__init__)
arguments
None
returns
time, gazepos -- time is the starting time in milliseconds (from
expstart), gazepos is a (x,y) gaze position
tuple of the position from which the fixation
was initiated
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_saccade_end | ( | self | ) |
Returns ending time, starting and end position when a saccade is
ended; based on Dalmaijer et al. (2013) online saccade detection
algorithm
arguments
None
returns
endtime, startpos, endpos -- endtime in milliseconds (from
expbegintime); startpos and endpos
are (x,y) gaze position tuples
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.wait_for_saccade_start | ( | self | ) |
Returns starting time and starting position when a saccade is
started; based on Dalmaijer et al. (2013) online saccade detection
algorithm
arguments
None
returns
endtime, startpos -- endtime in milliseconds (from expbegintime);
startpos is an (x,y) gaze position tuple
Reimplemented from pygaze._eyetracker.baseeyetracker.BaseEyeTracker.
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.accthresh = saccade_acceleration_threshold |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.binocular = 2 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.blinkthresh = blink_threshold |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.controller = TobiiController(display) |
| str pygaze._eyetracker.libtobiilegacy.TobiiTracker.description = "experiment" |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.disp = display |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.dispsize = settings.DISPSIZE |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.errdist = 2 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.errorbeep = Sound(osc='saw',freq=100, length=100) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.eventdetection = eventdetection |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.eye_used = 0 |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.fixtimetresh = 100 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.fixtresh = 1.5 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.kb = Keyboard(keylist=['space', 'escape', 'q'], timeout=1) |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.left_eye = 0 |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.maxtries = 100 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.nvalsamples = 1000 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.outputfile = logfile |
| str pygaze._eyetracker.libtobiilegacy.TobiiTracker.participant = "participant" |
| tuple pygaze._eyetracker.libtobiilegacy.TobiiTracker.pixpercm = (self.dispsize[0]/float(self.screensize[0]) + self.dispsize[1]/float(self.screensize[1])) / 2.0 |
| tuple pygaze._eyetracker.libtobiilegacy.TobiiTracker.prevsample = (-1,-1) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxacctresh = deg2pix(self.screendist, self.accthresh/1000.0, self.pixpercm) |
| list pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxaccuracy = [(numpy.mean(lxacc), numpy.mean(lyacc)), (numpy.mean(rxacc), numpy.mean(ryacc))] |
| tuple pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxdsttresh = (XRMS, YRMS) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxerrdist = deg2pix(self.screendist, self.errdist, self.pixpercm) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxfixtresh = deg2pix(self.screendist, self.fixtresh, self.pixpercm) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.pxspdtresh = deg2pix(self.screendist, self.spdtresh/1000.0, self.pixpercm) |
| bool pygaze._eyetracker.libtobiilegacy.TobiiTracker.recording = False |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.right_eye = 1 |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.samplerate = int(1000.0 / self.sampletime) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.sampletime = numpy.mean(ist) |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.screen = Screen() |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.screendist = settings.SCREENDIST |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.screensize = settings.SCREENSIZE |
| pygaze._eyetracker.libtobiilegacy.TobiiTracker.spdtresh = saccade_velocity_threshold |
| int pygaze._eyetracker.libtobiilegacy.TobiiTracker.weightdist = 10 |