Aleya
|
|
Group: Forum Members
Posts: 15,
Visits: 30
|
Thank you so much for all your help Dave! Much appreciated!
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xRight 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
|
|
Group: Forum Members
Posts: 15,
Visits: 30
|
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
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xOK 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>
|
|
|
Aleya
|
|
Group: Forum Members
Posts: 15,
Visits: 30
|
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
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+xEven 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
|
|
Group: Forum Members
Posts: 15,
Visits: 30
|
+x+xEven 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
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xEven 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.
|
|
|
Aleya
|
|
Group: Forum Members
Posts: 15,
Visits: 30
|
+x+x+x+x+x+x+x+x+x+x+x+xSorry for being unclear. In the example used before the fixation marker is always 0, independent of the trial or the stimulus pair shown: <trial emoneu>/ ontrialbegin = [values.marker = (picture.emoleft.currentindex*100) + picture.neuright.currentindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);]/ stimulustimes = [0 = fixation; 2001 = emoleft, neuright, marker]/ posttrialpause = (picture.fixation.item)/ inputdevice = eyetracker/ recorddata = true/ ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem]/ ontrialend = [values.iti = trial.iti.timeout]/ timeout = values.trialduration </trial>I would like to use the fixation cross as a baseline for the eye movement measured and to do so I have to be able to differentiate the fixation crosses of the different Trials in the output file. Or am I missing some general hint? Concerning the repetitions: I have 60 items (30 of each category) and have indicated the poolsize accordingly, have I not? <list trialselector>/ items = (trial.emoneu, trial.neuemo)/ itemprobabilities = (.50, .50)/ poolsize = 60/ replace = false</list>
Sorry, if my questions are a bit trivial and thanks for your help! Re. 1: "I would like to use the fixation cross as a baseline for the eye movement measured and to do so I have to be able to differentiate the fixation crosses of the different Trials in the output file. Then define two <port> elements, one sending a marker indicating emoneu baseline, one with a marker indicating neuemo baseline. <port emoneu_baseline> / items = (1) / erase = false / port = eyetracker </port> <port neuemo_baseline> / items = (2) / erase = false / port = eyetracker </port> Define a port that resets everything to zero in between markers as well so you can get a clear separation between your baseline and your stimulus marker <port allbitstozero> / items = (0) / erase = false / port = eyetracker </port> Then display the appropriate marker along with the fixation cross in your <trial> elements, e.g. <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.currentindex*100) + picture.neuright.currentindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / stimulustimes = [0 = fixation, emoneu_baseline; 1900=allbitstozero; 2001 = emoleft, neuright, marker] ... </trial> Re. 2: "Concerning the repetitions: I have 60 items (30 of each category) and have indicated the poolsize accordingly, have I not?" Your list is sampling *trials* not *items* <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 / replace = false </list> You should end up with 30 "emoneu" trials and 30 "neuemo" trials. It is *those* trials, however, that display stimuli and their respective items. The code you have shared tells me nothing about how you select items or how often a given stimulus element is sampled from. Sorry about that. I defined the pictures that are read into the trials in the following way: <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture neuright> / items = neutral / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoleft> / items = emo / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoright> / items = emo / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> and then thought that the list would take care of the equal distribution (30 neuemo and 30 emoneu trials) without replacement: <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 </list> Is there something missing in the trials coding or am I missing something altogether? > Is there something missing in the trials coding or am I missing something altogether? I can't say because those code snippets don't give me a picture of all relevant parts. There's no info about how many trials you are actually running, i.e. the <block> element(s) in your script. The actual <trial> definitions aren't there, you only shared the code for <trial emoneu> in your very first post in this thread. I have no way to see whether the trials are displaying the correct <picture> elements and/or whether there are any other <trial> elements that display those same stimulus elements and thus affect the sampling from those stimulus elements' items. The <item> elements are missing, I have no way to see whether there actually are 30 items, and so forth. Finally, you have not explained what you actually understand a "repeat" to be. Please provide a data file that illustrates what you mean. Sorry. This is the current script I am running (including your implementations): <eyetracker> / plugin = "tobii" </eyetracker> <defaults> / fontstyle = ("Candara", 24pt) / minimumversion = "4.0.4.0" / screencolor = darkgrey </defaults> <values> / trialduration = 1200 / 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 <port marker> / items = (0) / port = eyetracker / erase = false </port> <port emoneu_baseline> / items = (1) / erase = false / port = eyetracker </port> <port neuemo_baseline> / items = (2) / erase = false / port = eyetracker </port> <port allbitstozero> / items = (0) / erase = false / port = eyetracker </port> <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> <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture neuright> / items = neutral / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoleft> / items = emotional / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoright> / items = emotional / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture fixation> / items = fix / position = (50%, 50%) </picture> ------------------------ TRIALS <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.nextindex*100) + picture.neuright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> <trial neuemo> / ontrialbegin = [values.marker = (picture.neuleft.nextindex*100) + picture.emoright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, neuemo_baseline; 1000 = allbitstozero; 1001 = neuleft, emoright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = picture.emoright.currentitem; values.image_neu = picture.neuleft.currentitem] / timeout = values.trialduration </trial> <trial iti> / stimulusframes = [1 = fixation] / timeout = round(rand(2000-5000)) / recorddata = false </trial> <trial fixation> / stimulusframes = [1 = fixation] / timeout = 1000 / recorddata = false </trial> <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 </list> <block eyetracking> / trials = [1-60 = list.trialselector] </block> <data eyetracking> / file = "Sequence.iqdat" / columns = [subject trialnum values.image_emo values.image_neu values.iti] / separatefiles = true </data> <expt eyetracking> / blocks = [1 = eyetracking] </expt> Thanks. Your <picture> elements should *not* be set to /selectionrate = always. <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always/ select = noreplace </picture> They should use the default, /selectionrate = trial. <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = trial/ select = noreplace </picture> With /selectionrate = always, you're effectively sampling *two* items from each <picture> stimulus per trial, one here <trial emoneu> / ontrialbegin = [values.marker = (picture. emoleft. nextindex*100) + picture. neuright. nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> and another one here <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.nextindex*100) + picture.neuright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> I see, thank you Dave! I just tried it though and it is still repeating Stimuli in the presentation!? Please clarify what exactly you mean by "repeating stimuli in the presentation." As stated before, please also provide a data file that illustrates what exactly you mean. When I run the experiment, stimulus S30.jpg for example will be shown twice within the first 10 trials: subject group trialnum values.image_emovalues.image_neuvalues.iti 1 1 2 S30.jpg N03.jpg 3004 1 1 3 S03.jpg N18.jpg 3836 1 1 4 S25.jpg N01.jpg 4856 1 1 5 S09.jpg N04.jpg 3431 1 1 6 S27.jpg N25.jpg 4099 1 1 7 S24.jpg N24.jpg 3833 1 1 8 S22.jpg N13.jpg 4304 1 1 9 S28.jpg N11.jpg 3418 1 1 10 S30.jpg N20.jpg 4452 1 1 11 S23.jpg N11.jpg 3350 ….. How can that be? Because you have two trial elements that sample from two separate <picture> elements. They are independent. This becomes much clearer when you actually log some more useful information: <data eyetracking> / file = "Sequence.iqdat" / columns = [subject trialnum trialcode values.image_emo values.image_neu values.iti values.marker] / separatefiles = true </data> This is exactly what the script is set up to do. Ok, I understand. But then how do I avoid these repetitions? By sampling them in a dependent manner? What I would like is that each picture is shown only once during the 60 trials, but that stimuli are randomly selected and combined to be presented in pairs that differ from participant to participant, while also randomizing the side on which it is shown. You have 30 items. You cannot possibly achieve that each stimulus is only shown once if you run 60 trials. Even if I set the poolsize to 30, it keeps repeating stimuli...
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+x+x+x+xSorry for being unclear. In the example used before the fixation marker is always 0, independent of the trial or the stimulus pair shown: <trial emoneu>/ ontrialbegin = [values.marker = (picture.emoleft.currentindex*100) + picture.neuright.currentindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);]/ stimulustimes = [0 = fixation; 2001 = emoleft, neuright, marker]/ posttrialpause = (picture.fixation.item)/ inputdevice = eyetracker/ recorddata = true/ ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem]/ ontrialend = [values.iti = trial.iti.timeout]/ timeout = values.trialduration </trial>I would like to use the fixation cross as a baseline for the eye movement measured and to do so I have to be able to differentiate the fixation crosses of the different Trials in the output file. Or am I missing some general hint? Concerning the repetitions: I have 60 items (30 of each category) and have indicated the poolsize accordingly, have I not? <list trialselector>/ items = (trial.emoneu, trial.neuemo)/ itemprobabilities = (.50, .50)/ poolsize = 60/ replace = false</list>
Sorry, if my questions are a bit trivial and thanks for your help! Re. 1: "I would like to use the fixation cross as a baseline for the eye movement measured and to do so I have to be able to differentiate the fixation crosses of the different Trials in the output file. Then define two <port> elements, one sending a marker indicating emoneu baseline, one with a marker indicating neuemo baseline. <port emoneu_baseline> / items = (1) / erase = false / port = eyetracker </port> <port neuemo_baseline> / items = (2) / erase = false / port = eyetracker </port> Define a port that resets everything to zero in between markers as well so you can get a clear separation between your baseline and your stimulus marker <port allbitstozero> / items = (0) / erase = false / port = eyetracker </port> Then display the appropriate marker along with the fixation cross in your <trial> elements, e.g. <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.currentindex*100) + picture.neuright.currentindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / stimulustimes = [0 = fixation, emoneu_baseline; 1900=allbitstozero; 2001 = emoleft, neuright, marker] ... </trial> Re. 2: "Concerning the repetitions: I have 60 items (30 of each category) and have indicated the poolsize accordingly, have I not?" Your list is sampling *trials* not *items* <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 / replace = false </list> You should end up with 30 "emoneu" trials and 30 "neuemo" trials. It is *those* trials, however, that display stimuli and their respective items. The code you have shared tells me nothing about how you select items or how often a given stimulus element is sampled from. Sorry about that. I defined the pictures that are read into the trials in the following way: <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture neuright> / items = neutral / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoleft> / items = emo / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoright> / items = emo / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> and then thought that the list would take care of the equal distribution (30 neuemo and 30 emoneu trials) without replacement: <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 </list> Is there something missing in the trials coding or am I missing something altogether? > Is there something missing in the trials coding or am I missing something altogether? I can't say because those code snippets don't give me a picture of all relevant parts. There's no info about how many trials you are actually running, i.e. the <block> element(s) in your script. The actual <trial> definitions aren't there, you only shared the code for <trial emoneu> in your very first post in this thread. I have no way to see whether the trials are displaying the correct <picture> elements and/or whether there are any other <trial> elements that display those same stimulus elements and thus affect the sampling from those stimulus elements' items. The <item> elements are missing, I have no way to see whether there actually are 30 items, and so forth. Finally, you have not explained what you actually understand a "repeat" to be. Please provide a data file that illustrates what you mean. Sorry. This is the current script I am running (including your implementations): <eyetracker> / plugin = "tobii" </eyetracker> <defaults> / fontstyle = ("Candara", 24pt) / minimumversion = "4.0.4.0" / screencolor = darkgrey </defaults> <values> / trialduration = 1200 / 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 <port marker> / items = (0) / port = eyetracker / erase = false </port> <port emoneu_baseline> / items = (1) / erase = false / port = eyetracker </port> <port neuemo_baseline> / items = (2) / erase = false / port = eyetracker </port> <port allbitstozero> / items = (0) / erase = false / port = eyetracker </port> <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> <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture neuright> / items = neutral / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoleft> / items = emotional / position = (25%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture emoright> / items = emotional / position = (75%, 50%) / size = (900, 600) / selectionrate = always / select = noreplace </picture> <picture fixation> / items = fix / position = (50%, 50%) </picture> ------------------------ TRIALS <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.nextindex*100) + picture.neuright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> <trial neuemo> / ontrialbegin = [values.marker = (picture.neuleft.nextindex*100) + picture.emoright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, neuemo_baseline; 1000 = allbitstozero; 1001 = neuleft, emoright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = picture.emoright.currentitem; values.image_neu = picture.neuleft.currentitem] / timeout = values.trialduration </trial> <trial iti> / stimulusframes = [1 = fixation] / timeout = round(rand(2000-5000)) / recorddata = false </trial> <trial fixation> / stimulusframes = [1 = fixation] / timeout = 1000 / recorddata = false </trial> <list trialselector> / items = (trial.emoneu, trial.neuemo) / itemprobabilities = (.50, .50) / poolsize = 60 </list> <block eyetracking> / trials = [1-60 = list.trialselector] </block> <data eyetracking> / file = "Sequence.iqdat" / columns = [subject trialnum values.image_emo values.image_neu values.iti] / separatefiles = true </data> <expt eyetracking> / blocks = [1 = eyetracking] </expt> Thanks. Your <picture> elements should *not* be set to /selectionrate = always. <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = always/ select = noreplace </picture> They should use the default, /selectionrate = trial. <picture neuleft> / items = neutral / position = (25%, 50%) / size = (900, 600) / selectionrate = trial/ select = noreplace </picture> With /selectionrate = always, you're effectively sampling *two* items from each <picture> stimulus per trial, one here <trial emoneu> / ontrialbegin = [values.marker = (picture. emoleft. nextindex*100) + picture. neuright. nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> and another one here <trial emoneu> / ontrialbegin = [values.marker = (picture.emoleft.nextindex*100) + picture.neuright.nextindex;] / ontrialbegin = [port.marker.setitem(values.marker, 1);] / ontrialbegin = [values.iti = round(rand(1000,2000))] / stimulustimes = [0 = fixation, emoneu_baseline; 1000 = allbitstozero; 1001 = emoleft, neuright, marker] / posttrialpause = (values.iti) / inputdevice = eyetracker / recorddata = true / ontrialend = [values.image_emo = (picture.emoleft.currentitem); values.image_neu = picture.neuright.currentitem] / timeout = values.trialduration </trial> I see, thank you Dave! I just tried it though and it is still repeating Stimuli in the presentation!? Please clarify what exactly you mean by "repeating stimuli in the presentation." As stated before, please also provide a data file that illustrates what exactly you mean. When I run the experiment, stimulus S30.jpg for example will be shown twice within the first 10 trials: subject group trialnum values.image_emovalues.image_neuvalues.iti 1 1 2 S30.jpg N03.jpg 3004 1 1 3 S03.jpg N18.jpg 3836 1 1 4 S25.jpg N01.jpg 4856 1 1 5 S09.jpg N04.jpg 3431 1 1 6 S27.jpg N25.jpg 4099 1 1 7 S24.jpg N24.jpg 3833 1 1 8 S22.jpg N13.jpg 4304 1 1 9 S28.jpg N11.jpg 3418 1 1 10 S30.jpg N20.jpg 4452 1 1 11 S23.jpg N11.jpg 3350 ….. How can that be? Because you have two trial elements that sample from two separate <picture> elements. They are independent. This becomes much clearer when you actually log some more useful information: <data eyetracking> / file = "Sequence.iqdat" / columns = [subject trialnum trialcode values.image_emo values.image_neu values.iti values.marker] / separatefiles = true </data> This is exactly what the script is set up to do. Ok, I understand. But then how do I avoid these repetitions? By sampling them in a dependent manner? What I would like is that each picture is shown only once during the 60 trials, but that stimuli are randomly selected and combined to be presented in pairs that differ from participant to participant, while also randomizing the side on which it is shown. You have 30 items. You cannot possibly achieve that each stimulus is only shown once if you run 60 trials.
|
|
|