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](https://pymovements.readthedocs.io/en/v0.16.0/tutorials/pymovements-in-10-minutes.html) and [Working with local datasets](https://pymovements.readthedocs.io/en/v0.16.0/tutorials/local-dataset.html) for further details on the introduced changes.
⚠️ Breaking changes
* Drop support for python 3.7 by SiQube in https://github.com/aeye-lab/pymovements/pull/460
* Integrate column specifications to Dataset by dkrako in https://github.com/aeye-lab/pymovements/pull/443
* Add GazeDataFrame.transform() by dkrako in https://github.com/aeye-lab/pymovements/pull/440
* Rename methods merge/explode to nest/unnest by dkrako in https://github.com/aeye-lab/pymovements/pull/465
* Restructure transforms modules for polars and numpy by dkrako in https://github.com/aeye-lab/pymovements/pull/466
* Use transform() in pix2deg(), pos2vel() and pos2acc() by dkrako in https://github.com/aeye-lab/pymovements/pull/472
* Restructure events module directory by dkrako in https://github.com/aeye-lab/pymovements/pull/477
✨ Enhancements
* Add merging component columns into tuple columns by dkrako in https://github.com/aeye-lab/pymovements/pull/434
* Add GazeDataFrame to top-level imports by dkrako in https://github.com/aeye-lab/pymovements/pull/435
* Refactor from_numpy and from_pandas into integration by dkrako in https://github.com/aeye-lab/pymovements/pull/436
* Raise RuntimeError in compute_event_properties() if name not found by dkrako in https://github.com/aeye-lab/pymovements/pull/438
* Add explode() method to GazeDataFrame by dkrako in https://github.com/aeye-lab/pymovements/pull/441
* Add column merge arguments to integration functions by dkrako in https://github.com/aeye-lab/pymovements/pull/444
* Add styling arguments to main sequence plot by theDebbister in https://github.com/aeye-lab/pymovements/pull/458
🐞 Bug fixes
* Don't print about trying next mirror if there are no more mirrors by siqube-adobe in https://github.com/aeye-lab/pymovements/pull/471
🛠️ Other improvements
* Migrate to polars v0.18.0 by dkrako in https://github.com/aeye-lab/pymovements/pull/430
* Formatting in GazeDataFrame docstring by dkrako in https://github.com/aeye-lab/pymovements/pull/437
* Update requirements.txt to reflect location of dependencies by siqube-adobe in https://github.com/aeye-lab/pymovements/pull/468
* Add __version__ attribute by siqube-adobe in https://github.com/aeye-lab/pymovements/pull/469
* Add trial_columns and trialize transform() method by dkrako in https://github.com/aeye-lab/pymovements/pull/473
Contributors
Thank you to all our contributors for making this release possible!
dkrako siqube-adobe SiQube theDebbister
**Full Changelog**: https://github.com/aeye-lab/pymovements/compare/v0.15.0...v0.16.0