Tobii Pro nano and PsychoPy not recording fixation, saccade, and blinks start and stop events

If this template helps then use it. If not then just delete and start from scratch.

OS (e.g. Win10): WIn 10
PsychoPy version (e.g. 2024.2.4 Py 3.8):2025_1-1, Py 3.10
Standard Standalone Installation? (y/n) If not then what?: Y
Do you want it to also run online? (y/n) N
What are you trying to achieve?: HDF5 file should record fixation, saccade and blink start and stop events

What did you try to make it work?: Everything works except PsychoPy is not recording these events when used with Tobii Pro Nano

Link to the most relevant existing thread you have found:

What specifically went wrong when you tried that?:
Include pasted full error message if possible. “That didn’t work” is not enough information. There is no error but need to understand how to get the fixation, saccade and blinks data as well.

Did you make sure Tobii is correctly setup with psychopy?
Communicating with an Eyetracker — PsychoPy v2025.2.2.

If not, then you wouldn’t have Tobii and psychopy talking to each other.

Issac

Hello @stanley1O1 ,

Thank you for your attention.

Yes Tobii nano pro is recording binocularsampleevents as expected except the fixation, blink and saccade CSVs are empty.

For my research I must have these events dataset. Has anyone used Tobii Pro Nano to get fixation, blinks and saccade in the HDF5 file?

How are you able to determine that the Tobii nano pro is recording correctly? What program/file are you looking at to determine that there are events being recorded?

If you have access to the Tobii pro lab, you can export the hdf to csv there.

Issac

@stanley1O1 HDF5 file is created in psychoPy as expected. I open the HDF5 file which has BinocularSampleEvents.csv and other event files except the other events files are empty. When I tested same Tobii Pro Nano in Tobii Pro Lab, it did create tsv/csv with fixation, saccade events. I assume iohub in PsychoPy prevents Tobii pro nano from recording fixation, saccade and blinks data. I might just need to calculate them (fixation and saccade from raw gaze data and status and blinks from status and pupil data). I have also msged Tobii support to advise on the calculation logic in case they have any specific recommendation but after reading lot of material I feel I have to find way to calculate mysefl unless PsychoPy and Tobii pro nano are made work to record these missing events data.

@stanley1O1 My question is - is it known challenge that Tobii pro nano doesnt record fixation, saccade and blinks events in PsychoPy? If I get such confirmation, I think i can stop investing time on making it work. I have not seen any post indicating Tobii pro nano creatind these events data in psychopy. Instead I am reading that Tobii has issue with these events in psychopy due to iohub. What is the truth?

How have you set up the settings in psychopy? The guide I mentioned ( Communicating with an Eyetracker — PsychoPy v2025.2.2 ), specifically mentions using the Tobii Pro Nano. Did also make sure to install the other required software? https://www.tobii.com/products/software/applications-and-developer-kits/tobii-pro-eye-tracker-manager#downloads

