Best logging interval for Tobii Pro Fusion 120 Hz, and suggestions for time-window binning in R
Hi everyone,
I’m running an experiment in OpenSesame using a Tobii Pro Fusion eye tracker operating at 120 Hz, and I’d like some advice about choosing the best logging interval (in milliseconds) for gaze sampling.
Since 120 Hz corresponds to a hardware sampling interval of approximately 8.33 ms, I cannot replicate this value exactly in OpenSesame, which only accepts integer millisecond values. So I need to decide whether to set the polling interval to 8 ms, 9 ms, or 10 ms.
My specific questions are:
- Which logging interval is recommended for a 120 Hz Tobii device?
- Using 8 ms means polling slightly faster than the hardware sampling rate. This might occasionally lead to reading the same hardware sample twice, producing duplicates.
- Using 9 ms or 10 ms means polling slower than 8.33 ms, which might sometimes miss a hardware sample. From your experience, is it better to risk occasional duplicates (which can be handled during data cleaning), or to risk skipping samples?
- How does OpenSesame/PyGaze handle repeated reads of the same sample?
- If I set the interval to 8 ms, does the software store multiple identical samples when no new hardware sample is available, or does it only log when a new sample arrives?
- Performance considerations:
- Are there any known issues with using a fast interval like 8 ms for ~20-second trials (≈15 trials per participant), or is this generally safe?
Time-window analysis (RStudio):
I will analyse the data in R using time-window or binned approaches, so I’d also like to ask:
- What bin size do you recommend when analysing 120 Hz data?
- Since hardware samples arrive every ~8.33 ms, would you suggest bins of 50 ms, 100 ms, 150 ms, or something else to balance:
- temporal precision,
- noise reduction,
- statistical stability?
Any practical guidance would be greatly appreciated.
Thank you very much in advance!
Best,
Irene :)
Comments
Hi @irenetognon
Below are some suggestions from SigmundAI, our Opensesame AI assistant, and hopefully you can find some useful guidance regarding your questions (which are not really related to an Opensesame issue to fix per se).
-------
Sigmund: For a 120 Hz Tobii, I’d lean towards polling at 8 ms and dealing with duplicates later, rather than risking systematic gaps in the stream.
I’ll go through your questions in order.
1. Recommended logging interval for 120 Hz Tobii
Recommendation: Use 8 ms.
Why slightly faster is better than slightly slower:
For most eye‑tracking analyses, it’s preferable to have:
2. What happens if you poll faster than the hardware (duplicates vs skipped samples)?
Conceptually
When you poll at 8 ms but the tracker samples at 8.33 ms:
So your logged data will look like:
How PyGaze / OpenSesame usually handle this
The exact behavior can depend on the backend, but typically:
So if you log every 8 ms, you can get:
timestamp(Tobii time) and gaze position, orclocktimestamps will be slightly misaligned but that’s ok as long as you rely on Tobii timestamps for eye‑movement metrics.Key point: duplicates are expected and safe; they’re just “no new information yet” situations.
In your R pipeline you can trivially:
3. Does it only log when a new sample arrives?
In most PyGaze + Tobii setups:
So:
If you want to be 100% sure for your exact setup, you can:
4. Performance at 8 ms for ~20 s trials
Rough numbers:
In practice, for an experiment of this scale:
With OpenSesame/PyGaze, a standard “log gaze to file once per 8 ms” design over 20 s trials is not unusual and typically fine.
If you’re worried:
5. Bin size for 120 Hz data in R (time‑window analysis)
You’ll be working with hardware samples at ~8.33 ms, but your analysis “units” (bins) should be larger than a single sample to reduce noise and make statistics more stable.
Typical choices and their trade‑offs:
For a 120 Hz Tobii Pro Fusion, typical recommendations:
You can also:
Practical summary for your setup
If you’d like, you can paste a short snippet of how you’re currently logging gaze (inline_script / PyGaze) and I can point out exactly where duplicates will appear and how to tag tracker vs experiment timestamps so your R code can deal with them cleanly 🙂
I am Sigmund, your OpenSesame AI assistant! I occasionally answer questions on the forum, but you can always find me on sigmundai.eu!