Millisecond Forums

presenting a trial with feedback for incorrect keyboard responses

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

By SWIECHE - 3/9/2021

Hi, 
I am trying to program a task that gives trials where participants see a word and are asked to recall another associated word. As the experimenter is coding the responses, I want to program that pressing the 'l' key acts as the correct response. If the experimenter does not press they key before time-out, this represents an inaccurate trial, and the correct associated word should be presented on the screen for an extra 2.5 seconds. For some reason this does not work for me. It only shows the associated word for a splitsecond when I click "l" (even though it should appear when I do not click it), and also does not correctly correspond to the other word. This is what I have so far:

<parameters>
/phase1Timeout = 5000                   
/phase1incorrect = 2500
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIII_Baseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
    values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue, studyrecall_Instructions]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
    trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
        return text.Baselinetarget;
}
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
    values.trialCount = 0;
    list.ACC_phaseIbaseline.reset();
    list.ACC_phaseIsuppression.reset();
    list.ACC_phaseIrecall.reset();
]
/ ontrialbegin = [
    values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
/ onblockend = [
    values.propCorrect_Phase1baseline = list.ACC_phaseIbaseline.mean;
]
</block>

Do you see where the problem lies? Thank you for the help!
By Dave - 3/9/2021

SWIECHE - 3/9/2021
Hi, 
I am trying to program a task that gives trials where participants see a word and are asked to recall another associated word. As the experimenter is coding the responses, I want to program that pressing the 'l' key acts as the correct response. If the experimenter does not press they key before time-out, this represents an inaccurate trial, and the correct associated word should be presented on the screen for an extra 2.5 seconds. For some reason this does not work for me. It only shows the associated word for a splitsecond when I click "l" (even though it should appear when I do not click it), and also does not correctly correspond to the other word. This is what I have so far:

<parameters>
/phase1Timeout = 5000                   
/phase1incorrect = 2500
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIII_Baseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
    values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue, studyrecall_Instructions]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
    trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
        return text.Baselinetarget;
}
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
    values.trialCount = 0;
    list.ACC_phaseIbaseline.reset();
    list.ACC_phaseIsuppression.reset();
    list.ACC_phaseIrecall.reset();
]
/ ontrialbegin = [
    values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
/ onblockend = [
    values.propCorrect_Phase1baseline = list.ACC_phaseIbaseline.mean;
]
</block>

Do you see where the problem lies? Thank you for the help!

Please provide code that is complete enough to actually run.
By Dave - 3/9/2021

Dave - 3/9/2021
SWIECHE - 3/9/2021
Hi, 
I am trying to program a task that gives trials where participants see a word and are asked to recall another associated word. As the experimenter is coding the responses, I want to program that pressing the 'l' key acts as the correct response. If the experimenter does not press they key before time-out, this represents an inaccurate trial, and the correct associated word should be presented on the screen for an extra 2.5 seconds. For some reason this does not work for me. It only shows the associated word for a splitsecond when I click "l" (even though it should appear when I do not click it), and also does not correctly correspond to the other word. This is what I have so far:

<parameters>
/phase1Timeout = 5000                   
/phase1incorrect = 2500
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIII_Baseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
    values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue, studyrecall_Instructions]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
    trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
    list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
        return text.Baselinetarget;
}
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
    values.trialCount = 0;
    list.ACC_phaseIbaseline.reset();
    list.ACC_phaseIsuppression.reset();
    list.ACC_phaseIrecall.reset();
]
/ ontrialbegin = [
    values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
/ onblockend = [
    values.propCorrect_Phase1baseline = list.ACC_phaseIbaseline.mean;
]
</block>

Do you see where the problem lies? Thank you for the help!

Please provide code that is complete enough to actually run.

For the record:

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
  values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue, studyrecall_Instructions]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
  trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
   return text.Baselinetarget;
}
]
</trial>

/ontrialend is not there to present stimuli.

You want sometihng like /errormessage or /responsemessage.
By SWIECHE - 3/9/2021

Excuse me. This is a running code:

