Specifying number of trials in a block


Author
Message
Rmoody
Rmoody
Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)
Group: Forum Members
Posts: 3, Visits: 24
My question is a little more complicated than the subject line suggests. I am using a modified version of the alcohol dot probe task to assess attentional bias in drug use. I have multiple blocks in my experiment and within each block are target trials and filler trials. For each block I want to randomly display 120 trials and I want 80 of the trials to be target trials and 40 of the trials to be filler trials. Currently, my programming is causing me to have 60 target trials and 60 filler trials. I have tried specifying the poolsize in my lists but this has not made any difference. What do I need to include to have 80 target trials and 40 filler trials displayed in a random order?

I have included the relevant sections of code below. Thanks.

********************************************
Drug lists
********************************************

Note: the following list contains the 4 repetitions of the 20 itemnumber of the DrugTarget  stimuli
the list randomly selects one itemnumber (without replacement) for Drug trials
(the same itemnumbers are used for comp stimuli)
<list DrugTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 80
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the DrugTarget  stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right)
<list DrugTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

Note: the following list samples the DrugTarget  and probe congruence that is tied to the sampled itemnumber (by its list position index)
=> each itemnumber is presented once left and is followed by the probe (congruent = 1)
=> each itemnumber is presented once left is is not followed by the probe (incongruent = 2)
=> each itemnumber is presented once right and is followed by the probe (congruent = 1)
=> each itemnumber is presented once right is is not followed by the probe (incongruent = 2)
<list DrugTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

<list Drugprobetype>
/ items = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.Drugtargetprobe_congruence.currentindex
</list>


********************************************
FillerTarget  lists
********************************************

Note: the following list contains the 2 repetitions of the 20 itemnumber of the FillerTarget stimuli
the list randomly selects one itemnumber (without replacement) for Filler trials
<list FillerTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 40
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the FillerTarget stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right
<list FillerTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

Note: the following list samples the FillerTarget probe congruence that is tied to the sampled itemnumber (by its list position index)
<list FillerTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

<list fillerprobetype>
/ items = (
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1)
/ selectionmode = list.fillertargetprobe_congruence.currentindex
</list>

****************************************
CONDITION 3
****************************************

<trial DrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="DrugLong";
                values.itemnumber = list.DrugTarget_itemnumbers.nextvalue;
                values.target_position = list.DrugTarget_positions.nextvalue;
                values.congruence = list.DrugTargetprobe_congruence.nextvalue;
                values.probetype = list.drugprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Drug += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Drug += 1;
                };
                trial.DrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugTarget, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugComp, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.DrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.DrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.DrugLong.response == parameters.responsekey_right)]                                                                                                                                                                            
/ ontrialend = [
                trial.DrugLong.resetstimulusframes();
                values.target_image = picture.DrugTarget.currentitem;
                values.comp_image = picture.DrugComp.currentitem;
                if (trial.DrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.DrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.DrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Drug += 1;
                                                                values.sumrt_congruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_C.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Drug += 1;
                                                                values.sumrt_incongruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_IC.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Drg_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Drg_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>

<trial FillerDrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="FillerDrugLong";
                values.itemnumber = list.FillerTarget_itemnumbers.nextvalue;
                values.target_position = list.FillerTarget_positions.nextvalue;
                values.congruence = list.FillerTargetprobe_congruence.nextvalue;
                values.probetype = list.fillerprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Filler += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Filler += 1;
                };
                trial.fillerDrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugTarget, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugComp, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.fillerDrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.fillerDrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.fillerDrugLong.response == parameters.responsekey_right)]                                                                                                                                                                   
/ ontrialend = [
                trial.fillerDrugLong.resetstimulusframes();
                values.target_image = picture.FillerDrugTarget.currentitem;
                values.comp_image = picture.FillerDrugComp.currentitem;
                if (trial.fillerDrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.fillerDrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.fillerDrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Filler += 1;
                                                                values.sumrt_congruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_C.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Filler += 1;
                                                                values.sumrt_incongruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_IC.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Filler_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Filler_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>
****************************************
                BLOCKS
****************************************

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Short>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 2]
/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort)]
</block>

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Long>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 3]
/ trials = [1-120 = noreplace(DrugLong, FillerDrugLong)]
</block>

****************************************
                EXPERIMENT
****************************************

<expt>
/ preinstructions = (welcome, instructions, instructions2)
/ postinstructions = (thankyou)
/ blocks = [1=noreplace(Practice); 2-3=noreplace(DrugDotProbeTask_Short, DrugDotProbeTask_Long)]
/ onexptend = [values.completed = 1]
</expt>

