Skip to main content

Dead-simple, ultra-fast digital signal processing.

Project description

doppler — signal, shifted

Dead-simple, ultra-fast digital signal processing.

CI Docs PyPI Python License: MIT

C99 Rust uv Ruff

doppler is a C99 DSP library: NCO, FIR filter, FFT, polyphase resampler, DDC, and ZMQ-based signal streaming. Python and Rust wrap the same C core — no second implementation, no divergence, full SIMD throughput from any language.

NavigateQuick Start · Architecture · Examples · Guides

API ReferenceC API · Python: FFT · Python: Spectral · Python: Waveform · Python: Resample · Python: Filter · Python: Measurement · Python: DDC · Python: Accumulator


Why it's built this way

Every algorithm lives in C exactly once. The Python layer is type conversion and lifetime bridging — a few hundred lines of glue, not a reimplementation. Bugs get fixed once, benchmarks reflect real hardware, and a C transmitter talks to a Python subscriber without surprises.

Performance

On a Ryzen 7 AI 350 (-O2): NCO raw accumulator ~15 GSa/s, LO CF32 ~1.8 GSa/s, FIR CF32 ~900 MSa/s, FFT CF32 (N=4096) ~180 MSa/s, polyphase resampler (2× decim) ~70 MSa/s. Run make bench to measure on your hardware.

Quick start

Python

from doppler.spectral import FFT
import numpy as np

x = np.random.randn(1024).astype(np.complex64)
X = FFT(1024).execute_cf32(x)

C

#include <fft/fft_core.h>

fft_state_t *fft = fft_create(1024, -1, 1);  /* n, sign, nthreads */
fft_execute_cf32(fft, in, 1024, out);        /* in,out: float complex[1024] */
fft_destroy(fft);

Build

jbx install-deps        # install system deps (detects OS/distro)
make                    # C library
make pyext              # + Python bindings
make test               # CTest suite
make bench              # benchmarks

Docs

Full docs: doppler-dsp.github.io/doppler

Licensing

MIT. The core C library is pure C99 and links only -lm. Its FFT uses the vendored pocketfft (BSD-3-Clause) for double precision and arbitrary sizes, and the vendored PFFFT (Pommier/FFTPACK, BSD) for the native single-precision SIMD path. The optional ZMQ stream component (libdoppler_stream) vendors libzmq (MPL-2.0).

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

doppler_dsp-0.26.0.tar.gz (13.4 MB view details)

Uploaded Source

Built Distributions

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

doppler_dsp-0.26.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp314-cp314-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.26.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp313-cp313-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.26.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp312-cp312-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.26.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp311-cp311-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.26.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp310-cp310-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.26.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.26.0-cp39-cp39-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file doppler_dsp-0.26.0.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.26.0.tar.gz
  • Upload date:
  • Size: 13.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for doppler_dsp-0.26.0.tar.gz
Algorithm Hash digest
SHA256 754fb3e4314b423aa286145a7ae0beef4dc58d831272ee4363b2b0cbdda2d95d
MD5 e1c58b1199b578521f938e63454c950c
BLAKE2b-256 a04042176d19111a9b5db906a5e820c0197adcba2691a875d5fe871d40724a71

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0.tar.gz:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d621d35a8420e67ae2771f6dac8d398db377de3f8517352e5eb3773a96619001
MD5 cf8f1a22c66b934653212394f0e79cae
BLAKE2b-256 fe652010e030c6f58ef34b5d3e18e6d7abcd41528abcceb31af7afdd11a4d6e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0459b93608f675c5bc25071e03aa91fbb49d52465af571ef38ef273b2cf66f99
MD5 1914e70ea6c3aed525a7e9f4c8ff4fa1
BLAKE2b-256 27115027cf0382f711855cdbec8839f891ea8a301f9ce72d38641dcf748dce53

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5fe78b462469982777cce55c36ad1299ecf2925f47c0bb1786dae7b494d33f65
MD5 64e9e5d43d5eeda648c2b80edb667658
BLAKE2b-256 d189a2db56e01d9fa20817e07ca99c70ef503c55be6943bef18b5cb1f259c2d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 858876e8a383cb812aec6f5f8087ba3a63b36ae2414c2f6869db62df0469e648
MD5 fe61f3a9372eece133e48cac22757e96
BLAKE2b-256 70fd26ed4c2853fcde5278590e06209d928868cbb5d5d8d3d95c5115f4f56d24

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1b0661823c3d50b912e67b09590b302829eb6e2d5d4ec998228ea1f00afface2
MD5 f585a9fa1e3d478c6a0331f033d87894
BLAKE2b-256 a38ac6f3897419e4d8a9574fb5bee1e2f3b879d222c1de13abe6583b3bc1a943

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d2c98fbf8b78ada05e904ecb480b4c39d11468ac7f377b63f2afbd94bc055141
MD5 3db56ce3b2b905ff2f4952501001273e
BLAKE2b-256 4fdf4e5d66f5019edca1da464c8a1c27708f6c4cae7f5107a43b3b3531f4a758

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6cb2e9f8acbb6456ff63f6cd44b734b22ad498ce2c5359b1f3d947887a85a0d4
MD5 715501778e94fc360c9ab1351d1c1bc1
BLAKE2b-256 73ca6613b1fac9bed5b224464c7aef0860b5da428e7390adfae03e4e967db440

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1b970475114dcf5462efe22586bd1e085c74e3218d9090c463786d5fa902325c
MD5 6563abc0008a57ee1d73b222e6e6d0ac
BLAKE2b-256 0e235ebd9befc9ae93d5c257a085a037c5e49f5a888a8d2b42665715d14156f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c69ec9fedc98e036853af51bd68f72ca6a64dd293cf95fb374deb7d15c92ff06
MD5 34efc7c91ac292b749931f606e992c31
BLAKE2b-256 7777f2153587291b639e6649a777ac70d3737422fa9a841d6c98df876c8dc2ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 febf49da52b3e923e0fdea59e1cbce397464d2f681f7dbc2de76aa7e4a5a876a
MD5 5e5862ad6e3d65f50cf4e693d30c9130
BLAKE2b-256 f5375798566324dfffccc50c07245d6e5c34b1a8ac2767259f598a905c24a206

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 917c4c188a75d153964ac217627c22c991c3f0e985126841a861934b2a15c36b
MD5 ebff13084f90e4fe9335cd768d04678e
BLAKE2b-256 0f6ee090f0bd280e919eb73360e6d1971b74bd87b6bbad020cd6fc3737882213

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doppler_dsp-0.26.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.26.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 95fdeb7f30e44b471ef7cae3f765255c0f91ba2794b6bedcb075427c2fcf2315
MD5 4af7e392668fa7793f260a75ab657e93
BLAKE2b-256 6a2003e029342c3c7be482ced2cc39c6923f69c7b3155138661c1253eeb5a202

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.26.0-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page