Setting markers for stimlustimes with Tobii Eyetracker


Setting markers for stimlustimes with Tobii Eyetracker

Author
Message
Aleya
Aleya
Respected Member
Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)

Group: Forum Members
Posts: 15, Visits: 28
Dave - 5/28/2019
Aleya - 5/28/2019

Even if I set the poolsize to 30, it keeps repeating stimuli...

Yes, because the <picture> elements your two <trial> elements use are independent selection pools. If you do not want that you can use <list> elements to form a single selection pool across the various <picture> elements.

<defaults>
/ fontstyle = ("Candara", 24pt)
/ minimumversion = "4.0.4.0"
/ screencolor = darkgrey
</defaults>

<values>
/ trialduration = 1100
/ marker = 0
/ iti = 0
/ image_neu = ""
/ image_emo = ""
/ emoneu_baseline = 0
/ neuemo_baseline = 0
</values>

<instruct>
/ nextkey = (28)
/ lastlabel = "Press Enter"
/ nextlabel = "Press Enter"
/ fontstyle = ("Candara", 24pt)
/ screencolor = darkgrey
/ txcolor = (0, 0, 0)
/ wait = 500
/ windowsize = (100%,100%)
</instruct>

--------------------
STIMULI

<text marker>
/ items = ("0")
/ port = eyetracker
/ erase = false
</text>

<text emoneu_baseline>
/ items = ("1")
/ erase = false
/ port = eyetracker
</text>

<text neuemo_baseline>
/ items = ("2")
/ erase = false
/ port = eyetracker
</text>

<text allbitstozero>
/ items = ("0")
/ erase = false
/ port = eyetracker
</text>

<item emotional>
/ 1 = "S01.jpg"
/ 2 = "S02.jpg"
/ 3 = "S03.jpg"
/ 4 = "S04.jpg"
/ 5 = "S05.jpg"
/ 6 = "S06.jpg"
/ 7 = "S07.jpg"
/ 8 = "S08.jpg"
/ 9 = "S09.jpg"
/ 10 = "S10.jpg"

/ 11 = "S11.jpg"
/ 12 = "S12.jpg"
/ 13 = "S13.jpg"
/ 14 = "S14.jpg"
/ 15 = "S15.jpg"
/ 16 = "S16.jpg"
/ 17 = "S17.jpg"
/ 18 = "S18.jpg"
/ 19 = "S19.jpg"
/ 20 = "S20.jpg"

/ 21 = "S21.jpg"
/ 22 = "S22.jpg"
/ 23 = "S23.jpg"
/ 24 = "S24.jpg"
/ 25 = "S25.jpg"
/ 26 = "S26.jpg"
/ 27 = "S27.jpg"
/ 28 = "S28.jpg"
/ 29 = "S29.jpg"
/ 30 = "S30.jpg"
</item>

<item neutral>
/ 1 = "N01.jpg"
/ 2 = "N02.jpg"
/ 3 = "N03.jpg"
/ 4 = "N04.jpg"
/ 5 = "N05.jpg"
/ 6 = "N06.jpg"
/ 7 = "N07.jpg"
/ 8 = "N08.jpg"
/ 9 = "N09.jpg"
/ 10 = "N10.jpg"

/ 11 = "N11.jpg"
/ 12 = "N12.jpg"
/ 13 = "N13.jpg"
/ 14 = "N14.jpg"
/ 15 = "N15.jpg"
/ 16 = "N16.jpg"
/ 17 = "N17.jpg"
/ 18 = "N18.jpg"
/ 19 = "N19.jpg"
/ 20 = "N20.jpg"

/ 21 = "N21.jpg"
/ 22 = "N22.jpg"
/ 23 = "N23.jpg"
/ 24 = "N24.jpg"
/ 25 = "N25.jpg"
/ 26 = "N26.jpg"
/ 27 = "N27.jpg"
/ 28 = "N28.jpg"
/ 29 = "N29.jpg"
/ 30 = "N30.jpg"
</item>

< item fix>
/ 1 = "fixationcross.png"
</item>

<list neuitems>
/ poolsize = 30
</list>

<list emoitems>
/ poolsize = 30
</list>

