Gazepoint and PsychoPy 2024.1.5

Dear all,

This also applies to builder. I tried to get one of our Gazepoint HD eye trackers to work in Psychopy, and created a minimal builder example, with only the calibration, and also tested the coder example (without modifications) at Gazepoint — PsychoPy v2024.1.5 . The error messages are similar (see below).
I have found references to problems with the gazepoint eye tracker in earlier recent versions of PsychoPy, but this is mentioned in the bug fixes for 2024.1.5 " * Failing to find Eyetracker Components […] and Gazepoint by @mdcutone in #6424 )" - so I hoped it was fixed.

The traceback is as follows:

Traceback (most recent call last):
File “C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\client_init_.py”, line 1089, in addDeviceView
dev_import_result = import_device(dev_mod_pth, dev_cls_name)
File "C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\devices_init
.py", line 944, in import_device
event_class = getattr(event_module, event_class_name)
AttributeError: module ‘psychopy.iohub.devices.eyetracker.hw.gazepoint.gp3’ has no attribute ‘GazepointSampleEvent’
Traceback (most recent call last):
File “[…]ento_2_coder.py”, line 10, in
tracker = io.devices.tracker
AttributeError: ‘ioHubDevices’ object has no attribute ‘tracker’

In case it matters, I am running on Windows 11 - always with the Gazepoint control software running.

There is one detail - I had earlier versions of PsychoPy, which I deleted (through the installer) to install 2024.1.5 without conflicts. The Gazepoint Eyetracker Support plugin was installed without any intervention - the uninstall apparently did not affect that. I wonder if it needs updating, but there is no option to do so, apparently. I can find the ‘missing event’ in the supported_config_settings.yaml file on the gazepoint module github page (psychopy-eyetracker-gazepoint/psychopy_eyetracker_gazepoint/gazepoint/gp3/supported_config_settings.yaml at main · psychopy/psychopy-eyetracker-gazepoint · GitHub) but I cannot find this yaml file in my own local installation.

It looks like a configuration problem but how do I fix it?

I appreciate any help.

1 Like

Just want to add that we have the same error, with the same Psychopy version, a GazePoint-3 eyetracker, also on Windows 11.

Hi,
Is your psychopy able to connect with internet for updates?

We’ve made a bunch of fixes to plugin loading in general in the latest release here on GitHub (it’ll be hitting psychopy.org soon too, we just tend to give a bit of time inbetween to give us time to catch any bugs that the keen beans who use GitHub notice), try updating your version and reinstalling the plugin and let me know if you’re still getting errors.

2 Likes

I tried the latest windows installation StandalonePsychoPy-2024.2.1post4-win64-py310.exe, and installed the GazePoint module. The Gazepoint control software is running.

In this last version of PsychoPy, I am still getting device creation errors, however. I copied the error message below.

Apparently the first 2023 version of PsychoPy broke Gazepoint functionality. The most recent working version for Gazepoint is still 2022.2.5. But one needs to dig into the hdf5 file - the ROI functionality in that version (in builder) is experimental and doesn’t work for our eye tracker at least (maybe with some code it is possible). In case it is of interest to anyone, this is how I read the Gazepoint data from the hdf file into pandas:

import pandas as pd
hdf_df = pd.read_hdf(filename_with_path, “data_collection/events/eyetracker/GazepointSampleEvent”)

I’d be interested in any hearing from someone who managed to get Gazepoint working in a more recent version of PsychoPy.

