Skip to content

Latest commit

 

History

History
50 lines (30 loc) · 2.56 KB

Eyelink Triggercheck.md

File metadata and controls

50 lines (30 loc) · 2.56 KB

Parallel Port Trigger for eyelink

We tested the complete delay of sending a parallelport trigger over an eyelink system. We conntected a parallelport cable from our stimulation pc to the eyelink-host. We set the eyelink-host parallelport to a random integer using: sendCommand("!*write_ioport 0x378 %i"%(randint))

We tested the pylink package from sr-research directly and the pygaze wrapper. In both cases, for 2000 tested triggers, we observed the majority below 1ms.

Results

Total time, function call & readout: Pylink in [ms]: pylink trigger test

Total time, function call & readout: PyGaze in [ms]: PyGaze trigger test

In pygaze 2/20.000 (0.0001%) of triggers have a high delay (>10ms, up to 50ms(!)). 8/20.000 are higher than 2ms (0.0004%). Further checks showed, that the extereme delays of ~50ms are during the function call of tracker.send_command.

In all other cases (7 out of 8) it seems that the eyetracker is lagging. We did further testing using matlab and a photodiode, here the maximal delay (out of 1700 trials) was 8ms. based on a very stereotyped LCD response. This already hints to a python/pylink problem?

PyGaze trigger test Green is the total time, red is the time after the send_command command returned but before the trigger arrived and blue is the negative time of only the send_command. It is clear, that some delays happen after python send the command to the eyetracker (red peaks) but the largest one is clearly the sending of the command.


Further tests: I let the script run for 200.000 triggers (ok its only 170.000 because I need to go home) because I wanted to see whether the glitch occurs at precicely timed intervals (NTP clock drift update?). It does not seem to do. Again we have three points in time:

A send_command B Wait_for_parallel C

Timepoint A minus Timepoint B: The very big lags occur with A-B, i.e. the call of the eyelink library. They can be higher than 50ms, in one case even 1s! In most cases these are smaller 2ms, only in 0.001% cases they are higher.

Timepoint B minus Timepoint C: Here we observe that sometimes the eyetracker seems to show a delay, 0.0002%. These delays seem to cluster at 14ms and 2ms.

I uploaded the points as a 'b'-pickle here

Here is the same plot as above, but now with way more data and pylink directly instead of pygaze: trigger pylink

The script can be found here