List problem.


Author
Message
nashby
nashby
Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)
Group: Forum Members
Posts: 78, Visits: 159
I am designing a RSVP task. In this task letters flash for 15ms followed by a blankspace of 75ms and this is repeated 20ish times. At some point in the stream I set one of the letters to be a target (set it as a different color).

The problem I am having is that the letters cannot repeat, but in the code I show below they are repeating and I cannot figure out why. I have tried to set it to reset by block and that didnt help.

Here is the relevant code:


<values>
/ t2position = 0

/ targetcolorr = " "
/ targetcolors = " "

/ currentd = ""
/ target = ""

/ t1correct = 0
/ t2correct = 0
/ xpresent = 0

/ condition = 0

/ ttot = 0
/ adjusted = 0

/ order = 0

</values>

<list targetlist>
/ items = ("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "Y" "Z")
/ selectionmode = random
</list>



<data>
/file = "rsvpuw.iqdat"
/ columns = [subject, trialcode, latency, values.t2position, values.currentd, values.target, values.xpresent, values.t1correct, values.t2correct, values.condition, values.ttot, values.adjusted]
</data>

<text introc>
/ items = ("In this task you will see rapidly flashing streams of 23 letters that will appear at the center of the screen following the presentation of a fixation dot (a dot at the center of the screen you should look at). Each letter will flash for 15ms and be seperated by a 75ms blank space. You will encounter 1000 of these streams. For each stream will have two tasks:

First, one letter will be colored either <%values.targetcolorr%> or <%values.targetcolors%> and you will need to remember and enter this letter at the end of the stream. Importantly, if the letter is <%values.targetcolors%> and you get it correct you will earn 1 point, while if the letter is <%values.targetcolorr%> you will earn 9 points.

Second, in half of the streams an X will flash. At the end of the stream you will be asked if an X was present. If you answer correctly you will earn .9 pts.

You will now have some practice trials to familiarize you with the tasks.

Please press ~Continue~ when you are ready to begin.")
/ size = (80%, 20%)
/ position = (50%, 20%)
/ txbgcolor = transparent
/ txcolor = lightgrey
</text>

<text presenter>
/ items = ("<%list.targetlist.nextvalue%>")
/ position = (50%, 50%)
/ txbgcolor = transparent
/ txcolor = black
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 0)
</text>

<text targets>
/ items = ("<%list.targetlist.nextvalue%>")
/ position = (50%, 50%)
/ txbgcolor = transparent
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 0)
</text>

<text targetr>
/ items = ("<%list.targetlist.nextvalue%>")
/ position = (50%, 50%)
/ txbgcolor = transparent
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 0)
</text>

<text targett2>
/ items = ("X")
/ position = (50%, 50%)
/ txbgcolor = transparent
/ txcolor = black
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 0)
</text>


<shape dot>
/ shape = circle
/ position = (50%, 50%)
/ size = (1%, 1%)
</shape>

<trial dot>
/ stimulusframes = [1 = dot;]
/ trialduration = 500
/ recorddata = false
/ ontrialbegin = [values.t1correct = 0; values.t2correct = 0;]
</trial>

<trial blank>
/ trialduration = 250
/ recorddata = false
</trial>

<trial distractor>
/ stimulusframes = [1 = presenter;]
/ trialduration = 15
/ ontrialbegin = [values.currentd = text.presenter.item.1;]
</trial>

<trial filler>
/ stimulusframes = [1 = presenter;]
/ trialduration = 75
/ recorddata = false
</trial>

<trial targeterr>
/ stimulusframes = [1 = targetr;]
/ trialduration = 15
/ ontrialbegin = [values.target = text.targetr.item.1;]
</trial>

<trial targeters>
/ stimulusframes = [1 = targets;]
/ trialduration = 15
/ ontrialbegin = [values.target = text.targets.item.1;]
</trial>

<trial targetx>
/ stimulusframes = [1 = targett2;]
/ trialduration = 15
</trial>

<textbox targetthere>
/ caption = "Please enter the letter you saw that flashed in red or yellow."
/ mask = alphabetic
/ maxchars = 1
/ required = true
</textbox>

<dropdown xthere>
/ caption = "Was there an X presented in the stream?"
/ required = true
/ options = ("Yes", "No")
/ optionvalues = ("1", "2")
</dropdown>


<surveypage questions>
/ questions = [1 = targetthere; 2 = xthere;]
/ showquestionnumbers = false
/ showpagenumbers = false
/ ontrialend = [if(values.target == textbox.targetthere.response && values.condition == 1) {values.t1correct = 1; values.ttot += 9;}]
/ ontrialend = [if(values.target == textbox.targetthere.response && values.condition == 0) {values.t1correct = 1; values.ttot += 1;}]
/ ontrialend = [if(values.xpresent == 1 && dropdown.xthere.selectedvalue == "1") {values.t2correct = 1; values.ttot += .9;}]
/ ontrialend = [if(values.xpresent == 0 && dropdown.xthere.selectedvalue == "2") {values.t2correct = 1; values.ttot += .9;}]
</surveypage>


<block typep2>
/ trials = [1 = dot; 2 = blank; 3,5,7,9,11,13,15,17 = distractor; 4,6,8,10,12,14,16,18 = filler; 19 = targeterr; 20 = filler; 21 = distractor; 22 = filler; 23 = targetx; 24 = filler; 25,27,29,31,33,35,37,39,41,43,45 = distractor; 26,28,30,32,34,36,38,40,42,44,46 = filler; 47 = questions;]
/ onblockbegin = [values.t2position = 2; values.condition = 1; values.xpresent = 1; values.order += 1;]
</block>


<expt main1>
/ blocks = [1 = typep2;]]
/ onexptbegin = [values.targetcolorr = "red"; values.targetcolors = "yellow"; text.targetr.textcolor = red; text.targets.textcolor = yellow;]
</expt>




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: 13K, Visits: 104K
Your list has 20 distinct items (different letters). You sample from those items randomly without replacement. You are drawing way more than 20 samples from the list, i.e., when all items have been sampled after the 20th trial that samples from the list, the list has to reset: All items become available again. The 21st trial, then, may well sample the same item / letter as the 20th trial right before it.

nashby
nashby
Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)
Group: Forum Members
Posts: 78, Visits: 159
Where are you getting 20 items? I count 25 (i.e., the alphabet minus X). 
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: 13K, Visits: 104K
You are correct re. 25 items -- my mistake. That, however, doesn't change the fact that you are drawing more than 25 samples from the list over the course of the <block>.

The <text> stimuli displayed by the <trial> elements

- <trial distractor>
- <trial filler>
- <trial targeterr>, and
- <trial targeters>

all sample from the list. I count a total of 20 distractor trials, 22 filler trials, and 1 targeterr trial over the course of the <block>, i.e., 43 samples from the list.


nashby
nashby
Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)
Group: Forum Members
Posts: 78, Visits: 159
I am confused, why is it calling anything on the filler trials? They are blank?

Any ideas how to correct this issue?
nashby
nashby
Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)Guru (8.8K reputation)
Group: Forum Members
Posts: 78, Visits: 159
Oops now I see why. Filler should be blank... Duh.
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: 13K, Visits: 104K
In the script you posted, the filler trial displays <text presenter>

<trial filler>
/ stimulusframes = [1 = presenter;]
/ trialduration = 75
/ recorddata = false
</trial>

which samples from the list:

<text presenter>
/ items = ("<%list.targetlist.nextvalue%>")
/ position = (50%, 50%)
/ txbgcolor = transparent
/ txcolor = black
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 0)
</text>

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search