Repeating blocks with brench


Author
Message
estarska
estarska
Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)
Group: Forum Members
Posts: 12, Visits: 38
Hi, 
I need to create an experiment which consists of two learning blocks and a testing block. In the learning blocks a participant views pairs of words and learns the association between them and in the testing block they classify whether the two words presented follow the same rule as the one they learned in the learning phase. However, I need participants to really learn the rule, so they can move forward in the study only if they get 85% correct responses in the testing block. If not, they repeat the whole experiment. They can repeat the whole thing max. 5 times (they can go over the whole experiments 6 times in total).

Additionally at the end of the testing block, I would like participants to see their score. I created trials with feedback (positive for scores above 85% and negative for below 85%) but do not know how to incorporate them in my script. Below is what I tried for coding the testing block (everything works apart from the branch elements):

<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]
/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>


Perhaps I am using branch incorrectly. Should I use branch at different levels (trials or experiment)? How can I repeat the whole experiment not just one block? 
I would appreciate help with this.
Thank you!


Dave
Dave
Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)
Group: Administrators
Posts: 10K, Visits: 62K
estarska - 10/19/2020
Hi, 
I need to create an experiment which consists of two learning blocks and a testing block. In the learning blocks a participant views pairs of words and learns the association between them and in the testing block they classify whether the two words presented follow the same rule as the one they learned in the learning phase. However, I need participants to really learn the rule, so they can move forward in the study only if they get 85% correct responses in the testing block. If not, they repeat the whole experiment. They can repeat the whole thing max. 5 times (they can go over the whole experiments 6 times in total).

Additionally at the end of the testing block, I would like participants to see their score. I created trials with feedback (positive for scores above 85% and negative for below 85%) but do not know how to incorporate them in my script. Below is what I tried for coding the testing block (everything works apart from the branch elements):

<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]
/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>


Perhaps I am using branch incorrectly. Should I use branch at different levels (trials or experiment)? How can I repeat the whole experiment not just one block? 
I would appreciate help with this.
Thank you!


<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]

/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>


/branch'es ought to be at the same "level": A <block> can branch to another block. A <trial> can branch to another trial. A block cannot branch to a trial, and a trial cannot branch to a block.

> How can I repeat the whole experiment not just one block?

At the end, you branch back to the first block. From the first block, you branch to the second block, from the second to the third, and so on.

Or just run all blocks 6 times per your <expt>'s /blocks. Define a /stop condition in the expt that terminates things when the desired performance criterion is reached.

Edited Last Month by Dave
estarska
estarska
Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)
Group: Forum Members
Posts: 12, Visits: 38
Dave - 10/19/2020
estarska - 10/19/2020
Hi, 
I need to create an experiment which consists of two learning blocks and a testing block. In the learning blocks a participant views pairs of words and learns the association between them and in the testing block they classify whether the two words presented follow the same rule as the one they learned in the learning phase. However, I need participants to really learn the rule, so they can move forward in the study only if they get 85% correct responses in the testing block. If not, they repeat the whole experiment. They can repeat the whole thing max. 5 times (they can go over the whole experiments 6 times in total).

Additionally at the end of the testing block, I would like participants to see their score. I created trials with feedback (positive for scores above 85% and negative for below 85%) but do not know how to incorporate them in my script. Below is what I tried for coding the testing block (everything works apart from the branch elements):

<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]
/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>


Perhaps I am using branch incorrectly. Should I use branch at different levels (trials or experiment)? How can I repeat the whole experiment not just one block? 
I would appreciate help with this.
Thank you!


<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]

/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>


/branch'es ought to be at the same "level": A <block> can branch to another block. A <trial> can branch to another trial. A block cannot branch to a trial, and a trial cannot branch to a block.


> How can I repeat the whole experiment not just one block?

At the end, you branch back to the first block. From the first block, you branch to the second block, from the second to the third, and so on.

Or just run all blocks 6 times per your <expt>'s /blocks. Define a /stop condition in the expt that terminates things when the desired performance criterion is reached.

estarska
estarska
Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)
Group: Forum Members
Posts: 12, Visits: 38
Hi Dave, thank you for your reply! 
I have a follow up question:

 /branch'es ought to be at the same "level": A <block> can branch to another block. A <trial> can branch to another trial. A block cannot branch to a trial, and a trial cannot branch to a block.

- So I should add my feedback at the level of each trial? Even though I want it to be dependent on performance across ALL trials in a block? Or rather my feedback should be a separate block to branch back to a block?

At the end, you branch back to the first block. From the first block, you branch to the second block, from the second to the third, and so on.

- You mean the end of a block, right?
Dave
Dave
Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)
Group: Administrators
Posts: 10K, Visits: 62K
estarska - 10/20/2020
Hi Dave, thank you for your reply! 
I have a follow up question:

 /branch'es ought to be at the same "level": A <block> can branch to another block. A <trial> can branch to another trial. A block cannot branch to a trial, and a trial cannot branch to a block.

- So I should add my feedback at the level of each trial? Even though I want it to be dependent on performance across ALL trials in a block? Or rather my feedback should be a separate block to branch back to a block?

At the end, you branch back to the first block. From the first block, you branch to the second block, from the second to the third, and so on.

- You mean the end of a block, right?

> - So I should add my feedback at the level of each trial? Even though I want it to be dependent on performance across ALL trials in a block? Or rather my feedback should be a separate block to branch back to a block?

No. Your block cannot branch to trial elements. So branch to a block instead that runs those feedback trial elements.

This

<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) trial.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) trial.feedback_negative_health]

...
</block>

cannot work. So instead do

