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.25.0.tar.gz (13.3 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.25.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

doppler_dsp-0.25.0-cp314-cp314-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.25.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

doppler_dsp-0.25.0-cp313-cp313-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.25.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

doppler_dsp-0.25.0-cp312-cp312-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.25.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

doppler_dsp-0.25.0-cp311-cp311-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.25.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

doppler_dsp-0.25.0-cp310-cp310-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.25.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

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

doppler_dsp-0.25.0-cp39-cp39-macosx_14_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: doppler_dsp-0.25.0.tar.gz
  • Upload date:
  • Size: 13.3 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.25.0.tar.gz
Algorithm Hash digest
SHA256 a23be9b3f6720db38715738a4673e68d8e668513acfab41c5511d586365f9536
MD5 ca2e26af3ca2664618df99bab2e5925c
BLAKE2b-256 c60c11d0218875a2c47b4e34db65539cd8e80d22e219f6029f2c2a130398b209

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccea517703b793fe8443b9d4adcce0220fd01a8bdb100b47439e0dfdc07d4273
MD5 dcb025e13e1a6c4560e8e6d352fd35cb
BLAKE2b-256 c1f529915d38d984ea4cd4a104367e465577df78648aaef75deb964a70c64da0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 22ed0eb24b87890e76dc3c2e1594054d85094e6a1207c0d6b3f82447735a7819
MD5 431b2b559d1c2dcdf9b9dcbc24592885
BLAKE2b-256 03c63b8322bba0723558597b77f70c91dd14e8bfd620d51c576d6d64c669a7ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e351c494c1e99e63f8eeac07f9b9848ee70ed34f9abbcd4a39c281751b036e0f
MD5 ad42b17bc4ed75a15924ab387255c3c1
BLAKE2b-256 26467efef5531de80da4fdc0d9e2bc3221d4f08496dff3d08081dc600dc6b6a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b7a0ff4ed04af98f23b5647a6839d9f699968b461b870d77c17d204581db9b3b
MD5 ea1836ab1f43790a028c8e6bee2008fd
BLAKE2b-256 82aa0097c99b09742b25b6d5445c5d4bc31c867bd7c66e6a7508b0b894948819

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c2dc268b2dcc7e80fe15fb66a8f163477026a6f28593b56c9da7cdce60e0741
MD5 216682915ac110426bdfba2c0f545bd2
BLAKE2b-256 f2355639c46d4be3e0cc3cf6810a779b77d665c14015d776d2347da67d3f2a4b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2242151f3997405609fb0e5de34628d21699a113cb81c18d45c42a647b39030d
MD5 17998538e8b020b96ef5a59b2dbfc20d
BLAKE2b-256 cc0e6d19d4231a077a9c2f5784dab8139d1b328cfc1f9663df35976404ad9dfa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64cd8db72c9b21300fd516575a458d3e0ac54cb7c3cd3d12c3a20ccf9b4fe0be
MD5 09d970c4eff75465b994252ea8840c1e
BLAKE2b-256 37a8eaac15ad09c71ae91f902b37348660f48778880173e83ea9ddd61bc3c697

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a79a6051bb115d928a4a5ba01f472f234711633036ff21f0c4dabb652d18d122
MD5 59c7acdce1420b9d7ed6657e8364b7cf
BLAKE2b-256 80aa13b168ba9388413b7faa6c4ecddd16efd87052aa7c98659649c9fca30c68

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c05cb9cee2d9457cf19b08d34c759c2ebb13e332d9a170fe5219ef720252f1b4
MD5 e3ba5703856d2a93362cab89fea526d1
BLAKE2b-256 3535be9639e13c3f9471e7b19ec7d2e3c136ce448d4e829143c6ba68af6c2880

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0f1b79ad813240d0f78a4ff7f2bc9605107db4f584f6b20d9c596e9798c8d294
MD5 38bdd811c84b97ba68a950b95524befe
BLAKE2b-256 e334329019f7882f33e6bfee66c349f3a9627becc5a96f80e7df3f7fd8d71527

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 381fae6ebc4c37a9a3bcad90e7163a2152611ce93752441b616bd021a2bb1441
MD5 cf6be6a325cb9b773b9dbc2b233fcede
BLAKE2b-256 8382d01e04a7aef57847ea7295c774dea08e7e6c05740de37cbefe12e373624c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doppler_dsp-0.25.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e5a86593086834885754952023559e50d7ace3bcb26359c46b6cd2706888ddb8
MD5 06de1e752693f1387de82814d3cff8b9
BLAKE2b-256 f3332c9335c0a7a431413230dc01bea0b8e8ddde39000508d9a1b19d6bf3c336

See more details on using hashes here.

Provenance

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