Pupil Capture, Player, and Service release (Updated)
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.
API Changes
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 pupil
vs 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.
Bug Fixes
- 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
Developer Notes
Automated Testing - #1721, #1724, #1730, #1735
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:
pip install pytest
pytest
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 protected] with a CV to start a discussion. We look forward to hearing from you.
Release Notes Update
27.11.2019 17:00: v1.19.2
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 v1.19.2
.