Skip to content

Changelog

v0.1.10

What's Changed

  • Fix embedded video lookup by @talmo in #122
  • Add better support for exporting and loading RGB videos from .pkg.slp files by @talmo in #125
  • Fix video indexing when embedding from labels that already have embedded data by @talmo in #126

Full Changelog: v0.1.9...v0.1.10

v0.1.9

What's Changed

  • Dependency management by @talmo in #118
    • Drop av as a dependency since it's still a little buggy and doesn't have broad enough platform compatibility.
    • Pin ndx-pose < 0.2.0 until #104 is merged in.
    • Remove livecov dev tool as it was interfering with VSCode debugging.
  • Safer video loading from SLP by @talmo in #119
    • Added sio.io.utils.is_file_accessible to check for readability by actually reading a byte. This catches permission and other esoteric filesystem errors (addresses #116).
    • Explicit control over whether video files should be opened when loading labels with:sio.load_slp(..., open_videos=False)
    • Explicit control over whether backend is auto-initialized when creating or using Video objects with Video(..., open_backend=False).
    • More sanitization of filenames to posix/forward-slash safe forms when reading and writing SLP files.
  • Fix split calculation and allow for not embedding by @talmo in #120
    • Fix: The function now correctly splits the labels into training, validation, and test sets based on the specified proportions (fixes #117). Previously, the validation fraction was being computed incorrectly in cases where its relative fraction was 1.0 after taking out the train split.
    • Enhancement: Labels.make_training_splits(..., embed=False). Previously, the function would always embed the images, which could be slow for large projects. With this change, the embed parameter is introduced, allowing the user to choose whether to embed the images or save the labels with references to the source video files.

Full Changelog: v0.1.8...v0.1.9

v0.1.8

What's Changed

New Contributors

Full Changelog: v0.1.7...v0.1.8

v0.1.7

What's Changed

Full Changelog: v0.1.6...v0.1.7

v0.1.6

What's Changed

  • Grayscale property passthrough by @talmo in #99

Full Changelog: v0.1.5...v0.1.6

v0.1.5

What's Changed

  • Labels.split and Labels.make_training_splits by @talmo in #98

Full Changelog: v0.1.4...v0.1.5

v0.1.4

What's Changed

  • Add support for embedding images in .pkg.slp by @talmo in #91
    • Saving SLP files with embedded images will re-save the embedded images.
    • Embed images into SLP files with:
      • labels.save("labels.pkg.slp", embed="user") to embed frames with user-labeled instances (Instance)
      • labels.save("labels.pkg.slp", embed="user+suggestion") to embed frames with user-labeled instances and suggestion frames (useful for inference after training)
      • labels.save("labels.pkg.slp", embed="source") to restore the source video ("unembed")
  • Better reprs and QOL by @talmo in #96
    • Better __repr__s for Skeleton, LabeledFrame, Labels, Instance, PredictedInstance
    • Labels.append() and Labels.extend() to add LabeledFrames now will update Labels.tracks, Labels.skeletons and Labels.videos with contents.
    • Labels.update() to manually update Labels.tracks, Labels.skeletons and Labels.videos with contents of Labels.labeled_frames and Labels.suggestions.
    • Labels.replace_filenames(): multiple methods for replacing all video filenames across the project (#85).
    • Skeleton.edge_names to return list of edges as tuples of string names
    • Added docstrings to sio.load_video and related high level Video APIs to clarify supported file formats.
    • Syntactic sugar: try to initialize video backend with Video(filename) construction (#94)

Note: This is a re-release of v0.1.3 which had a borked deployment.

Full Changelog: v0.1.2...v0.1.4

v0.1.3

What's Changed

  • Add support for embedding images in .pkg.slp by @talmo in #91
    • Saving SLP files with embedded images will re-save the embedded images.
    • Embed images into SLP files with:
      • labels.save("labels.pkg.slp", embed="user") to embed frames with user-labeled instances (Instance)
      • labels.save("labels.pkg.slp", embed="user+suggestion") to embed frames with user-labeled instances and suggestion frames (useful for inference after training)
      • labels.save("labels.pkg.slp", embed="source") to restore the source video ("unembed")
  • Better reprs and QOL by @talmo in #96
    • Better __repr__s for Skeleton, LabeledFrame, Labels, Instance, PredictedInstance
    • Labels.append() and Labels.extend() to add LabeledFrames now will update Labels.tracks, Labels.skeletons and Labels.videos with contents.
    • Labels.update() to manually update Labels.tracks, Labels.skeletons and Labels.videos with contents of Labels.labeled_frames and Labels.suggestions.
    • Labels.replace_filenames(): multiple methods for replacing all video filenames across the project (#85).
    • Skeleton.edge_names to return list of edges as tuples of string names
    • Added docstrings to sio.load_video and related high level Video APIs to clarify supported file formats.
    • Syntactic sugar: try to initialize video backend with Video(filename) construction (#94)

Full Changelog: v0.1.2...v0.1.3

v0.1.2

What's Changed

  • Fix suggestions deserialization by @talmo in #95

Full Changelog: v0.1.1...v0.1.2

v0.1.1

What's Changed

Full Changelog: v0.1.0...v0.1.1

v0.1.0

What's Changed

  • Add skeleton utilities by @talmo in #76

    • Skeleton.add_node: Add a node by name or object.
    • Skeleton.add_edge: Add an edge by lists of names or objects.
    • Skeleton.add_symmetry: Add a symmetry edge by lists of names or objects.
  • Update CI and versions by @talmo in #77

    • Update dependency ranges (see below)
    • Update action workflow versions
    • Enable M1 mac runners
    • Expand python version range to 3.7-3.12
      • Note: Python 3.7 is no longer tested in CI due to lack of conda-forge compatability.
    • Enable pure conda-forge dependency setup
  • Bump to v0.1.0 by @talmo in #78

  • Fix multi-skeleton loading by @talmo in #79

  • Add high level APIs by @talmo in #80

    • Add load_video and load_file high level APIs (#48)
  • Labels QOL enhancements by @talmo in #81

    • LabeledFrame.remove_predictions: Remove predicted instances from a labeled frame.
    • LabeledFrame.remove_empty_instances: Remove instances with no visible points from a labeled frame.
    • Labels.save: Instance-level convenience wrapper for sio.save_file.
    • Labels.clean: Remove unused or empty frames, instances, videos, skeletons and tracks.
    • Labels.remove_predictions: Remove predicted instances from all labeled frames (#69).
    • Labels.__getitem__: Now supports lists, slices, numpy arrays, tuples of (Video, frame_idx) and Video.
  • Video QOL enhancements by @talmo in #82

    • Video.is_open: Checks if the video exists and the backend is set.
    • Video.open: Opens or restarts the backend for reading.
    • Video.close: Closes the backend for reading.
    • Video.exists: Check if the filename for the video exists.
    • Video.replace_filename: Replace the filename and restart the backend.

Notes on dependency pins

Full Changelog: v0.0.14...v0.1.0

v0.0.14

What's Changed

  • Fix importing in Python 3.7 by @talmo in #75

Full Changelog: v0.0.13...v0.0.14

v0.0.13

What's Changed

Full Changelog: v0.0.12...v0.0.13

v0.0.12

What's Changed

New Contributors

Full Changelog: v0.0.11...v0.0.12

v0.0.11

What's Changed

Full Changelog: v0.0.10...v0.0.11

v0.0.10

This is a hotfix to get around installing in older environments with numpy <1.20.

What's Changed

  • Fallback on import newer numpy.testing module by @talmo in #65

Full Changelog: v0.0.9...v0.0.10

v0.0.9

What's Changed

  • Fix serialization for negative anchors metadata field in SLP files by @talmo in #59
  • Fix edge unpacking by @talmo in #60
  • Bump to v0.0.9 and update usage docs by @talmo in #61

Full Changelog: v0.0.8...v0.0.9

v0.0.8

What's Changed

  • Fix docstring for LabeledFrame.predicted_instances by @talmo in #43
  • Parse skeleton symmetries from SLP files by @talmo in #53
  • Add Labels.skeleton convenience attribute by @talmo in #54
  • Write SLP files by @talmo in #55
  • Create video backend automatically if filename exists. by @talmo in #56

Full Changelog: v0.0.7...v0.0.8

v0.0.7

What's Changed

  • Pin imageio version by @talmo in #39
  • Fix detection of embedded images when loading SLP files by @talmo in #40

Full Changelog: v0.0.6...v0.0.7

v0.0.6

What's Changed

  • Add from predicted parsing by @talmo in #37

Full Changelog: v0.0.5...v0.0.6

v0.0.5

What's Changed

Full Changelog: v0.0.4...v0.0.5

v0.0.4

What's Changed

  • Fix build by including readme correctly in pyproject.toml by @talmo in #34
  • Add Labels.find and Labels.video by @talmo in #35

Full Changelog: v0.0.3...v0.0.4

v0.0.3

What's Changed

  • Update CI by @talmo in #32
    • Switch to using pyproject.toml alone instead of setup.cfg.
    • Remove mypy type enforcement -- this is too strict for a library intended to be this flexible.
    • Use micromamba in GitHub Actions workflow instead of miniconda
  • Video backends by @talmo in #31
    • This PR implements the core video backends for media files, HDF5 and embedded images.
  • Bump version by @talmo in #33

Full Changelog: v0.0.2...v0.0.3

v0.0.2

What's Changed

  • Fix version and readme badge by @talmo in #19
  • Add NWB support III - provenance writing by @h-mayorquin in #17
  • Propagated extracted backend dict to video object by @h-mayorquin in #18
  • Change equality semantics for Points and Instances by @quantumdot in #21
  • Metadata not correctly propagated to nwb bug by @h-mayorquin in #23
  • Add LabelStudio project support by @quantumdot in #26
  • Add propagation of start time when writing nwbfile by @h-mayorquin in #29
  • Refactoring pre v0.0.2 by @talmo in #27
    • High-level API cleaned up to load_nwb, save_nwb, load_labelstudio, save_labelstudio
    • Basic NWB loading support
    • Add Label Studio functionality for inferring nodes.

New Contributors

Full Changelog: v0.0.1...v0.0.2

v0.0.1

Initial stable release of the package.

What's Changed

New Contributors

Full Changelog: https://github.com/talmolab/sleap-io/commits/v0.0.1