Thirteen point calibration using ioHub for EyeLink

Hi,

I’m trying to run an eyetracking experiment using ioHub for EyeLink 1000. I’d like to use thirteen-point calibration instead of the default nine-point calibration, but when I add the line eyetracker_config['calibration'] = dict(type='THIRTEEN_POINTS') to the script, the experiment skips the calibration procedure entirely and goes straight to the test. The calibration works fine without the line (with the default nine-point calibration). I can change the calibration type manually for every participant on the EyeLink Host PC, but I’d prefer it to be automatic.

Any suggestions will be much appreciated!

Below the code I use for the eyetracker setup:

    #######################################################
    ##########      EYETRACKER SETUP         ##############
    #######################################################
    
    # prepare the settings for launching the iohub
    iohub_tracker_class_path = 'eyetracker.hw.sr_research.eyelink.EyeTracker'
    eyetracker_config = dict()
    eyetracker_config['name']                           = 'tracker'
    eyetracker_config['model_name'] = 'EYELINK 1000 DESKTOP'
    eyetracker_config['runtime_settings'] = dict(sampling_rate = 500, track_eyes = 'RIGHT')
    eyetracker_config['simulation_mode']                = False
    eyetracker_config['default_native_data_file_name']  = file_name
    eyetracker_config['calibration'] = dict(type='THIRTEEN_POINTS')
    
    # Since no experiment or session code is given, no iohub hdf5 file
    # will be saved, but device events are still available at runtime.
    io = launchHubServer(**{iohub_tracker_class_path: eyetracker_config})
    
    # Get some iohub devices for future access.
    keyboard    = io.devices.keyboard
    display     = io.devices.display
    tracker     = io.devices.tracker
    
    # run eyetracker calibration
    tracker.runSetupProcedure()
    
    # reinitialise the HubServer to get rid of the display trouble
    io.quit()
    io          = launchHubServer(**{iohub_tracker_class_path: eyetracker_config})
    keyboard    = io.devices.keyboard
    display     = io.devices.display
    tracker     = io.devices.tracker

What version of PsychoPy are you using and on what OS? Running with 2021.2.3 on Win10 seems to handle the THIRTEEN_POINTS calibration type OK. Tested by modifying the demos/coder/iohub/eyetracking/validation.py example using the EyeLink 1000.

Thank you

Hi sol,

Thank you for the quick reply! I’m using Psychopy v2021.1.4 and Win10.

Can you try upgrading to the latest release?

Hi,

Sorry for the late response, it took me a while to try this in the lab - but no, unfortunately upgrading to the latest Psychopy version did not do the trick. In fact, with the latest version the calibration does not work even with the default 9 point calibration (when I remove the line eyetracker_config['calibration'] = dict(type='THIRTEEN_POINTS') the experiment goes to the calibration screen but the calibration process does not start.

That is strange. Are you testing using the eyetracking Builder demo, or using your own experiment?
I can not reproduce the issue so that makes it harder to debug. :wink: Is the eyelink connection openning at all?

Can you exit and restart your eyelink host hardware, run the eyetracking Builder demo as far as you can, then exit all the software and private message me the eye.log file that was created on your eyelink host? It should hopefully have some information about why your system is not accepting the calibration command.

Thank you

We’re using our own experiment (a slightly modified version of an on older experiment used in another study). The eyelink connection is opening, but the calibration process does not start. I currently have very limited time in the lab so I won’t be able to test the eyetracking Builder demo until next week, but if you want I can private message you our script to see if you can reproduce the issue? :slight_smile:

Thank you!

Yes, please PM me the experiment and I can take a look. Thank you