How to create a memory experiment with several blocks and different numbers of trials in each block without repeating stimuli in different blocks?

OS (e.g. Win10): Win10
PsychoPy version (e.g. 1.84.x): v2022.2.4

Hello everyone,
I’m new to PsychoPy and could use some help since I’ve been struggling to achieve what I’m trying to achieve for quite a while now. I’ve been searching through the topics and could integrate some of the advices and code components in my own experiment, however, I couldn’t find the answer to all my questions. (By the way, English isn’t my mother tongue, so I’m sorry if some sentences sound a little unusual :smiley: - I’ll try my best though!)

I’m trying to build a memory experiment with 2 practice blocks in the beginning and 5 following “actual” blocks. Each block consists of a study and a test phase. The number of trials varies between the blocks. Nevertheless, in every block the number of test trials is twice the number of study trials
(for instance,
practice block 1: 2 stimuli in the study phase, 4 stimuli (2 old and 2 new) in the test phase;
practice block 2: 4 stimuli in the study phase, 8 stimuli (4 old and 4 new) in the test phase;
and so on …).
I’m wondering if my approach is the right one: For the 2 practice blocks, I created two routines, namely the study phase and the test phase, and put an inner loop around each of the two routines and an outer loop around both of the routines. I’ve done exactly the same for the 5 “actual” blocks, so again I created two routines (study phase and test phase) and put an inner loop around each of the two routines and an outer loop around both of the routines. The latter I did since I’d like to randomize the order of blocks in my experiment.

Also, I need the stimuli to be randomized. Therefore, I inserted a routine at the very beginning of my experiment and put some code in the Begin Experiment tab: stimulus_list=. In the Begin Routine tab I put stimulus_list.append(stimulus). I inserted a loop around this single routine and added an excel file which includes a long list of stimuli (nReps=1). In a next routine I shuffled the stimulus_list by a code component in the Begin Routine tab.
Now I’d like to assign certain sections of the stimulus list to specific blocks and phases: My plan was to assign stimuli 1-2 (of the shuffled stimulus list so that it is another order of stimuli for every person) to the study phase of my first block and stimuli 1-4 to the test phase of the same block to make sure that the same stimuli are presented in the study and test phase within one block with the same number of additional stimuli in the test phase. It is important that the stimuli which appear within one block aren’t repeated in another block. The problem is that I couldn’t figure out how to assign the stimuli to lists for each block and using them in the loop later on. I tried to assign them by using code: practiceBlock1_studyStimuli=stimulus_list[0:2], practiceBlock1_testStimuli=stimulus_list[0:4] and so on. Then I tried to put them (practiceBlock1_studyStimuli, practiceBlock1_testStimuli, practiceBlock2_studyStimuli, practiceBlock2_testStimuli) in two separate columns in an excel file, one for the studyStimuli and one for the testStimuli. Then I attached this excel file to the outer loop and put the name of the respective column with a $ in the inner loop as the conditions file but I received the error “No parameters set (conditionsFile not found)”. I have no idea how to solve this problem. Is there another way to do this than assigning the stimuli to different lists of stimuli for each phase and block?

To sum up, my two questions are:

  1. Is the structure of my experiment described above the right one?
  2. Do you have an advice how to make sure that the stimuli used in the study phase are presented in the test phase of the same block but not in another block?

I hope I described the structure of my experiment and my struggles well enough to make it understandable. I’d be really grateful for any kind of help!

Janne :slight_smile: