OK - I think I see what you mean now: you want to load three batches
of 1000 images where the partitioning of the random selections in each
batch is unique every time (e.g. batch 1 might be [1,56,99,104,…
1999] on one run, and a completely different set of 1000 of another
run. But you also want the batches to be non-overlapping. The
solutions I proposed only work if you are okay with an up-front
partitioning of the images in batches. Gotcha.
OK, so yes, the fundamental limitation here is that you need to run
through a randomized selection 1000 times, and then run through the
exact same sequence again at some later time. You can reset a
selection object in MW, but it won’t run through the same sequence
again.
There are a couple of mechanisms that I could imagine adding that
could solve this issue.
One way would be to make array data types available to users; this is
already on our list of desired features. This way, you could load a
random sampling of stimuli by whatever means you see fit, and then
store the indices in an array (e.g. with a variable assignment). This
would require modification of the expression parser, variable
assignment action, etc.
The other alternative, as Chris suggests, would be to have selection
variables be indexable themselves, e.g. my_selection_variable[4] means
“the forth thing selected on this variable since it was created or
last reset”. I think that this one would easiest to implement, though
we’d need to be very carefully in documenting the behavior of such a
thing, since I could imagine a variety of different behaviors that one
might imagine such indexing would do.
An easier option still would be to add a “generate identical
randomization after reject selection” option to the selection object.
The way this would work would be that the random number generator
would be reseeded after reset/reject/accept selection actions, and
that seed would be stored and restored as needed. So you’d draw 1000
times from the selection to load the stimuli, issue a
reject_selections action (rolling back the “clock” by 1000
selections), and then you’d get back the same values for the next 1000
draws (because you’d be generating random numbers with the same seed).
You would want this to be OFF by default, possibly with scary
warnings next to the check box in the editor, since this is often
explicitly not the behavior you’d want.
I think you could be up and running in an hour or two with the last
option, and it would represent the smallest change to the code base
and your experiment.
– Dave