Skip to main content

Add your description here

Project description

JABS IO (jabs-io)

This package handles all serialization/deserialization logic.

Overview

jabs-io decouples the JABS data representation from specific file formats or legacy versions. It provides a unified way to interact with pose estimation data, behavioral features, and annotations.

API

The package provides a high level API that's intended to cover most use-cases.

from jabs.io import save, load
from jabs.core.types.keypoints import FrameKeypoints

data_instance = load('frames.json', FrameKeypoints)
save(data_instance, 'frames.parquet')

Installation extras

jabs-io ships optional extras for format-specific backends:

Extra Installs Enables
nwb pynwb, ndx-pose NWB pose file read/write
parquet pyarrow Parquet feature cache I/O

jabs-io depends on jabs-core, which requires h5py directly, so HDF5 support is always available with no extra needed. pyarrow is also a direct dependency of jabs-behavior-classifier, so the parquet backend is available automatically when jabs-io is installed as part of the full JABS application. The nwb extra must always be installed explicitly:

pip install "jabs-behavior-classifier[nwb]"

When using jabs-io as a standalone library:

pip install "jabs-io[nwb,parquet]"

Development

Data models are defined as dataclasses in jabs-core: jabs.core.types. Some backends will be able to implicitly handle most dataclasses, but if the dataclass is complicated, or if there is special handling required of the type for a backend, then a type specific adapter should be defined.

All adapters must inherit from jabs.io.base.Adapter.

For convenience, backend specific subclasses are provided that handle shared functionality for specific file backends.

from jabs.io.base import (
    JSONAdapter,
    ParquetAdapter,
    # TODO: HDF5Adapter,
)

To register your adapter for use, use the register adapter decorator.

from jabs.core.enums import StorageFormat
from jabs.io.base import JSONAdapter
from jabs.io.registry import register_adapter

@register_adapter(StorageFormat.JSON)
class DataclassJSONAdapter(JSONAdapter):
    ...

Future Work

  • NWB: segmentation data roundtripPoseData.segmentation_data is not currently stored by the NWB adapter. If possible, we might want to consider writing it as an additional TimeSeries in the behavior processing module (similar to jabs_identity_mask) so it survives a write/read roundtrip.

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

jabs_io-0.44.2.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

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

jabs_io-0.44.2-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file jabs_io-0.44.2.tar.gz.

File metadata

  • Download URL: jabs_io-0.44.2.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jabs_io-0.44.2.tar.gz
Algorithm Hash digest
SHA256 00f430dcc4e9c3339d8d36f81d80894c4f57afbca7d995021d6e92c594c23bd7
MD5 1167a1db9f608f5dd73f180af61e6c74
BLAKE2b-256 79fcdce83e99ecbe488a24291bd5ba96b34a9d9b985f04dce92273abc5c20b23

See more details on using hashes here.

File details

Details for the file jabs_io-0.44.2-py3-none-any.whl.

File metadata

  • Download URL: jabs_io-0.44.2-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jabs_io-0.44.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fcf4561d8bba4aec050c8b4f1be69cb8332c3ea642be5264b7ab2e8e55d8c1db
MD5 d8c773577fa77699790da4ab1f57bcc6
BLAKE2b-256 9948c4e6aa36c0c9d19e13d7b239793cd80561f353690d9995a2138549299506

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