(how to track) response lag in Pavlovia

General issue – No URL

I have a series of time perception experiments that compare people’s estimates (or temporal reproductions) of intervals either between keypress and on-screen stimulus or two on-screen stimuli. In lab-based experiments there is a very robust finding that action-outcome intervals are underestimated relative to stimulus-stimulus intervals. This result does not seem to replicate reliably on Pavlovia. This makes me think that when running online, there is an added lag associated with registering a keypress, so that the actual action-outcome interval is actually longer than a corresponding stimulus-stimulus interval of same programmed length.
Note that the concern here is not so much accuracy of the interval itself, but relative consistency, i.e. that an interval of programmed length X is experienced the same regardless of whether it is between keypress and stimulus or between 2 stimuli

I tried to check this out by looking at entries in the output file, but whereas when running the experiment in python, it contains stuff like stim1.start and stim1.stop, there is nothing like that in the output files coming from Pavlovia. The log files have a serial string of entries but are much harder to interpret!

So my question is twofold:

Firstly, what can I do to maximise consistency between keypress-stimulus and stimulus-stimulus intervals?
Secondly, what can I do to check what intervals the subject actually experienced?

are you checking the .log files from pavlovia? they contain a log of onset times of each component.

1 Like

We quantified aspects of response timing on Pavlovia and other platforms here:

For a study with demands like yours, you probably really should be doing similar objective testing, using a mechanical keypress device, along with a photodiode to measure the stimulus onsets. But bear in mind that there will be variability at a user level, depending on computers used, keyboards, concurrent software, and so on, which you can’t control for (along with platforms and browser combinations, which you can test across).

1 Like

Thanks @haaleemur @Michael.

Can you clarify whether there is a difference in the data files between PsychoJS and Psychopy?
I.e. whereas the Psychopy datafile records start and finish times of events, the PsychoJS does not. I find the log file very hard to read and would prefer it if I could analyse the event timings from the data rather than the log file.

I didn’t realise there was a difference in logging between PsychoPy and PsychoJS in that way. This would be a question for @jon and the developer team I think.

Yes, we should look in to adding that to the PsychoJS outputs although in JS the timestamps themselves will be slightly less precise

Hi Marc,

I may be misunderstanding the problem here with time stamps in the psychoJS output but nothing prevents you from manually logging the duration of a routine in your output file using code components.

E.g. I am manually logging onsets of different routines in my code by using the clock code at the beginning of the routine

trialClock = new util.Clock;
startTime = trialClock.getTime();

at the end of a routine.

fix_blankEnd = trialClock.getTime();

Would that help?


HI Julia – thanks for this.
Yes, a good idea!