Synthetic noise-driven time series with controllable structure for ML benchmarks.
Project description
chronoise
Synthetic noise-driven time series with controllable structure for ML benchmarks.
Each series is generated as
X_t = L_t + a * N(t)
where L_t is a piecewise-constant level with stochastic step lengths and an
optional seasonal sign bias, and N(t) is one of six configurable noise styles
(five 1/f^beta colored noises and one El-Nino-style noise). The canonical
dataset is a 6 x 3 x 2 x 10 = 360-element grid.
Install
pip install chronoise
Requires Python >=3.10, numpy>=1.23, torch>=2.0.
Usage
from chronoise import (
GeneratorConfig, NoiseKind, NoiseSpec,
generate_series, NoiseSeriesDataset,
)
cfg = GeneratorConfig()
# Single realization.
r = generate_series(
cfg,
noise=NoiseSpec(NoiseKind.BETA, beta=1.0),
amplitude=1.0,
structural_mode=1,
seed=0,
)
# r.X : (T,) float64 observed series
# r.y : (T,) int8 signed direction labels in {-1, 0, +1}
# r.y_binary : (T,) int8 binary bifurcation labels in {0, 1}
# r.L, r.N : level and standardized noise components
# Full canonical dataset (360 series in memory).
ds = NoiseSeriesDataset(cfg) # default: signed labels {-1, 0, +1}
ds.save("dataset.npz")
ds = NoiseSeriesDataset.load("dataset.npz")
x, y = ds[0] # torch tensors
# Switch to binary bifurcation labels for the break-vs-no-break task:
ds_bin = NoiseSeriesDataset(cfg, label_mode="binary")
x, y = ds_bin[0] # y in {0, 1}
# Both encodings are always stored — access either without rebuilding:
y_signed = ds.labels(0, mode="signed")
y_binary = ds.labels(0, mode="binary")
For a runnable example see examples/quickstart.py.
CLI
chronoise-build dataset.npz --T 8192 --n-seeds 10
Add --keep-components to also store the level (L) and noise (N)
components in the archive. Add --label-mode {signed,binary} to choose the
default label encoding (both arrays are always persisted; this flag only
selects what __getitem__ returns):
chronoise-build dataset.npz --label-mode binary
Configuration
All knobs live on GeneratorConfig (chronoise/config.py): series length,
level statistics (sigma_L, gamma, T0, segment-length geometric
parameters), colored-noise frequency grid (K, f_low, f_high),
El-Nino-style noise (T1, T2, phi_ar), and the canonical product axes
(betas, amplitudes, structural_modes, n_seeds).
Series with the same seed share the same level trace across noise types,
which is convenient for paired comparisons.
Example
License
This project is licensed under the MIT License.
Project details
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 chronoise-0.3.0.tar.gz.
File metadata
- Download URL: chronoise-0.3.0.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
effb37dbaeb12fd3b72bbe04177ec2336c370f1c8d3025e782bae5069d54e655
|
|
| MD5 |
4b87f42e90d877264c95914c362603ec
|
|
| BLAKE2b-256 |
79bfa4ec5c49ac2e7d7c63e1789ab32e81096109bae940c3b6f88974571faf75
|
File details
Details for the file chronoise-0.3.0-py3-none-any.whl.
File metadata
- Download URL: chronoise-0.3.0-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a254d0cf0538664220a90b737b7916c996b2f298930648d09387b264c74b5f6
|
|
| MD5 |
d50625e7e6a1c6ca345589d9cc9dede1
|
|
| BLAKE2b-256 |
a4e6528ed389573c3adfce4efa87a00e93cf48fee194c8fffa8f051d9ca7221f
|