The TRACKPixx3 buffer
During recording, eye tracking data are stored in a buffer in the DATAPixx3’s onboard memory at a rate of 2 kHz, or 2000 samples per second. Data are formatted as an m x 20 array, where m corresponds to the number of samples recorded.
The table below explains each of these columns of data. It is important to note that in VPixx eye tracking convention, right and left eyes correspond to the eyes as they appear on the console feed. In tabletop and MEG setups, this view is typically the inverse of the participant’s first-person perspective. In MRI setups with a vertical mirror, the view is consistent with first-person perspective.
If you are unsure of which eye is labelled “right” and “left”, you can test this by covering an eye during tracking and checking the console view to see which eye is obscured.
Col | Name | Units | Description |
1 | Time tag | seconds | Time, in seconds, since the DATAPixx3 was last turned on. Uses the same clock as all other I/O on the DATAPixx3 for easy synchronization. |
2 | Left Eye x | pixels | x screen coordinate, in pixels, corresponding to the calibrated x position of the left eye. Uses a Cartesian system where (0,0) corresponds to the center of the display. |
3 | Left Eye y | pixels | y screen coordinate, in pixels, corresponding to the calibrated y position of the left eye. Uses a Cartesian system where (0,0) corresponds to the center of the display. |
4 | Left Eye Pupil Diameter | pixels | The diameter of the left pupil. The pupil is mapped as an ellipse; the diameter always reflects the major (longest) axis of this ellipse. |
5 | Right Eye x | pixels | x screen coordinate corresponding to the calibrated x position of the right eye. Uses a Cartesian system where (0,0) corresponds to the center of the display. |
6 | Right Eye y | pixels | y screen coordinate corresponding to the calibrated y position of the right eye. Uses a Cartesian system where (0,0) corresponds to the center of the display. |
7 | Right Eye Pupil Diameter | pixels | The diameter of the right pupil. The pupil is mapped as an ellipse; the diameter always reflects the major (longest) axis of this ellipse. |
8 | Digital Input | integer | An integer value which represents the 24-bit digital input to the DATAPixx3. This value will change in response to button box presses, incoming triggers, and any other input coming in from the Digital In port. |
9 | Left Eye Blink | boolean | 0 if the left eye is open, 1 if the left eye is closed. |
10 | Right Eye Blink | boolean | 0 if the right eye is open, 1 if the right eye is closed. |
11 | Digital Output | integer | An integer value which represents the 24-bit digital output being sent from the DATAPixx3. This value will change in response to outgoing triggers, e.g. from the DOut schedule or Pixel Mode. |
12 | Left Eye Fixation | boolean | Default 0, changes to 1 if the conditions for a left eye fixation event are met. By default, the fixation flag raises when the eye has moved less than 2500 pixels/second for the last 25 consecutive frames. These default thresholds can be changed by the user. |
13 | Right Eye Fixation | boolean | Default 0, changes to 1 if the conditions for a right eye fixation event are met. By default, the fixation flag raises when the eye has moved less than 2500 pixels/second for the last 25 consecutive frames. These default thresholds can be changed by the user. |
14 | Left Eye Saccade | boolean | Default 0, changes to 1 if the conditions for a left eye saccade are met. By default, the saccade flag raises when the eye has moved more than 10,000 pixels/second for the last 10 consecutive frames. These default thresholds can be changed by the user. |
15 | Right Eye Saccade | boolean | Default 0, changes to 1 if the conditions for a right eye saccade are met. By default, the saccade flag raises when the eye has moved more than 10,000 pixels/second for the last 10 consecutive frames. These default thresholds can be changed by the user. |
16 | Message code | – | implemented in future release |
17 | Left Eye Raw x | pixels | x value of the left eye pupil-corneal vector |
18 | Left Eye Raw y | pixels | y value of the left eye pupil-corneal vector |
19 | Right Eye Raw x | pixels | x value of the right eye pupil-corneal vector |
20 | Right Eye Raw y | pixels | y value of the right eye pupil-corneal vector |
Gaze and pupil data that are missing due to tracking loss return as NaN (Not a Number). Tracking is lost when the participant blinks or looks away from display.
High-level control of recording can be done with PyPixx software utility. In PyPixx, recording is controlled by toggling on the “Record Eye Tracking Data” in the Demo > TRACKPixx widget. When recording ends, data are automatically imported and saved to a .csv file on your computer.
For low level control, recording can be managed in MATLAB or Python via a TRACKPixx schedule. Buffer data can then be read directly into either program as a floating-point data array.
With MATLAB and Python, it is possible to query buffer contents during recording. For example, users can get the current eye position, or check whether the participant is fixating. For a full list of TRACKPixx functions in Python, check the toolbox documentation for Python. For MATLAB, simply type ‘Datapixx’ in the command line for a full list of functions.
The DATAPixx3 internal memory can store roughly an hour of eye tracking data before it loops back to the beginning of the buffer and overwrites data. If you are using several buffers, the available memory for eye data will shrink accordingly.
We recommend that long experiments regularly import TRACKPixx3 data from the buffer (e.g., between trials or experiment blocks) to avoid overwriting data.