EyeLink updates

Christopher Stawarz's Avatar

Christopher Stawarz

16 Nov, 2018 05:49 PM

Hi Arash, Simon, & Archer,

The current MWorks nightly build contains several enhancements to the EyeLink interface that we discussed recently:

  1. EyeLink blink, saccade, and fixation states are now sent to MWorks and can be stored in variables.
  2. EyeLink-driven calibration is now supported.

I've attached a short example experiment that demonstrates the new features.

The blink, saccade, and fixation stuff is very simple: Just set the appropriate parameter to a variable name, and that variable will be set to true/false whenever the corresponding state is entered/exited. Now that these are available, there's probably no reason to use MWorks' eye monitor. In fact, there's probably no need to monitor saccades at all (as they are mutually exclusive with fixation). However, you will still need a fixation point to know that the monkey is fixating on the correct spot.

When updating your experiments, you should replace the existing tests for fixation:

eye_on_fixation_point and (not eye_in_saccade)

with

eye_fixating and eye_on_fixation_point

and replace the tests for broken fixation:

not (eye_on_fixation_point or eye_in_saccade)

with

not (eye_blinking or (eye_fixating and eye_on_fixation_point))

The calibration support is described in the docs and demonstrated in the example experiment. In short, you have to arrange for a fixation target to be drawn on MWorks' stimulus display when and where the tracker wants. Then, you use the new eyelink_tracker_setup action to launch the setup screen on the EyeLink host PC. At that point, your MWorks experiment is paused until you exit the setup screen. You initiate the calibration process via the EyeLink PC. The calibration results are stored on the EyeLink PC (and I believe they persist between sessions, though I'm not certain).

Note that if you're doing EyeLink-side calibration, your MWorks experiment should use the "screen gaze" coordinates (eye_rx/eye_ry/eye_lx/eye_ly), not the pupil coordinates, which are uncalibrated.

When you get a chance, please give these new features a try, and let me know if you have any questions.

Cheers,
Chris

  1. 1 Posted by Arash Afraz on 17 Nov, 2018 12:53 AM

    Arash Afraz's Avatar

    You rock Chris, thanks.

    We will try and report.

    Have a great weekend,
    Arash

  2. Support Staff 2 Posted by Christopher Sta... on 19 Mar, 2019 01:52 PM

    Christopher Stawarz's Avatar

    Hi Arash, Simon, & Archer,

    Just wanted to check in on this. Have you had a chance to test the new EyeLink features? If so, have they resolved any of the EyeLink issues you were having (e.g. calibration difficulties)?

    Thanks,
    Chris

  3. 3 Posted by Simon Bohn on 11 Apr, 2019 07:41 PM

    Simon Bohn's Avatar

    Hi Chris,

    Thanks so much for making this for us. I had been holding off on
    implementing it in my ongoing experiment because it required updating
    MWorks and changing some of the code. But I recently got to a point where
    it made sense to get better eye tracking so I took the plunge. First of
    all, it's awesome. It certainly has my vote for MWorks feature-of-the-year.
    I do have one thing I wanted to report back to you on. After I first put it
    all together, I was having problems with MWorks never allowing a trial to
    get started. I figured out that this was because it was detecting lots and
    lots of saccades that were noise or so small I didn't care about. Reza, our
    eye movements expert tells me that Eyelink's internal calibration is great
    but its on line saccade detection is not. So in the end, I just removed the
    requirement that the monkey be fixating on a fixation point to count it as
    fixated upon in the fixation-checks, and instead only require that the eye
    be within the boundary. And since the calibration is so accurate (less than
    1 degree diameter!) it seems good enough. That said, it might still be nice
    to make fixation and saccade detection possible and tunable within MWorks,
    so I will probably be putting an eye_monitor back in for saccade detection
    rather than relying on Eyelink. Just thought you might like to know that in
    case someone else asks. I'll let you know if I encounter anything else
    weird, but it seems to be working perfectly right now.

    Best,

    Simon

  4. Support Staff 4 Posted by Christopher Sta... on 12 Apr, 2019 04:42 PM

    Christopher Stawarz's Avatar

    Hi Simon,

    Thanks for testing and report back. I'm glad to hear that things are mostly working well.

    Regarding saccade/fixation detection, have you tried tweaking the EyeLink's saccadic thresholds? Section 4.3.5 of the EyeLink 1000 Plus User Manual describes three settings (saccade_velocity_threshold, saccade_acceleration_threshold, and saccade_motion_threshold) that can be changed. Maybe you can convince it to be a little more forgiving of small eye movements?

    If not, you can always use MWorks' eye monitor instead, as you noted.

    Cheers,
    Chris

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Already uploaded files

  • eyelink_demo.mwel.zip 683 Bytes

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac