Communication between inquisit and eyelink


Author
Message
ttyelnv
ttyelnv
Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)
Group: Forum Members
Posts: 23, Visits: 64
Hi Dave,

Hope all is well. I know that inquisit can send event markers to eyelink if I specify the port number in under trial. However, recently I've noticed that the edf file generated only seems to contain the coordinate of the displayed stimuli, and the event marker. I am unable to find parameters such as pupil area in the edf being generated.

With the /datastreams function being added, the marker also seems to be lost in the edf file, and the pupil data is still NA according to the record.


I have read the entire manual but couldn't figure out a way of solving this issue, do you perhaps know what is going on?
Thank you in advance for your help.

~elv

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
ttyelnv - 2/2/2024
Hi Dave,

Hope all is well. I know that inquisit can send event markers to eyelink if I specify the port number in under trial. However, recently I've noticed that the edf file generated only seems to contain the coordinate of the displayed stimuli, and the event marker. I am unable to find parameters such as pupil area in the edf being generated.

With the /datastreams function being added, the marker also seems to be lost in the edf file, and the pupil data is still NA according to the record.


I have read the entire manual but couldn't figure out a way of solving this issue, do you perhaps know what is going on?
Thank you in advance for your help.

~elv

Maybe I'm missing something here, but:

(1) Regarding your first screenshot, this is the expected behavior. Inquisit sends messages to the EyeLink, and the EyeLink logs those to the EDF as such (MSG meaning message). As explained at https://www.millisecond.com/support/docs/current/html/howto/srresearch.htm

"Inquisit automatically sends meta data about all visually presented stimuli to the eye tracker without requiring any special programming. For all visual stimuli, Inquisit notifies the eye tracker of the stimulus onset time and defines their screen regions as areas of interest. For picture stimuli, Inquisit also sends the file name so the images can be loaded by Data Viewer into their corresponding screen positions, and gaze points can be plotted over them."

That is exactly what your screenshot depicts.

(2) Regarding your second screenshot, when you add /datastreams = eyetracker to a trial, that instructs the Eyetracker to record samples during the trial. The format of those recording blocks in the ASC file(s) generated from an EDF is explained in great detail in the EyeLink manuals, e.g. here https://www.manualslib.com/manual/2114770/Sr-Research-Eyelink-Portable-Duo.html?page=100 . Your second screenshot depicts part of one such recordng block, and -- as far as I can see -- all the expected fields (including those for pupil size) are there. As for why those sample lines all indicate missing data, that's something you'll have to figure out on the tracker, Inquisit does not log this data, the tracker does.

ttyelnv
ttyelnv
Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)
Group: Forum Members
Posts: 23, Visits: 64
Thank you for your reply Dave, I will further check with Eyelink to figure out why all values are NAs.

The marker problem still hasn't been resolved. In my Inquisit script, I have something like this to specify the marker for a given trial:

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1, eyelink_movie1; 175000=clearscreen, biopac_reset, eyelink_reset]
/ trialduration = 175000
/ datastreams = (eyetracker)
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


However, in screenshot 2 in the previous post, you could see that the event marker is not there. I do get the message in my eyelink mentioning the name of the trial after the onset of the trial, but the message is in text, and seems not to appear in the asc file either. Do I need to specify the port number again in /ontrialbegin in order to have the markers being displayed? Thank you!


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
ttyelnv - 2/3/2024
Thank you for your reply Dave, I will further check with Eyelink to figure out why all values are NAs.

The marker problem still hasn't been resolved. In my Inquisit script, I have something like this to specify the marker for a given trial:

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1, eyelink_movie1; 175000=clearscreen, biopac_reset, eyelink_reset]
/ trialduration = 175000
/ datastreams = (eyetracker)
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


However, in screenshot 2 in the previous post, you could see that the event marker is not there. I do get the message in my eyelink mentioning the name of the trial after the onset of the trial, but the message is in text, and seems not to appear in the asc file either. Do I need to specify the port number again in /ontrialbegin in order to have the markers being displayed? Thank you!


Your second screenshot depicts part of, only the first few samples, a recording block. The tracker is tracking at 1000Hz, that is one sample per millisecond. The marker is only sent 4000ms into the trial's stimulus presentation sequence, so the message, if it is captured, would be much, much further down. So, no, I'm afraid it isn't apparent from the screenshot that the marker isn't there. The screenshot depicts samples recorded during fewer than 20 ms.

You should also check your settings when you generate the ASC from the EDF. Depending on the options chosen, not everything is output to the ASC (see the EyeLink manuals for those options).

