Problems randomizing order of routines/counterbalancing

Hello,

I am trying to randomize the order of 3 routines using builder mode and having problems with it. In my experiment I have participants perform an imagination task followed by 3 consecutive rating scales. I set every rating scale to be a separate routine (having all in one routine was really buggy).

Basically I just want to randomize the order of the rating scales. So that in one trial it´s scale 1, followed by scale 2, followed by scale 3, in another trial it´s scale 3, followed by scale 1, followed by scale 2, etc.
I tried the blocks of trials/counterbalancing approach witout any luck. I seem to be missing something.

I did the following steps:

I created an outerloop (around all 3 ratingsscales) and an innerloop around each ratinscale.

I created 6 condition files, determining how many times a certain routine will pe repeated per iteration.

Here are two of them:

I also created an outerloop condition file with the names of the 6 other condition files in them (called free_outerloop).

I set my innerloops settings according to the variables from the 6 conditions files

5 6 7

I set my outerloop the following:

8

When I run it I get the following error code:

I seem to be missing something. In the manual about counterbalancing different subtasks they talk about “creating a field in the experiment setting called group” and then using a special code in the settings ouf the outerloop.

This is the code used in the manual:
$“chooseBlocks”+expInfo[‘group’]+".xlsx" `

And here a screenshot of the whole paragraph in the manual

However, I don´t know if this even would help me. I checked out a demo of it and it seems that when creating an additional field called group or whatever, in the beginning of the experiment you have to decide which group you want to run. This is not really what I want, I just want to randomize the order of the routines without having to decide which one I first want to start.

Here is a file of a simpliefied version of my experiment with all the condition files. Please don´t be overly confused by the test and labels of the scales, they are in german.

free_BAC.xlsx (8.6 KB) free_CBA.xlsx (8.6 KB) free_outerloop.xlsx (8.6 KB) free_BCA.xlsx (8.6 KB) free_ABC.xlsx (8.6 KB) test_free_imag_task.psyexp (23.1 KB) free_ACB.xlsx (8.6 KB) free_CAB.xlsx (8.6 KB)

Sorry for the long post, I tried to explain my problem in a deatailed and clear way. Thanks very much in advance for any help.

Why 6 versions of you nReps spreadsheets rather than one in random order?

I think unfortunately it is not posible with one spreadsheet. At least I would not know how to do it and in the manual the also do it with multiple spreadsheets.

The problem is that you are not actually calling any of your six files.

Your outer loop sets a variable res_order

Your inner loops use variables such as nReps_pie

You do not have a loop pointing at the file selected in res_order.


Your outer loop should point to free_ABC.xlsx

Then it might work.

Thanks for the help wakecarter, I figured it out. I forgot to set a an additional loop around it.

In case anyone has the same problem:
I have one loop around each of the 3 ratingscales with the variables nReps_ple, nReps_bea or nReps_val set in nReps$. (innerloop1, innerloop2, innerloop3)

Then I have one loop around the three rating scales with the varriable $res_order set under Conditions. (loop_res_order)

And then finally one loop around the whole experiment flow with free_outerloop.xlsx as conditions. (outerloop)

So the free_outerloop.xlsx defines the variable res_order (which has the 6 conditions files free_ABC.xlsx, free_ACB.xlsx, etc. as values) which define the nReps_ple, nReps_bea and nReps_val

FYI, I also found another workaround for someone who’s too lazy to create a ton of loops and has the Likert questions with the same number of possible responses (e.g., all 5-point Likert Qs).

Make ONE routine for all questions. Each question should have its own text component, where you write out a given question.
Make ONE conditions csv containing two columns per question.
-Column1=opacity, where you set opacity to 0 for null trials and 1 for trials where that question should be shown.
-Column2=stimulus duration, where you set duration=0.1 for null trials and a larger number of your choice for trials where that question should be shown (I did 10, as I capped each trial to 10s—want participants to respond quickly).

Ofc this is a hack (not perfect), but if you’re just doing pilot testing as I am it’s a nice quick fix. Attached example fotos to exemplify ~~~





(last screenshot)
Screen Shot 2023-06-14 at 9.11.11 PM