Builder doesn’t have the built-in flexibility to handle that (it can only work with entire rows of your conditions file). But in this case, it will be possible to tweak Builder’s behaviour with a few tiny snippets of Python code:
- Delete the “PositionPoint” column of your conditions file (as the control of that variable will now be handled in code).
- Insert a “code component”. These come from the custom component panel in the Builder window, and when you open it it will have a tabs into which you can paste code, which run at specific times in the experiment.
In the “begin experiment” tab, put something like this:
# create a vertical position for each trial:
vertical_point_pos = [0.2, -0.2] * 10
#randomise the order across subjects:
NB the multiplier above should be half your number of trials: I can’t see how many rows you have in your conditions file, so instead of
10, use the number appropriate for your design.
Then in the “begin routine” tab, put this:
# get a value for this trial:
current_vertical_point_pos = vertical_point_pos.pop()
# record it in the data file manually:
Then in your stimulus component for the point, simply specify its position like this:
and set that field to update very repeat.
Make sure that the code component is above the point stimulus component, so that the latter gets to refer to the current value of
EDIT: or use David’s answer, as we must have been thinking about this simultaneously but from different directions.