Skip to main content

wdm-transform

PyPI Python Tests Docs arXiv License: MIT Open In Colab

wdm-transform provides Wilson-Daubechies-Meyer (WDM) transforms and an opt-in orthogonalized modified-Gaussian Wilson (WDG) window for sampled one-dimensional signals. Both use the same package, objects, and coefficient layout.

wdm-transform demo

The public API centers on three objects:

  • TimeSeries
  • FrequencySeries
  • WDM

Choose a window

Use Meyer for compact frequency support and the lowest transform cost; try Gaussian when tighter time localization matters for transients or data gaps. Gaussian trades that localization for wider frequency mixing. See Choosing a window for the comparison figure, parameter guidance and Noah Pearson et al.'s paper.

import numpy as np
from wdm_transform import TimeSeries

data = np.random.default_rng(42).normal(size=8192)
ts = TimeSeries(data, dt=5.0)
meyer = ts.to_wdm(nt=256, window="meyer")
gaussian = ts.to_wdm(nt=256, window="gaussian")
recovered = gaussian.to_time_series()  # retains the originating window

Omitting window keeps the original Meyer defaults, a=1/3, d=1. Gaussian uses nu=0.5 and support=min(16,nf) by default; support counts half-band spacings retained on each side of a frequency-window center. It controls finite-tail reconstruction error, rather than the number of signal samples. The currently validated shape range is 0.3 <= nu <= 0.8; small nf can limit accuracy. Set nu and support explicitly when needed.

Both results have real coefficients shaped (batch, nt, nf+1). WDM records window, nu, and effective support as keyword-only metadata and passes them to every inverse. Changing basis requires a new transform; changing metadata does not convert coefficients. Gaussian rejects nondefault a/d, and Meyer rejects explicit nu/support.

Gaussian full transforms support NumPy, JAX, and the shared CuPy implementation; GPU correctness requires a CuPy-capable machine. Compact subband APIs accept the same window options; Gaussian uses wider frequency margins. The existing wdm_noise_variance channel-PSD approximation is not a calibrated WDG colored-noise covariance model. The runnable docs/examples/gaussian_comparison.py example generates the guide's figure.

Installation

pip install wdm-transform

Optional JAX support:

pip install "wdm-transform[jax]"

If you prefer uv:

uv add wdm-transform

Useful repository commands from the project root:

# make a new venv for the repo
uv venv

# install local dev dependencies
uv sync --extra dev

# include docs dependencies too
uv sync --extra dev --extra docs

# run the walkthrough example
uv run python docs/examples/wdm_walkthrough.py

# run the test suite
uv run pytest

# build the docs
uv run mkdocs build

# serve the docs locally
uv run mkdocs serve

# run the benchmark CLI
uv run wdm_transform_benchmarking --backends numpy jax --pow2 12 22

# compare window families with synchronized timings and reconstruction errors
uv run wdm_transform_window_benchmark --backends numpy jax --runs 7 --outdir test_output/wdg_benchmarks

# refresh the checked-in benchmark snapshot used in the docs
uv run python docs/examples/generate_benchmark_plot.py --backends numpy jax

Documentation and source live at:

Metadata

Release files for wdm-transform 0.6.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 wdm-transform 0.6.0
File Size Uploaded
wdm_transform-0.6.0.tar.gz 92.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wdm-transform 0.6.0
File Interpreter ABI Platform
wdm_transform-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 158.4 kB

Release files / wdm_transform-0.6.0.tar.gz

Download URL wdm_transform-0.6.0.tar.gz
Size 92.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e28149b0a395887c0f23c12afcfbef42c51318ed706d7cbde0c01758d3033e9f
BLAKE2b-256 checksum
How to use checksums
a6b69dac3d0a3831a80710d36581293507d6154454213b601bde3c31362d5d79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / wdm_transform-0.6.0-py3-none-any.whl

Download URL wdm_transform-0.6.0-py3-none-any.whl
Size 66.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab47341203319fe397cc37be6adde6894b8790516cd6c860aa96010fedde55b7
BLAKE2b-256 checksum
How to use checksums
887e11e7e0fb79f94d0247fe9a09142517b35c77bed229c1384b3b5b9f889544
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

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