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
+xDear 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
+x+xDear 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
|
|