Releases: aeye-lab/pymovements
pymovements v0.19.0
💥 Breaking Changes
- split in definition custom_read_kwargs to gaze and precomputed_events… (#791)
- rename resource to gaze_resource (#759)
- enable fixation only datasets (#771)
✨ Enhancements
- add stimulus to plotting (#799)
- add feature to split precomputed events dataframe by columns (#802)
- Add trial_columns argument in from_asc() (#898)
- Store metadata from ASC in experiment metadata (#884)
- add support for .ias files in stimulus.text.from_file() (#858)
- Avoid event-gaze join to improve memory efficiency when calculating event properties (#768)
- add resample() transformation function (#720)
- map gaze data to aois (#747)
- aoi mapping extended to end coordinate instead of width/height (#851)
- adjust aoi mapping to aoi dataframe columns (#848)
- Custom patterns for parsing logged metadata in ASC files (#767)
- Event aoi mapping (#784)
- enable scanpath plotting (#782)
- add new feature for image stimuli (#779)
- autodetect column names (#719)
- support 2kHz ASC files with floating-point timestamps (#739)
- Add __str__() methods to EventDataFrame and GazeDataFrame (#727)
- parse eyelink mount config and pupil data type (#725)
- make all arguments in screen and experiment optional (#721)
- add feature for precomputed reading measures (#804)
📀 Datasets
- add InteRead dataset (#862)
- beijing sentence corpus (#857)
- enable downloading precomputed events for copco dataset (#840)
- correct trial columns in SB-SAT dataset (#855)
- fix sb sat wrong experiment config (#778)
- CopCo dataset precomputed events loading (#873)
- add raw data to copco (#854)
- specify custom_read_kwargs in copco to enable loading precomputed_events (#842)
- code comprehension (#805)
- add trial_columns to copco (#807)
- added fakenews dataset (#806)
- add didec dataset and tests (#801)
- Copco dataset (#797)
- Emtec dataset (#796)
- change column types from Int32 to Int64 in DatasetDefinitions (#751)
🐞 Bug Fixes
- aoi test file contained multiple screens (#864)
- correctly add EyeTracker class to gaze module (#876)
- download link fakenewsperception dataset (#897)
- copy event resource files instead of moving them to events directory (#863)
- fix stimulus text wrong handling of missing values (#811)
- fix docstrings of public datasets using wrong definition (#790)
- fix text stimulus doc string (#762)
- as per repository types-all is deprecated (#774)
- default traceplot cmaps (#763)
- Don't override kwargs in EventGazeProcessor (#760)
- add subject ID to dataset trial columns (#752)
- cast numerical columns to Float64 when reading CSV (#746)
- operator precedence when building group_filter_expression (#734)
- fix ylim in tsplot for non-centered yaxis (#729)
🛠️ Maintenance
- fix automated documentation by pinning sphinx to be <7.4 (#754)
- Fix issue linking in PR template (#761)
- check whether public dataset has gaze files (#872)
- depecated importing ColumnNotFoundError from top level (#808)
- explicitly orient dataframe construction (#810)
- docstring of traceplot had wrong pad_value default (#792)
- merge tests for public datasets in a single file (#785)
- Linter: double indent checker (#788)
- fix part of matplotlib lines are type ignored (#789)
- remove debug print statements in tests (#770)
- add tests/preprocessed/ and toy_dataset to gitignore (#764)
- double indent linter destroyed my tests (#793)
- add emtec example files and functional tests (#800)
- precomputed event docstring (#803)
- update transforms tests to account for adding single line (#815)
- update docstring of didec dataset definition (#822)
- update docstring of emtec dataset definition (#823)
- update docstring of gaze_graph dataset definition (#825)
- update docstring of gazes_on_faces dataset definition (#826)
- update docstring of gazebase dataset definition (#827)
- update docstring of gazebasevr dataset definition (#828)
- update docstring of hbn dataset definition (#829)
- update docstring of judo1000 dataset definition (#830)
- update docstring of potec dataset definition (#831)
- update docstring of sb_sat dataset definition (#832)
- update docstring of toy_dataset dataset definition (#833)
- update docstring of toy_dataset_eyelink dataset definition (#834)
- update docstring of events processing (#835)
- update docstring of gaze experiment (#836)
- update docstring of gaze screen (#837)
- update docstring of fakenews dataset definition (#824)
- update docstring of dataset definition (#820)
- update docstring of copco dataset definition (#821)
- update docstring of utils downloads (#838)
- upgrade to polars 1+ (#809)
- missed ColumnNotFoundError (#816)
- space raises converting problems for polars1+ (#814)
- adjust docstring checks are not none (#850)
- ignore: vim swap files (#844)
- Add missing modules to documentation (#866)
- add CITATION.cff (#901)
- update setuptools-git-versioning requirement from <2 to <3 (#895)
- update nbsphinx requirement from <0.9.5,>=0.8.8 to >=0.8.8,<0.9.6 (#777)
- add support for python 3.13 (#845)
- ignore too-many-public-methods (#882)
- upgrade pyarrow (#846)
- update pydoclint in pre-commit config (#819)
- update nbconvert requirement from <7.14,>=7.0.0 to >=7.16.4,<7.17 (#741)
- manually update pre-commit config (#818)
- refactor public dataset tests into 'gaze' and 'precomputed_events' (#795)
- exchange seperate arguments for dicts in dataset definition (#794)
- as per repository types-all is deprecated (#774)
- update pyarrow requirement from <17,>=11.0.0 to >=11.0.0,<18 (#765)
- update numpy requirement from <2,>=1.22.4 to >=1.22.4,<3 (#736)
- update matplotlib requirement from <3.9,>=3.8.0 to >=3.8.0,<3.10 (#731)
- update nbsphinx requirement from <0.9.4,>=0.8.8 to >=0.8.8,<0.9.5 (#728)
- update pyarrow requirement from <16,>=11.0.0 to >=11.0.0,<17 (#722)
- use macos-13 instead of macos-latest for python 3.9 (#724)
👷👷♀️👷♂️ Contributors
Shoutout to all our contributors for making this release possible!
@SiQube, @aarbeikop, @dkrako, @jakobchwastek, @josephine-funken, @prassepaul, @saeub and @theDebbister
pymovements v0.18.0
💥 Breaking Changes
- correct pixel origin string to upper left instead of lower left (#710)
- enforce list of strings for GazeDataFrame.trial_columns attribute (#669)
- add time column if missing during gaze initialization (#654)
- rename GazeDataFrame.copy() to clone() (#657)
✨ Enhancements
- introduce measure_samples(), MeasureLibrary and null_ratio (#673)
- add clip transformation (#700)
- timestamp unit specification (#643)
- parse eyelink metadata (#702)
- add text stimulus class (#676)
- add deg2pix transformation (#699)
- parse eyelink metadata (#674)
- add EyeTracker class (#617)
- trialize gaze.detect() (#655)
- add EventDataFrame.add_trial_column() (#671)
- add trial_columns to EventDataFrame (#670)
- enforce list of strings for GazeDataFrame.trial_columns attribute (#669)
- add time column if missing during gaze initialization (#654)
- add trial_columns to from_numpy() and from_pandas() (#651)
- rename GazeDataFrame.copy() to clone() (#657)
🐞 Bug Fixes
- forward experiment from dataset definition to from_asc (#711)
- correct pixel origin string to upper left instead of lower left (#710)
- update checksum of PoTeC resource file (#691)
- don't fail in event fill if event onsets/offsets not within timesteps (#656)
🛠️ Maintenance
- use gaze.io for loading dataset files (#698)
- disable too-many-instance-attributes in pylint (#709)
- use smaller subset in 10 minutes tutorial (#707)
- add 'Integration and IO' rubric to api reference docs (#630)
- update contributing.md for new tox command (#684)
- update licenses to 2024 (#659)
- workaround ci failure by pinning nbconvert<7.14 (#652)
- include teaser in readme (#639)
- add support for python 3.12 (#660)
- update github action versions (#685)
- improve tox integration command (#693)
- remove macOS documentation test builder from CI (#697)
- add typing_extensions to be able to install pymovements from source (#682)
- improve exception messages in GazeDataFrame.transform() (#661)
- update pyopenssl requirement from <24.0.0,>=16.0.0 to >=16.0.0,<25.0.0 (#668)
- update pyarrow requirement from <15,>=11.0.0 to >=11.0.0,<16 (#665)
- remove default stages entry from pre-commit config (#658)
- update pydocstyle ignores (#650)
- update polars requirement from <0.20.2,>=0.20.1 to >=0.20.1,<0.20.3 (#646)
- update polars requirement from <0.19.20,>=0.19.19 to >=0.20.1,<0.20.2 (#644)
- fix expected values in parsing (#645)
- update polars requirement from <0.19.16,>=0.19.14 to >=0.19.19,<0.19.20 (#641)
👷👷♀️👷♂️ Contributors
Shoutout to all our contributors for making this release possible!
@OmerShubi, @SiQube, @dependabot, @dkrako, @jakobchwastek, @josephine-funken, @prassepaul and @theDebbister
pymovements v0.17.3
✨ Enhancements
- add PoTeC dataset (#636)
🛠️ Maintenance
- add pydoclint to pre-commit (#638)
- add missing column argument docs and note on csv column dtypes (#594)
- ignore bot commits in changelog (#633)
- update polars requirement from <0.19.14,>=0.19.12 to >=0.19.14,<0.19.16 (#628)
- raise minor version on breaking changes only (#624)
- don't fail pytest on incomplete coverage (#625)
- avoid invocation error in integration test (#627)
- add construction worker emojis to release draft (#632)
👷👷♀️👷♂️ Contributors
Shoutout to all our contributors for making this release possible!
@SiQube, @dkrako, @jakobchwastek and @prassepaul
pymovements v0.17.2
✨ Enhancements
- Add gaze.from_asc() (#590)
- add new dataset GazeGraph (#619)
- gaze_dataframe.unnest() supports multi-col unnest (#592)
- optionally remove single-child top-level directory from extracted archives (#579)
🐞 Bug Fixes
- avoid SchemaFieldNotFoundError when loading preprocessed data (#614)
🛠️ Maintenance
- update polars requirement from <0.19.13 to <0.19.14 (#622)
- test for warning when distance column and distance_cm specified (#615)
- use minor version for polars upper version bound (#621)
- update pyarrow requirement from <14 to <15 (#620)
- migrate deprecated polars funtions (#612)
- add git alias hint for creating new branches (#608)
- migrate to polars v0.19.12 (#618)
👷👷♀️👷♂️ Contributors
Shoutout to @josephine-funken for making their first contributions in #579 and #612
@dkrako, @jakobchwastek, @josephine-funken, @prassepaul, @SiQube, and @theDebbister
Full Changelog: v0.17.1...v0.17.2
v0.17.1
✨ Enhancements
🐞 Bug Fixes
- correct hash in sb-sat definition (#606)
- specify column dtypes in dataset definitions (#593)
- specify schema for ToyDatasetEyeLink (#601)
🛠️ Maintenance
- treat warnings as errors (#602)
- add publish github workflow (#604)
- don't setup python twice in github workflow (#605)
- test for minimum version of dependencies (#599)
- add github workflow for autolabeler (#603)
- add integration tests for public datasets (#591)
- create release-drafter.yml (#598)
Shoutout to all our contributors for making this release possible!
@dkrako @prassepaul
Full Changelog: v0.17.0...v0.17.1
v0.17.0
✨ Enhancements
- Add time_column argument to gaze.integration functions #497
- Add kwargs for explicit data passing in gaze.from_numpy() #513
- Raise helpful missing column error message for transforms #542
- Add EventDataFrame.copy() #552
- Add events to GazeDataFrame init #553
- Add events to gaze.integration functions #554
- Add GazeDataFrame.detect() #511
- Add gaze.from_csv() #557
- Add GazeDataFrame.apply() #558
- Add public dataset GazeOnFaces #567
- Add gaze.from_ipc() #568
- Add dataset sbsat #575
- Add HBN dataset #576
- Add gaze.transforms.smooth() #555
- Add Dataset.apply() #490
- Load .txt files as .csv files #584
- Variable eye to screen distance #583
🐞 Bug fixes
- Infer correct number of components in gaze init #521
🛠️ Other improvements
- Update GazeDataFrame Docstring to Include Missing trial_columns Argument #494
- Add latex formulas to event property docstrings #491
- Upload documentation artifacts for PRs #498
- Add pydocstyle to pre-commit hooks #505
- Decrease pytest verbosity #515
- Update CONTRIBUTING.md #544
- Migrate to polars v0.19 #545
- Integrate dependabot to check for dependency updates #546
- update pyarrow requirement from <12,>=11.0.0 to >=11.0.0,<14 #547
- don't include scope in dependabot commits #549
- add pip installation of pylint to CONTRIBUTING.md #556
- remove unused pre-commit env from tox.ini #564
- pre-commit autoupdate #566
- Migrate typing to matplotlib v3.8.0 #563
- Test resulting filestructure for utils.archives.extract() #570
- pre-commit autoupdate #578
- update CONTRIBUTING.md about possible pandoc installation #574
- drop support for python 3.8 #572
- update matplotlib requirement from <3.8,>=3.0.0 to >=3.0.0,<3.9 #577
- remove mypy ignore imports for matplotlib #565
- Add test example files for each public dataset #581
- pre-commit autoupdate #582
- Reuse dataset definitions in from_csv tests #586
- Add functional tests for preprocessing gaze files #585
- Remove mypy and flake8 from tox and github actions #587
- Refactor GitHub workflows #588
- Refactor tests into unit and functional #589
Contributors
Shoutout to all our contributors for making this release possible!
@dkrako @jakobchwastek @prassepaul @SiQube
New Contributors
- @dependabot made their first contribution in #547
Full Changelog: v0.16.1...v0.17.0
v0.16.1
✨ Enhancements
- Allow for empty lists in gaze component initializers in #484
- Add suffixes argument to GazeDataFrame.unnest() in #479
- Add GazeDataFrame.copy() in #485
🐞 Bug fixes
🛠️ Other improvements
- Remove unused event detection args in #462
Contributors
Shoutout to all our contributors for making this release possible!
@dkrako @jakobchwastek @SiQube @theDebbister
Full Changelog: v0.16.0...v0.16.1
v0.16.0
We are proud to announce pymovements v0.16.0!
This release introduces breaking changes regarding the way a GazeDataFrame
handles components. So far each component (e.g. x-coordinate of the gaze pixel position) was treated as a specific column, which lead to very verbose code on both user and development side. We now nest components of a specific signal into a single column (e.g, pixel
for gaze pixel position, position
for gaze position in degrees of visual angle, velocity
for gaze velocity, and so on).
This way we simplify column management a lot, integrate polars deeper for improved performance and pave the way for a general method to apply pipeline definitions. Users are still able to unnest these columns again to facilitate existing workflows. Please refer to the updated tutorials, especially pymovements in 10 minutes and Working with local datasets for further details on the introduced changes.
⚠️ Breaking changes
- Drop support for python 3.7 by @SiQube in #460
- Integrate column specifications to Dataset by @dkrako in #443
- Add GazeDataFrame.transform() by @dkrako in #440
- Rename methods merge/explode to nest/unnest by @dkrako in #465
- Restructure transforms modules for polars and numpy by @dkrako in #466
- Use transform() in pix2deg(), pos2vel() and pos2acc() by @dkrako in #472
- Restructure events module directory by @dkrako in #477
✨ Enhancements
- Add merging component columns into tuple columns by @dkrako in #434
- Add GazeDataFrame to top-level imports by @dkrako in #435
- Refactor from_numpy and from_pandas into integration by @dkrako in #436
- Raise RuntimeError in compute_event_properties() if name not found by @dkrako in #438
- Add explode() method to GazeDataFrame by @dkrako in #441
- Add column merge arguments to integration functions by @dkrako in #444
- Add styling arguments to main sequence plot by @theDebbister in #458
🐞 Bug fixes
- Don't print about trying next mirror if there are no more mirrors by @siqube-adobe in #471
🛠️ Other improvements
- Migrate to polars v0.18.0 by @dkrako in #430
- Formatting in GazeDataFrame docstring by @dkrako in #437
- Update requirements.txt to reflect location of dependencies by @siqube-adobe in #468
- Add version attribute by @siqube-adobe in #469
- Add trial_columns and trialize transform() method by @dkrako in #473
Contributors
Thank you to all our contributors for making this release possible!
@dkrako @siqube-adobe @SiQube @theDebbister
Full Changelog: v0.15.0...v0.16.0
v0.15.0
v0.14.0
✨ Enhancements
- Add pos2acc() method by @dkrako in #424
- Add support for passing keyword arguments to event processors by @dkrako in #426
- Add fill event detection method by @dkrako in #428
- Compute event properties for specified names only by @dkrako in #427
- Allow range-objects for subset argument by @dkrako in #429
🐞 Bug fixes
⚒️ Other improvements
Full Changelog: v0.13.0...v0.14.0