Millisecond Forums

Repeating trial if response is false

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

By Karoline - 9/25/2018

Hello all, 

I'm a new member, so I hope that my question hasn`t been answered before or is pretty easy to answer. I have actually found one discussion (https://www.millisecond.com/forums/Topic20404.aspx) that quite seemed to resemble my question, but I still couldn't  solve my problem. So I would be very thankful for any help!

In my experiment people should sequentially perform three different tasks and afterwards answer some questions on these tasks. They can choose the order of these tasks by answering the question which of the tasks is most scary, which second, which third... The tasks should then be presented in this order. Programming the experiment I decided on first presenting one item, with which people can decide on the first task to do:

<item Expo_1_stimulus>
/ 1 = "N-Back_1.jpg"
</item>

<Picture Expo_1_pic>
/ items = Expo_1_stimulus
/ select = noreplace
/ size = (70%, 70%)
</Picture>

<Trial BedingungB_Expo_1>
/stimulustimes = [0=Expo_1_pic]
/validresponse = (1, 2, 3, 4)
/ontrialend = [values.Expo_1 = Trial.BedingungB_Expo_1.response-1]
</Trial>

<block BedingungB_Expo_1>
/Trials = [1=BedingungB_Expo_1]
/branch = [if (values.Expo_1 == 1) block.film]
/branch = [if (values.Expo_1 == 2) block.hyperventilation]
/branch = [if (values.Expo_1 == 3) block.imagination]
</block>

Afterwards there is a second item enabling people to decide which task they want to perform second. Now, there is my problem: I want to eliminate the possibility to again choose the same task as before. If done so, I want to show an errormessage and "repeat" the trial. I've programmed so far, that the error message is shown correctly but the trial doesn't repeat. Changing the block (/Trials = [1-2 = BedingungB_Expo_1] instead of /Trials = [1 = BedingungB_Expo_1]) does allow repetition but repeats the trial no matter if the response was correct or false:

<item Expo_2_stimulus>
/ 1 = "N-Back_2.jpg"
</item>

<Picture Expo_2_pic>
/items = Expo_2_stimulus
/select = 1
/size = (70%, 70%)

<text errorfeedback>
/ items= "Fehler"
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 0)
/ txcolor = (255, 0, 0)
/ Position = (50%, 70%)
</text>

<Trial errorfeedback>
/stimulustimes = [0=errorfeedback]
/validresponse = (0)
/trialduration = 2000
</Trial>

<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) sequence (Trial.errorfeedback, Trial BedingungB_Expo_2)]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

<block BedingungB_Expo_2>
/ Trials = [1 = BedingungB_Expo_2]
/ branch = [if (values.Expo_2 == 1) block.film]
/ branch = [if (values.Expo_2 == 2) block.hyperventilation]
/ branch = [if (values.Expo_2 == 3) block.imagination]
</block>

Is there any good way to solve my problem?

Thanks in advance for your help!!







By Dave - 9/25/2018

Karoline - Wednesday, September 26, 2018
Hello all, 

I'm a new member, so I hope that my question hasn`t been answered before or is pretty easy to answer. I have actually found one discussion (https://www.millisecond.com/forums/Topic20404.aspx) that quite seemed to resemble my question, but I still couldn't  solve my problem. So I would be very thankful for any help!

In my experiment people should sequentially perform three different tasks and afterwards answer some questions on these tasks. They can choose the order of these tasks by answering the question which of the tasks is most scary, which second, which third... The tasks should then be presented in this order. Programming the experiment I decided on first presenting one item, with which people can decide on the first task to do:

<item Expo_1_stimulus>
/ 1 = "N-Back_1.jpg"
</item>

<Picture Expo_1_pic>
/ items = Expo_1_stimulus
/ select = noreplace
/ size = (70%, 70%)
</Picture>

<Trial BedingungB_Expo_1>
/stimulustimes = [0=Expo_1_pic]
/validresponse = (1, 2, 3, 4)
/ontrialend = [values.Expo_1 = Trial.BedingungB_Expo_1.response-1]
</Trial>

<block BedingungB_Expo_1>
/Trials = [1=BedingungB_Expo_1]
/branch = [if (values.Expo_1 == 1) block.film]
/branch = [if (values.Expo_1 == 2) block.hyperventilation]
/branch = [if (values.Expo_1 == 3) block.imagination]
</block>

Afterwards there is a second item enabling people to decide which task they want to perform second. Now, there is my problem: I want to eliminate the possibility to again choose the same task as before. If done so, I want to show an errormessage and "repeat" the trial. I've programmed so far, that the error message is shown correctly but the trial doesn't repeat. Changing the block (/Trials = [1-2 = BedingungB_Expo_1] instead of /Trials = [1 = BedingungB_Expo_1]) does allow repetition but repeats the trial no matter if the response was correct or false:

<item Expo_2_stimulus>
/ 1 = "N-Back_2.jpg"
</item>

<Picture Expo_2_pic>
/items = Expo_2_stimulus
/select = 1
/size = (70%, 70%)

<text errorfeedback>
/ items= "Fehler"
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 0)
/ txcolor = (255, 0, 0)
/ Position = (50%, 70%)
</text>

