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.

Release files for ezmsg-nwb 1.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ezmsg-nwb 1.10.0
File Size Uploaded
ezmsg_nwb-1.10.0.tar.gz 142.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ezmsg-nwb 1.10.0
File Interpreter ABI Platform
ezmsg_nwb-1.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 224.6 kB

Release files / ezmsg_nwb-1.10.0.tar.gz

Download URL ezmsg_nwb-1.10.0.tar.gz
Size 142.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f04435eb1ae8cf3d574b406735e9f11c4ecd0ad45654aae344a7d64b8a9f480c
BLAKE2b-256 checksum
How to use checksums
4b15cfba38047a409bc9fb620cc5055ab7eaab2e1c6703d3a36da5588df8c947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","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}

Release files / ezmsg_nwb-1.10.0-py3-none-any.whl

Download URL ezmsg_nwb-1.10.0-py3-none-any.whl
Size 82.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7c9fcfe1a69d95991433b80ed9e63bf346093582e1a9755a62972d086b39622
BLAKE2b-256 checksum
How to use checksums
15c4fd0aa30eb36a160ca1776769317a53646d4bf210af595458381b072c2d72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","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}

Release history Release notifications | RSS feed

1.12.1

2 release files

1.10.1

2 release files

This release

1.10.0 This release

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page