****************************************
End of File
****************************************



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
Rmoody - Friday, September 1, 2017
My question is a little more complicated than the subject line suggests. I am using a modified version of the alcohol dot probe task to assess attentional bias in drug use. I have multiple blocks in my experiment and within each block are target trials and filler trials. For each block I want to randomly display 120 trials and I want 80 of the trials to be target trials and 40 of the trials to be filler trials. Currently, my programming is causing me to have 60 target trials and 60 filler trials. I have tried specifying the poolsize in my lists but this has not made any difference. What do I need to include to have 80 target trials and 40 filler trials displayed in a random order?

I have included the relevant sections of code below. Thanks.

********************************************
Drug lists
********************************************

Note: the following list contains the 4 repetitions of the 20 itemnumber of the DrugTarget  stimuli
the list randomly selects one itemnumber (without replacement) for Drug trials
(the same itemnumbers are used for comp stimuli)
<list DrugTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 80
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the DrugTarget  stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right)
<list DrugTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

Note: the following list samples the DrugTarget  and probe congruence that is tied to the sampled itemnumber (by its list position index)
=> each itemnumber is presented once left and is followed by the probe (congruent = 1)
=> each itemnumber is presented once left is is not followed by the probe (incongruent = 2)
=> each itemnumber is presented once right and is followed by the probe (congruent = 1)
=> each itemnumber is presented once right is is not followed by the probe (incongruent = 2)
<list DrugTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

<list Drugprobetype>
/ items = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.Drugtargetprobe_congruence.currentindex
</list>


********************************************
FillerTarget  lists
********************************************

Note: the following list contains the 2 repetitions of the 20 itemnumber of the FillerTarget stimuli
the list randomly selects one itemnumber (without replacement) for Filler trials
<list FillerTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 40
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the FillerTarget stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right
<list FillerTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

Note: the following list samples the FillerTarget probe congruence that is tied to the sampled itemnumber (by its list position index)
<list FillerTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

<list fillerprobetype>
/ items = (
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1)
/ selectionmode = list.fillertargetprobe_congruence.currentindex
</list>

****************************************
CONDITION 3
****************************************

<trial DrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="DrugLong";
                values.itemnumber = list.DrugTarget_itemnumbers.nextvalue;
                values.target_position = list.DrugTarget_positions.nextvalue;
                values.congruence = list.DrugTargetprobe_congruence.nextvalue;
                values.probetype = list.drugprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Drug += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Drug += 1;
                };
                trial.DrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugTarget, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugComp, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.DrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.DrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.DrugLong.response == parameters.responsekey_right)]                                                                                                                                                                            
/ ontrialend = [
                trial.DrugLong.resetstimulusframes();
                values.target_image = picture.DrugTarget.currentitem;
                values.comp_image = picture.DrugComp.currentitem;
                if (trial.DrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.DrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.DrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Drug += 1;
                                                                values.sumrt_congruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_C.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Drug += 1;
                                                                values.sumrt_incongruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_IC.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Drg_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Drg_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>

<trial FillerDrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="FillerDrugLong";
                values.itemnumber = list.FillerTarget_itemnumbers.nextvalue;
                values.target_position = list.FillerTarget_positions.nextvalue;
                values.congruence = list.FillerTargetprobe_congruence.nextvalue;
                values.probetype = list.fillerprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Filler += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Filler += 1;
                };
                trial.fillerDrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugTarget, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugComp, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.fillerDrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.fillerDrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.fillerDrugLong.response == parameters.responsekey_right)]                                                                                                                                                                   
/ ontrialend = [
                trial.fillerDrugLong.resetstimulusframes();
                values.target_image = picture.FillerDrugTarget.currentitem;
                values.comp_image = picture.FillerDrugComp.currentitem;
                if (trial.fillerDrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.fillerDrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.fillerDrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Filler += 1;
                                                                values.sumrt_congruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_C.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Filler += 1;
                                                                values.sumrt_incongruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_IC.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Filler_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Filler_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>
****************************************
                BLOCKS
****************************************

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Short>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 2]
/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort)]
</block>

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Long>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 3]
/ trials = [1-120 = noreplace(DrugLong, FillerDrugLong)]
</block>

****************************************
                EXPERIMENT
****************************************

