Millisecond Forums

Question about randomise equal assignment to stimulus sub-conditions

https://forums.millisecond.com/Topic27148.aspx

By zhaokoh - 5/20/2019

Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao



By Dave - 5/20/2019

zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.
By zhaokoh - 5/20/2019

Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.

By Dave - 5/20/2019

zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.
By zhaokoh - 5/21/2019

Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao








By Dave - 5/21/2019

zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>

By zhaokoh - 5/22/2019

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.
By zhaokoh - 5/22/2019

zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.
By Dave - 5/22/2019

zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).
By zhaokoh - 5/23/2019

Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.




By Dave - 5/23/2019

zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"
By zhaokoh - 5/23/2019

Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"

Here attached the summary file, the group number 10,11,12,13,14,15, so in this case, I think the participants will be assigned to 1,2,3,1,2,3 accordingly. Am I right?
 Matching the group number and subject number, here is what I think happen in the detail data file:
Group number 1 - Subject 114362 - Condition 267 (Image 1737), Condition 133 (Image 1631), Condition 67 (Image 1277)
Group number 2 - Subject 139522 - Condition 133 (Image 1402), Condition 67 (Image 1631), Condition 267 (Image 1820)
Group number 3 - Subject 416486 - Condition 267 (Image 550), Condition 67 (Image 1402), Condition 133 (Image 1277)
Group number 1 - Subject 430584 - Condition 267 (Image 1737) <--- Here this subject has the same image and condition

In group 1, the items_267soa is using picset c, which consists of

<item picset_c>
/1 = "im0001402.jpg"
/2 = "im0002415.jpg"
/3 = "im0001737.jpg"
</item>

So I think my question/confusion is why the other images (1402, 2415) are selected for subject 430584, rather than 1737 (Which is the same as subject 114362)? 
I think my expectation of how it works might be different from what actually this is setup.....

Hope you can shed some light on this.

Thanks.





By Dave - 5/23/2019

zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"

Here attached the summary file, the group number 10,11,12,13,14,15, so in this case, I think the participants will be assigned to 1,2,3,1,2,3 accordingly. Am I right?
 Matching the group number and subject number, here is what I think happen in the detail data file:
Group number 1 - Subject 114362 - Condition 267 (Image 1737), Condition 133 (Image 1631), Condition 67 (Image 1277)
Group number 2 - Subject 139522 - Condition 133 (Image 1402), Condition 67 (Image 1631), Condition 267 (Image 1820)
Group number 3 - Subject 416486 - Condition 267 (Image 550), Condition 67 (Image 1402), Condition 133 (Image 1277)
Group number 1 - Subject 430584 - Condition 267 (Image 1737) <--- Here this subject has the same image and condition

In group 1, the items_267soa is using picset c, which consists of

<item picset_c>
/1 = "im0001402.jpg"
/2 = "im0002415.jpg"
/3 = "im0001737.jpg"
</item>

So I think my question/confusion is why the other images (1402, 2415) are selected for subject 430584, rather than 1737 (Which is the same as subject 114362)? 
I think my expectation of how it works might be different from what actually this is setup.....

Hope you can shed some light on this.

Thanks.






Your <picture> elements are sampling from the three items they're given randomly. In your shortened block

<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

you're only running a single trial per condition. Which of the 3 items that have been assigned to the 267 condition is sampled, is entirely random and has nothing to do with the groups defined in <variables>.
By zhaokoh - 5/23/2019

Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"

Here attached the summary file, the group number 10,11,12,13,14,15, so in this case, I think the participants will be assigned to 1,2,3,1,2,3 accordingly. Am I right?
 Matching the group number and subject number, here is what I think happen in the detail data file:
Group number 1 - Subject 114362 - Condition 267 (Image 1737), Condition 133 (Image 1631), Condition 67 (Image 1277)
Group number 2 - Subject 139522 - Condition 133 (Image 1402), Condition 67 (Image 1631), Condition 267 (Image 1820)
Group number 3 - Subject 416486 - Condition 267 (Image 550), Condition 67 (Image 1402), Condition 133 (Image 1277)
Group number 1 - Subject 430584 - Condition 267 (Image 1737) <--- Here this subject has the same image and condition

In group 1, the items_267soa is using picset c, which consists of

<item picset_c>
/1 = "im0001402.jpg"
/2 = "im0002415.jpg"
/3 = "im0001737.jpg"
</item>

So I think my question/confusion is why the other images (1402, 2415) are selected for subject 430584, rather than 1737 (Which is the same as subject 114362)? 
I think my expectation of how it works might be different from what actually this is setup.....

Hope you can shed some light on this.

Thanks.






Your <picture> elements are sampling from the three items they're given randomly. In your shortened block

<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

you're only running a single trial per condition. Which of the 3 items that have been assigned to the 267 condition is sampled, is entirely random and has nothing to do with the groups defined in <variables>.