Did you try using an older version of psychopy (2022.2.5) as discussed in previous threads?( Iohub problem in eyetracking experiment (Tobii X3-120) - #2 by Damien ; Integrating eye-tracking with Tobii eye-tracker - #18 by mjohnston118 )

AFAIK there is nothing unique about the Nano compared to other products in their line in terms of calculations and event handling. Therefore, either it is not setup correctly, or you just need to try using an older version of psychopy.

Issac

@stanley1O1

I started building my very complex experiment with older versions of psychoPy 2022, 2023, and 2024 and lastly settled on 2025.1-1 to allow all my other devices work. I also have Tobii pro SDK, Tobii Pro manager. Calibration occured as expected in Tobii pro manager.

However, I also tested the Tobii Pro nano on older Psychopy version (2022) and the mentioned events files are empty there too. I tested on the demo experiment too w/o luck. I am reading that Tobi pro lab has the classifier logic which likely not supported in the iohub to record these 3 events data at least for Tobii pro nano. Now I could successfully write utility to derive blinks data from status and pupil data in the binoculareyesample file. Will focus on the fixation and saccade calculations next. i am attaching the binocular csv along with logs from HDF5. In case you see anything unusual that might be preventing the other events recording, please advise,

Greatly appreciate your valuable time and attention.

data_collection_events_eyetracker_BinocularEyeSampleEvent.csv (5.6 MB)

data_collection_events_experiment_MessageEvent.csv (153.9 KB)

data_collection_events_experiment_LogEvent.csv (8.0 KB)

What are your settings for detection of events in psychopy?

One thing I would try is to make sure eye data is being recorded correctly to begin with via the Tobii pro manager app. As in, just a csv/hdf of timestamp (based off hz), and x/y coordinates for each eye.

If that is blank, then your eyetracker isn’t setup correctly. If you get output, then great. Then use the app to get an output of fixation/saccade detection. If that works then move onto integration with psychopy. I ask this because your one comment of:

“Yes Tobii nano pro is recording binocularsampleevents as expected except the fixation, blink and saccade CSVs are empty.”

Sounds like this isn’t a psychopy problem, but a incorrect setup of your parameters problem if you can’t get event detection within the lab manager program.

Issac

@stanley1O1

Clarification - Attched csv is from Tobii pro lab which has the fixation and saccade for the same Tobii pro nano. Tobii pro lab has its own algorithm to calculate the fixation, saccade, blinks events.

Tobii pro manager is separate software that allows connecting the Tobi eye tracker tgru SDk on a given machine. I have that in use and working as expected on my machich which has PsychoPy experiment. It doesnt produce any files except it establishes the calibartion on a given monitor for the eye tracker use.

data_collection_events_eyetracker_BinocularEyeSampleEvent.csv (5.6 MB)

VH-AAI Data Export_p002.xlsx (3.5 MB)

With Tobii pro nano, PsychoPy creates HDF5 with expected gaze left x, y, gaze right x,y, pupil left and right values along with status. (attached the binocularEyeSampleEvent csv).

In psychopy, I am usng start et component and stop et component (not ROI) once before and after long chain of routines respectively. Tobii pro nano is starting and stopping as expected. Prior to that I conduct 9 point calibration and validation as well in psychopy. All looks good.

If I get confirmation that yes, someone has produced fixation, saccade, blinks events data in psychopy (any version) using Tobii pro nano and can share such file for my reference will be helpful.

Lastly, I am thinking of trying this option discussed in therad Retrieve Fixation Events using Iohub to see if I get lucky, except it is for eyelink not Tobii nano pro.

Based off what your are saying, the two attached files are outputs from Tobi pro lab? Pro lab can create a basic recording and event detection output based off your parameters. Once you set up that recording and detection, does your pro lab output create the correct event detections? This is all without any psychopy involved.

Issac

@stanley1O1

one file with prefix VH_AAI is from Tobii pro lab and other file with binoculareyesampleevent name is from psychopy (extrcated from HDF5). What settings are needed in PsychoPy for detecting saccade, fixation and blinks. I am not aware of any such settings except setting the eye tracking in experiment tab and using calibration, validation, et component etc

@stanley1O1

If this helps, this therad mentions similar issue. Saccade information missing from hdf5 file (Tobii eye tracker + PsychoPy)

I understand the problem now. No, psychopy does not have anything in regards to fixation/saccade detection, other than what you would hard code (see example: Retrieve Fixation Events using Iohub - #6 by DK_allday ). Depending on what you want specifically you can use the ROI area to determine if a fixation had occurred, or if they were supposed to fixate in that area, and left it (you are only limited by your coding skill and imagination haha).

The other thing would be a separate machine that would analyze eye data and sent a trigger/data to psychopy, which is then appended to the trial info, etc.

Take your binocular HDF file, and put that into Tobii pro lab and analyze the data for detecting fixations/saccades/blinks.

Issac

@stanley1O1

thank you for your guidance. Tobii pro lab doesnt recognize HDF5 file (at least the lab version I have). I will need to transform the binocular samples file into tsv format that lab will recognize in order test if it will help recreate the fixation, saccade, blinks data. I feel at this point, I will try using the code and tracker instance or use standalone python utility to calculate these events (I got blinks already).

Thank you again for helping me find closure !