Timing Accuracy Variable

Hi guys!
I’m new on PsychoPy and new some of your help :slight_smile:

What my experiment does?
My experiment shows 2 images for the participant and 2 response options. The participant needs to discover the relation between the 2 images and then select one of the response options clicking with mouse. Each block contains 16 trials. At the end of the block is showed the percentage of correct answers. To go to next block the participant needs a total of 80% (or more) correct answers. On the contrary the participant restarts the block.

What I want to do?
I want to add a new variable: timing accuracy! (time variable)
Therefore the participant, besides a total of 80% (or more) correct answers, he needs to responde each trial in a maximum of 3.000 miliseconds. For conclude the block the participant needs a total of 80% (or more) correct answers (this works perfectly in my experiment) and a timing accuracy ≤ 3.000 miliseconds in each trial.

How I can add this new variable?

(I’m not trying to put my experiment on Pavlovia)

Here is a sample of my experiment file:
MTS - OtM 2x3.psyexp (134.2 KB)

Thanks! :smiling_face_with_three_hearts:

.

You could have a flag (e.g. tooSlow) which is set to False at the beginning of your block and then set to True if resp_corr.rt > 3 (or however you are recording reaction time).

Hi @wakecarter thanks for your reply.

Does mouse has attribute for .rt ?

In my experiment the participant use the mouse to select one of the response options.

Here my file, if it helps
MTS - OtM 2x3.psyexp (134.2 KB)

For mouse responses I tend to record the value of t in Each Frame or End Routine code (Each Frame gives a slightly shorter reaction time and is probably more accurate).

sorry for the inconvenience @wakecarter
It’s seems pretty simple, but what is the code for recording the mouse response time?

if mouse.isPressedIn(target): # target is the name of the object to click on
     rt = round(t*1000) # t is seconds since the start of the routine
     thisExp.addData('RT',rt)
     continueRoutine = False

@wakecarter pretty thanks! This works perfectly :slight_smile:

“# t is seconds since the start of the routine” what I can use if I want a variable to count since the mouse start?

Taking my code from: Saving time of first mouse movement - #3 by wakecarter

Begin Experiment

myClock = core.Clock() # new util.Clock() in JS

Begin Routine

mouserec = mouse.getPos()
moved = False
tooSlow = False

Each Frame

if moved == False:
     mouseloc = mouse.getPos()
     if mouseloc[0] != mouserec[0] or mouseloc[1] != mouserec[1]:
          moved = True
          thisExp.addData('Moved',round(t*1000))
          myClock.reset()
elif mouse.isPressedIn(target): # target is the name of the object to click on
     rt = round(myClock.getTime()*1000) # t is seconds since the start of the routine
     thisExp.addData('RT',rt)
     continueRoutine = False
     if rt > 3000:
          tooSlow = True

To clarify. By mouse start did you mean first movement of the mouse or the start of the mouse component? I’m now thinking the latter, in which case I would reset the clock when the mouse starts, not when it moves. When does it start (or perhaps more logically, when does the stimulus to be responded to start)?

I mean the start of the mouse component