<block testing_healthiness>
/ preinstructions = (instructions_testing_block_start)
/ trials = [1-20 = noreplace(test_highhealth_lowcomp, test_lowcomp_highhealth, test_lowhealth_highcomp, test_highcomp_lowhealth,
test_highhealth_lowwarm, test_lowwarm_highhealth, test_lowhealth_highwarm, test_highwarm_lowhealth,
test_highhealth_highcomp, test_highcomp_highhealth, test_lowhealth_lowcomp, test_lowcomp_lowhealth)]
/ recorddata = true
/ onblockend = [values.repetition = block.testing_healthiness.count]
/ branch = [if (block.testing_healthiness.percentcorrect >= 85) block.feedback_positive_health]
/ branch = [if (block.testing_healthiness.percentcorrect < 85) block.feedback_negative_health]

/ branch=[if (block.testing_healthiness.percentcorrect < 85) block.laerning_rule_consistent_healthiness]
/ branch=[if (block.testing_healthiness.count > 6) 0]
</block>

with

<block feedback_positive_health>
/ trials = [1=feedback_positive_health]
...
</block>

<block feedback_negative_health>
/ trials = [1=feedback_negative_health]
...
</block>

> - You mean the end of a block, right?

A /branch at the block-level is always only executed at the end of the block, so yes. Just like a branch at the trial-level is executed at the end of the trial.

Edited Last Month by Dave
estarska
estarska
Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)
Group: Forum Members
Posts: 12, Visits: 38
Dave, thank you! Presenting feedback with a block instead of trial worked perfectly!

However, I still have issues with repeating blocks based on performance.

You suggested:
 Or just run all blocks 6 times per your <expt>'s /blocks. Define a /stop condition in the expt that terminates things when the desired performance criterion is reached.

So I tried the below code (to repeat each block 3 times):
<expt Learning_rule_health>
/ blocks = [1,4,7 = laerning_rule_consistent_healthiness; 2,5,8 = laerning_rule_INconsistent_healthiness; 3,6,9 = testing_healthiness]
/ stop = [block.testing_healthiness.percentcorrect >= 85]
...
</expt>

However, it does not seem to be working (when a correct response in the testing block is provided, the experiment closes, so the entire block is not presented, nor are postinstructions). I tried totalpercentcorrect instead of percentcorrect but it does not work either. Could you please advise which element I should specify differently?


Dave
Dave
Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)Supreme Being (871K reputation)
Group: Administrators
Posts: 10K, Visits: 62K
estarska - 10/22/2020
Dave, thank you! Presenting feedback with a block instead of trial worked perfectly!

However, I still have issues with repeating blocks based on performance.

You suggested:
 Or just run all blocks 6 times per your <expt>'s /blocks. Define a /stop condition in the expt that terminates things when the desired performance criterion is reached.

So I tried the below code (to repeat each block 3 times):
<expt Learning_rule_health>
/ blocks = [1,4,7 = laerning_rule_consistent_healthiness; 2,5,8 = laerning_rule_INconsistent_healthiness; 3,6,9 = testing_healthiness]
/ stop = [block.testing_healthiness.percentcorrect >= 85]
...
</expt>

However, it does not seem to be working (when a correct response in the testing block is provided, the experiment closes, so the entire block is not presented, nor are postinstructions). I tried totalpercentcorrect instead of percentcorrect but it does not work either. Could you please advise which element I should specify differently?


Create a <value>

<values>
/ practiceperfomrnacemet = false
</values>

do

<block feedback_positive_health>
/ onblockend = [values.practiceperfomrnacemet = true]
/ trials = [1=feedback_positive_health]
...
</block>

<block feedback_negative_health>
/ onblockend = [values.practiceperfomrnacemet = false]
/ trials = [1=feedback_negative_health]
...
</block>

with

<expt Learning_rule_health>
/ blocks = [1,4,7 = laerning_rule_consistent_healthiness; 2,5,8 = laerning_rule_INconsistent_healthiness; 3,6,9 = testing_healthiness]
/ stop = [values.practiceperformancemet]
...
</expt>

estarska
estarska
Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)Partner Member (758 reputation)
Group: Forum Members
Posts: 12, Visits: 38
Dave - 10/22/2020
estarska - 10/22/2020
Dave, thank you! Presenting feedback with a block instead of trial worked perfectly!

However, I still have issues with repeating blocks based on performance.

You suggested:
 Or just run all blocks 6 times per your <expt>'s /blocks. Define a /stop condition in the expt that terminates things when the desired performance criterion is reached.

So I tried the below code (to repeat each block 3 times):
<expt Learning_rule_health>
/ blocks = [1,4,7 = laerning_rule_consistent_healthiness; 2,5,8 = laerning_rule_INconsistent_healthiness; 3,6,9 = testing_healthiness]
/ stop = [block.testing_healthiness.percentcorrect >= 85]
...
</expt>

However, it does not seem to be working (when a correct response in the testing block is provided, the experiment closes, so the entire block is not presented, nor are postinstructions). I tried totalpercentcorrect instead of percentcorrect but it does not work either. Could you please advise which element I should specify differently?


Create a <value>

<values>
/ practiceperfomrnacemet = false
</values>

do

<block feedback_positive_health>
/ onblockend = [values.practiceperfomrnacemet = true]
/ trials = [1=feedback_positive_health]
...
</block>

<block feedback_negative_health>
/ onblockend = [values.practiceperfomrnacemet = false]
/ trials = [1=feedback_negative_health]
...
</block>

with

<expt Learning_rule_health>
/ blocks = [1,4,7 = laerning_rule_consistent_healthiness; 2,5,8 = laerning_rule_INconsistent_healthiness; 3,6,9 = testing_healthiness]
/ stop = [values.practiceperformancemet]
...
</expt>

It worked perfectly! Thanks a million!
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search