psychopy.org | Reference | Downloads | Github

Accuracy of core.Clock() in recording reaction time


#1

I am using psychopy to conduct an linguistic experiment where segments of sentences are to be viewed by subjects,and their time spent in reading each segment will be recorded as reaction time. I choose core.Clock() to record the reaction time as follows:

timer=core.Clock()
display=visual.TextStim(win,color=[1,1,1])
display.draw()
win.flip()
core.wait(0)
timer.reset() #reset the time to be 0
key_list=key.wait() #wait until the subject responds
timeUsed=timer.getTime() #get the the time used by the subject to respond since a stimulus is displayed.
But the documentation of psychopy reminds that ----

''Using Clocks to time stimuli is not very accurate because it fails to account for the fact one frame on your monitor has a fixed frame rate ‘’.http://www.psychopy.org/coder/codeStimuli.html#timing

I am concerned about the accuracy of the time recording in my experiment ,though in my experiment no time duration is set in advance to display any text stimulus as the sample code shown in http://www.psychopy.org/coder/codeStimuli.html#timing and all that is needed to do is to wait until the subject’s press on the key and record an ‘‘individual’’ reaction time.

So my question is :

When I just wait for the subject’s reaction and record the time ,rather than make each stimulus be displayed for a fixed ammount of time , will inaccuracy caused by frame rate occur ?

And if anyone could explain more specific about how a fixed frame rate would affect timing ,that would be helpful because I thought for a long time and seached a lot but still cannot figure out the details about the frame rate effect on time recording.

Thank you very much!


#2

I think the code you posted should avoid the frame issue.

If you were trying to get people to respond during a dynamic display, which typically takes the form of a loop that includes a win.flip() to display each frame of the animation, then the RTs you would get would be multiples of the duration of a single frame because it would only check for a response once per refresh. If you are asking for RTs with a static display, which does not require a loop timed on win.flip(), the framerate should be irrelevant.

In your code you’re just waiting for a keypress and the screen doesn’t need to refresh while it’s waiting for the keypress, so the framerate should be irrelevant and you should get a precise RT.