Millisecond Forums

Avoiding repetition of different stimuli lists in trial and block type

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

By Brabagazaa - 8/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

By Dave - 8/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>

By Brabagazaa - 8/15/2018

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