2.8962 ERROR Support for the sounddevice audio backend is not available this session. Please install psychopy-sounddevice and restart the session to enable support.
1.8911 WARNING Monitor specification not found. Creating a temporary one…
Traceback (most recent call last):
File “C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\client_init_.py”, line 1096, in addDeviceView
dev_import_result = import_device(dev_mod_pth, dev_cls_name)
File "C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\devices_init
.py", line 1017, in import_device
module = importDeviceModule(module_path)
File “C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\devices_init_.py”, line 1007, in importDeviceModule
raise ModuleNotFoundError(
ModuleNotFoundError: Could not find module psychopy.iohub.devices.eyetracker.gazepoint.gp3. Tried importing directly and iteratively using entry points.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\client_init_.py”, line 1099, in addDeviceView
dev_import_result = import_device(“psychopy.iohub.devices”, dev_cls_name)
File "C:\Program Files\PsychoPy\lib\site-packages\psychopy\iohub\devices_init
.py", line 1020, in import_device
device_class = getattr(module, device_class_name)
AttributeError: module ‘psychopy.iohub.devices’ has no attribute ‘EyeTracker’
Traceback (most recent call last):
File “…_lastrun.py”, line 924, in
run(
File “…_lastrun.py”, line 602, in run
calibration.run()
File “C:\Program Files\PsychoPy\lib\site-packages\psychopy\hardware\eyetracker.py”, line 103, in run
tracker = self.eyetracker.getIOHubDeviceClass(full=True)
AttributeError: ‘NoneType’ object has no attribute ‘getIOHubDeviceClass’
ioHub Server Process Completed With Code: 0
################# Experiment ended with exit code 1 [pid:8712] #################

Hi,

I’ve had the same error while trying to integrate my gazepoint eyetracker with psychopy 2024.2.2. Have you had any luck with fixing this error?

Dear Will,

No luck yet. We ended up rolling back to PsychoPy 2022.2.5, which, according to our experience, is still the latest version that works. I do not think it supports things like AOI out of the box - we access the hdf5 file to recover gaze parameters (data_collection → events → eyetracker → GazepointSampleEvent). I also hope it gets fixed some time, because 2022.2.5, aside from not having some newer features, has some bugs.

Hi Peter,

Thank you for the feedback. I will try using 2022.2.5 instead of the latest version and get back to you if it is able to work. As far as integrating with 2024.2.2, if I have any breakthroughs I will let you know. Thanks.

Same problem here, we had to lean back to using 2021-2-3, I would like to try using later versions but it’s keeping giving us error.
I added the eye tracker with code component and obviously none of the features are really working.

Well, 2022.2.5 works for us, with limitations, which is a bit more recent than yours. None of the later versions works as far as we tested. In terms of open source, in case it’s any use, Ogama has some features that work with the gazepoint eye trackers (for example I think that ROI should work). If you do not really need some kind of interaction between the script and the eye tracking (for example halting stimulus presentation until fixation is confirmed), and if you basically need passive logging, I suppose you can start up Ogama with an empty ‘slideshow’ (stimuli are basic in there), do calibration and start recording, then have psychopy do its stuff. Of course, adding lots of timestamps in your output will be crucial.

1 Like

Hi everyone,

Just dropping in to share some updates on PsychoPy’s integration with GazePoint eyetrackers—and we’d really love your help!

There have been several improvements in PsychoPy 2025.1.0 (download here) that should make it easier to work with GazePoint devices. If you’ve been experimenting with this combo or plan to, we’d be incredibly grateful if you could take a moment to try things out and let us know how it goes—especially if you hit any errors or unexpected behavior.

Below is a step-by-step guide to help you test the integration. Even a quick run-through and sharing your results (or issues) would be super helpful for us and the community.


:magnifying_glass_tilted_left: How to Test PsychoPy + GazePoint Integration

1. Install PsychoPy 2025.1.0

Make sure you’re using the latest version: PsychoPy 2025.1.0.

2. Remove Any Old GazePoint Plugins

Before you install the new plugin, clear out older versions.

On macOS:

  • Open Finder and go to /Users/[YourUsername]/.psychopy3/ (you may need to show hidden files with Cmd + Shift + .).
  • Open the packages folder and delete its contents.
  • Restart PsychoPy.

On Windows:

  • Go to C:\Users\[YourUsername]\AppData\Roaming\psychopy3.
  • Delete everything inside the packages folder.
  • Restart PsychoPy.

3. Install the GazePoint Plugin

  • Launch PsychoPy Builder.
  • Open Plugins and Packages Manager.
  • Search for and install the GazePoint Plugin.
  • Restart PsychoPy again to apply the changes.

4. Load the Example Experiment

  • Download the attached example .psyexp file.
  • Open it in PsychoPy Builder.

5. Configure Eyetracking

  • Click the cog icon to open Experiment Settings.
  • Go to the Eyetracking tab.
  • Under Eyetracker device, choose GazePoint from the dropdown.

6. Run the Experiment

The experiment will guide you through:

  • A calibration routine (five-point calibration).
  • A validation step (checking calibration accuracy).
  • An instruction screen.
  • A brief shape display (look at it for 5 seconds).
  • A final thank you message.

If you try it out, please let us know:

  • :white_check_mark: If everything works as expected
  • :warning: If it doesn’t (include any error messages or screenshots if possible)

Thanks in advance folks - Becca
eyetracker_test.psyexp (27.7 KB)

Hi @Becca I have followed all of the steps in this post and am still having trouble getting the eyetracker to connect. I will include screenshots of my error messages, as well as one of the eyetracking window from exp settings. The reason for the latter is because 2 different gazepoint eyetrackers are showing up in the window “gazepoint” and “gazepoint gp3 (iohub)”. I tried the gazepoint option first since that is what the instructions said to pick however it didn’t work. I also tried the gp3 option afterword’s, this option allows me to edit the ip4 address and port, the gazepoint didn’t give me an option to edit anything. The ip4 address is set to 127.0.0.1 for the default. I tried the default and also the control address attached to my eyetracker that I can find in the control settings of gazepoint, sadly neither worked. Suffice to say, the error message I got when I used the “gazepoint” eyetracker, not the “gp3” option is the one I will include as screenshots in this reply. If you need any more trouble shooting, maybe with the “gp3” option or anything please just let me know because I would like to help get this working. Thank you!




Seems like the entry point isn’t pointing to the correct location on your system. I’m looking into this, might simply require a change in the plugin package to fix

Update: I found some missing references to the GazepointSampleEvent class which I added to the release branch of PsychoPy, these changes will be available in the next beta release. The other thing I did was remove the gp3 entry point from the plugin package which seems to be causing a conflict with iohub’s plugin loader (likely causing the issue @Will is encountering.) It’s not necessary to have those entry points since GazePoint has a ‘stub’ already in PsychoPy

I ran a gaze contingent task with these changes and it worked fine. I’m using a GP3 (non-HD) model for testing

Hi @mdc Thank you for the update. I will keep look for the newest beta release and update when it’s available. I’ll let you know if I run into any issues with the eye tracker after I’ve updated.
Thank you!

Thanks for going through the effort to correct this. I think the issue is already known now - just confirming that all this might have been the problem. Below is the error output of the beta release on my notebook, Windows 11 OS. I will test the new version as soon as you make it available.

Error during device creation …
addDeviceView: Error adding class.
Traceback (most recent call last):
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 723, in createNewMonitoredDevice
dev_data = self.addDeviceToMonitor(dev_cls_name, dev_conf)
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 898, in addDeviceToMonitor
DeviceClass, dev_cls_name, evt_classes = import_device(dev_mod_pth,
File "C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\devices_init
.py", line 1030, in import_device
event_class = getattr(module, event_class_name)
AttributeError: module ‘psychopy.iohub.devices.eyetracker.hw.gazepoint.gp3’ has no attribute ‘GazepointSampleEvent’
Error during device creation …
Traceback (most recent call last):
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 723, in createNewMonitoredDevice
dev_data = self.addDeviceToMonitor(dev_cls_name, dev_conf)
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 898, in addDeviceToMonitor
DeviceClass, dev_cls_name, evt_classes = import_device(dev_mod_pth,
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\devices_init_.py”, line 1030, in import_device
event_class = getattr(module, event_class_name)
AttributeError: module ‘psychopy.iohub.devices.eyetracker.hw.gazepoint.gp3’ has no attribute ‘GazepointSampleEvent’

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 657, in _addDevices
self.createNewMonitoredDevice(dev_cls_name, dev_conf)
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\server.py”, line 736, in createNewMonitoredDevice
raise ioHubError(‘Error during device creation …’)
psychopy.iohub.errors.ioHubError: ioHubError:
Args: (‘Error during device creation …’,)

1.7948 WARNING Monitor specification not found. Creating a temporary one…
ioHub Server Process Completed With Code: 0
13.6178 WARNING launchHubServer: If using the iohub mouse or eyetracker devices, fullScr should be True.
Traceback (most recent call last):
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\client_init_.py”, line 1102, in addDeviceView
dev_import_result = import_device(dev_mod_pth, dev_cls_name)
File "C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\iohub\devices_init
.py", line 1030, in import_device
event_class = getattr(module, event_class_name)
AttributeError: module ‘psychopy.iohub.devices.eyetracker.hw.gazepoint.gp3’ has no attribute ‘GazepointSampleEvent’
Traceback (most recent call last):
File “C:\Users\Peter.LATITUDE-7490–\Downloads\eyetracker_test_lastrun.py”, line 1106, in
run(
File “C:\Users\Peter.LATITUDE-7490–\Downloads\eyetracker_test_lastrun.py”, line 509, in run
calibration.run()
File “C:\Program Files\PsychoPy 2025.1.0 beta\lib\site-packages\psychopy\hardware\eyetracker.py”, line 103, in run
tracker = self.eyetracker.getIOHubDeviceClass(full=True)
AttributeError: ‘NoneType’ object has no attribute ‘getIOHubDeviceClass’
######## Experiment ended with exit code 1 [pid:43228] #########
Generating PsychoPy script…

Hi Everyone,

Thank you SO much for taking the time to go over these steps and carefully test for us (we really appreciate it and hopefully this will make it smoother for everyone!).

This is a message to say that there was a new release of PsychoPy released on GitHub yesterday (version 2025.1.1) with some relevant fixes. We would be grateful to anyone who could take a moment to download that release and test these steps again. Note you might want to uninstall existing plugins again just to check you are starting from a “clean slate”.

Thanks again - please keep us updated on any tests!

Becca

Hi Becca, I’m a software engineer at Gazepoint, and we would like to assist in getting PsychoPy up and running with our devices again. Please let me know if there is anything we can help with on our end. I’m happy to answer any questions about the Gazepoint API, Gazepoint Control, etc.

Hi @irenet nice to meet you thanks so much for helping here! we are also keen (as you can probably tell) to get things working smoothly with gazepoint. As a first step it would be great if you could please try and follow the steps for testing from here using PsychoPy 2025.1.1 and please let us know here if you encounter any error messages or if that .psyexp works for you!

Thanks so much,
Becca

Thanks for that new release.

Connecting to the gazepoint eye tracker works now. The calibration and validation runs.
I’m testing today under somewhat informal circumstances (ex. no chin rest, no second monitor) so I’m not sure whether a final problem has something to do with those: I couldn’t get the triangle routine to end. Given that ending the routine would depend on fixating the triangular roi for five seconds, it might be related to simple calibration issues. I enlarged and centered the triangle. Even then the routine ended the normal way (by looking) only once out of the several times I tried. I dumped the eye tracking data to an edf5 file (and that seems to work well) and I don’t see anything suspicious, the coordinates centered on 0 and were usually within 0.1 units from that (while my triangle was half the height and half the width of the screen). So I don’t know whether there is still something to fix in some coordinate conversion in those roi routines, maybe the reports of other people will show that this is just my setup here.

Thanks again to all of you for working on this.