Assigning participant to a specific group and quitting participant trouble shooting

Hi everyone !

I’m asking for help because I have trouble setting up an online experiment using pavlovia and prolific.

My experiment consist of transmission chain, i.e., people one after another completing a task.

I have already a running and working experiment for the first “generation” of participant.

Now, I need to take their results, and use them as inputs for the next generation.
Each result are in a neat .csv file, simply name “chainX.csv”, X being the number of the chain.
Using the shelf, I’m assigning each new participant a chain number, and then I retrieve the values from the .csv file corresponding to this specific chain.
All of that is working.


If a participant quits the experiment (for example closing the tab), it count as a return on prolific, which leads to a new participant being recruited. However, this new participant might be attributed a chain number that might already be running, thus generating data that I don’t need.
Because we want to run multiple large generation, this can lead to quite a lost of money for my team.

Technical part:

In the shelf, I have an integer and a list as such:

chain_counter = 0
chain_csv = [chain1, chain2, etc…]

Just after the consent form, I do :

chain_csv = await psychoJS.shelf.getMostValue({key: [“chain_csv”]})
chain_counter = await psychoJS.shelf.getIntegerValue({key: [“chain_counter”]}) % chain_csv.length

condition_file = “path/” + chain_csv[chain_counter] + “.csv”;

chainInfo = new TrialHandler({
psychoJS: psychoJS,
nReps: 1, method: TrialHandler.Method.SEQUENTIAL,
extraInfo: expInfo, originPath: undefined,
trialList: condition_file,
seed: undefined, name: ‘chainInfo’});

psychoJS.shelf.addIntegerValue({key: [“chain_counter”], delta: 1})


Is there a way to either make prolific wait before recruiting again, or to track participant quitting so that I can update the shelf accordingly ?
If there’s not, I’m open to suggestion for mitigating damages.

Solution that I already though of:

  • Adding another list (complete_csv for example) starting with 1 and going to 0 when participant complete the experiment, such that I’m left with only 1 on indexs where participant did not complete the experiment with these indexs csv.

Only problem is that the experiment is quite long (30 minutes ~), and if participants quit right at the beginning, the value on this list won’t be updated yet.

  • I tried using the counterbalance option with dictionnaries, but it instantly delete the entry (my group are of size 1), thus creating a discrepancy between prolific wanting to recruit, and the shelf being empty.

I’m sorry for the long post, and I wish you all a good day.

Hello :wave:, I wonder how did you manage to solve it eventually?

While the counterbalance function on the shelf will hopefully soon take into account participants who don’t finish, it doesn’t yet work.

You can either use the shelf to make your own counterbalance function (allocating at the start and updating the current allocations in the final routine) which should work if you don’t have too many simultaneous participants, or use the VESPR Study Portal.