<Trial errorfeedback>
/stimulustimes = [0=errorfeedback]
/validresponse = (0)
/trialduration = 2000
</Trial>

<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) sequence (Trial.errorfeedback, Trial BedingungB_Expo_2)]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

<block BedingungB_Expo_2>
/ Trials = [1 = BedingungB_Expo_2]
/ branch = [if (values.Expo_2 == 1) block.film]
/ branch = [if (values.Expo_2 == 2) block.hyperventilation]
/ branch = [if (values.Expo_2 == 3) block.imagination]
</block>

Is there any good way to solve my problem?

Thanks in advance for your help!!








<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) sequence (Trial.errorfeedback, Trial BedingungB_Expo_2)]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

This is not how /branch-ing works. You cannot /branch to two trials. From <trial BedingungB_Expo_2> you need to /branch to <trial errorfeedback>. From <trial errorfeedback> you can then /branch back to <trial BedingungB_Expo_2>. I.e.

<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) Trial.errorfeedback]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

<Trial errorfeedback>
/stimulustimes = [0=errorfeedback]
/validresponse = (0)
/trialduration = 2000
/ branch = [trial.BedingungB_Expo_2]
</Trial>
By Karoline - 9/25/2018

Dave - Wednesday, September 26, 2018
Karoline - Wednesday, September 26, 2018
Hello all, 

I'm a new member, so I hope that my question hasn`t been answered before or is pretty easy to answer. I have actually found one discussion (https://www.millisecond.com/forums/Topic20404.aspx) that quite seemed to resemble my question, but I still couldn't  solve my problem. So I would be very thankful for any help!

In my experiment people should sequentially perform three different tasks and afterwards answer some questions on these tasks. They can choose the order of these tasks by answering the question which of the tasks is most scary, which second, which third... The tasks should then be presented in this order. Programming the experiment I decided on first presenting one item, with which people can decide on the first task to do:

<item Expo_1_stimulus>
/ 1 = "N-Back_1.jpg"
</item>

<Picture Expo_1_pic>
/ items = Expo_1_stimulus
/ select = noreplace
/ size = (70%, 70%)
</Picture>

<Trial BedingungB_Expo_1>
/stimulustimes = [0=Expo_1_pic]
/validresponse = (1, 2, 3, 4)
/ontrialend = [values.Expo_1 = Trial.BedingungB_Expo_1.response-1]
</Trial>

<block BedingungB_Expo_1>
/Trials = [1=BedingungB_Expo_1]
/branch = [if (values.Expo_1 == 1) block.film]
/branch = [if (values.Expo_1 == 2) block.hyperventilation]
/branch = [if (values.Expo_1 == 3) block.imagination]
</block>

Afterwards there is a second item enabling people to decide which task they want to perform second. Now, there is my problem: I want to eliminate the possibility to again choose the same task as before. If done so, I want to show an errormessage and "repeat" the trial. I've programmed so far, that the error message is shown correctly but the trial doesn't repeat. Changing the block (/Trials = [1-2 = BedingungB_Expo_1] instead of /Trials = [1 = BedingungB_Expo_1]) does allow repetition but repeats the trial no matter if the response was correct or false:

<item Expo_2_stimulus>
/ 1 = "N-Back_2.jpg"
</item>

<Picture Expo_2_pic>
/items = Expo_2_stimulus
/select = 1
/size = (70%, 70%)

<text errorfeedback>
/ items= "Fehler"
/ fontstyle = ("Arial", 2%, true, false, false, false, 5, 0)
/ txcolor = (255, 0, 0)
/ Position = (50%, 70%)
</text>

<Trial errorfeedback>
/stimulustimes = [0=errorfeedback]
/validresponse = (0)
/trialduration = 2000
</Trial>

<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) sequence (Trial.errorfeedback, Trial BedingungB_Expo_2)]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

<block BedingungB_Expo_2>
/ Trials = [1 = BedingungB_Expo_2]
/ branch = [if (values.Expo_2 == 1) block.film]
/ branch = [if (values.Expo_2 == 2) block.hyperventilation]
/ branch = [if (values.Expo_2 == 3) block.imagination]
</block>

Is there any good way to solve my problem?

Thanks in advance for your help!!








<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) sequence (Trial.errorfeedback, Trial BedingungB_Expo_2)]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

This is not how /branch-ing works. You cannot /branch to two trials. From <trial BedingungB_Expo_2> you need to /branch to <trial errorfeedback>. From <trial errorfeedback> you can then /branch back to <trial BedingungB_Expo_2>. I.e.

<Trial BedingungB_Expo_2>
/stimulustimes = [0=Expo_2_pic]
/validresponse = (1, 2, 3, 4)
/iscorrectresponse = [(Trial.BedingungB_Expo_2.response-1) != values.Expo_1]
/branch = [if (Trial.BedingungB_Expo_2.error) Trial.errorfeedback]
/ontrialend = [values.Expo_2 = Trial.BedingungB_Expo_2.response-1]
</Trial>

<Trial errorfeedback>
/stimulustimes = [0=errorfeedback]
/validresponse = (0)
/trialduration = 2000
/ branch = [trial.BedingungB_Expo_2]
</Trial>

That solved the problem!! Thank you very much for your instant reply and help!