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')

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.42.0.tar.gz (23.1 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.42.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jabs_io-0.42.0.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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.42.0.tar.gz
Algorithm Hash digest
SHA256 b8f2ce11ed3bf5bf1a0ab0c608467c8535677bf957095218c771d3ef9c6ced6e
MD5 0c38d26ba4c7ee316c017f5238f9aceb
BLAKE2b-256 f9517638dd5dfc2cb9ace63055ca82a33a5be532f53fb630ecd17bdeae686d14

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jabs_io-0.42.0-py3-none-any.whl
  • Upload date:
  • Size: 31.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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.42.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6e5b732fa9457d698df4ebefeccf9f8d5389f786567034b7645f8121304f240
MD5 4cb3fe84f94b24c6c80f1a3f9274802d
BLAKE2b-256 115d7801a18500c0985818aa545e7f67c0aa85c7f224b465d6957ca7ab50b31a

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