Weighted target location and filler items


Author
Message
Brabagazaa
Brabagazaa
Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)
Group: Forum Members
Posts: 13, Visits: 79
Dear all,
At the moment I am trying to create an experiment that shows stimuli in a circle, but that presents the target more often at a specific location (this location should be the same for 1 participant, but balanced across all participants).

My initial strategy was to create a long list of locations, that simply included more of one specific location, and for each participant a different list was used. However, at the moment the shapes other then the target are determined by taking the next location in the location list, which will ensure that the other items (‘fillers’) are always placed around the target. But when I use a weighted list this strategy does not work anymore. Is there a simple way to increase the presentation of the target in 1 specific location while at the same time maintaining the possibility to place filler items neatly around this target location?

Any help is appreciated; down here an example of a stimulus display, and a balanced experiment showing how the locations of target +fillers are interdependent.
Roelof

<list hpos>
/items = (hposition_list_set7)
/selectionmode = values.listnumber
/selectionrate = always
</list>
<list hposition_list_set7>
/items =(50.0,  71.21,  80.0,    71.211,            50.01, 28.79,  20.01, 28.791)
/selectionrate = always
</list>
oude lijst, 7 items: (20, 26, 50, 73, 79, 63, 36, 50)
<list vposition_list_set7>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set7.currentindex
/selectionrate = always
</list>

<trial set7_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue;   values.vpos1 = list.vposition_list_set7.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1   = list.hpos.nextvalue; values.filler_position1_v = list.vposition_list_set7.nextvalue;
values.filler_position2   = list.hpos.nextvalue; values.filler_position2_v = list.vposition_list_set7.nextvalue;
values.filler_position3  = list.hpos.nextvalue; values.filler_position3_v = list.vposition_list_set7.nextvalue;
values.filler_position4   = list.hpos.nextvalue; values.filler_position4_v = list.vposition_list_set7.nextvalue;
values.filler_position5   = list.hpos.nextvalue;values.filler_position5_v = list.vposition_list_set7.nextvalue;
values.filler_position6   = list.hpos.nextvalue;values.filler_position6_v = list.vposition_list_set7.nextvalue;
values.filler_position7   = list.hpos.nextvalue;values.filler_position7_v = list.vposition_list_set7.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, 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,                cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set7_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
Brabagazaa - Tuesday, January 30, 2018
Dear all,
At the moment I am trying to create an experiment that shows stimuli in a circle, but that presents the target more often at a specific location (this location should be the same for 1 participant, but balanced across all participants).

My initial strategy was to create a long list of locations, that simply included more of one specific location, and for each participant a different list was used. However, at the moment the shapes other then the target are determined by taking the next location in the location list, which will ensure that the other items (‘fillers’) are always placed around the target. But when I use a weighted list this strategy does not work anymore. Is there a simple way to increase the presentation of the target in 1 specific location while at the same time maintaining the possibility to place filler items neatly around this target location?

Any help is appreciated; down here an example of a stimulus display, and a balanced experiment showing how the locations of target +fillers are interdependent.
Roelof

<list hpos>
/items = (hposition_list_set7)
/selectionmode = values.listnumber
/selectionrate = always
</list>
<list hposition_list_set7>
/items =(50.0,  71.21,  80.0,    71.211,            50.01, 28.79,  20.01, 28.791)
/selectionrate = always
</list>
oude lijst, 7 items: (20, 26, 50, 73, 79, 63, 36, 50)
<list vposition_list_set7>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set7.currentindex
/selectionrate = always
</list>

<trial set7_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue;   values.vpos1 = list.vposition_list_set7.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1   = list.hpos.nextvalue; values.filler_position1_v = list.vposition_list_set7.nextvalue;
values.filler_position2   = list.hpos.nextvalue; values.filler_position2_v = list.vposition_list_set7.nextvalue;
values.filler_position3  = list.hpos.nextvalue; values.filler_position3_v = list.vposition_list_set7.nextvalue;
values.filler_position4   = list.hpos.nextvalue; values.filler_position4_v = list.vposition_list_set7.nextvalue;
values.filler_position5   = list.hpos.nextvalue;values.filler_position5_v = list.vposition_list_set7.nextvalue;
values.filler_position6   = list.hpos.nextvalue;values.filler_position6_v = list.vposition_list_set7.nextvalue;
values.filler_position7   = list.hpos.nextvalue;values.filler_position7_v = list.vposition_list_set7.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, 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,                cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set7_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>

If I'm understanding your description correctly, you'll want separate <list>s:
- One weighted list for the target location(s), and
- One for the associated filler locations.

You can prevent the latter list from selecting the same location as the target (already chosen in the 1st list) by using a /not constraint.

Brabagazaa
Brabagazaa
Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)
Group: Forum Members
Posts: 13, Visits: 79
Dave - Tuesday, January 30, 2018
Brabagazaa - Tuesday, January 30, 2018
Dear all,
At the moment I am trying to create an experiment that shows stimuli in a circle, but that presents the target more often at a specific location (this location should be the same for 1 participant, but balanced across all participants).