Thanks Dave, I understand now. If I change the picture item select to sequence, that might closer to what I want to achieve?

By Dave - 5/23/2019

zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"

Here attached the summary file, the group number 10,11,12,13,14,15, so in this case, I think the participants will be assigned to 1,2,3,1,2,3 accordingly. Am I right?
 Matching the group number and subject number, here is what I think happen in the detail data file:
Group number 1 - Subject 114362 - Condition 267 (Image 1737), Condition 133 (Image 1631), Condition 67 (Image 1277)
Group number 2 - Subject 139522 - Condition 133 (Image 1402), Condition 67 (Image 1631), Condition 267 (Image 1820)
Group number 3 - Subject 416486 - Condition 267 (Image 550), Condition 67 (Image 1402), Condition 133 (Image 1277)
Group number 1 - Subject 430584 - Condition 267 (Image 1737) <--- Here this subject has the same image and condition

In group 1, the items_267soa is using picset c, which consists of

<item picset_c>
/1 = "im0001402.jpg"
/2 = "im0002415.jpg"
/3 = "im0001737.jpg"
</item>

So I think my question/confusion is why the other images (1402, 2415) are selected for subject 430584, rather than 1737 (Which is the same as subject 114362)? 
I think my expectation of how it works might be different from what actually this is setup.....

Hope you can shed some light on this.

Thanks.






Your <picture> elements are sampling from the three items they're given randomly. In your shortened block

<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

you're only running a single trial per condition. Which of the 3 items that have been assigned to the 267 condition is sampled, is entirely random and has nothing to do with the groups defined in <variables>.

Thanks Dave, I understand now. If I change the picture item select to sequence, that might closer to what I want to achieve?


> If I change the picture item select to sequence, that might closer to what I want to achieve?

I don't think so, because the sequential selection will apply to each participant, it will not apply across participants. But I'm confused about what exactly you want to begin with; you wrote earlier in this thread:

"[...] I have 21 images and 3 conditions (in exposure time). Each participant will go through all 21 images but only one condition per image [...]" in describing the full procedure.

So, in your reduced example with only 9 images (three sets of three, instead of three sets of seven), I would have expect that you want each participant to go through a total of nine (9) trials -- three (3) trials per condition, that is