<expt>
/ preinstructions = (welcome, instructions, instructions2)
/ postinstructions = (thankyou)
/ blocks = [1=noreplace(Practice); 2-3=noreplace(DrugDotProbeTask_Short, DrugDotProbeTask_Long)]
/ onexptend = [values.completed = 1]
</expt>

****************************************
End of File
****************************************



/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort)]

means you are sampling the two trial elements (here: "DrugShort" and "FillerDrugShort") in _equal proportions_. I.e. you're going to end up with 60 DrugShort trials and 60 FillerDrugShort trials.

To achieve a different ratio -- such as 40 target trials / 80 filler trials, i.e. a 1:2 ratio -- have that ratio reflected in the noreplace() pool, that is

/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort, FillerDrugShort)]
Rmoody
Rmoody
Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)Associate Member (291 reputation)
Group: Forum Members
Posts: 3, Visits: 24
Dave - Friday, September 1, 2017
Rmoody - Friday, September 1, 2017
My question is a little more complicated than the subject line suggests. I am using a modified version of the alcohol dot probe task to assess attentional bias in drug use. I have multiple blocks in my experiment and within each block are target trials and filler trials. For each block I want to randomly display 120 trials and I want 80 of the trials to be target trials and 40 of the trials to be filler trials. Currently, my programming is causing me to have 60 target trials and 60 filler trials. I have tried specifying the poolsize in my lists but this has not made any difference. What do I need to include to have 80 target trials and 40 filler trials displayed in a random order?

I have included the relevant sections of code below. Thanks.

********************************************
Drug lists
********************************************

Note: the following list contains the 4 repetitions of the 20 itemnumber of the DrugTarget  stimuli
the list randomly selects one itemnumber (without replacement) for Drug trials
(the same itemnumbers are used for comp stimuli)
<list DrugTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 80
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the DrugTarget  stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right)
<list DrugTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

Note: the following list samples the DrugTarget  and probe congruence that is tied to the sampled itemnumber (by its list position index)
=> each itemnumber is presented once left and is followed by the probe (congruent = 1)
=> each itemnumber is presented once left is is not followed by the probe (incongruent = 2)
=> each itemnumber is presented once right and is followed by the probe (congruent = 1)
=> each itemnumber is presented once right is is not followed by the probe (incongruent = 2)
<list DrugTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.DrugTarget_itemnumbers.currentindex
</list>

<list Drugprobetype>
/ items = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.Drugtargetprobe_congruence.currentindex
</list>


********************************************
FillerTarget  lists
********************************************

Note: the following list contains the 2 repetitions of the 20 itemnumber of the FillerTarget stimuli
the list randomly selects one itemnumber (without replacement) for Filler trials
<list FillerTarget_itemnumbers>
/ items = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ poolsize = 40
/ resetinterval = 1
</list>

Note: the following list samples the left (1) or right (2) position of the FillerTarget stimuli
that is tied to the sampled itemnumber (by its list position index)
=> each item number is presented twice on the left and twice on the right
<list FillerTarget_positions>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

Note: the following list samples the FillerTarget probe congruence that is tied to the sampled itemnumber (by its list position index)
<list FillerTargetprobe_congruence>
/ items = (
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
/ selectionmode = list.FillerTarget_itemnumbers.currentindex
</list>

<list fillerprobetype>
/ items = (
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1)
/ selectionmode = list.fillertargetprobe_congruence.currentindex
</list>

****************************************
CONDITION 3
****************************************

<trial DrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="DrugLong";
                values.itemnumber = list.DrugTarget_itemnumbers.nextvalue;
                values.target_position = list.DrugTarget_positions.nextvalue;
                values.congruence = list.DrugTargetprobe_congruence.nextvalue;
                values.probetype = list.drugprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Drug += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Drug += 1;
                };
                trial.DrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugTarget, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(picture.DrugComp, parameters.fixationduration);
                trial.DrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.DrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.DrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.DrugLong.response == parameters.responsekey_right)]                                                                                                                                                                            
