[open] Using a GazePoint GP3 eye tracker with OpenSesame
Dear fellow Opensesame users,
I've been looking in to using a gazepoint GP3 eye tracker with Opensesame, with some success, but I'm concerned I'm doing this in an inelegant, or even dangerous way. (note: I have of course read the existing threads about the using a gazetracker eye tracker with Opensesame).
The GP3 is treated as a network device, and it's possible to communicate with it via the API through XML commands. I can communicate with it using sockets and python inline scripts- this is all fine.
I am wanting to log certain data from the eye tracker (left/right eye focus at a particular time etc.) during experimental trials, which are of a variable length - terminating upon a keypress event in the experimental trial. (nb. I also want to record the keypress data).
I've created a global variable to flag when the eyetracker should be recording. The experimental trial runs parallel (in a parallel item) with an inline script that polls the eye tracker continuously whilst the previously mentioned flag is true. When the experimental trial is finished (e.g. a key has been pressed), another inline script (below the keypress event) sets the global flag to zero. This stops the recording (and writing the x,y and time co-ordinates to the log file via self.log(). Hopefully this makes sense.
Is there a better way to run the script to collect the eye tracking data for an arbitrary period of time? Does what I have done make you want to physically vomit? If so, and you have a superior / safer way of doing this, I would be really grateful if you could let me know.
Also, to try and record timing for the eye tracker data relative to logging data from the keypress event, I've used another global variable that records the time at the start of the trial. Again, I suspect this is quite a crime.
If you think how I might better achieve my aims, I'd be really grateful!
Neon
Comments
You're living in a dreamworld, Neon.
Matrix references aside, the way you record data seems pretty similar to how one would record ERP's (flags working in a similar way as triggers).
I haven't got experience with your specific eye tracker, but Pygaze works very well with a bunch of eyetrackers (I use Eyelink myself). This is an add-on for OpenSesame with which you can very easily control when to start and stop recording, as well as to log data. Have a look here: http://osdoc.cogsci.nl/devices/pygaze/
If it works with your eye tracker, it would definitely make life a bit easier.
Cheers,
Josh
Thanks for your reply, Josh.
Alas, I can't find any indication of Pygaze working with the GazePoint eye tracker.
The good news, is that hopefully we'll be taking stock of a Tobii eye tracker at some point soon, for which Pygaze support (albeit experimental) is available.
Out of interest, what do you use to process the eye tracking data you get from Pygaze/Opensesame? Do you import this in to other software to create area's of interest etc.? This will be later down the line for me, but handy to know.
I guess my concern is that I'm introducing timing errors with the way I have things set up at the moment. Looking at the log file, it seems OK, I just want to be sure.
Thanks again,
Neon
I'm afraid I don't possess the technical prowess to judge whether your way of tracking time would be decent or problematic. This would also depend on your experiment. In general I think this is a decent way to record the time to a keypress, while it may be a less decent means to record a fixation duration on a target word in sentence reading.
I processed my data with the help of a python script. Writing such a script may be a bit of a pain in the ass, but doable if you understand what's going on in the logfile. Aside from that, at least the Eyelink comes with software that can parse the data into saccades and fixations for you (probably the Tobii and your current eyetracker have similar functionality). After that, all you have to do is indicate the test-relevant timepoints.
Josh