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.

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 at doppler-dsp.github.io/doppler — Quick Start, Architecture, API Reference, Examples.

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.18.0.tar.gz (9.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.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.18.0-cp314-cp314-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.18.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.18.0-cp313-cp313-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.18.0-cp312-cp312-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.18.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.18.0-cp311-cp311-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.18.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

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

doppler_dsp-0.18.0-cp310-cp310-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.18.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

doppler_dsp-0.18.0-cp39-cp39-macosx_14_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.18.0.tar.gz
  • Upload date:
  • Size: 9.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.18.0.tar.gz
Algorithm Hash digest
SHA256 6eb71dd204f8ee3222f224f441ff093bc6316a7a97d6a0745dba7f196f7b4cde
MD5 eecafd04dcab358a6b61383c76877233
BLAKE2b-256 709d84c42aadaa503aedf4b34fec3e96fc4e9fc0264841c20e4aef3cee0a65a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3404a1dfc60e2d3a8e0fee67dea53e68e8eec1cb52bd5a7ff5093e2d7cffd6a9
MD5 3bb5ec669c5266f5f527755cc3c79025
BLAKE2b-256 fd51ec0a4b4aaa188f5a5f058fc780a2185d66b97a4b1cc5ccac0b87db9b9f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 24b8ef9d46a5da5c7c499f7d09ba258096d8078224b727fd80615cd041acbb89
MD5 ea8cc1bfb2dc3ff2208fc0c321622203
BLAKE2b-256 88c49f6643de61fd0c9e76275224dda9c7a79d13ba4c2770182d622c21e922af

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e6ffe38c313bdca39534d257c532804f22b2bf55fcf37e5eae5b714effc89c2
MD5 e36ecdf68e61560379bcf0b68563711b
BLAKE2b-256 5a3f81add391e64b75da97d1e597b89b854fe4c585f577317b556dfde7b3f5b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ffef3b1d16fad645bc703aeeaa994c2627d41e0c01ddb1fe7dd27c31e621e5b0
MD5 705c3661a55bf7aa215feb2dd8f143cd
BLAKE2b-256 43abaac40b6d9e27332fc0ed7f6c06c1b361eaf6e32fcdccd68f488e5983c3b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd86c119474fe88a7d8d35f8ad3722664b0cc55dadcaa6091ee9b0e29cf44f81
MD5 d128e00faa5ae8b29cfb16750053cde3
BLAKE2b-256 87dea92af7ecdd9dee03ba93d6775f16a685f227e6c44d1aafc2fb76374ca90d

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a1cf1abcb5de8bc05508f33fe23684f8e2d22e98bf283b149587ae6dd75eb818
MD5 ff45a063664d69cc10ad1ac9c169eeec
BLAKE2b-256 2b1ddac713c74e4bfbe2c94f488440293c905e91235ef02f1fbcc25cc4e743f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79ba312ab04104465707fb82a7494438dd632464fa79cbf090dd55047f75fbe5
MD5 60981cfb3a5dff5a95e46700316ca915
BLAKE2b-256 9835d17ef0761087c0c0ea7ca0cfff0d9527edc4dd07aa325ea2e09543a5b7d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1c1c51ee9ff349f7420b41287d00edebe5677abded595afea9c4d7310bba9de8
MD5 ccb6f21cfb88806456f4c1b663716bd8
BLAKE2b-256 a58ea128c8a1f38246c50ad7969622d04b1483889290d51da0a589953da52f84

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94bb716894864c82558f01c49eb8372601203e5709d53882be4f24589722c7e8
MD5 6cbc9fde450478e41d9b24cbd6d96eab
BLAKE2b-256 f024922b8de7e4df4ee96304bbea44a94312f8882f39d35289bae3fe4b5e08b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 be4ff5e12feb0312670d94a61f9d591a4afea5c14b0f57bad705c5e94985bb82
MD5 46a4633e334a4a40807d61d5a19be2bd
BLAKE2b-256 f444ffdbb043029395f678853c9d2dbf306ccd3d0ebb74955c408dca3967229d

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd3073320aa550a706310e37c60a3404cff057d8c1071a530c6a4e819bb13f53
MD5 2dfdc9cf4b092fd970a398527b09f296
BLAKE2b-256 d6612613e1bc406430d027b263e7fd8caa5a5c79e093e156377bf55d9f896806

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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.18.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.18.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5a034178c495994fd32d3115e6505f55e305e04afa511e95591d68bb2bf30631
MD5 b113cf0c5bcca735f212f9b639890878
BLAKE2b-256 45571b538a59feea04d1ed666d789cc0cce83de6145c1106edcafad49cf85cd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.18.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