Eye-tracker component not stopping recording

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

OS (e.g. Win10): macOS 12.4 & Windows 10 & Windows 11
PsychoPy version (e.g. 1.84.x): 2022.11 & 2022.2.1
Standard Standalone? (y/n) If not then what?: y
What are you trying to achieve?: Eye-tracking recording (with mouse-gaze, in this test)

tl;dr—There seems to be a time-recording bug in the eye-tracking component. (No problem for me but looks like it needs a tweak).

Dave George & I noticed a general bug that will with the eye-tracking component: it does not stop when it is scheduled to and will wrongly use the stop-time of the trial (from the etRecord component?). This would not matter when the the trial and the eye-tracker component have the same duration but it shows up when they do not.

In this experiment a pair of images are presented for 2 seconds and there are 10 eye-tracking components that sample eye-tracking for 10 x 200-ms bins. In this screenshot they are named L01, L02….L10.

There is also an eye-tracking component ‘Ltotal’, that records for the full 2 seconds, which should give the aggregate of the individual L01–L10 eye tracking components.

In a test, just now, with mouse-gazer, running as a simulation of an eye-tracker and looking at the .csv file output:

Ltotal.timesOn = 1.060 s and Ltotal.timesOff = 1.911 s 

L01.timesOn = 1.087 s and L01.timesOff = 1.908 s
  • Neither the L01.timesOn nor L01.timesOff should be bigger than .2 s, because that’s the duration of the L01 eye tracking component. It looks like it’s taking, more-or-less, the stop time from the full trial (i.e., 1.908 s ~ 1.911 s).
  • The Ltotal.timesOn = 1.060 s ~ L01.timesOn = 1.087 s, so that’s what it should be. √

In the coder view for part of the L01 eye-tracking component, it looks like it should say L01.status == FINISHED in place of L01.status == STARTED. If I change this, I just get no times in L01, so maybe not that! Or is correctly making L01.tStop = t during the first 200 ms, then overwriting it (ultimately) with the final value of t (~200 ms), when the etRecord component finishes for that trial…?

unknown copy