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.1.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.1-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.1-cp314-cp314-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.26.1-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.1-cp313-cp313-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.26.1-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.1-cp312-cp312-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.26.1-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.1-cp311-cp311-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.26.1-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.1-cp310-cp310-macosx_14_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.26.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.26.1.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.1.tar.gz
Algorithm Hash digest
SHA256 613dbdcfb174d609bf25cf0c62069878ee56d4e445b8cd57f904a05e78fd511a
MD5 8b64a7405355ecf91fa235cc8d30b361
BLAKE2b-256 7a6d88c58731678005717a508094d74ef56bd8c843d52d1b3be5aaeb792f9aae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 da3a3de3f4ded630614c8e4dd6236e746b86b6267cad68570cb6630d51f6bf3e
MD5 1f8d63c2f74ba6ab4483ed4df3e4eb0b
BLAKE2b-256 bf3ba5c5a0666590a4a46869dab3b488657b7cb868dd4bfb0520e7b5e5c28663

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1099f223351312b12d4143c38f35df3c7aca6afa999a0fa13d7fbbeab0d8efac
MD5 b43bb4b7676bd357f9d58f65dd1310cd
BLAKE2b-256 35bc72705abe408830e9e7ab4169c98dc58358d2caeaa59d718ce40d9b662b11

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dbaa358842f98d97cfd8a732cfd01b5a2b4a80292d8aeafecd319e5806166cc1
MD5 da3176d40b24636f9eb849d5549e5cfc
BLAKE2b-256 4b63c8da7454f660cabc3465eab02175e799b56b87586edd1ea48e1621cc98a4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0334b030762644bd350979b7a9ab4a61f67931207ada8e1a19fe64bf4da1aae7
MD5 e5723f8440925bc623f0f1f769f57221
BLAKE2b-256 19e9bded3d0c29ed6b36c02e4ce2056d29b26bf60f46a747aee6be4b386e62bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afc3c3de83c497e6401cc6471211c83a4533eaea9cdbba4995506ee5017b48f6
MD5 d52bf6e645f005339cf659a22bf7c695
BLAKE2b-256 3ddc232d1ec0acbae54f93cefaccfce64a55ae7a7bd443311d111564976ce6ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c1c5350ef2e492e5a28a26e8b1178b90ab9614e2a5dc7c1409a59e5915d70971
MD5 014bd7974260f7472192f370017c6f7d
BLAKE2b-256 0a4af7a7f6e88c7580357fed5762a11a5a4f5d9cc92cea5cbd1641d1a43796e9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 adc60f65a492b8df69c4f2997683f8fe37fb0c0d65eb87759e432bf783ff81b8
MD5 e905e6e738bf70e9ed06fbde5f34059f
BLAKE2b-256 8d40faab7234982937d36386a73576c1ae00dbf5e50564d6d1aa56f10bc17057

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2267fd9f7404d18e4d38a4ce7d6f56b968c9de12f6a60525dd08e40936da41ce
MD5 46c1cf91f87180c7daddb23277542668
BLAKE2b-256 0b3852ae5fe647ab5eaa7c25ab9b11ae5da00e4a86014e463656770593b4bf05

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a446aafeac6e5c959c43003ce0b5a830b2321a42f2e717b4120c3dd4ca53428b
MD5 562660e966abdc6c27411e75f20b0047
BLAKE2b-256 e5a9ceac8752caf45ecac59eacf79a2991dd02a3b86c0fb2fcdf93d287c63e7e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 eccb46465a4a4efc89e6a7a0a40bc3725e90f57c33d5ab1f1d3856ea219a05bb
MD5 65ea92de6ad03598851bd52157aa1b79
BLAKE2b-256 d719cd5fb7584b8b79c3f1245c505651f2ad7888a0f99455184cc64837ac34c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 335404e6da681e3476860e157882d08b4f7b998c33357be8b4c3c5622f9d1db3
MD5 b9b70dfabf2da54b8707fca3ab57a394
BLAKE2b-256 bf468281c5ed5a5dc2087f7f5628610b96c39d2dd6e2d0b3b0e7943e8328d4c6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.26.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 05aa74dff926e5bbc348b9e8522050a6693d70c95495c5e7ea97bdc3b93db60f
MD5 0052ca329e97ce0524904043be268134
BLAKE2b-256 a0d8144fcf17b44b6ae684888936f3398d60fc867f62fe166aa225d539264e26

See more details on using hashes here.

Provenance

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