Skip to main content

Signal Dataset

Immutable, indexed storage for multidimensional signal records on local filesystems, GCS, and S3. Numerical fields use SafeTensors; ArrayRecord provides random access.

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={
        "iq": sds.Field(
            np.zeros((4, 4096), dtype=np.complex64),
            axes=(sds.Axis("channel", 4), sds.Axis("time", 4096)),
        )
    },
    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]["iq"].shape == (4, 4096)

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

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

dataset.record_metadata[index] reads one aligned metadata entry without fetching signal tensors. dataset.iter_record_metadata() streams all metadata in logical order with bounded shard-store requests and keeps memory bounded to StorageOptions.records_per_read_batch records. The shipped ArrayRecord store serves each request with one underlying reader lifetime; custom stores control their own read_many() implementation. dataset.iter_records() provides the same ordered, shard-batched traversal for full records, including tensor payloads and normal record validation. Readers follow generation-pinned manifests and never list directories or GCS prefixes.

See the quickstart, annotation example, and distributed-writing guide.

Install

uv add signal-dataset
uv add 'signal-dataset[gcs]'  # GCS transport
uv add 'signal-dataset[s3]'   # S3 transport

Equivalent pip commands are pip install signal-dataset, pip install 'signal-dataset[gcs]', and pip install 'signal-dataset[s3]'.

Python 3.11–3.13 on Linux and macOS are supported. Windows is not currently supported because the local atomic-publication implementation uses POSIX filesystem primitives.

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.

Signal Dataset is use-case agnostic. It has no training-framework, modality, or split-policy dependency.

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.

Download files

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

Source Distribution

signal_dataset-0.2.3.tar.gz (196.3 kB view details)

Uploaded Source

Built Distribution

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

signal_dataset-0.2.3-py3-none-any.whl (78.2 kB view details)

Uploaded Python 3

File details

Details for the file signal_dataset-0.2.3.tar.gz.

File metadata

  • Download URL: signal_dataset-0.2.3.tar.gz
  • Upload date:
  • Size: 196.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"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}

File hashes

Hashes for signal_dataset-0.2.3.tar.gz
Algorithm Hash digest
SHA256 a5a1b18ba9321771e4fb0ffc5d1ee82e076f157e449b8f52cb9ff881d586fca9
MD5 ed7bf0441bcbba5a4b2e0375f40e785c
BLAKE2b-256 33f4eeb4d37aca2757ce174fd4e9c434adf063c747c74f0b68eed8d4debec295

See more details on using hashes here.

File details

Details for the file signal_dataset-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: signal_dataset-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"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}

File hashes

Hashes for signal_dataset-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f45706550b5128238f10b03f73c8866d306abed6d740ec09530f70eff9c1e914
MD5 1cda38464c0ba9aa11981635e8e74ba7
BLAKE2b-256 d5cf7b4cb6aa4378efa7323564a01d4a28df4e199fa735df0d7f4321a3f63002

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 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