Slow running of list sort trials/compatibility issue with Inquisit 3?


Author
Message
AKrishna
AKrishna
Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)
Group: Forum Members
Posts: 93, Visits: 281
Hi,

long-time lurker, first time poster here. We recently upgraded our lab licences from Inquisit 3 to Inquisit 5 and I've run into a bit of an issue with a new script.

The experiment I'm working on reads the median RT from the last 11 trials and adjusts the timeout of the current trial accordingly. The /responsewindow function doesn't seem to have the precise functionality I'm looking for, as it always refers to blocks as opposed to the last X trials within a block, so I wrote a listsort function:


 <trial sort1>
 /ontrialbegin = [values.j = values.j + 1]
 /ontrialbegin = [if (values.j <= counter.unsortedlist.itemcount) values.sortitem = getitem(counter.unsortedlist, values.j)]
 /branch = [if (values.j <= counter.unsortedlist.itemcount) {values.i = 0; trial.sort2} else trial.feedback]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>

 <trial sort2>
 /ontrialbegin = [values.i = values.i + 1]
 /branch = [if (values.sortitem <= getitem(counter.sortedlist, values.i)) {values.k = 1; trial.sort3}]
 /branch = [if (values.i < counter.sortedlist.itemcount) trial.sort2]
 /branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount) == 0) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); trial.sort1}]
 / branch = [{values.m = 0; values.k = -1; trial.sort4}]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>

 <trial sort3>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [if (values.k <= values.i-1) setitem(counter.sortedlist, getitem(counter.sortedlist, values.k), values.k - 1)]
 / branch = [if (values.k < (values.i-1)) trial.sort3]
 / branch = [if (values.k == (values.i-1)) {setitem(counter.sortedlist, values.sortitem, values.i-1); trial.sort1}]
 / branch = [if (values.k == values.i) {setitem(counter.sortedlist, values.sortitem, 1); trial.sort1}]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <trial sort4>
 / ontrialbegin = [values.k = values.k + 1]
 / branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount - values.k) != 0) {values.m = values.m+1; trial.sort4}]
 / branch = [values.k = -1; trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <trial sort5>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [values.fourier = counter.sortedlist.itemcount + values.k - values.m]
 / ontrialbegin = [setitem(counter.sortedlist, getitem(counter.sortedlist, (values.fourier+1)), (values.fourier))]
 / branch = [if (values.m == values.k + 1) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); values.k = 0; trial.sort1}]
 / branch = [trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <counter unsortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>

 <counter sortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>
 / items = (0,0,0,0,0,0,0,0,0,0,0)


The lat1 - lat11 values are written at the end of each trial where the participant responded correctly and the timeout is implemented with a call to  getitem(counter.sortedlist,6)  in the iscorrectresponse of the main task trials. I'm aware that there is a simpler version of a sort list posted somewhere here (thanks for that, by the way!), but it didn't work with Inquisit 3 in an older experiment, so I adapted it as shown.

Now, the problem is this: when I use this script in Inquisit 3, everything works fine with no noticeable delays. But when the exact same script is run in Inquisit 5, there is a noticeable pause between the main task trials - as though the sort list trials were taking longer than they should. Does anyone happen to know the reason for this and a way to solve it? I've played around with setting pretrialpause and posttrialpause to 0, but no dice.

In a possibly related issue, this problem has been reproduced on a Mac and a Windows 7 PC, both of which also took a looong time to start up Inquisit 5 in the first place (consistently upwards of 15 seconds, sometimes as much as 45). Just adding this in case it is relevant.

Thanks so much for any help!

Best,
AK

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
AKrishna - Wednesday, November 30, 2016
Hi,

long-time lurker, first time poster here. We recently upgraded our lab licences from Inquisit 3 to Inquisit 5 and I've run into a bit of an issue with a new script.

The experiment I'm working on reads the median RT from the last 11 trials and adjusts the timeout of the current trial accordingly. The /responsewindow function doesn't seem to have the precise functionality I'm looking for, as it always refers to blocks as opposed to the last X trials within a block, so I wrote a listsort function:


 <trial sort1>
 /ontrialbegin = [values.j = values.j + 1]
 /ontrialbegin = [if (values.j <= counter.unsortedlist.itemcount) values.sortitem = getitem(counter.unsortedlist, values.j)]
 /branch = [if (values.j <= counter.unsortedlist.itemcount) {values.i = 0; trial.sort2} else trial.feedback]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>

 <trial sort2>
 /ontrialbegin = [values.i = values.i + 1]
 /branch = [if (values.sortitem <= getitem(counter.sortedlist, values.i)) {values.k = 1; trial.sort3}]
 /branch = [if (values.i < counter.sortedlist.itemcount) trial.sort2]
 /branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount) == 0) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); trial.sort1}]
 / branch = [{values.m = 0; values.k = -1; trial.sort4}]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>

 <trial sort3>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [if (values.k <= values.i-1) setitem(counter.sortedlist, getitem(counter.sortedlist, values.k), values.k - 1)]
 / branch = [if (values.k < (values.i-1)) trial.sort3]
 / branch = [if (values.k == (values.i-1)) {setitem(counter.sortedlist, values.sortitem, values.i-1); trial.sort1}]
 / branch = [if (values.k == values.i) {setitem(counter.sortedlist, values.sortitem, 1); trial.sort1}]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <trial sort4>
 / ontrialbegin = [values.k = values.k + 1]
 / branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount - values.k) != 0) {values.m = values.m+1; trial.sort4}]
 / branch = [values.k = -1; trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <trial sort5>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [values.fourier = counter.sortedlist.itemcount + values.k - values.m]
 / ontrialbegin = [setitem(counter.sortedlist, getitem(counter.sortedlist, (values.fourier+1)), (values.fourier))]
 / branch = [if (values.m == values.k + 1) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); values.k = 0; trial.sort1}]
 / branch = [trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>

 <counter unsortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>

 <counter sortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>
 / items = (0,0,0,0,0,0,0,0,0,0,0)


The lat1 - lat11 values are written at the end of each trial where the participant responded correctly and the timeout is implemented with a call to  getitem(counter.sortedlist,6)  in the iscorrectresponse of the main task trials. I'm aware that there is a simpler version of a sort list posted somewhere here (thanks for that, by the way!), but it didn't work with Inquisit 3 in an older experiment, so I adapted it as shown.

Now, the problem is this: when I use this script in Inquisit 3, everything works fine with no noticeable delays. But when the exact same script is run in Inquisit 5, there is a noticeable pause between the main task trials - as though the sort list trials were taking longer than they should. Does anyone happen to know the reason for this and a way to solve it? I've played around with setting pretrialpause and posttrialpause to 0, but no dice.

In a possibly related issue, this problem has been reproduced on a Mac and a Windows 7 PC, both of which also took a looong time to start up Inquisit 5 in the first place (consistently upwards of 15 seconds, sometimes as much as 45). Just adding this in case it is relevant.

Thanks so much for any help!

Best,
AK

#1: I'm not sure how to reproduce the "noticeable pause between the main task trials", as those do not seem to be included in the code you posted. (Neither are various other pieces of code relevant to the sort trials, such as the <values> they rely on, i.e., it isn't possible for me to just plug the code in to something else and be sure that I'm working with an accurate representation of what your script does.)

#2: Under Inquisit 5, it should not be necessary to jump through any of these hoops to begin with. The Inquisit 5 <list> element provides a median property which directly returns the median of the values contained in the <list>: https://www.millisecond.com/support/docs/v5/html/language/properties/median.htm

<values>
/ one = 0
/ two = 0
/ three = 0
/ four = 0
/ five = 0
/ mymedian = 0
</values>

<list mylist>
/ items = (values.one, values.two, values.three, values.four, values.five)
</list>

<list randomintegers>
/ poolsize = 1000
/ replace = true
/ selectionrate = always
</list>

<trial mytrial>
/ ontrialbegin = [values.one = list.randomintegers.nextindex;
    values.two = list.randomintegers.nextindex;
    values.three = list.randomintegers.nextindex;
    values.four = list.randomintegers.nextindex;
    values.five = list.randomintegers.nextindex;
    values.mymedian = list.mylist.median;
]
/ stimulusframes = [1=mytext]
/ validresponse = (57)
</trial>

<text mytext>
/ items = ("The median of the values
<%values.one%>, <%values.two%>, <%values.three%>, <%values.four%> and <%values.five%>
is equal to
<%values.mymedian%>.")
/ size = (75%, 50%)
</text>

<block myblock>
/ trials = [1-5 = mytrial]
</block>

Hope this helps.

AKrishna
AKrishna
Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)Distinguished Member (3.2K reputation)
Group: Forum Members
Posts: 93, Visits: 281
Oh wow, thanks for the fast response!

OK, the median function should solve this issue quite easily, thanks for that. Will try it out ASAP! Sorry I didn't check this first - I simply haven't had the time to really get into the new features in Inquisit 5.

I didn't want to post the whole experiment's code because I thought it might be a bit too messy, but I can understand that the fragments weren't much help either. In case the slowdown is of further interest to you, find attached all the relevant code. It should run if you put placeholder files in for the pictures. To briefly explain the task (as the instructions are in German), you start with the "maze" trial, which displays a cross. You click on the cross and then you're supposed to click on the cheese (kaesePic) as fast as possible. The response window for this task is adaptive such that if you respond correctly, your RT is added to the list from which the median is taken. If you click the wrong picture (Hoehlepic), your RT is not added to the list.


<trial maze>
/inputdevice = mouse
/stimulusframes = [1=kreuz, klicken]
/validresponse = (kreuz)
/recorddata = false
/branch = [noreplace(trial.mauskaeselinks,trial.mauskaeserechts,trial.mauskaeselinks,trial.mauskaeserechts,trial.mauskaeselinks,trial.mauskaeserechts) ]
</trial>

<trial mauskaeselinks>
/ ontrialbegin = [values.pot = getitem(counter.sortedlist,6) + values.mercy]
/ontrialbegin = [values.horizontalposition = 10]
/inputdevice = mouse
/stimulusframes = [1=mausPic, kaesePic, hoehlePic, himmelPic]
/validresponse = (kaesePic, hoehlePic)
/ correctresponse = (kaesePic)
/ timeout = 2000
/ ontrialend = [if (trial.mauskaeselinks.response == "kaesePic") {values.wascorrect = "RICHTIG GEKLICKT!!!"; text.correctfeedback.textcolor = green} else {values.wascorrect = "FALSCH GEKLICKT!!!"; text.correctfeedback.textcolor = crimson}]
/ ontrialend = [if (trial.mauskaeselinks.latency <= getitem(counter.sortedlist,6) + values.mercy && trial.mauskaeselinks.latency != 0) {values.fastenough = "SCHNELL GENUG!!!"; text.fastenough.textcolor = green; values.current = values.current +1} else {values.fastenough = "ZU LANGSAM!!!"; text.fastenough.textcolor = crimson}]
/ ontrialend = [values.ntrials=values.ntrials+1; values.ncorrect=values.ncorrect+trial.mauskaeselinks.correct]
/ ontrialend = [clear(counter.unsortedlist); values.i = 0; values.j = 0]
 / ontrialend = [if (trial.mauskaeselinks.response == "kaesePic") {values.lat11 = values.lat10; values.lat10 = values.lat9; values.lat9= values.lat8; values.lat8= values.lat7; values.lat7= values.lat6; values.lat6= values.lat5; values.lat5= values.lat4; values.lat4= values.lat3; values.lat3= values.lat2; values.lat2= values.lat1; values.lat1 = trial.mauskaeselinks.latency}]
 / ontrialend = [if (trial.mauskaeselinks.response == "0") {values.lat11 = values.lat10; values.lat10 = values.lat9; values.lat9= values.lat8; values.lat8= values.lat7; values.lat7= values.lat6; values.lat6= values.lat5; values.lat5= values.lat4; values.lat4= values.lat3; values.lat3= values.lat2; values.lat2= values.lat1; values.lat1 = 2000}]
 / ontrialend = [insert(counter.unsortedlist, values.lat1, 1); insert(counter.unsortedlist, values.lat2, 2); insert(counter.unsortedlist, values.lat3, 3); insert(counter.unsortedlist, values.lat4, 4); insert(counter.unsortedlist, values.lat5, 5); insert(counter.unsortedlist, values.lat6, 6); insert(counter.unsortedlist, values.lat7, 7); insert(counter.unsortedlist, values.lat8, 8); insert(counter.unsortedlist, values.lat9, 9);insert(counter.unsortedlist, values.lat10, 10); insert(counter.unsortedlist, values.lat11, 11)]
 / ontrialend = [setitem(counter.sortedlist, 0, 1); setitem(counter.sortedlist,0, 2); setitem(counter.sortedlist, 0, 3); setitem(counter.sortedlist, 0, 4); setitem(counter.sortedlist, 0, 5); setitem(counter.sortedlist, 0, 6); setitem(counter.sortedlist, 0, 7); setitem(counter.sortedlist, 0, 8); setitem(counter.sortedlist, 0, 9);setitem(counter.sortedlist, 0, 10); setitem(counter.sortedlist, 0, 11)]
 / branch = [trial.sort1]
</trial>


<trial mauskaeserechts>
/ ontrialbegin = [values.pot = getitem(counter.sortedlist,6) + values.mercy]
/ontrialbegin = [values.horizontalposition = 90]
/inputdevice = mouse
/stimulusframes = [1=mausPic, kaesePic, hoehlePic, himmelPic]
/validresponse = (kaesePic, hoehlePic)
/ correctresponse = (kaesePic)
/ timeout = 2000
/ ontrialend = [if (trial.mauskaeserechts.response == "kaesePic") {values.wascorrect = "RICHTIG GEKLICKT!!!"; text.correctfeedback.textcolor = green} else {values.wascorrect = "FALSCH GEKLICKT!!!"; text.correctfeedback.textcolor = crimson}]
/ ontrialend = [if (trial.mauskaeserechts.latency <= getitem(counter.sortedlist,6) + values.mercy && trial.mauskaeserechts.latency != 0) {values.fastenough = "SCHNELL GENUG!!!"; text.fastenough.textcolor = green; values.current = values.current +1} else {values.fastenough = "ZU LANGSAM!!!"; text.fastenough.textcolor = crimson}]
/ ontrialend = [values.ntrials=values.ntrials+1; values.ncorrect=values.ncorrect+trial.mauskaeserechts.correct]
/ ontrialend = [clear(counter.unsortedlist); values.i = 0; values.j = 0]
/ ontrialend = [if (trial.mauskaeserechts.response == "kaesePic") {values.lat11 = values.lat10; values.lat10 = values.lat9; values.lat9= values.lat8; values.lat8= values.lat7; values.lat7= values.lat6; values.lat6= values.lat5; values.lat5= values.lat4; values.lat4= values.lat3; values.lat3= values.lat2; values.lat2= values.lat1; values.lat1 = trial.mauskaeserechts.latency}]
/ ontrialend = [if (trial.mauskaeserechts.response == "0") {values.lat11 = values.lat10; values.lat10 = values.lat9; values.lat9= values.lat8; values.lat8= values.lat7; values.lat7= values.lat6; values.lat6= values.lat5; values.lat5= values.lat4; values.lat4= values.lat3; values.lat3= values.lat2; values.lat2= values.lat1; values.lat1 = 2000}]
/ ontrialend = [insert(counter.unsortedlist, values.lat1, 1); insert(counter.unsortedlist, values.lat2, 2); insert(counter.unsortedlist, values.lat3, 3); insert(counter.unsortedlist, values.lat4, 4); insert(counter.unsortedlist, values.lat5, 5); insert(counter.unsortedlist, values.lat6, 6); insert(counter.unsortedlist, values.lat7, 7); insert(counter.unsortedlist, values.lat8, 8); insert(counter.unsortedlist, values.lat9, 9);insert(counter.unsortedlist, values.lat10, 10); insert(counter.unsortedlist, values.lat11, 11)]
/ ontrialend = [setitem(counter.sortedlist, 0, 1); setitem(counter.sortedlist,0, 2); setitem(counter.sortedlist, 0, 3); setitem(counter.sortedlist, 0, 4); setitem(counter.sortedlist, 0, 5); setitem(counter.sortedlist, 0, 6); setitem(counter.sortedlist, 0, 7); setitem(counter.sortedlist, 0, 8); setitem(counter.sortedlist, 0, 9);setitem(counter.sortedlist, 0, 10); setitem(counter.sortedlist, 0, 11)]
/ branch = [trial.sort1]
</trial>


<trial feedback>
/ inputdevice = mouse
/ stimulusframes = [1 = fastenough, correctfeedback]
/ validresponse = (noresponse)
/ timeout = 750
/ recorddata = false
</trial>


<text kreuz>
/items = ("+")
/position = (50,50)
/fontstyle = ("Arial", 20%)
</text>

<text klicken>
/items = ("Klicken Sie auf das Kreuz, um fortzufahren.")
/position = (50,65)
/fontstyle = ("Arial", 4%)

</text>

<text fastenough>
/ fontstyle = ("Arial", 5%)
/ txcolor = crimson
/ position = (50, 40)
/ items = ("<%values.fastenough%>")
</text>

<text correctfeedback>
/ fontstyle = ("Arial", 3%)
/ position = (50, 60)
/ txcolor = aquamarine
/ items = ("<%values.wascorrect%>")
</text>


<picture mausPic>
/items = ("Maus.jpg")
/position = (50,50)
/size = (30%, 30%)
</picture>

<picture kaesePic>
/items = ("Kase.jpg")
/position = (values.horizontalposition,50)
/size = (30%, 30%)
</picture>

<picture hoehlePic>
/items = ("Hohle.jpg")
/position = (100-values.horizontalposition,50)
/size = (30%, 30%)
</picture>

<picture himmelPic>
/items = ("Himmel2.jpg")
/position = (50,15)
/size = (30%, 30%)
</picture>


<values>
/ mercy = 200
/ pot = 0
/ horizontalposition = 0
/counter = 0
/ncorrect = 0
/ntrials = 0
/current = 0
/wascorrect = "WERT NICHT GESETZT"
/fastenough = "WERT NICHT GESETZT"

/rem1 = "AB HIER KOMMEN VARIABLEN FÜR DEN SORTIERALGORITHMUS"

 /j = 0
 /i = 0
 /k = 0
 /m = 0
 /fourier = 0
 /sortitem = 0
 /lat1 = 300
 /lat2 = 300
 /lat3 = 300
 /lat4 = 300
 /lat5 = 300
 /lat6 = 300
 /lat7 = 300
 /lat8 = 300
 /lat9 = 300
 /lat10 = 300
 /lat11 = 300
/endresult = "ERROR: RESULTS NOT CALCULATED"
</values>

<expressions>
/pctcorrect = (values.ncorrect / values.ntrials)*100
</expressions>


 <trial sort1>
 /ontrialbegin = [values.j = values.j + 1]
 /ontrialbegin = [if (values.j <= counter.unsortedlist.itemcount) values.sortitem = getitem(counter.unsortedlist, values.j)]
 /branch = [if (values.j <= counter.unsortedlist.itemcount) {values.i = 0; trial.sort2} else trial.feedback]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>
 / stimulustimes = [0 = currentrial]



 <trial sort2>
 /ontrialbegin = [values.i = values.i + 1]
 /branch = [if (values.sortitem <= getitem(counter.sortedlist, values.i)) {values.k = 1; trial.sort3}]
 /branch = [if (values.i < counter.sortedlist.itemcount) trial.sort2]
 /branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount) == 0) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); trial.sort1}]
 / branch = [{values.m = 0; values.k = -1; trial.sort4}]
 /recorddata = false
 / pretrialpause = 0
 /trialduration = 0
 </trial>
 / stimulustimes = [0 = currentrial]


 <trial sort3>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [if (values.k <= values.i-1) setitem(counter.sortedlist, getitem(counter.sortedlist, values.k), values.k - 1)]
 / branch = [if (values.k < (values.i-1)) trial.sort3]
 / branch = [if (values.k == (values.i-1)) {setitem(counter.sortedlist, values.sortitem, values.i-1); trial.sort1}]
 / branch = [if (values.k == values.i) {setitem(counter.sortedlist, values.sortitem, 1); trial.sort1}]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>
 / stimulustimes = [0 = currentrial]


 <trial sort4>
 / ontrialbegin = [values.k = values.k + 1]
 / branch = [if (getitem(counter.sortedlist, counter.sortedlist.itemcount - values.k) != 0) {values.m = values.m+1; trial.sort4}]
 / branch = [values.k = -1; trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>
 / stimulustimes = [0 = currentrial]

 <trial sort5>
 / ontrialbegin = [values.k = values.k + 1]
 / ontrialbegin = [values.fourier = counter.sortedlist.itemcount + values.k - values.m]
 / ontrialbegin = [setitem(counter.sortedlist, getitem(counter.sortedlist, (values.fourier+1)), (values.fourier))]
 / branch = [if (values.m == values.k + 1) {setitem(counter.sortedlist, values.sortitem, counter.sortedlist.itemcount); values.k = 0; trial.sort1}]
 / branch = [trial.sort5]
 / recorddata = false
 / pretrialpause = 0
 / trialduration = 0
 </trial>
 / stimulustimes = [0 = currentrial]


 <counter unsortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>

 <counter sortedlist>
 / items = (values.lat1, values.lat2, values.lat3, values.lat4, values.lat5, values.lat6, values.lat7, values.lat8, values.lat9, values.lat10, values.lat11)
 / select = noreplace
 </counter>
 / items = (0,0,0,0,0,0,0,0,0,0,0)


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search