/ ontrialend = [
                trial.DrugLong.resetstimulusframes();
                values.target_image = picture.DrugTarget.currentitem;
                values.comp_image = picture.DrugComp.currentitem;
                if (trial.DrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.DrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.DrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Drug += 1;
                                                                values.sumrt_congruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_C.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Drug += 1;
                                                                values.sumrt_incongruent_Drug += trial.DrugLong.latency;
                                                                list.latencies_Drg_IC.insertitem(trial.DrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.DrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Drg_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Drg_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>

<trial FillerDrugLong>
/ ontrialbegin = [
                values.valid = 0;
                values.validcorrect = 0;
                values.trialcount += 1;
                values.category="FillerDrugLong";
                values.itemnumber = list.FillerTarget_itemnumbers.nextvalue;
                values.target_position = list.FillerTarget_positions.nextvalue;
                values.congruence = list.FillerTargetprobe_congruence.nextvalue;
                values.probetype = list.fillerprobetype.nextvalue;
                if (values.target_position == 1) {
                                values.target_y = parameters.target_top_y;
                                values.comp_y = parameters.target_bottom_y;
                } else {
                                values.target_y = parameters.target_bottom_y;
                                values.comp_y = parameters.target_top_y;
                };
                if (values.congruence == 1) {
                                values.probe_y = values.target_y;
                                values.count_congruent_Filler += 1;
                } else {
                                values.probe_y = values.comp_y;
                                values.count_incongruent_Filler += 1;
                };
                trial.fillerDrugLong.insertstimulustime(shape.eraser, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugTarget, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(picture.FillerDrugComp, parameters.fixationduration);
                trial.fillerDrugLong.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration2));
                trial.fillerDrugLong.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi));
]
/ stimulusframes = [1 = fixation]
/ beginresponsetime = parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi
/ responseinterrupt = immediate
/ validresponse = (parameters.responsekey_left, parameters.responsekey_right)
/ iscorrectresponse = [(values.probetype == 1 && trial.fillerDrugLong.response == parameters.responsekey_left) || (values.probetype == 2 && trial.fillerDrugLong.response == parameters.responsekey_right)]                                                                                                                                                                   
/ ontrialend = [
                trial.fillerDrugLong.resetstimulusframes();
                values.target_image = picture.FillerDrugTarget.currentitem;
                values.comp_image = picture.FillerDrugComp.currentitem;
                if (trial.fillerDrugLong.latency >= parameters.minimum_latency)
                                values.valid = 1;
                if (values.valid == 1) {
                                if (trial.fillerDrugLong.correct) {
                                                values.validcorrect = 1;
                                                values.sumcorrect += 1;
                                                values.sumrt += trial.fillerDrugLong.latency
                                                if (values.congruence == 1) {
                                                                values.sumcorrect_congruent_Filler += 1;
                                                                values.sumrt_congruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_C.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                } else {
                                                                values.sumcorrect_incongruent_Filler += 1;
                                                                values.sumrt_incongruent_Filler += trial.fillerDrugLong.latency;
                                                                list.latencies_Filler_IC.insertitem(trial.fillerDrugLong.latency, 1);
                                                                list.latencies.insertitem(trial.fillerDrugLong.latency, 1);
                                                }
                                }
                } ;
                list.accuracy.insertitem(values.validcorrect, 1);
                if (values.congruence == 1) {
                                list.accuracy_Filler_C.insertitem(values.validcorrect, 1);
                } else {
                                list.accuracy_Filler_IC.insertitem(values.validcorrect, 1);
                };
]
/ timeout = (parameters.fixationduration + parameters.targetduration2 + parameters.tp_isi + parameters.probeduration)
/ posttrialpause = parameters.iti
</trial>
****************************************
                BLOCKS
****************************************

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Short>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 2]
/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort)]
</block>

Note: presents 120 trials (trial order is determined randomly)
<block DrugDotProbeTask_Long>
/ preinstructions = (taskintro)
/ postinstructions = (break)
/ onblockbegin = [values.task = 3]
/ trials = [1-120 = noreplace(DrugLong, FillerDrugLong)]
</block>

****************************************
                EXPERIMENT
****************************************

<expt>
/ preinstructions = (welcome, instructions, instructions2)
/ postinstructions = (thankyou)
/ blocks = [1=noreplace(Practice); 2-3=noreplace(DrugDotProbeTask_Short, DrugDotProbeTask_Long)]
/ onexptend = [values.completed = 1]
</expt>

****************************************
End of File
****************************************



/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort)]

means you are sampling the two trial elements (here: "DrugShort" and "FillerDrugShort") in _equal proportions_. I.e. you're going to end up with 60 DrugShort trials and 60 FillerDrugShort trials.

To achieve a different ratio -- such as 40 target trials / 80 filler trials, i.e. a 1:2 ratio -- have that ratio reflected in the noreplace() pool, that is

/ trials = [1-120 = noreplace(DrugShort, FillerDrugShort, FillerDrugShort)]

Thank you!!
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search