psychopy.org | Reference | Downloads | Github

Repeat conditions a set number of times, when conditions have unequal number of stimuli

New to Psychopy.
I’m trying to set up a Stroop task with 3 conditions (congruent, incongruent and neutral). I want each of these conditions to repeat 40 times (e.g. 40 congruent trials, 40 incongruent trials, etc.). All conditions should be inter-mixed with one another. However, in my excel document, I have 3 congruent stimuli, 6 incongruent stimuli, and 9 neutral stimuli. I’ve tried various approaches, which either result in all stimuli being repeated 40 times or blocks of stimuli being presented independently 40 times - neither of which are desirable. How can I resolve this?

This is currently a question of experimental design rather than a PsychoPy-implementation question.

i.e. 40 isn’t an integer multiple of 3, 6, or 9, so the number of desired trials is incompatible with the number of stimuli.

Can you explain your intended design more explicitly/fully?

Stimuli will be repeated - only 3 colours are being used (red, green, blue) so only 3 congruent combinations are possible (red-red, green-green, blue-blue), while 6 non-congruent combinations are possible (word:colour - red:green, red:blue, green:red, green:blue, blue:red, blue:green). Ignoring the neutral (word-string) condition, that would provide me with 9 conditions on my excel sheet - however, I want 40 congruent trials, and 40 non-congruent trials - not 40 trials of each of the 9 combinations. So essentially, I want to sort these combinations into two separate conditions (congruent and non-congruent), with stimuli from each condition being presented 40 times, without having to present the stimuli in separate blocks. I hope that makes sense.

I think I’ve solved the problem by:
Creating separate excel files for each condition
Adding these condition files to a separate conditionsFile excel sheet
Using the conditionsFile in an outer loop and $conditionsFile in an inner loop
and using this code:

Begin experiment:
myCount = 0

Begin routine:
myCount = myCount + 1
if myCount > 1:
trials.finished = True

Does this seem like a reasonable solution? (apologies if this is poorly worded, I’m not yet familiar with psychopy language)