<parameters>
/phase1Timeout = 5000      
/phase1incorrect = 2500
/wordHeight = 5%    
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
/trialcount = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIbaseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
  values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
  trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
   return text.Baselinetarget;
}
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
  values.trialCount = 0;
  list.ACC_phaseIbaseline.reset();
]
/ ontrialbegin = [
  values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
</block>

<expt>
/ blocks = [
    1 = phaseI_recall
]
</expt>
By SWIECHE - 3/9/2021

Now I have actually done it like this. but for the correct response (when I click 'L'), it now jumps to another word very quickly and skips it.

<parameters>
/phase1Timeout = 5000      
/phase1incorrect = 2500
/wordHeight = 5%    
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
/trialcount = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIbaseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
  values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
  trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
}
]
/ responsemessage = ("", text.Baselinetarget, 2500)
</trial>

<block phaseI_recall>
/ onblockbegin = [
  values.trialCount = 0;
  list.ACC_phaseIbaseline.reset();
]
/ ontrialbegin = [
  values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
</block>

<expt>
/ blocks = [
    1 = phaseI_recall
]
</expt>
By Dave - 3/9/2021

SWIECHE - 3/9/2021
Excuse me. This is a running code:

<parameters>
/phase1Timeout = 5000      
/phase1incorrect = 2500
/wordHeight = 5%    
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
/trialcount = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIbaseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
  values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue]
/ recorddata = true
/ inputdevice = keyboard
/timeout = parameters.phase1Timeout
/ isvalidresponse = [
  trial.studyrecall_BaselinePair.latency <= parameters.phase1Timeout;
]
/ iscorrectresponse = [trial.studyrecall_BaselinePair.response == "l" && trial.studyrecall_BaselinePair.response.latency <= parameters.phase1Timeout]
/ ontrialend = [if (trial.studyrecall_BaselinePair.response.correct) {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) == 1;
} else {
  list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct) ==0;
   return text.Baselinetarget;
}
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
  values.trialCount = 0;
  list.ACC_phaseIbaseline.reset();
]
/ ontrialbegin = [
  values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
</block>

<expt>
/ blocks = [
    1 = phaseI_recall
]
</expt>

<parameters>
/phase1Timeout = 5000  
/phase1incorrect = 2500
/wordHeight = 5% 
</parameters>

<values>
/index_Baselinecueword = 0
/index_Baselinerecallword = 0
/trialcount = 0
</values>

<item Baselinecue>
/ 1="hug"
/ 2="picnic"
/ 3="lens"
/ 4="jogger"
/ 5="stumble"
/ 6="accident"
/ 7="gate"
/ 8="beach"
/ 9="rug"
/ 10="soil"
/ 11="nightclub"
/ 12="nail"
</item>

<list Baselinecuelist>
/ poolsize = 12
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<item Baselinetarget>
/ 1="rose"
/ 2="hill"
/ 3="physics"
/ 4="collie"
/ 5="clown"
/ 6="snow"
/ 7="train"
/ 8="africa"
/ 9="wool"
/ 10="tomato"
/ 11="lipstick"
/ 12="picture"
</item>


<list Baselinetargetlist>
/ poolsize = 12
/ selectionmode = list.Baselinecuelist.currentindex
/ replace = false
/ selectionmode =random
/ selectionrate = always
</list>

<list ACC_phaseIbaseline>
</list>

<text Baselinecue>
/ items = ("<%item.Baselinecue.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
</text>

<text Baselinetarget>
/ items = ("<%item.Baselinetarget.item(values.index_Baselinecueword)%>")
/ position = (49%, 50%)
/ fontstyle = ("Arial", parameters.wordHeight, true, false, false, false, 5, 1)
/ vjustify = center
/ color = blue
</text>

<trial studyrecall_BaselinePair>
/ ontrialbegin = [
values.index_Baselinecueword = list.Baselinecuelist.nextindex;
]
/ stimulusframes = [1 = Baselinecue]
/ recorddata = true
/ inputdevice = keyboard
/ errormessage = true(Baselinetarget, 2500)
/timeout = parameters.phase1Timeout
/ validresponse = ("1", 0)
/ correctresponse = ("1")
/ ontrialend = [
list.ACC_phaseIbaseline.appenditem(trial.studyrecall_BaselinePair.correct);
]
</trial>

<block phaseI_recall>
/ onblockbegin = [
values.trialCount = 0;
list.ACC_phaseIbaseline.reset();
]
/ ontrialbegin = [
values.trialCount += 1;
]
/ trials = [1 - 12 = noreplace(trial.studyrecall_BaselinePair)]
</block>

<expt>
/ blocks = [
  1 = phaseI_recall
]
</expt>