My initial strategy was to create a long list of locations, that simply included more of one specific location, and for each participant a different list was used. However, at the moment the shapes other then the target are determined by taking the next location in the location list, which will ensure that the other items (‘fillers’) are always placed around the target. But when I use a weighted list this strategy does not work anymore. Is there a simple way to increase the presentation of the target in 1 specific location while at the same time maintaining the possibility to place filler items neatly around this target location?

Any help is appreciated; down here an example of a stimulus display, and a balanced experiment showing how the locations of target +fillers are interdependent.
Roelof

<list hpos>
/items = (hposition_list_set7)
/selectionmode = values.listnumber
/selectionrate = always
</list>
<list hposition_list_set7>
/items =(50.0,  71.21,  80.0,    71.211,            50.01, 28.79,  20.01, 28.791)
/selectionrate = always
</list>
oude lijst, 7 items: (20, 26, 50, 73, 79, 63, 36, 50)
<list vposition_list_set7>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set7.currentindex
/selectionrate = always
</list>

<trial set7_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue;   values.vpos1 = list.vposition_list_set7.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1   = list.hpos.nextvalue; values.filler_position1_v = list.vposition_list_set7.nextvalue;
values.filler_position2   = list.hpos.nextvalue; values.filler_position2_v = list.vposition_list_set7.nextvalue;
values.filler_position3  = list.hpos.nextvalue; values.filler_position3_v = list.vposition_list_set7.nextvalue;
values.filler_position4   = list.hpos.nextvalue; values.filler_position4_v = list.vposition_list_set7.nextvalue;
values.filler_position5   = list.hpos.nextvalue;values.filler_position5_v = list.vposition_list_set7.nextvalue;
values.filler_position6   = list.hpos.nextvalue;values.filler_position6_v = list.vposition_list_set7.nextvalue;
values.filler_position7   = list.hpos.nextvalue;values.filler_position7_v = list.vposition_list_set7.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, 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,                cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set7_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>

If I'm understanding your description correctly, you'll want separate <list>s:
- One weighted list for the target location(s), and
- One for the associated filler locations.

You can prevent the latter list from selecting the same location as the target (already chosen in the 1st list) by using a /not constraint.

Thank you Dave, that does indeed sound like what I would need, however, I cannot find any documentation on the 'not constraint', and the following primitive attempt makes a mess of the locations, is there any example I could model this after?


############# lists #####################
### positions:::::::::::::::::
<list hpos>
/items = (hposition_list_set8)
/selectionmode = values.listnumber
/selectionrate = always
</list>
#list for filler items with 'not' contraint
<list hpos_filler>
/items = (hposition_list_set8)
/selectionmode = values.listnumber
/selectionrate = always
/not = (values.hpos1)
</list>
#weighted hpos list for target: --> note this had to be both vertical and horiztonatl positions
<list hposition_list_set8>
/items =(50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,71.21,80.0,71.211, 50.01, 28.79,20.01, 28.791)
/selectionrate = always
</list>
#weighted vpos_list for target
<list vposition_list_set8>
/items = (20.02,20.02,20.02,20.02,20.02,20.02,20.02,20.02,20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set8.currentindex
/selectionrate = always
</list>
#vpos for fillers:
<list vposition_list_set8_filler>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set8.currentindex
/selectionrate = always
/= not(values.vpos1)
</list>
#end lists
#end lists


########## trials::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
<surveypage codepage>
/ showpagenumbers = false
/ showquestionnumbers = false
/ questions = [1=codebox]
</surveypage>
<textbox codebox>
/ caption = "Select and copy the following code: THE KEYBOARD DOES NOT WORK: copy the code using the mouse"
/ defaultresponse = values.code
/txcolor = (255, 200, 0)
/position = (50,50)
</textbox>


#-----------------#TRIAL TYPES:: -------------------------------------------------
FORMFORMFORMFORMFORMFORMFORM
777777777777777777777777777777777777777777777777777
<trial set8_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue; values.vpos1 = list.vposition_list_set8.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, 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,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>


Brabagazaa
Brabagazaa
Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)Esteemed Member (1.5K reputation)
Group: Forum Members
Posts: 13, Visits: 79
Brabagazaa - Wednesday, January 31, 2018
Dave - Tuesday, January 30, 2018
Brabagazaa - Tuesday, January 30, 2018
Dear all,
At the moment I am trying to create an experiment that shows stimuli in a circle, but that presents the target more often at a specific location (this location should be the same for 1 participant, but balanced across all participants).

My initial strategy was to create a long list of locations, that simply included more of one specific location, and for each participant a different list was used. However, at the moment the shapes other then the target are determined by taking the next location in the location list, which will ensure that the other items (‘fillers’) are always placed around the target. But when I use a weighted list this strategy does not work anymore. Is there a simple way to increase the presentation of the target in 1 specific location while at the same time maintaining the possibility to place filler items neatly around this target location?

