We are pleased to announce the release of Pupil v1.19!
Download the latest bundle (at the end of the release notes under Assets) and let us know what you think via the #pupil channel on Discord 😄
Features and Changes
Improved Fixation Detector - #1743
We made improvements to the Fixation Detector to improve detection accuracy:
We were able to get rid of large gaps in between detected fixations. Now there will be more sequential fixations detected.
We decreased the false-positive detection rate by omitting low-confidence data.
We fixed a bug that would sometimes result in wrong fixations on 3D gaze data.
Due to the improvements mentioned above, the Fixation Detector now requires calibrated gaze in both 2D and 3D mode. To reflect these changes, the
method field of a fixation datum now contains either
2d gaze or
3d gaze (previously
gaze). This effects both the real-time fixations published through the network API and the
fixations.csv export file.
Removed Fixation-Boosted Calibration - #1744
Since the Fixation Detector now requires calibrated gaze, it will not be used anymore to speed up the calibration process.
Improved Binocular Gaze Mapping - #1731
We improved the mapping of monocular gaze data streams by using a dynamic windows size dependent on the frame rate. This will result in better temporal accuracy when matching binocular gaze data for eyes with frequent low-confidence phases.
We also investigated some other variants of binocular gaze mapping, but chose to stick with this simple improvement. For a full evaluation and discussion, see this jupyter notebook.
Add/remove markers for legacy square markers works again - #1737
Fixed some bad UX with switching surface detection modes - #1738
Player is now able to load recordings with square brackets in the name - #1740
Fixed a crash when setting 2D detector properties via network API - #1742
Improved inconsistent background process behavior - #1741
We have done some work to consolidate old tests in the codebase and set it all up nicely with pytest. You can run the test suite from the repository root with:
We set up a travis-ci integration to run pytest on all commits and pull requests. Now you will get feedback if you break something 😄 The test coverage is currently low. But from this point on, we - and you - are encouraged to write tests when adding new features and when fixing bugs.
We Are Hiring Python & DevOps Engineers!
Hey - you're reading the developer notes, so this is for you! We're looking to hire developers to contribute to Pupil source code. If you love Python and enjoy writing code that is a joy to read, get in touch. Experience with the scientific Python stack is a plus, but not required. We have a lot of exciting projects in the pipeline.
We are also looking for Senior Full Stack/DevOps engineers that have experience with kubernetes, docker, and server-side Python.
Send an email to email@example.com with a CV to start a discussion. We look forward to hearing from you.
Release Notes Update
We have fixed an issue in
v1.19.0 where multi-part Pupil Mobile and Pupil Invisible recordings were not displayed correctly in Pupil Player - #1747. If you have opened such a recording in Pupil Player
v1.19.0 then delete all
*_lookup.npy files and reopen the recording in Pupil Player