<text neuleft>
/ items = neutral
/ position = (25%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.neuitems.nextindex
</text>

<text neuright>
/ items = neutral
/ position = (75%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.neuitems.nextindex
</text>

<text emoleft>
/ items = emotional
/ position = (25%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.emoitems.nextindex
</text>

<text emoright>
/ items = emotional
/ position = (75%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.emoitems.nextindex
</text>

<text fixation>
/ items = fix
/ position = (50%, 50%)
</text>

------------------------
TRIALS

<trial emoneu>
/ ontrialbegin = [values.marker = (list.emoitems.nextindex*100) + list.neuitems.nextindex;]
/ ontrialbegin = [text.marker.setitem(values.marker, 1);]
/ ontrialbegin = [values.iti = round(rand(100,200))]
/ stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker]
/ posttrialpause = (values.iti)
/ inputdevice = keyboard
/ recorddata = true
/ ontrialend = [values.image_emo = (text.emoleft.currentitem); values.image_neu = text.neuright.currentitem]
/ timeout = values.trialduration
</trial>

<trial neuemo>
/ ontrialbegin = [values.marker = (list.neuitems.nextindex*100) + list.emoitems.nextindex;]
/ ontrialbegin = [text.marker.setitem(values.marker, 1);]
/ ontrialbegin = [values.iti = round(rand(100,200))]
/ stimulustimes = [0 = fixation, neuemo_baseline; 1000 = allbitstozero; 1001 = neuleft, emoright, marker]
/ posttrialpause = (values.iti)
/ inputdevice = keyboard
/ recorddata = true
/ ontrialend = [values.image_emo = text.emoright.currentitem; values.image_neu = text.neuleft.currentitem]
/ timeout = values.trialduration
</trial>

<trial iti>
/ stimulusframes = [1 = fixation]
/ timeout = round(rand(200-500))
/ recorddata = false
</trial>

<trial fixation>
/ stimulusframes = [1 = fixation]
/ timeout = 100
/ recorddata = false
</trial>

<list trialselector>
/ items = (trial.emoneu, trial.neuemo)
/ itemprobabilities = (.50, .50)
/ poolsize = 30
</list>

<block eyetracking>
/ trials = [1-30 = list.trialselector]
</block>

<data eyetracking>
/ file = "Sequence.iqdat"
/ columns = [subject trialnum trialcode values.image_emo values.image_neu values.iti values.marker]
/ separatefiles = true
</data>

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

You can see the difference in the attached data file.

Thanks a bunch Dave!
I am not sure whether it is due to the version I am using or not, but my inquisit does not recognize the "/ port" command in "<text>" and also gives me the error "Redefinition of event 3" when I run it as written above for the following command:

/ ontrialbegin = [values.marker = (list.neuitems.nextindex*100) + list.emoitems.nextindex;]

Dave
Dave
Supreme Being
Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)

Group: Administrators
Posts: 9.9K, Visits: 48K
Aleya - 6/3/2019
Dave - 5/28/2019
Aleya - 5/28/2019

Even if I set the poolsize to 30, it keeps repeating stimuli...

Yes, because the <picture> elements your two <trial> elements use are independent selection pools. If you do not want that you can use <list> elements to form a single selection pool across the various <picture> elements.

<defaults>
/ fontstyle = ("Candara", 24pt)
/ minimumversion = "4.0.4.0"
/ screencolor = darkgrey
</defaults>

<values>
/ trialduration = 1100
/ marker = 0
/ iti = 0
/ image_neu = ""
/ image_emo = ""
/ emoneu_baseline = 0
/ neuemo_baseline = 0
</values>

<instruct>
/ nextkey = (28)
/ lastlabel = "Press Enter"
/ nextlabel = "Press Enter"
/ fontstyle = ("Candara", 24pt)
/ screencolor = darkgrey
/ txcolor = (0, 0, 0)
/ wait = 500
/ windowsize = (100%,100%)
</instruct>

--------------------
STIMULI

<text marker>
/ items = ("0")
/ port = eyetracker
/ erase = false
</text>

<text emoneu_baseline>
/ items = ("1")
/ erase = false
/ port = eyetracker
</text>

<text neuemo_baseline>
/ items = ("2")
/ erase = false
/ port = eyetracker
</text>

<text allbitstozero>
/ items = ("0")
/ erase = false
/ port = eyetracker
</text>

<item emotional>
/ 1 = "S01.jpg"
/ 2 = "S02.jpg"
/ 3 = "S03.jpg"
/ 4 = "S04.jpg"
/ 5 = "S05.jpg"
/ 6 = "S06.jpg"
/ 7 = "S07.jpg"
/ 8 = "S08.jpg"
/ 9 = "S09.jpg"
/ 10 = "S10.jpg"

/ 11 = "S11.jpg"
/ 12 = "S12.jpg"
/ 13 = "S13.jpg"
/ 14 = "S14.jpg"
/ 15 = "S15.jpg"
/ 16 = "S16.jpg"
/ 17 = "S17.jpg"
/ 18 = "S18.jpg"
/ 19 = "S19.jpg"
/ 20 = "S20.jpg"

/ 21 = "S21.jpg"
/ 22 = "S22.jpg"
/ 23 = "S23.jpg"
/ 24 = "S24.jpg"
/ 25 = "S25.jpg"
/ 26 = "S26.jpg"
/ 27 = "S27.jpg"
/ 28 = "S28.jpg"
/ 29 = "S29.jpg"
/ 30 = "S30.jpg"
</item>

<item neutral>
/ 1 = "N01.jpg"
/ 2 = "N02.jpg"
/ 3 = "N03.jpg"
/ 4 = "N04.jpg"
/ 5 = "N05.jpg"
/ 6 = "N06.jpg"
/ 7 = "N07.jpg"
/ 8 = "N08.jpg"
/ 9 = "N09.jpg"
/ 10 = "N10.jpg"

/ 11 = "N11.jpg"
/ 12 = "N12.jpg"
/ 13 = "N13.jpg"
/ 14 = "N14.jpg"
/ 15 = "N15.jpg"
/ 16 = "N16.jpg"
/ 17 = "N17.jpg"
/ 18 = "N18.jpg"
/ 19 = "N19.jpg"
/ 20 = "N20.jpg"

/ 21 = "N21.jpg"
/ 22 = "N22.jpg"
/ 23 = "N23.jpg"
/ 24 = "N24.jpg"
/ 25 = "N25.jpg"
/ 26 = "N26.jpg"
/ 27 = "N27.jpg"
/ 28 = "N28.jpg"
/ 29 = "N29.jpg"
/ 30 = "N30.jpg"
</item>

< item fix>
/ 1 = "fixationcross.png"
</item>

<list neuitems>
/ poolsize = 30
</list>

<list emoitems>
/ poolsize = 30
</list>

<text neuleft>
/ items = neutral
/ position = (25%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.neuitems.nextindex
</text>

<text neuright>
/ items = neutral
/ position = (75%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.neuitems.nextindex
</text>

<text emoleft>
/ items = emotional
/ position = (25%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.emoitems.nextindex
</text>

<text emoright>
/ items = emotional
/ position = (75%, 50%)
/ size = (900, 600)
/ selectionrate = trial
/ select = list.emoitems.nextindex
</text>

<text fixation>
/ items = fix
/ position = (50%, 50%)
</text>

------------------------
TRIALS

<trial emoneu>
/ ontrialbegin = [values.marker = (list.emoitems.nextindex*100) + list.neuitems.nextindex;]
/ ontrialbegin = [text.marker.setitem(values.marker, 1);]
/ ontrialbegin = [values.iti = round(rand(100,200))]
/ stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker]
/ posttrialpause = (values.iti)
/ inputdevice = keyboard
/ recorddata = true
/ ontrialend = [values.image_emo = (text.emoleft.currentitem); values.image_neu = text.neuright.currentitem]
/ timeout = values.trialduration
</trial>

<trial neuemo>
/ ontrialbegin = [values.marker = (list.neuitems.nextindex*100) + list.emoitems.nextindex;]
/ ontrialbegin = [text.marker.setitem(values.marker, 1);]
/ ontrialbegin = [values.iti = round(rand(100,200))]
/ stimulustimes = [0 = fixation, neuemo_baseline; 1000 = allbitstozero; 1001 = neuleft, emoright, marker]
/ posttrialpause = (values.iti)
/ inputdevice = keyboard
/ recorddata = true
/ ontrialend = [values.image_emo = text.emoright.currentitem; values.image_neu = text.neuleft.currentitem]
/ timeout = values.trialduration
</trial>

<trial iti>
/ stimulusframes = [1 = fixation]
/ timeout = round(rand(200-500))
/ recorddata = false
</trial>

<trial fixation>
/ stimulusframes = [1 = fixation]
/ timeout = 100
/ recorddata = false
</trial>

<list trialselector>
/ items = (trial.emoneu, trial.neuemo)
/ itemprobabilities = (.50, .50)
/ poolsize = 30
</list>

<block eyetracking>
/ trials = [1-30 = list.trialselector]
</block>

<data eyetracking>
/ file = "Sequence.iqdat"
/ columns = [subject trialnum trialcode values.image_emo values.image_neu values.iti values.marker]
/ separatefiles = true
</data>

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

You can see the difference in the attached data file.

Thanks a bunch Dave!
I am not sure whether it is due to the version I am using or not, but my inquisit does not recognize the "/ port" command in "<text>" and also gives me the error "Redefinition of event 3" when I run it as written above for the following command:

/ ontrialbegin = [values.marker = (list.neuitems.nextindex*100) + list.emoitems.nextindex;]

You can ignore the warnings for the /port attribute in the <text> elements. Those <text> elements are placeholders only, you are going to use proper <port> elements anyway. I'm not seeing any "redefinition of event" error -- I've tested the script under Inquisit 4.0.10.0, which is what you should be using, it's the latest release. If you're still running some older, outdated version, please update your installation (4.0.10.0 is available via https://www.millisecond.com/download/ as always).

Aleya
Aleya
Respected Member
Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)

Group: Forum Members
Posts: 15, Visits: 28
OK thank you!

Now it gives me an error about the ports though :-/
Specifically it tells me that "Item values must specify exactly 8 bits" for all of the ports:
<port marker>
/ items = ("0")
/ erase = false
/ port = eyetracker
</port>

<port sexneu_baseline>
/ items = ("1")
/ erase = false
/ port = eyetracker
</port>

<port neusex_baseline>
/ items = ("2")
/ erase = false
/ port = eyetracker
</port>

<port allbitstozero>
/ items = ("0")
/ erase = false
/ port = eyetracker
</port>

when I change these to 00000000 etc. the script runs, but I receive no useful markers and warnings...
Sorry to budge you again with this...I hope we'll have it up and running soon!

Dave
Dave
Supreme Being
Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)

Group: Administrators
Posts: 9.9K, Visits: 48K
Aleya - 6/6/2019
OK thank you!

Now it gives me an error about the ports though :-/
Specifically it tells me that "Item values must specify exactly 8 bits" for all of the ports:
<port marker>
/ items = ("0")
/ erase = false
/ port = eyetracker
</port>

<port sexneu_baseline>
/ items = ("1")
/ erase = false
/ port = eyetracker
</port>

<port neusex_baseline>
/ items = ("2")
/ erase = false
/ port = eyetracker
</port>

<port allbitstozero>
/ items = ("0")
/ erase = false
/ port = eyetracker
</port>

when I change these to 00000000 etc. the script runs, but I receive no useful markers and warnings...
Sorry to budge you again with this...I hope we'll have it up and running soon!

The syntax is wrong for port elements. You use question marks if you want to specify markers as 8-bit binary values (e.g. "00000001"). You don't use any quotation marks if you want to specify marker values as decimals instead (e.g. 2).

<port sexneu_baseline>
/ items = (1)
/ erase = false
/ port = eyetracker
</port>

<port neusex_baseline>
/ items = (2)
/ erase = false
/ port = eyetracker
</port>

<port allbitstozero>
/ items = (0)
/ erase = false
/ port = eyetracker
</port>

Edited
5 Months Ago by Dave
Aleya
Aleya
Respected Member
Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)

Group: Forum Members
Posts: 15, Visits: 28
Right sorry, silly me.

Another more general question: I am used to using both calibration and validation in eye tracking, yet I cannot seem to find this option for tobii in inquisit. Is there one, or is the calibration accurate enough?

And if I want to make sure that the participants are fixating the fixation cross for at least 300 ms at the beginning of each trial, I know that I can use:

<eyetracker>
/ plugin = "tobii"
/ aoidurationthreshold = 300
</eyetracker>

but do I need to define the aoi as the fixation cross in some way?

Thanks in advance

Dave
Dave
Supreme Being
Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)Supreme Being (731K reputation)

Group: Administrators
Posts: 9.9K, Visits: 48K
Aleya - 6/11/2019
Right sorry, silly me.

Another more general question: I am used to using both calibration and validation in eye tracking, yet I cannot seem to find this option for tobii in inquisit. Is there one, or is the calibration accurate enough?

And if I want to make sure that the participants are fixating the fixation cross for at least 300 ms at the beginning of each trial, I know that I can use:

<eyetracker>
/ plugin = "tobii"
/ aoidurationthreshold = 300
</eyetracker>

but do I need to define the aoi as the fixation cross in some way?

Thanks in advance

The eyetracker plugins currently do not surface validation data or allow for manually triggering re-calibration. They basically rely on the information from the tracker, i.e. whether it reports a calibration success or not. The calibration quality should be good enough.

The aoidurationthreshold setting is the correct one, the fixation cross you would define as AOI by defining it as the /validresponse in the <trial>.

Aleya
Aleya
Respected Member
Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)Respected Member (445 reputation)

Group: Forum Members
Posts: 15, Visits: 28

Thank you so much for all your help Dave! Much appreciated!

GO


Reading This Topic


Login
Existing Account
Email Address:


Password:


Social Logins

Select a Forum....






Millisecond Forums


Search