Skip to main content

Standalone utilities for working with pose data from SLEAP and other tools.

Project description

sleap-io

CI codecov Release PyPI PyPI - Python Version

Standalone utilities for working with animal pose tracking data.

This is intended to be a complement to the core SLEAP package that aims to provide functionality for interacting with pose tracking-related data structures and file formats with minimal dependencies. This package does not have any functionality related to labeling, training, or inference.

📚 Documentation - Comprehensive guides and API reference

Installation

From PyPI

pip install sleap-io

From source (latest version)

pip install git+https://github.com/talmolab/sleap-io.git@main

For video backend support, install with extras:

pip install sleap-io[opencv]  # For OpenCV backend (fastest)
pip install sleap-io[ffmpeg]   # For FFMPEG backend (most reliable)
pip install sleap-io[pyav]     # For PyAV backend (balanced)
pip install sleap-io[all]      # For all video backends

For development, use one of the following:

uv sync --all-extras           # Recommended: install with uv
conda env create -f environment.yml
pip install -e .[dev,all]      # Install with all extras for development

See CONTRIBUTING.md for more information on development.

Usage

Load and save in different formats

import sleap_io as sio

# Load from SLEAP file.
labels = sio.load_file("predictions.slp")

# Save to NWB file.
sio.save_file(labels, "predictions.nwb")
# Or:
# labels.save("predictions.nwb")

Convert labels to raw arrays

import sleap_io as sio

labels = sio.load_slp("tests/data/slp/centered_pair_predictions.slp")

# Convert predictions to point coordinates in a single array.
trx = labels.numpy()
n_frames, n_tracks, n_nodes, xy = trx.shape
assert xy == 2

# Convert to array with confidence scores appended.
trx_with_scores = labels.numpy(return_confidence=True)
n_frames, n_tracks, n_nodes, xy_score = trx.shape 
assert xy_score == 3

Read video data

import sleap_io as sio

video = sio.load_video("test.mp4")
n_frames, height, width, channels = video.shape

frame = video[0]
height, width, channels = frame.shape

Create labels from raw data

import sleap_io as sio
import numpy as np

# Create skeleton.
skeleton = sio.Skeleton(
    nodes=["head", "thorax", "abdomen"],
    edges=[("head", "thorax"), ("thorax", "abdomen")]
)

# Create video.
video = sio.load_video("test.mp4")

# Create instance.
instance = sio.Instance.from_numpy(
    points=np.array([
        [10.2, 20.4],
        [5.8, 15.1],
        [0.3, 10.6],
    ]),
    skeleton=skeleton
)

# Create labeled frame.
lf = sio.LabeledFrame(video=video, frame_idx=0, instances=[instance])

# Create labels.
labels = sio.Labels(videos=[video], skeletons=[skeleton], labeled_frames=[lf])

# Save.
labels.save("labels.slp")

Support

For technical inquiries specific to this package, please open an Issue with a description of your problem or request.

For general SLEAP usage, see the main website.

Other questions? Reach out to talmo@salk.edu.

License

This package is distributed under a BSD 3-Clause License and can be used without restrictions. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sleap_io-0.6.5.tar.gz (609.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sleap_io-0.6.5-py3-none-any.whl (658.0 kB view details)

Uploaded Python 3

File details

Details for the file sleap_io-0.6.5.tar.gz.

File metadata

  • Download URL: sleap_io-0.6.5.tar.gz
  • Upload date:
  • Size: 609.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleap_io-0.6.5.tar.gz
Algorithm Hash digest
SHA256 4dc64c55bbd26b97c16c76b19034e127efaa4e845777c4b79442985b4cd73f0c
MD5 296e2e57dd456f487a85ea4800eac6d7
BLAKE2b-256 2c3a1e0b9801d65ae6f4457aab4a78584a3c3fdbf0dfc262d05cb5b10cc50784

See more details on using hashes here.

File details

Details for the file sleap_io-0.6.5-py3-none-any.whl.

File metadata

  • Download URL: sleap_io-0.6.5-py3-none-any.whl
  • Upload date:
  • Size: 658.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleap_io-0.6.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d55704d9729c500cd4aabd5a848f9dd4d49c47f6ee175cc8b3a8c7aca6ba9ce2
MD5 9d31e9d0f04ba1bd5b9529e59532a89d
BLAKE2b-256 29e82aeadb780aaab322952bdb4f1c2bdaa9b615157304c71b2d034eef2e5058

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page