SLEAP 1.4.1 releases many new changes since the last big release 1.3.3. We hope users enjoy these long awaited new features and fixes!
From 1.3.2+, to install SLEAP through pip use pip install sleap[pypi]
to ensure all dependencies are gathered.
As a reminder:
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can set the solver to libmamba in the base environment:
conda update -n base conda conda install -n base conda-libmamba-solver conda config --set solver libmamba
Any subsequent
mamba
commands in the docs will need to be replaced withconda
if you choose to use your existing Anaconda installation.Otherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba
(Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
mamba
(Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
pip
(any OS except Apple Silicon):
pip install sleap[pypi]==1.4.1
Highlights
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- Highlight instance box on hover by @talmo in #2055
- Enable touchpad pinch to zoom by @talmo in #2058
- Do not always color skeletons table black by @roomrys in #1952
- Make status bar dependent on UI mode by @7174Andy in #2063
- Graceful failing with seeking errors by @talmo in #1712
- Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Fix GUI crash on scroll by @roomrys in #1883
Full Changelog
Enhancements
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Increase range on batch size by @roomrys in #1513
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- support loading slp files with non-compound types and str in metadata by @lambdaloop in #1566
- change inference pipeline option to tracking-only by @shrivaths16 in #1666
- Only propagate Transpose Tracks when propagate is checked by @vaibhavtrip29 in #1748
- Add batch size to GUI for inference by @shrivaths16 in #1771
- Add ZMQ support via GUI and CLI by @shrivaths16 in #1780
- Change menu name to match deleting predictions beyond max instance by @shrivaths16 in #1790
- Adding ragged metadata to
info.json
by @shrivaths16 in #1765 - Add option to export to CSV via sleap-convert and API by @eberrigan in #1730
- Add
normalized_instance_similarity
method by @gitttt-1234 in #1939 - Update installation docs 1.4.1 by @roomrys in #1810
- Option for Max Stride to be 128 by @MweinbergUmass in #1941
- Allow csv and text file support on sleap track by @emdavis02 in #1875
- Added Three Different Cases for Adding a New Instance by @7174Andy in #1859
- Generate suggestions using max point displacement threshold by @gqcpm in #1862
- Add object keypoint similarity method by @getzze in #1003
- Allowing inference on multiple videos via
sleap-track
by @emdavis02 in #1784 - Add
Keep visualizations
checkbox to training GUI by @hajin-park in #1824 - Menu option to open preferences directory and update to util functions to pathlib by @shrivaths16 in #1843
- Add tracking score as seekbar header options by @talmo in #2047
- Don't mark complete on instance scaling by @talmo in #2049
- Add check for instances with track assigned before training ID models by @talmo in #2053
- Add menu item for deleting instances beyond frame limit by @shrivaths16 in #1797
- Highlight instance box on hover by @talmo in #2055
- Make node marker and label sizes configurable via preferences by @talmo in #2057
- Enable touchpad pinch to zoom by @talmo in #2058
- Separate the video name and its filepath columns in
VideoTablesModel
by @7174Andy in #2052 - Make status bar dependent on UI mode by @7174Andy in #2063
Fixes
- Graceful failing with seeking errors by @talmo in #1712
- Fix IndexError for hdf5 file import for single instance analysis files by @shrivaths16 in #1695
- Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Make the hdf5 videos store as int8 format by @lambdaloop in #1559
- Scale new instances to new frame size by @ssrinath22 in #1568
- Fix package export by @talmo in #1619
- View Hyperparameter nonetype fix by @shrivaths16 in #1766
- Set selected instance to None after removal by @roomrys in #1808
- Fix zmq inference by @roomrys in #1800
- Remove no module named work error by @roomrys in #1956
- Use
tf.math.mod
instead of%
by @roomrys in #1931 - Do not always color skeletons table black by @roomrys in #1952
- Do not apply offset when double clicking a
PredictedInstance
by @roomrys in #1888 - Fix typo to allow rendering videos with mp4 (Mac) by @roomrys in #1892
- Fix GUI crash on scroll by @roomrys in #1883
- Handle case when no frame selection for trail overlay by @roomrys in #1832
- Fix COCO Dataset Loading for Invisible Keypoints by @felipe-parodi in #2035
- Fix import PySide2 -> qtpy by @talmo in #2065
Dependencies
- Replace imgaug with albumentations by @talmo in #1623
- Fix out of bounds albumentations issues and update dependencies by @eberrigan in #1724
- Update to new TensorFlow conda package by @eberrigan in #1726
- Fix conda builds by @eberrigan in #1776
- Handle skeleton encoding internally by @eberrigan in #1970
- Handle skeleton decoding internally by @roomrys in #1961
- Add imageio dependencies for pypi wheel by @roomrys in #1950
- Add missing imageio-ffmpeg to meta.ymls by @roomrys in #1943
- Manually handle
Instance.from_predicted
structuring when notNone
by @roomrys in #1930 - Refactor
LossViewer
to use matplotlib by @eberrigan in #1899 - Replace all Video structuring with Video.cattr() by @roomrys in #1911
- Use positional argument for exception type by @roomrys in #1912
- Remove unsupported |= operand to prepare for PySide6 by @roomrys in #1910
- Replace QtDesktop widget in preparation for PySide6 by @roomrys in #1908
- Use | instead of + in key commands by @roomrys in #1907
- Use
Video.from_filename
when structuring videos by @roomrys in #1905 - Refactor video writer to use imageio instead of skvideo by @eberrigan in #1900
- Pin ndx-pose<0.2.0 by @talmo in #1978
Documentation
- Add bonsai guide for sleap docs by @croblesMed in #2050
- Add channels for pip conda env by @roomrys in #2067
Refactors
- Set default callable for
match_lists_function
by @roomrys in #1520 - Allow passing in
Labels
toapp.main
by @roomrys in #1524 - Replace (broken)
--unrag
with--ragged
by @roomrys in #1539 - Add function to create app by @roomrys in #1546
- Refactor
AddInstance
command by @roomrys in #1561 - Add
InstancesList
class to handle backref toLabeledFrame
by @roomrys in #1807 - Refactor
LossViewer
to use underscores for internal method names by @roomrys in #1919 - Remove unused AsyncVideo class by @roomrys in #1917
- Sort encoded
Skeleton
dictionary for backwards compatibility by @roomrys in #1975
Workflows
- Fix CI on macosx-arm64 by @talmo in #1734
- Upgrade build actions for release by @eberrigan in #1779
- Fix website build and remove build cache across workflows by @eberrigan in #1786
- Fix windows conda package upload and build ci by @eberrigan in #1792
- Add workflow to test conda packages by @roomrys in #1935
- Add comment on issue workflow by @roomrys in #1946
- Add discussion comment workflow by @roomrys in #1945
New Contributors
- @scott-yj-yang made their first contribution in #1328
- @lambdaloop made their first contribution in #1559
- @ssrinath22 made their first contribution in #1568
- @keyaloding made their first contribution in #1822
- @hajin-park made their first contribution in #1824
- @emdavis02 made their first contribution in #1784
- @gqcpm made their first contribution in #1862
- @MweinbergUmass made their first contribution in #1941
- @felipe-parodi made their first contribution in #2035
- @croblesMed made their first contribution in #2050
Full Changelog: v1.3.4...v1.4.1