Skip to content

Add hdf5-meta extension#2

Open
daltoncass wants to merge 1 commit into
sigmf:mainfrom
daltoncass:feature/hdf5-meta
Open

Add hdf5-meta extension#2
daltoncass wants to merge 1 commit into
sigmf:mainfrom
daltoncass:feature/hdf5-meta

Conversation

@daltoncass

Copy link
Copy Markdown

Adds the hdf5-meta extension: an OPTIONAL HDF5 sidecar that stores a columnar, performance-optimized duplicate of a Recording's global/captures/annotations metadata. It enables faster loads and tighter iteration for Recordings with very large captures/annotations arrays (RF survey, ML, signal-detection workflows) by letting tools read metadata as numpy columns instead of re-parsing JSON.

The JSON .sigmf-meta file remains the complete, authoritative, SigMF-Compliant source of truth. The sidecar is optional, derived, and digest-verified against the JSON, so a stale sidecar is detected and ignored — removing it always leaves a compliant Recording.

Scope (see §0.1): this is a metadata-only cache. It is not a sample-data container, does not represent multiple channels or arrays, and leaves both multichannel mechanisms (core:num_channels and SigMF Collections) untouched — it composes with Collections per-Recording.

Originally proposed in sigmf/SigMF#354 and drafted as sigmf/SigMF#355; moved here per the maintainer's guidance that extensions start in community-extensions and migrate to core if adopted by multiple entities. A reference implementation is in sigmf/sigmf-python#157.

🤖 Generated with Claude Code

Optional HDF5 metadata sidecar for Recordings with very large captures or
annotations arrays. The sidecar stores a columnar, performance-optimized
duplicate of the global/captures/annotations metadata so tools can read
metadata as numpy columns instead of re-parsing JSON in tight loops. The
JSON .sigmf-meta file remains the complete, authoritative source of truth;
the sidecar is optional, derived, and digest-verified so a stale one is
detected and ignored.

Includes a Scope and Non-Goals section clarifying that this is a
metadata-only cache: it is not a sample-data container, does not represent
multiple channels or arrays, and leaves both multichannel mechanisms
(core:num_channels and SigMF Collections) untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@777arc

777arc commented Jul 4, 2026

Copy link
Copy Markdown
Member

LGTM! The whole point of this repo was to lower the bar for new extensions, and then give them time to see if anyone else uses them

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants