Skip to main content

ezmsg-nwb

NWB (Neurodata Without Borders) file reading and writing for the ezmsg framework.

Overview

ezmsg-nwb provides streaming NWB file I/O as ezmsg Units.

Key features:

  • NWB Reader - Stream data from NWB files (local or remote) as AxisArray messages
  • NWB Writer - Write incoming AxisArray streams to NWB files with automatic container management
  • Flexible clock handling - Support for system, monotonic, and unknown reference clocks
  • Pipeline settings logging - Automatically record every component's settings into a pipeline_settings intervals table inside the NWB file

Installation

Install from PyPI:

pip install ezmsg-nwb

Or install the latest development version:

pip install git+https://github.com/ezmsg-org/ezmsg-nwb@main

Dependencies

  • ezmsg
  • ezmsg-baseproc
  • numpy
  • pynwb
  • h5py
  • neuroconv
  • remfile
  • pyyaml

Usage

See the examples folder for usage examples.

import ezmsg.core as ez
from ezmsg.nwb import NWBIteratorUnit, NWBSink

For general ezmsg tutorials and guides, visit ezmsg.org.

Pipeline settings table

When NWBSink is used inside an ez.run pipeline (with ezmsg>=3.9.0), it opens a GraphContext against the running graph server, snapshots the settings of every component in its session, and subscribes to subsequent settings change events. Each snapshot is flattened into dotted column names (e.g. MY.UNIT.MyUnitSettings.endpoint.host) and appended as a row to a pipeline_settings TimeIntervals table inside the NWB file, alongside an updated_component column identifying which component triggered the transition. Reading back is straightforward:

from pynwb import NWBHDF5IO

with NWBHDF5IO(path, "r") as io:
    nwbfile = io.read()
    df = nwbfile.intervals["pipeline_settings"].to_dataframe()

Notes:

  • Settings logging is best-effort. If the writer cannot connect to the graph server (e.g. when running the consumer outside of ez.run), it logs a warning and continues writing data without the table.
  • Settings values are sanitized for NWB storage: primitives, NumPy scalars, enums, paths, and fixed-shape sequences/arrays are stored natively; mappings and irregular structures are JSON-encoded; None becomes the string "None".
  • If a settings update changes a column's shape (scalar↔array or rank change), the writer rotates into a new file segment (<name>_01.nwb, <name>_02.nwb, …) so each segment's table stays internally consistent.

Development

We use uv for development.

  1. Install uv if not already installed.
  2. Fork this repository and clone your fork locally.
  3. Open a terminal and cd to the cloned folder.
  4. Run uv sync to create a .venv and install dependencies.
  5. (Optional) Install pre-commit hooks: uv run pre-commit install
  6. After making changes, run the test suite: uv run pytest tests

License

MIT License - see LICENSE for details.

Acknowledgements

This project is supported by the Wyss Center for Bio and Neuroengineering and by Blackrock Neurotech.

Download files

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

Source Distribution

ezmsg_nwb-1.6.0.tar.gz (85.3 kB view details)

Uploaded Source

Built Distribution

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

ezmsg_nwb-1.6.0-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file ezmsg_nwb-1.6.0.tar.gz.

File metadata

  • Download URL: ezmsg_nwb-1.6.0.tar.gz
  • Upload date:
  • Size: 85.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 ezmsg_nwb-1.6.0.tar.gz
Algorithm Hash digest
SHA256 4ae16c225b780e8539db1147debd8b2ddd1370c29149dfaae7568380e5cf0cec
MD5 a25d5c0d0b9c5a68f9a3e2fe60803a03
BLAKE2b-256 f258b95caf3babd02ea76b5db4f91a877db19c2a8c5b757b7931df8fe013fce1

See more details on using hashes here.

File details

Details for the file ezmsg_nwb-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: ezmsg_nwb-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 46.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 ezmsg_nwb-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e7b458fdfeb9c3936969453ea5dc73d47a71b2e8e377abd674fda26990fe77d3
MD5 75751820501a127af764dd01a81bf16b
BLAKE2b-256 6faf6226ae46540cd7c206447ad8f798c1449b01aff17ec875e200fc07c7044a

See more details on using hashes here.

Release history Release notifications | RSS feed

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

This release

1.6.0 This release

2 files

1.5.0

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

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