How to present a not recently presented word?


Author
Message
cardinal
cardinal
Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)
Group: Forum Members
Posts: 2, Visits: 1

Hi,


I'm looking for ideas to solve this problem.


In my task, the stimuli are words, all of which are drawn from one item element.


A trial consists of four stimulus words presented simultaneously, followed by a word probe to which the subject responds.  I have defined the four stimulus words by using four different text elements.


There are two different types of word probes.  One type of word probe is simply one of the four stimulus words just presented.  I was able to define this type of probe by using “current” in the select attribute.


The other type of word probe must be a nonrecently presented word (i.e., a word that did not appear as a stimulus word or probe in the previous two trials).


How do I define a nonrecently presented word probe?  I can't figure this out.  Any ideas or suggestions? 


 Thanks very much in advance.


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

A halfway elegant solution would be to

- set up a FIFO (first in, first out) type buffer holding the last n item numbers of interest via string concetanation and
- have the "unrelated" probe trial check that buffer and keep selecting probes until one is found that's not in there yet

or some sort of variation along the above lines.

Example:



<values>
/ s1 = 0
/ s2 = 0
/ s3 = 0
/ s4 = 0
/ rprobe = 0
/ uprobe = 0
/ mybuffer = "00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,"
</values>

<expressions>
/ finduprobe = {values.uprobe=counter.uprobecounter.selectedvalue;
    if(contains(values.mybuffer,values.uprobe))expressions.finduprobe}
</expressions>

<block myblock>
/ trials = [1-6=noreplace(RelatedProbe,UnrelatedProbe)]
</block>

<trial RelatedProbe>
/ ontrialbegin = [values.s1=counter.stimcounter.selectedvalue; values.s2=counter.stimcounter.selectedvalue;
    values.s3=counter.stimcounter.selectedvalue; values.s4=counter.stimcounter.selectedvalue]
/ ontrialbegin = [counter.rprobecounter.item.1=values.s1; counter.rprobecounter.item.2=values.s2;
    counter.rprobecounter.item.3=values.s3; counter.rprobecounter.item.4=values.s4]
/ ontrialbegin = [reset(counter.rprobecounter); values.rprobe=counter.rprobecounter.selectedvalue]
/ ontrialbegin = [values.mybuffer=concat(concat(values.s1,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s2,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s3,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s4,","),values.mybuffer);
    values.mybuffer=concat(concat(values.rprobe,","),values.mybuffer);
    values.mybuffer=substring(values.mybuffer,0,45)]
/ stimulustimes = [0=debug,s1,s2,s3,s4; 2000=rprobe]
/ validresponse = (anyresponse)
</trial>

<trial UnrelatedProbe>
/ ontrialbegin = [values.s1=counter.stimcounter.selectedvalue; values.s2=counter.stimcounter.selectedvalue;
    values.s3=counter.stimcounter.selectedvalue; values.s4=counter.stimcounter.selectedvalue]
/ ontrialbegin = [values.mybuffer=concat(concat(values.s1,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s2,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s3,","),values.mybuffer);
    values.mybuffer=concat(concat(values.s4,","),values.mybuffer);
    values.mybuffer=substring(values.mybuffer,0,42);
    expressions.finduprobe;
    values.mybuffer=concat(concat(values.uprobe,","),values.mybuffer)]
/ stimulustimes = [0=debug,s1,s2,s3,s4; 2000=uprobe]
/ validresponse = (anyresponse)
</trial>

<text debug>
/ items = ("Trialtype: <%script.currenttrial%>~nBuffer: <%values.mybuffer%>~n[items used in current and two previous trials]")
/ size = (50%, 15%)
/ position = (50%, 25%)
</text>

<text s1>
/ items = myitems
/ position = (20%, 50%)
/ select = values.s1
</text>

<text s2>
/ items = myitems
/ position = (40%, 50%)
/ select = values.s2
</text>

<text s3>
/ items = myitems
/ position = (60%, 50%)
/ select = values.s3
</text>

<text s4>
/ items = myitems
/ position = (80%, 50%)
/ select = values.s4
</text>

<text rprobe>
/ items = myitems
/ position = (50%, 75%)
/ select = values.rprobe
</text>

<text uprobe>
/ items = myitems
/ position = (50%, 75%)
/ select = values.uprobe
</text>

<counter stimcounter>
/ items = ("01","02","03","04","05","06","07","08","09","10","11","12",
    "13","14","15","16","17","18","19","20","21","22","23","24")
/ select = noreplace
/ selectionrate = always
</counter>

<counter rprobecounter>
/ items = (0,0,0,0)
/ selectionrate = trial
/ select = replace
</counter>

<counter uprobecounter>
/ items = ("01","02","03","04","05","06","07","08","09","10","11","12",
    "13","14","15","16","17","18","19","20","21","22","23","24")
/ select = noreplace
/ selectionrate = always
</counter>

<item myitems>
/ 1 = "#1"
/ 2 = "#2"
/ 3 = "#3"
/ 4 = "#4"
/ 5 = "#5"
/ 6 = "#6"
/ 7 = "#7"
/ 8 = "#8"
/ 9 = "#9"
/ 10 = "#10"
/ 11 = "#11"
/ 12 = "#12"
/ 13 = "#13"
/ 14 = "#14"
/ 15 = "#15"
/ 16 = "#16"
/ 17 = "#17"
/ 18 = "#18"
/ 19 = "#19"
/ 20 = "#20"
/ 21 = "#21"
/ 22 = "#22"
/ 23 = "#23"
/ 24 = "#24"
</item>


Regards,
~Dave


cardinal
cardinal
Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)Associate Member (176 reputation)
Group: Forum Members
Posts: 2, Visits: 1

Thank you for your quick and thorough reply.  I see the logic you're suggesting.  I'll work on this.


mthomas
mthomas
Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)
Group: Forum Members
Posts: 2, Visits: 1

Dave,


Would it be possible for you to explain a little bit about what's going on in this code?  I'm very new to programming in Inquisit, but this is the very problem I am trying to solve.


Thank you,


M. Thomas


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

Can you please be more specific re. which part(s) of the code you don't understand?


mthomas
mthomas
Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)Associate Member (206 reputation)
Group: Forum Members
Posts: 2, Visits: 1

Thanks, Dave.  It's sufficiently overwhelming that I'm not sure where to begin.  I understand the list of myitems, and I understand the blocks of <text s1>, <text s2>, <text s3>, and <text s4> are drawing items from myitems and positioning them on the screen.  More than than, I cannot say with confidence.  The problem is that the tutorials that come with Inquisit are all pretty basic level stuff, and after that, you're on your own.  I wish there were more advanced tutorials to explain these more advanced functions.


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

I'm not sure where to begin.


Well, same here. If I don't know what you are struggling with, I can't really start to explain anything... So, first off, are you clear about what the script is actually supposed to do (cf. posts 1 & 2 in this thread)?


All of the functions etc. used in the script are detailed in the documentation's "Language reference" section. That's where the real meat is and that's where you should go to after having acquired the basics via the "Tutorials" and "How to" sections.


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search