ttyelnv
ttyelnv
Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)
Group: Forum Members
Posts: 23, Visits: 64
Thank you for your reply Dave. 
By converting the asc file into a mat file, I checked in Matlab for the marker, and even though I only set 6 markers for eyelink with commands like


<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


I got around 170000 lines under the markerinfo session in my mat file and the values of the markers vary for every row in the mat file.

If I want inquisit to send a marker to eyelink according to eyelink's sampling rate, shall I amend my code into the following?

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1; 175000=clearscreen]
/ trialduration = 175000
/ datastreams = (eyetracker)
/ ontrialbegin = [port.eyelink_movie1]
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


If there a way to start sending the marker to eyelink 5s after the trial <movie1> starts?

Thank you!
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
ttyelnv - 2/4/2024
Thank you for your reply Dave. 
By converting the asc file into a mat file, I checked in Matlab for the marker, and even though I only set 6 markers for eyelink with commands like


<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


I got around 170000 lines under the markerinfo session in my mat file and the values of the markers vary for every row in the mat file.

If I want inquisit to send a marker to eyelink according to eyelink's sampling rate, shall I amend my code into the following?

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1; 175000=clearscreen]
/ trialduration = 175000
/ datastreams = (eyetracker)
/ ontrialbegin = [port.eyelink_movie1]
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>


If there a way to start sending the marker to eyelink 5s after the trial <movie1> starts?

Thank you!

You've instructed the EyeLink to record gaze samples during the movie trial. The movie trial lasts 175000 milliseconds. The tracker is tracking at 1000 Hz, so it records one binocular gaze sample per millisecond. That, then, must result in > 170000 lines; there is one sample per millisecond, each sample is a line in the EyeLink's recording block, over the duration of 175000 milliseconds.

Your <trial movie1> as you have posted it here, does not send any marker at any time. /ontrialbegin executes logic, it does not display stimuli and a <port> element is a stimulus, just like <text>, <picture>, <video>, etc.

If you want the trial to send a marker to the EyeLink at a specific point in time during the trial's stimulus presentation sequence, put the port stimulus at that time in /stimulustimes.

Edited 3 Months Ago by Dave
ttyelnv
ttyelnv
Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)
Group: Forum Members
Posts: 23, Visits: 64
Dear Dave,

Thank you for your clarification, so the correct code should be like what I had before, right? However, under marker information, I would get many 0s in the mat file generated, occasionally I would get a number (I suppose that refers to the onset of each movie), but that number in the matfile is still different than what I defined in inquisit (e.g., 11, 21).

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1, eyelink_movie1; 175000=clearscreen, eyelink_reset]
/ trialduration = 175000
/ datastreams = (eyetracker)
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>

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
ttyelnv - 2/5/2024
Dear Dave,

Thank you for your clarification, so the correct code should be like what I had before, right? However, under marker information, I would get many 0s in the mat file generated, occasionally I would get a number (I suppose that refers to the onset of each movie), but that number in the matfile is still different than what I defined in inquisit (e.g., 11, 21).

<trial movie1>
/ stimulustimes = [0=text.movie_text; 4000=video.movie1, eyelink_movie1; 175000=clearscreen, eyelink_reset]
/ trialduration = 175000
/ datastreams = (eyetracker)
</trial>

<port eyelink_movie1>
/port = eyetracker
/items = (11)
/ erase = false
</port>

And what is that number?
ttyelnv
ttyelnv
Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)Associate Member (256 reputation)
Group: Forum Members
Posts: 23, Visits: 64
Dear Dave, as you can see from the screenshots below, the name of the markers only indicate the start and the end of experiment. Under 'marker value', I got 4 values at the beginning and 5 values at the end, with 0s in between.

 


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
ttyelnv - 2/6/2024
Dear Dave, as you can see from the screenshots below, the name of the markers only indicate the start and the end of experiment. Under 'marker value', I got 4 values at the beginning and 5 values at the end, with 0s in between.

 


I'm sorry, out of context screenshots of incomplete data that are of something different than you talked about previously will get us nowhere.
- Those screenshots depict a single column, and it's unclear what each row is supposed to represent. There are no timestamp columns, there are no message and even indicator columns. It's unclear how you even processed that data.
- The partially depicted recording block is for a block element (!V TRIAL_VAR Block habituation) supposedly, not trial elements, so whatever this is, it's not what your previous screenshots showed All your previous screenshots show something else.

Get me the full, unedited EDF along with the full Inquisit code that was used in recording it (including any and all files that code requires to run). Then, maybe, we can make some headway here.

Edited 3 Months Ago by Dave
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search