Avoiding repetition of different stimuli lists in trial and block type


Avoiding repetition of different stimuli lists in trial and block type...
Author
Message
Brabagazaa
Brabagazaa
Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)
Group: Forum Members
Posts: 13, Visits: 79
Dear all,

Currently I have an experiment that shows 8 stimuli on the screen per trial and that counterbalances for 16 different groups, however, the way it is programmed has a lot of redundancy: for every different stimulus list a different trial is created, (and also for every different block order a different block type is created, but this is less relevant). I was wondering if there might be an easy way to create a variable 'stimulus_list_name' and set this variable to a different value for each subject, this way I can keep the structure of the trials exactly the same but change the stimulus list per subject. Any suggestions would be welcome,

Roelof

A coarse way of how it is structured here (full experiment is attached, without additional stimuli pictures):

#weighted hpos list for target:
<list hposition_list_set8_1>
/items =(50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_2>
/items =(71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_3>
/items =(80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01)
/selectionrate = always
</list>
etc, up to 8 lists, 1 per stimulus location

#-----------------#TRIAL TYPES:: -------------------------------------------------
LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1
<trial set8_target_diamond_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>


LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_
<trial set8_target_diamond_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_
trial set8_target_diamond_dis_form_loc3>
etc
etc

#blocks::::::::::::::
#LOC_1__#LOC_1__#LOC_1__#LOC_1__#LOC_1__
<block dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
<block no_dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_no_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
etc

######## execution of the experiment::::::::::::::::::::::::
#subjects starting WITH distractor
LOCATION 1LOCATION 1LOCATION 1LOCATION 1
<expt>
/ subjects = (1 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, dis1, no_dis1, dis1, no_dis1, end_questions, code]
</expt>
<expt>
/ subjects = (2 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis1, dis1, no_dis1, dis1, end_questions, code]
</expt>

LOCATION 2LOCATION 2LOCATION 2LOCATION 2
333 -- 44444444
<expt>
/ subjects = (3 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>
<expt>
/ subjects = (4 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>

LOCATION 3
ETC
ETC


Attachments
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: 12K, Visits: 98K
Brabagazaa - Sunday, August 12, 2018
Dear all,

Currently I have an experiment that shows 8 stimuli on the screen per trial and that counterbalances for 16 different groups, however, the way it is programmed has a lot of redundancy: for every different stimulus list a different trial is created, (and also for every different block order a different block type is created, but this is less relevant). I was wondering if there might be an easy way to create a variable 'stimulus_list_name' and set this variable to a different value for each subject, this way I can keep the structure of the trials exactly the same but change the stimulus list per subject. Any suggestions would be welcome,

Roelof

A coarse way of how it is structured here (full experiment is attached, without additional stimuli pictures):

#weighted hpos list for target:
<list hposition_list_set8_1>
/items =(50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_2>
/items =(71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_3>
/items =(80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01)
/selectionrate = always
</list>
etc, up to 8 lists, 1 per stimulus location

#-----------------#TRIAL TYPES:: -------------------------------------------------
LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1
<trial set8_target_diamond_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>


LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_
<trial set8_target_diamond_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_
trial set8_target_diamond_dis_form_loc3>
etc
etc

#blocks::::::::::::::
#LOC_1__#LOC_1__#LOC_1__#LOC_1__#LOC_1__
<block dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
<block no_dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_no_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
etc

######## execution of the experiment::::::::::::::::::::::::
#subjects starting WITH distractor
LOCATION 1LOCATION 1LOCATION 1LOCATION 1
<expt>
/ subjects = (1 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, dis1, no_dis1, dis1, no_dis1, end_questions, code]
</expt>
<expt>
/ subjects = (2 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis1, dis1, no_dis1, dis1, end_questions, code]
</expt>

LOCATION 2LOCATION 2LOCATION 2LOCATION 2
333 -- 44444444
<expt>
/ subjects = (3 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>
<expt>
/ subjects = (4 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>

LOCATION 3
ETC
ETC


I'm not sure I understand what exactly you mean by "create a variable 'stimulus_list_name' and set this variable to a different value for each subject", but you can in fact "nest" <list>s like so:

<values>
/ listnumber = 1
</values>

// samples from list 1
<expt>
/ onexptbegin = [values.listnumber = 1;]
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1=myblock]
</expt>

// samples from list 2
<expt>
/ onexptbegin = [values.listnumber = 2;]
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1=myblock]
</expt>

<list masterlist>
/ items = (list.list1.nextvalue, list.list2.nextvalue)
/ selectionmode = values.listnumber
</list>

<list list1>
/ items = (1,2,3,4)
/ selectionmode = sequence
</list>

<list list2>
/ items = (5,6,7,8)
/ selectionmode = sequence
</list>

<text mytext>
/ items = myitems
/ select = list.masterlist.nextvalue
</text>

<item myitems>
/ 1 = "A"
/ 2 = "B"
/ 3 = "C"
/ 4 = "D"

/ 5 = "E"
/ 6 = "F"
/ 7 = "G"
/ 8 = "H"
</item>

<trial mytrial>
/ stimulusframes = [1=mytext]
/ validresponse = (57)
</trial>

<block myblock>
/ trials = [1-4 = mytrial]
</block>


Brabagazaa
Brabagazaa
Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)
Group: Forum Members
Posts: 13, Visits: 79
Dave - Wednesday, August 15, 2018
Brabagazaa - Sunday, August 12, 2018
Dear all,

Currently I have an experiment that shows 8 stimuli on the screen per trial and that counterbalances for 16 different groups, however, the way it is programmed has a lot of redundancy: for every different stimulus list a different trial is created, (and also for every different block order a different block type is created, but this is less relevant). I was wondering if there might be an easy way to create a variable 'stimulus_list_name' and set this variable to a different value for each subject, this way I can keep the structure of the trials exactly the same but change the stimulus list per subject. Any suggestions would be welcome,

Roelof

A coarse way of how it is structured here (full experiment is attached, without additional stimuli pictures):

#weighted hpos list for target:
<list hposition_list_set8_1>
/items =(50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01,28.79,20.01,28.791,71.21,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_2>
/items =(71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,71.21,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01,28.79,20.01,28.791,50.0,80.0,71.211,50.01)
/selectionrate = always
</list>
<list hposition_list_set8_3>
/items =(80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,80.0,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01,28.79,20.01,28.791,50.0,71.21,71.211,50.01)
/selectionrate = always
</list>
etc, up to 8 lists, 1 per stimulus location

#-----------------#TRIAL TYPES:: -------------------------------------------------
LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1_LOC1
<trial set8_target_diamond_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc1>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_1.nextvalue;
values.vpos1 = list.vposition_list_set8_1.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc1.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>


LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_LOC2_
<trial set8_target_diamond_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]

/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1, filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

<trial set8_target_diamond_no_dis_form_loc2>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hposition_list_set8_2.nextvalue;
values.vpos1 = list.vposition_list_set8_2.nextvalue;
values.filler_position1 = list.hpos_filler.nextvalue; values.filler_position1_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position2 = list.hpos_filler.nextvalue; values.filler_position2_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position3 = list.hpos_filler.nextvalue; values.filler_position3_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position4 = list.hpos_filler.nextvalue; values.filler_position4_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position5 = list.hpos_filler.nextvalue;values.filler_position5_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position6 = list.hpos_filler.nextvalue;values.filler_position6_v = list.vposition_list_set8_filler.nextvalue;
values.filler_position7 = list.hpos_filler.nextvalue;values.filler_position7_v = list.vposition_list_set8_filler.nextvalue]
/ontrialbegin = [values.line_ori_target = floor(rand(1,3)); values.line_ori_filler1 = floor(rand(1,5)); values.line_ori_filler2 = floor(rand(1,5)); values.line_ori_filler3 = floor(rand(1,5));values.line_ori_filler4 = floor(rand(1,5)); values.line_ori_filler5 = floor(rand(1,5)); values.line_ori_filler6 = floor(rand(1,5)); values.line_ori_filler7 = floor(rand(1,5))]
/ontrialbegin = [if(values.line_ori_target==1)values.correct_response=(44) else values.correct_response =(50)]
/stimulusframes = [1=target_shape, horizontal_line1, vertical_line1,filler_1 , filler_2, filler_3, filler_4, filler_5, filler_6, filler_7, filler_8, distractor_1, horizontal_line_slanted_up_left1, horizontal_line_slanted_up_right1, vertical_line_slanted_left1, vertical_line_slanted_right1,vertical_line_slanted_right2,vertical_line_slanted_left2,horizontal_line_slanted_up_left2,horizontal_line_slanted_up_right2,vertical_line_slanted_right3,vertical_line_slanted_left3,horizontal_line_slanted_up_left3,horizontal_line_slanted_up_right3,vertical_line_slanted_right4,vertical_line_slanted_left4,horizontal_line_slanted_up_left4,horizontal_line_slanted_up_right4,vertical_line_slanted_right5,vertical_line_slanted_left5,horizontal_line_slanted_up_left5,horizontal_line_slanted_up_right5,vertical_line_slanted_right6,vertical_line_slanted_left6,horizontal_line_slanted_up_left6,horizontal_line_slanted_up_right6, vertical_line_slanted_right7,vertical_line_slanted_left7,horizontal_line_slanted_up_left7,horizontal_line_slanted_up_right7,vertical_line_slanted_right8,vertical_line_slanted_left8,horizontal_line_slanted_up_left8,horizontal_line_slanted_up_right8,cover_picture, sometext]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_no_dis_form_loc2.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
/ontrialend= [list.vposition_list_set8_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]
</trial>

LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_LOC3_
trial set8_target_diamond_dis_form_loc3>
etc
etc

#blocks::::::::::::::
#LOC_1__#LOC_1__#LOC_1__#LOC_1__#LOC_1__
<block dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
<block no_dis1>
/bgstim = (reminder_text_2, reminder_text, fix_cross_picture)
/preinstructions = (reminder_instructions)
/trials= [1-120=noreplace(set8_target_diamond_no_dis_form_loc1)]
/blockfeedback = (latency, correct)
/screencolor = black
</block>
etc

######## execution of the experiment::::::::::::::::::::::::
#subjects starting WITH distractor
LOCATION 1LOCATION 1LOCATION 1LOCATION 1
<expt>
/ subjects = (1 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, dis1, no_dis1, dis1, no_dis1, end_questions, code]
</expt>
<expt>
/ subjects = (2 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis1, dis1, no_dis1, dis1, end_questions, code]
</expt>

LOCATION 2LOCATION 2LOCATION 2LOCATION 2
333 -- 44444444
<expt>
/ subjects = (3 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>
<expt>
/ subjects = (4 of 16)
/ preinstructions = (intro,intro_2, intro_3)
/ postinstructions = (end_of_experiment)
/ blocks = [1= begin_questions, practice, no_dis2, dis2, no_dis2, dis2, end_questions code]
</expt>

LOCATION 3
ETC
ETC


I'm not sure I understand what exactly you mean by "create a variable 'stimulus_list_name' and set this variable to a different value for each subject", but you can in fact "nest" <list>s like so:

<values>
/ listnumber = 1
</values>

// samples from list 1
<expt>
/ onexptbegin = [values.listnumber = 1;]
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1=myblock]
</expt>

// samples from list 2
<expt>
/ onexptbegin = [values.listnumber = 2;]
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1=myblock]
</expt>

<list masterlist>
/ items = (list.list1.nextvalue, list.list2.nextvalue)
/ selectionmode = values.listnumber
</list>

<list list1>
/ items = (1,2,3,4)
/ selectionmode = sequence
</list>

<list list2>
/ items = (5,6,7,8)
/ selectionmode = sequence
</list>

<text mytext>
/ items = myitems
/ select = list.masterlist.nextvalue
</text>

<item myitems>
/ 1 = "A"
/ 2 = "B"
/ 3 = "C"
/ 4 = "D"

/ 5 = "E"
/ 6 = "F"
/ 7 = "G"
/ 8 = "H"
</item>

<trial mytrial>
/ stimulusframes = [1=mytext]
/ validresponse = (57)
</trial>

<block myblock>
/ trials = [1-4 = mytrial]
</block>


This is exactly what I was looking for, this way I can just create the different stimulus lists, and cycle through them depending on the subject number, instead of creating trials+blocks for each specific list. As always a very insightful and complete answer thank you very much Dave


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search