Millisecond Forums

Selection and randomization of stimuli

https://www.millisecond.com/forums/Topic32238.aspx

By SilvioM - 9/23/2021

Dear all, 
I have been working on an Inquisit script (please find it attached) and I am struggling with the stimuli selection.
I have a block with four different types of trials: approaching stim_1 in the upper part of the screen with distractor_1; approaching stim_1 in the lower part of the screen with distractor_1; approaching stim_1 in the upper part of the screen with distractor_2; approaching stim_1 in the lower part of the screen with distractor_2. 

There are eight stimuli by category (ie eight stimuli for stim_1 ; eight stimuli for distractor_1 ; eight stimuli for distractor_2) and overall, I would like to display 128 trials (32 per type of trials). I also would like that, at the block level, each possible pair of stimuli (64 pairs = stim_1 with distractor_1 and 64 pairs = stim_1 with distractor_2) would be displayed only once, with stim_1 being randomly displayed either in the upper part of the screen or either in the lower part of the screen.

I have mainly used this post to compute the actual code : https://www.millisecond.com/forums/Topic2273.aspx

Any help would be greatly appreciated! Thank you very much,
warm regards,
S.M

By Dave - 9/23/2021

SilvioM - 9/23/2021
Dear all, 
I have been working on an Inquisit script (please find it attached) and I am struggling with the stimuli selection.
I have a block with four different types of trials: approaching stim_1 in the upper part of the screen with distractor_1; approaching stim_1 in the lower part of the screen with distractor_1; approaching stim_1 in the upper part of the screen with distractor_2; approaching stim_1 in the lower part of the screen with distractor_2. 

There are eight stimuli by category (ie eight stimuli for stim_1 ; eight stimuli for distractor_1 ; eight stimuli for distractor_2) and overall, I would like to display 128 trials (32 per type of trials). I also would like that, at the block level, each possible pair of stimuli (64 pairs = stim_1 with distractor_1 and 64 pairs = stim_1 with distractor_2) would be displayed only once, with stim_1 being randomly displayed either in the upper part of the screen or either in the lower part of the screen.

I have mainly used this post to compute the actual code : https://www.millisecond.com/forums/Topic2273.aspx

Any help would be greatly appreciated! Thank you very much,
warm regards,
S.M


What are your concrete questions
By Dave - 9/23/2021

Dave - 9/23/2021
SilvioM - 9/23/2021
Dear all, 
I have been working on an Inquisit script (please find it attached) and I am struggling with the stimuli selection.
I have a block with four different types of trials: approaching stim_1 in the upper part of the screen with distractor_1; approaching stim_1 in the lower part of the screen with distractor_1; approaching stim_1 in the upper part of the screen with distractor_2; approaching stim_1 in the lower part of the screen with distractor_2. 

There are eight stimuli by category (ie eight stimuli for stim_1 ; eight stimuli for distractor_1 ; eight stimuli for distractor_2) and overall, I would like to display 128 trials (32 per type of trials). I also would like that, at the block level, each possible pair of stimuli (64 pairs = stim_1 with distractor_1 and 64 pairs = stim_1 with distractor_2) would be displayed only once, with stim_1 being randomly displayed either in the upper part of the screen or either in the lower part of the screen.

I have mainly used this post to compute the actual code : https://www.millisecond.com/forums/Topic2273.aspx

Any help would be greatly appreciated! Thank you very much,
warm regards,
S.M


What are your concrete questions

> I also would like that, at the block level, each possible pair of stimuli (64 pairs = stim_1 with distractor_1 and 64 pairs = stim_1 with distractor_2) would be displayed only once, with stim_1 being randomly displayed either in the upper part of the screen or either in the lower part of the screen.

Then the two trials Approach_PA_SED_top and Approach_PA_SED_bottom should sample from the same set of two counters, not two separate sets of counters.
Same for the two trials Approach_PA_NEU_top and Approach_PA_NEU_bottom.
By SilvioM - 9/23/2021

My question is: how can I make each pair of stimuli (stim_1 with distractor_1 and stim_1 with distractor_2) appear only once?

At the moment, as I pick 32 trials from the first trial condition (ie stim_1 on the top of the screen) and 32 trials from the second trial condition (ie stim_1 on the bottom of the screen), some pairs of trials may be redondant across conditions, and some pairs of trials may not be displayed.

I hope that it is clearer now, thank you very much for your support.

By Dave - 9/23/2021

SilvioM - 9/23/2021
My question is: how can I make each pair of stimuli (stim_1 with distractor_1 and stim_1 with distractor_2) appear only once?

At the moment, as I pick 32 trials from the first trial condition (ie stim_1 on the top of the screen) and 32 trials from the second trial condition (ie stim_1 on the bottom of the screen), some pairs of trials may be redondant across conditions, and some pairs of trials may not be displayed.

I hope that it is clearer now, thank you very much for your support.


As I said in my previous response, you ought to have the two NEU trials sample from the same two counters, and same thing for the two SED trials.

64 SED target-distractor combinations

<counter counter_Approach_PA_SED_target>
/ select = noreplace
/ items = (
1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,
4,4,4,4,4,4,4,4,
5,5,5,5,5,5,5,5,
6,6,6,6,6,6,6,6,
7,7,7,7,7,7,7,7,
8,8,8,8,8,8,8,8)
</counter>
## I create all combinations for target stimuli

<counter counter_Avoid_SED_distractor>
/ select = current(counter_Approach_PA_SED_target)
/ items = (
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8)
</counter>
and distracting stimuli


with

<trial Approach_PA_SED_top>
/ ontrialbegin = [values.Approach_PA_SED_top = counter.counter_Approach_PA_SED_target.selectedvalue;
    values.Avoid_SED_bottom = counter.counter_Avoid_SED_distractor.selectedvalue;
    ]
/ stimulusframes = [1=focuspoint; 100 = Approach_PA_SED_top, Avoid_SED_bottom, moi]
/ validresponse = ("t", "b","g")
/ correctresponse = ("t")
/ timeout = 10000
/ branch = [if (trial.Approach_PA_SED_top.response == 0) trial.tooslowfb]                            
/ branch = [if (trial.Approach_PA_SED_top.error) trial.errorfb]                                        
/ branch = [if (trial.Approach_PA_SED_top.correct) trial.correctfb_Approach_PA_SED_top]
</trial>

<trial Approach_PA_SED_top>
/ ontrialbegin = [values.Approach_PA_SED_top = counter.counter_Approach_PA_SED_target.selectedvalue;
    values.Avoid_SED_bottom = counter.counter_Avoid_SED_distractor.selectedvalue;
    ]
/ stimulusframes = [1=focuspoint; 100 = Approach_PA_SED_top, Avoid_SED_bottom, moi]
/ validresponse = ("t", "b","g")
/ correctresponse = ("t")
/ timeout = 10000
/ branch = [if (trial.Approach_PA_SED_top.response == 0) trial.tooslowfb]                            
/ branch = [if (trial.Approach_PA_SED_top.error) trial.errorfb]                                        
/ branch = [if (trial.Approach_PA_SED_top.correct) trial.correctfb_Approach_PA_SED_top]
</trial>