Any help is appreciated; down here an example of a stimulus display, and a balanced experiment showing how the locations of target +fillers are interdependent.
Roelof

<list hpos>
/items = (hposition_list_set7)
/selectionmode = values.listnumber
/selectionrate = always
</list>
<list hposition_list_set7>
/items =(50.0,  71.21,  80.0,    71.211,            50.01, 28.79,  20.01, 28.791)
/selectionrate = always
</list>
oude lijst, 7 items: (20, 26, 50, 73, 79, 63, 36, 50)
<list vposition_list_set7>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set7.currentindex
/selectionrate = always
</list>

<trial set7_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue;   values.vpos1 = list.vposition_list_set7.nextvalue;
values.distractor_position_random = floor(rand(1,8));
values.filler_position1   = list.hpos.nextvalue; values.filler_position1_v = list.vposition_list_set7.nextvalue;
values.filler_position2   = list.hpos.nextvalue; values.filler_position2_v = list.vposition_list_set7.nextvalue;
values.filler_position3  = list.hpos.nextvalue; values.filler_position3_v = list.vposition_list_set7.nextvalue;
values.filler_position4   = list.hpos.nextvalue; values.filler_position4_v = list.vposition_list_set7.nextvalue;
values.filler_position5   = list.hpos.nextvalue;values.filler_position5_v = list.vposition_list_set7.nextvalue;
values.filler_position6   = list.hpos.nextvalue;values.filler_position6_v = list.vposition_list_set7.nextvalue;
values.filler_position7   = list.hpos.nextvalue;values.filler_position7_v = list.vposition_list_set7.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, 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,                cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set7_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>

If I'm understanding your description correctly, you'll want separate <list>s:
- One weighted list for the target location(s), and
- One for the associated filler locations.

You can prevent the latter list from selecting the same location as the target (already chosen in the 1st list) by using a /not constraint.

Thank you Dave, that does indeed sound like what I would need, however, I cannot find any documentation on the 'not constraint', and the following primitive attempt makes a mess of the locations, is there any example I could model this after?


############# lists #####################
### positions:::::::::::::::::
<list hpos>
/items = (hposition_list_set8)
/selectionmode = values.listnumber
/selectionrate = always
</list>
#list for filler items with 'not' contraint
<list hpos_filler>
/items = (hposition_list_set8)
/selectionmode = values.listnumber
/selectionrate = always
/not = (values.hpos1)
</list>
#weighted hpos list for target: --> note this had to be both vertical and horiztonatl positions
<list hposition_list_set8>
/items =(50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,50.0,71.21,80.0,71.211, 50.01, 28.79,20.01, 28.791)
/selectionrate = always
</list>
#weighted vpos_list for target
<list vposition_list_set8>
/items = (20.02,20.02,20.02,20.02,20.02,20.02,20.02,20.02,20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set8.currentindex
/selectionrate = always
</list>
#vpos for fillers:
<list vposition_list_set8_filler>
/items = (20.02, 28.792, 50.02, 71.212, 80.02, 71.2121, 50.021, 28.7921)
/selectionmode = list.hposition_list_set8.currentindex
/selectionrate = always
/= not(values.vpos1)
</list>
#end lists
#end lists


########## trials::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
<surveypage codepage>
/ showpagenumbers = false
/ showquestionnumbers = false
/ questions = [1=codebox]
</surveypage>
<textbox codebox>
/ caption = "Select and copy the following code: THE KEYBOARD DOES NOT WORK: copy the code using the mouse"
/ defaultresponse = values.code
/txcolor = (255, 200, 0)
/position = (50,50)
</textbox>


#-----------------#TRIAL TYPES:: -------------------------------------------------
FORMFORMFORMFORMFORMFORMFORM
777777777777777777777777777777777777777777777777777
<trial set8_target_diamond_dis_form>
/ontrialbegin = [values.listnumber = 1; values.hpos1 = list.hpos.nextvalue; values.vpos1 = list.vposition_list_set8.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, 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,cover_picture]
/validresponse = ("z","m")
/iscorrectresponse = [trial.set8_target_diamond_dis_form.response == values.correct_response]
/timeout = values.time_out
/posttrialpause = values.post_trial_pause
/pretrialpause = floor(rand(values.jitter_low,values.jitter_high))
</trial>


It worked out, the problem I ran into was that adding the "/not" constraint did something to the 'nextvalue', this no longer seemed to be selected sequentially (simply the net value after skipping the value indicated by the "/not" constraint), the way that is was resolved was by adding:

/ontrialend= [list.vpos_filler.reset();]
/ontrialend= [list.hpos_filler.reset();]

at the end of the trail, which seemed to put the lists back in the original order and make the whole thing work again


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search