Skip to main content

signal-dataset

PyPI Python versions License CI Docs

Immutable, indexed storage for multidimensional signal records on local filesystems, Google Cloud Storage, and Amazon S3. Numerical fields use SafeTensors, and ArrayRecord provides random access.

Use it when you have many arbitrary-rank signal captures, several machines writing them at once, and readers that must never see a half-written dataset.

Status: experimental 0.x software. The Python API may make documented breaking changes between minor releases. Persisted-format compatibility is versioned separately.

import numpy as np
import signal_dataset as sds

record = sds.Record(
    id="capture-0042",
    fields={
        "samples": sds.Field(
            np.zeros((4, 4096), dtype=np.complex64),
            axes=(
                sds.Axis("channel", 4),
                sds.Axis(
                    "time",
                    4096,
                    coordinate=sds.Coordinate(start=0, step=5e-8, unit="s"),
                ),
            ),
        )
    },
    metadata={"sample_rate_hz": 20_000_000},
)

shard = sds.write_shard([record], "captures.sds", work_id="worker-000")
dataset = sds.publish(
    "captures.sds",
    [shard],
    dataset_id="captures",
    snapshot_id="run-001",
)

assert dataset[0].id == "capture-0042"
assert dataset.record_metadata[0]["samples"].shape == (4, 4096)

for descriptor in dataset.iter_record_metadata():
    print(descriptor.id)

for full_record in dataset.iter_records():
    assert full_record["samples"].data.shape == (4, 4096)

Reading dataset[i] fetches sample tensors. Reading dataset.record_metadata[i] does not, which makes it cheap to plan a shuffle or a filter across a whole dataset before fetching anything. iter_records() and iter_record_metadata() stream the same order in bounded batches.

Readers follow generation-pinned manifests and never list a directory or a bucket prefix.

Install

pip install signal-dataset
pip install 'signal-dataset[gcs]'   # gs:// roots
pip install 'signal-dataset[s3]'    # s3:// roots

The uv equivalents are uv add signal-dataset and so on.

Python 3.11 through 3.13 on Linux and macOS. Windows is not supported, because atomic publication uses POSIX filesystem primitives.

Documentation

Full documentation is at sds.docs.superpose.us.

Design

  • Immutable, root-last publication: readers observe no dataset or a complete snapshot.
  • Lazy ordinal random access without directory or bucket-prefix discovery.
  • Tensor-free aligned metadata reads.
  • Storage and shard-container extension contracts.
  • Profile-free records: no modality, training framework, or split policy is embedded in the core.

The project does not provide mutable datasets, distributed scheduling, authorization, retention, or batching policy. See the architecture, format compatibility contract, and roadmap.

Continuous integration

CI runs the test suite with a coverage floor, ruff, strict mypy, and the installed-wheel, extras, and sdist journeys on every pull request.

macOS is not covered by CI, so running the suite locally is the only signal there. That matters more than it would for a pure-Python package, because this one is POSIX-specific and the platforms differ exactly where it works: /dev/fd semantics on a staged descriptor, os.link, fcntl.flock, directory fsync, and whether an unlinked open file keeps a link count.

uv sync --all-extras --dev --locked
uv run pytest

Releasing

See RELEASING.md.

Community

Read CONTRIBUTING.md before proposing changes. Use GitHub Issues for reproducible bugs and design discussion, and follow SECURITY.md for private vulnerability reports. Participation is governed by the Code of Conduct.

Metadata

Release files for signal-dataset 0.4.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 signal-dataset 0.4.0
File Size Uploaded
signal_dataset-0.4.0.tar.gz 284.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for signal-dataset 0.4.0
File Interpreter ABI Platform
signal_dataset-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 389.4 kB

Release files / signal_dataset-0.4.0.tar.gz

Download URL signal_dataset-0.4.0.tar.gz
Size 284.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3602880c18da129f4157ab6950dd2afa0572ed2ef086f347858660e0b0ab0066
BLAKE2b-256 checksum
How to use checksums
82c68fc2314dfeca227f98a8d4eb81a20e0bd9d456dc84f3763fba80e8b45b78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / signal_dataset-0.4.0-py3-none-any.whl

Download URL signal_dataset-0.4.0-py3-none-any.whl
Size 104.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8be24850ec9b82a333581ef14cee4bc1149cb5d01c5fc0242b44b429fac512b
BLAKE2b-256 checksum
How to use checksums
bf82c5f78baf9e01b1647eff882ea9dcbd438330573d9b39125835aac520cf54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.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