Millisecond Forums

Uneven number of trials for different conditions in the experiment

https://forums.millisecond.com/Topic20851.aspx

By mingwu - 2/22/2017

Here is the expt:

<expt>
/postinstructions = (end)
/ blocks = [1=Instructions0;2-31=noreplace(block.part1in,block.part1out);32=Instructions0;33-62=noreplace(block.part2in,block.part2out);]]
</expt>


As you see, I run two sets of blocks(30 times each):
2-31=noreplace(block.part1in,block.part1out);
33-62=noreplace(block.part2in,block.part2out);

Each of these blocks basically has same logic:

<block part1in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]

/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,  greencongruent2,greenincongruent2,greencontrol2,  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart1)]
</block>

<block part1out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart1)]
</block>


<block part2in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2,greenincongruent2,greencontrol2,
  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart2)]
</block>

<block part2out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart2)]
</block>


I have no problems with second set of trials(2=noreplace(trial.outtrialpart2/intrialpart2)), it works as I expect. However, I would like 1 set of trials to behave differently.

1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2, bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);


Basically I call these 4 blocks (part1in/part1out/part2out/part2in) 60 times in total (15 times each). And i would like that after running it 60 times, I had equal number of executed 1 trials:

[1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2,bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);

As you see there 12 of them , and I would really like to show each of them 5 times (60/12) in random order. Right now i can get 12 redcontrol, 3 redcongruent, etc. But I would like to have 5 times of each.
How can I achieve this? I have read and it seems like i can reset interval, but I am not sure whether I am right or not, same as I do not understand how to implement it. 

I would be really appreciate your help. 
Thank you very much!!
By Dave - 2/22/2017

mingwu - Wednesday, February 22, 2017
Here is the expt:

<expt>
/postinstructions = (end)
/ blocks = [1=Instructions0;2-31=noreplace(block.part1in,block.part1out);32=Instructions0;33-62=noreplace(block.part2in,block.part2out);]]
</expt>


As you see, I run two sets of blocks(30 times each):
2-31=noreplace(block.part1in,block.part1out);
33-62=noreplace(block.part2in,block.part2out);

Each of these blocks basically has same logic:

<block part1in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]

/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,  greencongruent2,greenincongruent2,greencontrol2,  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart1)]
</block>

<block part1out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart1)]
</block>


<block part2in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2,greenincongruent2,greencontrol2,
  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart2)]
</block>

<block part2out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart2)]
</block>


I have no problems with second set of trials(2=noreplace(trial.outtrialpart2/intrialpart2)), it works as I expect. However, I would like 1 set of trials to behave differently.

1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2, bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);


Basically I call these 4 blocks (part1in/part1out/part2out/part2in) 60 times in total (15 times each). And i would like that after running it 60 times, I had equal number of executed 1 trials:

[1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2,bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);

As you see there 12 of them , and I would really like to show each of them 5 times (60/12) in random order. Right now i can get 12 redcontrol, 3 redcongruent, etc. But I would like to have 5 times of each.
How can I achieve this? I have read and it seems like i can reset interval, but I am not sure whether I am right or not, same as I do not understand how to implement it. 

I would be really appreciate your help. 
Thank you very much!!

You need to use a <list> for trial-selection if you want to keep the selection pool intact across those blocks.

<list triallist>
/ items = (trial.redcongruent2,trial.redincongruent2,trial.redcontrol2,trial.greencongruent2, trial.greenincongruent2,trial.greencontrol2,trial.bluecongruent2, trial.blueincongruent2,trial.bluecontrol2, trial.purplecongruent2,trial.purpleincongruent2,trial.purplecontrol2)
/ poolsize = 60
</list>

with 

<block part1in>
...
/ trials = [1=list.triallist]
</block>

<block part1out>
...
/ trials = [1=list.triallist]
</block>

and so forth.

By mingwu - 2/22/2017

Dave - Wednesday, February 22, 2017
mingwu - Wednesday, February 22, 2017
Here is the expt:

<expt>
/postinstructions = (end)
/ blocks = [1=Instructions0;2-31=noreplace(block.part1in,block.part1out);32=Instructions0;33-62=noreplace(block.part2in,block.part2out);]]
</expt>


As you see, I run two sets of blocks(30 times each):
2-31=noreplace(block.part1in,block.part1out);
33-62=noreplace(block.part2in,block.part2out);

Each of these blocks basically has same logic:

<block part1in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]

/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,  greencongruent2,greenincongruent2,greencontrol2,  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart1)]
</block>

<block part1out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart1)]
</block>


<block part2in>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2,greenincongruent2,greencontrol2,
  bluecongruent2,blueincongruent2,bluecontrol2,
  purplecongruent2,purpleincongruent2,purplecontrol2);2=noreplace(trial.intrialpart2)]
</block>

<block part2out>
/ onblockbegin = [
list.latencies.reset();
list.latencies_congruent.reset();
list.latencies_control.reset();
list.latencies_incongruent.reset();
list.responses.reset();
list.responses_congruent.reset();
list.responses_control.reset();
list.responses_incongruent.reset();
]
/ trials = [1=noreplace(redcongruent2,redincongruent2,redcontrol2,
  greencongruent2, greenincongruent2,greencontrol2,
 bluecongruent2, blueincongruent2,bluecontrol2,
 purplecongruent2, purpleincongruent2,purplecontrol2);2=noreplace(trial.outtrialpart2)]
</block>


I have no problems with second set of trials(2=noreplace(trial.outtrialpart2/intrialpart2)), it works as I expect. However, I would like 1 set of trials to behave differently.

1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2, bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);


Basically I call these 4 blocks (part1in/part1out/part2out/part2in) 60 times in total (15 times each). And i would like that after running it 60 times, I had equal number of executed 1 trials:

[1=noreplace(redcongruent2,redincongruent2,redcontrol2,greencongruent2, greenincongruent2,greencontrol2,bluecongruent2, blueincongruent2,bluecontrol2, purplecongruent2, purpleincongruent2,purplecontrol2);

As you see there 12 of them , and I would really like to show each of them 5 times (60/12) in random order. Right now i can get 12 redcontrol, 3 redcongruent, etc. But I would like to have 5 times of each.
How can I achieve this? I have read and it seems like i can reset interval, but I am not sure whether I am right or not, same as I do not understand how to implement it. 

I would be really appreciate your help. 
Thank you very much!!

You need to use a <list> for trial-selection if you want to keep the selection pool intact across those blocks.

<list triallist>
/ items = (trial.redcongruent2,trial.redincongruent2,trial.redcontrol2,trial.greencongruent2, trial.greenincongruent2,trial.greencontrol2,trial.bluecongruent2, trial.blueincongruent2,trial.bluecontrol2, trial.purplecongruent2,trial.purpleincongruent2,trial.purplecontrol2)
/ poolsize = 60
</list>

with 

<block part1in>
...
/ trials = [1=list.triallist]
</block>

<block part1out>
...
/ trials = [1=list.triallist]
</block>

and so forth.


Problem solved! Thank you so much!