Signal Dataset
Immutable, indexed storage for multidimensional signal records on local filesystems and GCS. 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
Equivalent pip commands are pip install signal-dataset and
pip install 'signal-dataset[gcs]'.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file signal_dataset-0.2.2.tar.gz.
File metadata
- Download URL: signal_dataset-0.2.2.tar.gz
- Upload date:
- Size: 152.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
962304b2c94a1d7e4e5217d092a9d4f78c43740c859a02119e2da170cf6d0a31
|
|
| MD5 |
c5bef556b8102436c867967d10c4cd8c
|
|
| BLAKE2b-256 |
cf2c55f27d3ced6457b9e12ff82be330cda7615570bcd7e4864f8bcd062f12f3
|
Provenance
The following attestation bundles were made for signal_dataset-0.2.2.tar.gz:
Publisher:
release.yml on superpose-labs/signal-dataset
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
signal_dataset-0.2.2.tar.gz -
Subject digest:
962304b2c94a1d7e4e5217d092a9d4f78c43740c859a02119e2da170cf6d0a31 - Sigstore transparency entry: 2654986632
- Sigstore integration time:
-
Permalink:
superpose-labs/signal-dataset@b82e638a9d67975b07e28e8b32d42ba9ee885305 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/superpose-labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b82e638a9d67975b07e28e8b32d42ba9ee885305 -
Trigger Event:
push
-
Statement type:
File details
Details for the file signal_dataset-0.2.2-py3-none-any.whl.
File metadata
- Download URL: signal_dataset-0.2.2-py3-none-any.whl
- Upload date:
- Size: 55.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da92374ef28f74b043c68041fe630df15a44d939d3259d5714d4c7d2acfb5c01
|
|
| MD5 |
7b09b06e4bb56f2cdd478ef0b6065d37
|
|
| BLAKE2b-256 |
5634635b9a596d7eb6029ea1380d58a1a31d191cd5cce2031742658dc5f29ad4
|
Provenance
The following attestation bundles were made for signal_dataset-0.2.2-py3-none-any.whl:
Publisher:
release.yml on superpose-labs/signal-dataset
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
signal_dataset-0.2.2-py3-none-any.whl -
Subject digest:
da92374ef28f74b043c68041fe630df15a44d939d3259d5714d4c7d2acfb5c01 - Sigstore transparency entry: 2654986651
- Sigstore integration time:
-
Permalink:
superpose-labs/signal-dataset@b82e638a9d67975b07e28e8b32d42ba9ee885305 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/superpose-labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b82e638a9d67975b07e28e8b32d42ba9ee885305 -
Trigger Event:
push
-
Statement type: