jacanterbury
jacanterbury

Reputation: 1505

PsychoPy Builder - How to I take a rest part way through a set of trials?

In PsychoPy builder, I have a lot of trials and I want to let the participant take a rest/break part way through and then press SPACE to continue when they're ready.

Any suggestions about how best to do this?

Upvotes: 1

Views: 1137

Answers (1)

jacanterbury
jacanterbury

Reputation: 1505

PsychoPy Builder uses the TrialHandler class and you can make use of its attributes to do control when you want to take a rest.

Assuming you're trial loop is utilising an Excel/csv file to get the trial data then make use of trialHandler's attribute : thisTrialN

e.g.

1/ Add a routine containing a text component into your loop (probably at the beginning) with your 'now take a rest...' message and a keyboard component to take the response when they are ready to continue.

2/ Add a custom code component as well and place something similar to this code into its "Begin Routine" tab:

if trials.thisTrialN  not in [ int(trials.nTotal / 2) ]:
    continueRoutine=False

where 'trials' is the 'name' of your trial loop.

The above will put a rest in the middle of the current set of trials but you could replace it with something like this

if trials.thisTrialN  not in [10,20]:
    continueRoutine=False

if you wanted to stop after 10 and again after 20 trials.

Note, if you're NOT using an Excel file but are simply using the 'repeat' feature of a simple trial loop, then you'll need to replace thisTrialN with thisRepN

If you're using an Excel file AND reps you'll need to factor in both when working out when you want to rest.

This works by using one of Builder's own variables - continueRoutine and sets it false for most trials so that most of the time it doesn't display the 'take a rest' message.

If you want to understand more, then use the 'compile script' button (or F5) and take a look at the python code that Builder generates for you.

Upvotes: 3

Related Questions