<block block1>
/trials = [1-9 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

while rotating the different sets of items through those conditions between-subjects. That is what the code I proposed was intended to achieve. You, however, seem to want something else, and it's still not entirely clear to me what that is exactly.


By zhaokoh - 5/25/2019

Dave - 5/24/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/23/2019
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





The conditions are assigned based on the group number

<variables>
/ group = (1 of 3) (items_67soa = picset_a, items_133soa = picset_b, items_267soa = picset_c)
/ group = (2 of 3) (items_67soa = picset_b, items_133soa = picset_c, items_267soa = picset_a)
/ group = (3 of 3) (items_67soa = picset_c, items_133soa = picset_a, items_267soa = picset_b)
/ groupassignment = groupnumber
</variables>

The group number, however, is not logged in the data you attached. So I can't say whether the assignment worked as intended.

And since there are three groups, you should get the same assignment every 3rd participant (assuming sequential group numbers: 1,2,3,1,2,3,1,2,3... or 1,2,3,4,5,6,7,8,9,...). I'm not sure I understand the reasoning behing this: " with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)"

Here attached the summary file, the group number 10,11,12,13,14,15, so in this case, I think the participants will be assigned to 1,2,3,1,2,3 accordingly. Am I right?
 Matching the group number and subject number, here is what I think happen in the detail data file:
Group number 1 - Subject 114362 - Condition 267 (Image 1737), Condition 133 (Image 1631), Condition 67 (Image 1277)
Group number 2 - Subject 139522 - Condition 133 (Image 1402), Condition 67 (Image 1631), Condition 267 (Image 1820)
Group number 3 - Subject 416486 - Condition 267 (Image 550), Condition 67 (Image 1402), Condition 133 (Image 1277)
Group number 1 - Subject 430584 - Condition 267 (Image 1737) <--- Here this subject has the same image and condition

In group 1, the items_267soa is using picset c, which consists of

<item picset_c>
/1 = "im0001402.jpg"
/2 = "im0002415.jpg"
/3 = "im0001737.jpg"
</item>

So I think my question/confusion is why the other images (1402, 2415) are selected for subject 430584, rather than 1737 (Which is the same as subject 114362)? 
I think my expectation of how it works might be different from what actually this is setup.....

Hope you can shed some light on this.

Thanks.






Your <picture> elements are sampling from the three items they're given randomly. In your shortened block

<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

you're only running a single trial per condition. Which of the 3 items that have been assigned to the 267 condition is sampled, is entirely random and has nothing to do with the groups defined in <variables>.

Thanks Dave, I understand now. If I change the picture item select to sequence, that might closer to what I want to achieve?


> If I change the picture item select to sequence, that might closer to what I want to achieve?

I don't think so, because the sequential selection will apply to each participant, it will not apply across participants. But I'm confused about what exactly you want to begin with; you wrote earlier in this thread:

"[...] I have 21 images and 3 conditions (in exposure time). Each participant will go through all 21 images but only one condition per image [...]" in describing the full procedure.

So, in your reduced example with only 9 images (three sets of three, instead of three sets of seven), I would have expect that you want each participant to go through a total of nine (9) trials -- three (3) trials per condition, that is

<block block1>
/trials = [1-9 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

while rotating the different sets of items through those conditions between-subjects. That is what the code I proposed was intended to achieve. You, however, seem to want something else, and it's still not entirely clear to me what that is exactly.



Yes, I think you described my aim of the experiment accurately (for 1 participant). However, one thing that I would like to achieve is - I would like to make sure that participant 2 will not repeat what participant 1 had done (not the same condition for the same image), and likewise, participant 3 will not repeat what participant 1 & 2 had done, so that, say I have a matrix with each row (m) represents each image and column (n) represents each condition. So I would like the three participants to fill up the matrix completely with no repetition.

Based on your suggestion, I wrote a script to generate the Inquisit script ("group" and the pic item set) so that I could achieve what I want above. If I have 30 participants, 21 images and 3 conditions, I want exactly 10 participants' response per condition per image (exactly) overall. 

So I generated the Inquisit script for 30 groups, and each group is linked to 3 picsets (for 3 conditions), e.g.
...
/ group = (28 of 30) (items_67soa = picset_67_28, items_133soa = picset_133_28, items_267soa = picset_267_28)
/ group = (29 of 30) (items_67soa = picset_67_29, items_133soa = picset_133_29, items_267soa = picset_267_29)
/ group = (30 of 30) (items_67soa = picset_67_30, items_133soa = picset_133_30, items_267soa = picset_267_30)
...

Then I define the picset as follows: - note the suffix is the group number

<item picset_67_28>
/1 = "im0001734.jpg"
/2 = "im0001737.jpg"
/3 = "im0001402.jpg"
/4 = "im0001820.jpg"
/5 = "im0001719.jpg"
/6 = "im0001937.jpg"
/7 = "im0001185.jpg"
</item>
<item picset_133_28>
/1 = "im0003315.jpg"
/2 = "im0003988.jpg"
/3 = "im0002487.jpg"
/4 = "im0004531.jpg"
/5 = "im0009091.jpg"
/6 = "im0001277.jpg"
/7 = "im0008010.jpg"
</item>
<item picset_267_28>
/1 = "im0002415.jpg"
/2 = "im0002141.jpg"
/3 = "im0000638.jpg"
/4 = "im0000721.jpg"
/5 = "im0000550.jpg"
/6 = "im0001744.jpg"
/7 = "im0001631.jpg"
</item>
<item picset_67_29>
/1 = "im0003315.jpg"
/2 = "im0003988.jpg"
/3 = "im0002487.jpg"
/4 = "im0004531.jpg"
/5 = "im0009091.jpg"
/6 = "im0001277.jpg"
/7 = "im0008010.jpg"
</item>
<item picset_133_29>
/1 = "im0002415.jpg"
/2 = "im0002141.jpg"
/3 = "im0000638.jpg"
/4 = "im0000721.jpg"
/5 = "im0000550.jpg"
/6 = "im0001744.jpg"
/7 = "im0001631.jpg"
</item>
<item picset_267_29>
/1 = "im0001737.jpg"
/2 = "im0001402.jpg"
/3 = "im0001820.jpg"
/4 = "im0001719.jpg"
/5 = "im0001937.jpg"
/6 = "im0001185.jpg"
/7 = "im0001734.jpg"
</item>
<item picset_67_30>
/1 = "im0002415.jpg"
/2 = "im0002141.jpg"
/3 = "im0000638.jpg"
/4 = "im0000721.jpg"
/5 = "im0000550.jpg"
/6 = "im0001744.jpg"
/7 = "im0001631.jpg"
</item>
<item picset_133_30>
/1 = "im0001737.jpg"
/2 = "im0001402.jpg"
/3 = "im0001820.jpg"
/4 = "im0001719.jpg"
/5 = "im0001937.jpg"
/6 = "im0001185.jpg"
/7 = "im0001734.jpg"
</item>
<item picset_267_30>
/1 = "im0003988.jpg"
/2 = "im0002487.jpg"
/3 = "im0004531.jpg"
/4 = "im0009091.jpg"
/5 = "im0001277.jpg"
/6 = "im0008010.jpg"
/7 = "im0003315.jpg"
</item>


The script that I generated will ensure that the order is randomised and also if 30 participants completed the experiment successfully, each image will have exactly 10 participants' responses in each condition.

Thanks for your help again.