Skip to main content

Python integration layer for the mixed-precision DSP library

Project description

mp-dsp-python

Python integration layer for the mixed-precision-dsp C++ library, providing nanobind bindings, matplotlib visualizations, and Jupyter notebooks for the full DSP domain.

Why

The mixed-precision-dsp library is a C++20 header-only DSP library covering signals, windows, quantization, IIR/FIR filtering, spectral analysis, signal conditioning, estimation (Kalman/LMS/RLS), image processing, and numerical analysis — all parameterized on arithmetic type for mixed-precision research.

DSP researchers work in Python. Jupyter notebooks, matplotlib, SciPy, and NumPy are the standard tools for prototyping, analysis, and publication-quality visualization. This repository bridges the gap: C++ does the mixed-precision math across the full DSP domain; Python orchestrates experiments and presents results.

Without this layer, every mixed-precision experiment requires writing a C++ application, exporting CSV, and hand-crafting plotting scripts. With mp-dsp-python, the entire sw::dsp library is accessible from a single import mpdsp statement.

import mpdsp
import numpy as np
import matplotlib.pyplot as plt

# Signal generation
signal = mpdsp.sine(length=2000, frequency=440, sample_rate=44100)
noise = mpdsp.gaussian_noise(length=2000, stddev=0.1)
noisy = signal + noise

# Windowing
window = mpdsp.hamming(2000)
windowed = noisy * window

# Spectral analysis
freqs, psd = mpdsp.psd(windowed, sample_rate=44100)
plt.semilogy(freqs, psd)

# IIR filtering with mixed precision
filt = mpdsp.butterworth_lowpass(order=4, sample_rate=44100, cutoff=1000)
ref    = filt.process(signal, dtype="reference")      # double/double/double
posit  = filt.process(signal, dtype="posit_full")      # double/posit<32,2>/posit<16,1>
print(f"SQNR: {mpdsp.sqnr_db(ref, posit):.1f} dB")

# Image processing
img = mpdsp.checkerboard(256, 256, block_size=8)
edges = mpdsp.canny(img, low_threshold=0.1, high_threshold=0.3, sigma=1.0)
mpdsp.write_pgm("edges.pgm", edges)

# Estimation
kf = mpdsp.KalmanFilter(state_dim=2, meas_dim=1)
# ... configure and run

# Analysis
margin = filt.stability_margin()
poles = filt.poles()
sensitivity = filt.worst_case_sensitivity()

What

Full DSP Domain Coverage

mp-dsp-python exposes every module of the C++ library to Python:

Bindings marked ✓ are available today; ⏳ are planned for 0.5.0 (see issue tracker for the per-module roadmap).

Module C++ Headers Python API Description
signals generators.hpp, signal.hpp, sampling.hpp mpdsp.sine(), mpdsp.chirp(), mpdsp.impulse(), mpdsp.white_noise(), mpdsp.gaussian_noise(), mpdsp.pink_noise(), ... Signal generators returning NumPy arrays.
windows hamming.hpp, hanning.hpp, blackman.hpp, kaiser.hpp, ... mpdsp.hamming(), mpdsp.kaiser(), ... Window functions returning NumPy arrays.
quantization ✓ partial adc.hpp, dac.hpp, dither.hpp, noise_shaping.hpp, sqnr.hpp mpdsp.adc(), mpdsp.sqnr_db(), mpdsp.measure_sqnr_db(), mpdsp.max_absolute_error(), ... (⏳ dac, rpdf_dither, noise-shaping) ADC modeling with type dispatch. SQNR measurement — the core metric for mixed-precision evaluation.
filter/iir butterworth.hpp, chebyshev1.hpp, chebyshev2.hpp, elliptic.hpp, bessel.hpp, legendre.hpp, rbj.hpp mpdsp.butterworth_lowpass(), mpdsp.chebyshev1_highpass(), mpdsp.elliptic_bandpass(), mpdsp.rbj_lowshelf(), ... All 7 IIR families with LP/HP/BP/BS (and RBJ shelf/allpass) variants. Design in double, process with type dispatch. Filter objects expose poles(), frequency_response(), stability_margin(), condition_number(), pole_displacement(), worst_case_sensitivity() as methods.
filter/fir fir_filter.hpp, fir_design.hpp mpdsp.fir_lowpass(), mpdsp.fir_bandpass(), mpdsp.fir_filter(), ... FIR filter design (window method). Direct convolution.
spectral ✓ partial fft.hpp, dft.hpp, psd.hpp, spectrogram.hpp, ztransform.hpp, laplace.hpp mpdsp.fft(), mpdsp.ifft(), mpdsp.fft_magnitude_db(), mpdsp.psd(), mpdsp.periodogram(), mpdsp.spectrogram() (⏳ ztransform, laplace) FFT (Cooley-Tukey), power spectral density, STFT/spectrogram.
conditioning envelope.hpp, compressor.hpp, agc.hpp mpdsp.PeakEnvelope(), mpdsp.RMSEnvelope(), mpdsp.Compressor(), mpdsp.AGC() Envelope followers (peak, RMS). Dynamic range compressor with soft knee. Automatic gain control.
estimation kalman.hpp, lms.hpp, rls.hpp mpdsp.KalmanFilter(), mpdsp.LMSFilter(), mpdsp.NLMSFilter(), mpdsp.RLSFilter() Linear Kalman filter with predict/update. LMS/NLMS adaptive filters. RLS with forgetting factor. State matrices as NumPy 2D arrays.
image image.hpp, convolve2d.hpp, separable.hpp, morphology.hpp, edge.hpp, generators.hpp mpdsp.convolve2d(), mpdsp.gaussian_blur(), mpdsp.sobel_x(), mpdsp.canny(), mpdsp.dilate(), mpdsp.checkerboard(), ... 2D convolution, separable filters, Gaussian/box blur. Morphological operations (erode, dilate, open, close, gradient, tophat). Sobel, Prewitt, Canny edge detection. Image generators (checkerboard, zone plate, gradients, noise, blobs).
io ✓ partial wav.hpp, csv.hpp, pgm.hpp, ppm.hpp, bmp.hpp mpdsp.read_pgm(), mpdsp.write_pgm(), mpdsp.read_ppm(), mpdsp.write_ppm(), mpdsp.read_bmp(), mpdsp.write_bmp() (⏳ read_wav/write_wav; CSV via mpdsp.load_sweep()) PGM/PPM/BMP image I/O. CSV signal I/O. Converting to/from NumPy arrays.
analysis ✓ via filter methods stability.hpp, sensitivity.hpp, condition.hpp filt.stability_margin(), filt.condition_number(), filt.worst_case_sensitivity(), filt.pole_displacement(dtype) Stability/sensitivity/conditioning analysis exposed as methods on filter objects rather than free functions. pole_displacement takes a dtype string and reports how far poles drift under that arithmetic.
types projection.hpp, transfer_function.hpp (⏳ project_onto, transfer_function — planned for 0.5.0) Type projection/embedding operators. Transfer function evaluation and cascade.

Mixed-Precision Type Dispatch

Every processing function that operates on data accepts a dtype parameter selecting the arithmetic configuration. Python never sees C++ template types — it passes a string key and gets back float64 NumPy arrays.

# Same API, different arithmetic — IIR/FIR filters
result_f32  = filt.process(signal, dtype="gpu_baseline")    # float state+sample
result_p16  = filt.process(signal, dtype="posit_full")      # posit<32,2> / posit<16,1>
result_half = filt.process(signal, dtype="half")            # cfloat<16,5> throughout

# Image processing — convolve2d, separable_filter, gaussian_blur,
# box_blur, sobel_x/y, prewitt_x/y, gradient_magnitude, canny, rgb_to_gray
edges_ref = mpdsp.canny(img, 0.1, 0.3, dtype="reference")
edges_p8  = mpdsp.canny(img, 0.1, 0.3, dtype="tiny_posit")

# Quantization — adc, measure_sqnr_db
quantized = mpdsp.adc(signal, dtype="half")

# Conditioning — PeakEnvelope, RMSEnvelope, Compressor, AGC
comp = mpdsp.Compressor(sample_rate=44100, threshold_db=-12.0, ratio=4.0,
                        attack_ms=5.0, release_ms=50.0, dtype="posit_full")

# Estimation — KalmanFilter, LMSFilter, NLMSFilter, RLSFilter
kf = mpdsp.KalmanFilter(2, 1, dtype="cf24")

Spectral primitives (fft, psd, spectrogram, ...) are pure double-precision in 0.4.x — mixed-precision dispatch on transforms is planned for 0.5.0. Signal generators and window functions are intentionally reference-precision (they are not part of a mixed-precision datapath).

Pre-Instantiated Configurations

Config CoeffScalar StateScalar SampleScalar Target
reference double double double Ground truth
gpu_baseline double float float GPU / embedded CPU
ml_hw double float cfloat<16,5> (IEEE half) ML accelerator
posit_full double posit<32,2> posit<16,1> Posit arithmetic research
tiny_posit double posit<8,2> posit<8,2> Ultra-low-power edge
cf24 double cfloat<24,5> cfloat<24,5> Custom 24-bit float research
half double cfloat<16,5> cfloat<16,5> IEEE half throughout

Query the live set at runtime with mpdsp.available_dtypes(). Fixed-point and integer configurations (sensor ADCs, FPGA datapaths) are planned for 0.5.0 alongside the remaining upstream bindings.

Coefficients are always designed in double — design-time precision is non-negotiable for IIR filters (see the educational guide). For algorithms that don't have a design/runtime split (FFT, convolution, Kalman), all three scalars use the target configuration.

Visualization Toolkit

Beyond bindings, mp-dsp-python provides matplotlib helpers and Jupyter notebooks tailored to mixed-precision DSP research:

Visualization Description
Magnitude/phase response Filter frequency response overlaid across arithmetic types
Impulse response Time-domain comparison of filter outputs
SQNR heatmap Filter family × arithmetic type, colored by SQNR (dB)
SQNR bar chart Grouped bars per filter family
Pole-zero diagram Unit circle with reference vs. displaced poles
Spectrogram Time-frequency display from STFT
PSD comparison Power spectral density across arithmetic types
Image pipeline Side-by-side: original → noisy → filtered → edges
Sensor noise analysis SQNR vs. bit-width for image processing
Precision-cost frontier SQNR vs. bits-per-sample Pareto plot
Kalman tracking State estimation convergence across types

How

Repository Structure

mp-dsp-python/
├── CMakeLists.txt                  # nanobind + sw::dsp + Universal
├── src/
│   ├── bindings.cpp                # nanobind module definition
│   ├── types.hpp                   # ArithConfig enum + dispatch table
│   ├── signal_bindings.cpp         # signals + windows → NumPy
│   ├── filter_bindings.cpp         # IIR/FIR design + process
│   ├── spectral_bindings.cpp       # FFT, PSD, spectrogram
│   ├── conditioning_bindings.cpp   # envelope, compressor, AGC
│   ├── estimation_bindings.cpp     # Kalman, LMS, RLS
│   ├── image_bindings.cpp          # 2D convolution, morphology, edge
│   ├── quantization_bindings.cpp   # ADC/DAC, dither, SQNR
│   ├── analysis_bindings.cpp       # stability, sensitivity, condition
│   └── io_bindings.cpp             # WAV, PGM, PPM, BMP, CSV
├── python/
│   └── mpdsp/
│       ├── __init__.py             # Public API surface
│       ├── filters.py              # Pythonic filter wrapper classes
│       ├── spectral.py             # Spectral analysis helpers
│       ├── estimation.py           # Kalman/adaptive filter wrappers
│       ├── image.py                # Image processing helpers
│       ├── plotting.py             # matplotlib convenience functions
│       └── io.py                   # File I/O + CSV import
├── notebooks/
│   ├── 01_signals_and_spectra.ipynb    # Signal generation, FFT, PSD
│   ├── 02_iir_precision.ipynb          # Mixed-precision IIR comparison
│   ├── 03_fir_and_windows.ipynb        # FIR design, window functions
│   ├── 04_quantization.ipynb           # ADC/DAC, dithering, SQNR
│   ├── 05_conditioning.ipynb           # Envelope, compression, AGC
│   ├── 06_estimation.ipynb             # Kalman tracking, LMS adaptive
│   ├── 07_image_processing.ipynb       # 2D filtering, edge detection
│   ├── 08_sensor_noise.ipynb           # Sensor noise precision analysis
│   └── 09_numerical_analysis.ipynb     # Stability, sensitivity, condition
├── scripts/
│   ├── plot_precision.py           # Magnitude/phase from CSV
│   ├── plot_heatmap.py             # SQNR heatmap from CSV
│   ├── plot_pole_zero.py           # Pole-zero on unit circle
│   └── plot_dashboard.py           # Streamlit interactive dashboard
├── tests/
│   ├── test_signals.py
│   ├── test_filters.py
│   ├── test_spectral.py
│   ├── test_image.py
│   └── test_estimation.py
└── README.md

Build

# Prerequisites: Python 3.9+, CMake 3.22+, C++20 compiler
pip install nanobind numpy matplotlib

# Build the C++ extension module
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

# Install in development mode
pip install -e .

The build system finds mixed-precision-dsp, Universal, and MTL5 via CMake find_package or FetchContent.

Quick Start: CSV Plotting (No Build Required)

The plotting scripts work immediately with CSV output from the C++ precision sweep, without building any nanobind module:

# In the mixed-precision-dsp repo:
cd build && ./applications/mp_comparison/iir_precision_sweep /tmp/csv_output

# In this repo:
python scripts/plot_precision.py /tmp/csv_output
python scripts/plot_heatmap.py /tmp/csv_output
python scripts/plot_pole_zero.py /tmp/csv_output

Quick Start: Full Python API

import mpdsp
import numpy as np
import matplotlib.pyplot as plt

# --- Signal Processing ---
# Generate and analyze signals
signal = mpdsp.sine(2000, frequency=440, sample_rate=44100)
window = mpdsp.blackman(2000)
freqs, psd = mpdsp.psd(signal * window, sample_rate=44100)

# --- Filtering ---
# Design and compare IIR filters across arithmetic types
filt = mpdsp.butterworth_lowpass(order=4, sample_rate=44100, cutoff=1000)
results = {}
for dtype in ["reference", "gpu_baseline", "posit_full", "half"]:
    results[dtype] = filt.process(signal, dtype=dtype)
    if dtype != "reference":
        sqnr = mpdsp.sqnr_db(results["reference"], results[dtype])
        print(f"  {dtype:20s}  SQNR = {sqnr:.1f} dB")

# --- Spectral Analysis ---
# FFT is pure double-precision in 0.4.x (mixed-precision dispatch on
# transforms is planned for 0.5.0). The returned tuple is (real, imag).
real, imag = mpdsp.fft(signal)

# --- Image Processing ---
# Full image pipeline
img = mpdsp.checkerboard(256, 256, block_size=16)
noisy = mpdsp.add_noise(img, stddev=0.1)
denoised = mpdsp.gaussian_blur(noisy, sigma=1.5)
edges = mpdsp.canny(denoised, low_threshold=0.1, high_threshold=0.3)

# Compare edge detection across arithmetic types
edges_ref = mpdsp.canny(denoised, 0.1, 0.3, dtype="reference")
edges_p8  = mpdsp.canny(denoised, 0.1, 0.3, dtype="tiny_posit")
agreement = np.mean(edges_ref == edges_p8)
print(f"  Edge agreement (posit<8,2>): {agreement:.1%}")

# --- Estimation ---
# Kalman filter tracking
kf = mpdsp.KalmanFilter(state_dim=4, meas_dim=2)
# configure F, H, Q, R matrices as NumPy arrays
# kf.predict(); kf.update(measurement)

# --- Analysis ---
# Numerical quality tools
print(f"  Stability margin: {filt.stability_margin():.4f}")
print(f"  Condition number: {filt.condition_number():.2e}")
print(f"  Worst sensitivity: {filt.worst_case_sensitivity():.4f}")

Relationship to mixed-precision-dsp

This repository is the Python integration layer for the full stillwater-sc/mixed-precision-dsp C++ library. The C++ library implements 12 DSP modules with mixed-precision arithmetic; this repo makes all of them accessible to Python researchers.

Design Documents

Dependencies

Library Purpose Repository
mixed-precision-dsp C++ DSP algorithms (all 12 modules) stillwater-sc/mixed-precision-dsp
Universal Number type arithmetic (posit, cfloat, fixpnt, ...) stillwater-sc/universal
MTL5 Dense/sparse linear algebra stillwater-sc/mtl5
nanobind C++ ↔ Python bindings wjakob/nanobind
NumPy Array interop (all data passes through NumPy)
matplotlib 2D visualization
Streamlit Interactive dashboard (Phase 7)

License

MIT License. Copyright (c) 2024-2026 Stillwater Supercomputing, Inc.

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

mpdsp-0.4.1.post2.tar.gz (3.2 MB view details)

Uploaded Source

Built Distributions

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

mpdsp-0.4.1.post2-cp312-cp312-win_amd64.whl (320.2 kB view details)

Uploaded CPython 3.12Windows x86-64

mpdsp-0.4.1.post2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (355.8 kB view details)

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

mpdsp-0.4.1.post2-cp312-cp312-macosx_11_0_arm64.whl (296.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mpdsp-0.4.1.post2-cp311-cp311-win_amd64.whl (320.4 kB view details)

Uploaded CPython 3.11Windows x86-64

mpdsp-0.4.1.post2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (356.5 kB view details)

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

mpdsp-0.4.1.post2-cp311-cp311-macosx_11_0_arm64.whl (297.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mpdsp-0.4.1.post2-cp310-cp310-win_amd64.whl (320.6 kB view details)

Uploaded CPython 3.10Windows x86-64

mpdsp-0.4.1.post2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (356.8 kB view details)

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

mpdsp-0.4.1.post2-cp310-cp310-macosx_11_0_arm64.whl (297.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

mpdsp-0.4.1.post2-cp39-cp39-win_amd64.whl (320.9 kB view details)

Uploaded CPython 3.9Windows x86-64

mpdsp-0.4.1.post2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (357.1 kB view details)

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

mpdsp-0.4.1.post2-cp39-cp39-macosx_11_0_arm64.whl (297.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file mpdsp-0.4.1.post2.tar.gz.

File metadata

  • Download URL: mpdsp-0.4.1.post2.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpdsp-0.4.1.post2.tar.gz
Algorithm Hash digest
SHA256 fd1985a54b89bdfff781dd539f78ae7eb0597f60306c93675461aea35cf640f1
MD5 31c039e77b63f004ff296e698007008c
BLAKE2b-256 02de02de6b9635fb1dbe4394daf4b3148978ce197dfa304d724dfe35ae9eae3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2.tar.gz:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: mpdsp-0.4.1.post2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 320.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpdsp-0.4.1.post2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2bbce6c7a3762e9dc5f971ecec0b6d9f39d28886f8ddf3102687141b5214ff41
MD5 8cef72df2940d063b32881d7d7289240
BLAKE2b-256 cef5e3ed1600bce106967f89290bf22685d237161941fc57defb77c237775fbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 595ff97237a30fa05ba0ffb6659becd50ea4b486e27afc58a65e2a2ce33c623a
MD5 7a6c4a3d0d595201ae313e1dc2a95498
BLAKE2b-256 c08365d432fcdd4476b5c5f30a3ba6713cb7e3ed13ebba51795b3b85eb379a9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45b372709d85ee1421dd3a7405b18b277281d882d438ec02636d045d1853e482
MD5 20e6b17ab15c4790ab0c450cf4ff0eea
BLAKE2b-256 7b038fef1c419399ad9767a6c0717289ad66afb519716d8c32033be296853962

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: mpdsp-0.4.1.post2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 320.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpdsp-0.4.1.post2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0861bd4db099dfcfa784d5c4c6d269c2dcda592a5efe46aca13d4882ae970fdc
MD5 c3618d174c7d44f29709732c4ae22150
BLAKE2b-256 3fb21dd568e1ad66ef30d2c172d1289fd04367c40b24541140bf78ce8e83b8bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4f0e4006d7675896505f92763790aec032e53aa9acdb2a8986d05878eea39e92
MD5 23b6f948860e43372104084028a3291d
BLAKE2b-256 0ed453021b2b6dedfa3be82f4747ed76898e61c58fa6cc2142fb2ad0f2875b81

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 117adce8dc499142ccfdaf9c25ec7f05cd719231ff0d5dd5b0ffd1c9456fe1ab
MD5 ecd9a38cf29f62fe0c53044a7ea3c2c1
BLAKE2b-256 99079a7869731d492d986ddc4d3fae0a67af331f2737cabaed8c2386d3f3d961

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: mpdsp-0.4.1.post2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 320.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpdsp-0.4.1.post2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cd5c81115f50b6f2f4be140348fede0ef3c4282a4f645ec41e08fc452d1f0199
MD5 e7b1cf6db5f8892dbf8b931cde5439f8
BLAKE2b-256 4279c60bcc61d9c2427f151070c92ead34b9776d142654d13e1e62840835eb9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5e660229b32b9fb40cc6689f4965e1ad2d55d72914df58c42f2d0e8a3086f70
MD5 1b09e6e652b2cd77dffe6f7873366055
BLAKE2b-256 fe69b4df110edf2b590ac8d93dab1e759becd60ea497549a80c53c62dd0b2bb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 191c4b92c98722cb266b2e73a4ddf2f2951c762ac442167404af223945f5a4b0
MD5 060cc7770025035b41952f2542bc4b8b
BLAKE2b-256 95dfd9258237fb183907b76c3884550655db1a4ad2d8c055c44fb3de185e7a4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: mpdsp-0.4.1.post2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 320.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpdsp-0.4.1.post2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 811dbbeb732c04c9e56e434cfb4592b5f2abb0b356980fd570c6721610e1d90d
MD5 2c9bc5477f50b9e7fcf0bd68f46b5d32
BLAKE2b-256 dcf26d50bdb6cd7e5f3df8f63df7ea20af6729120013f4a550c19704afb918a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ced9d6b8ae30431212779f48bee7127ad5ac109dc680fdd30d0f3994b9d166bc
MD5 b55d300358f2ccdb242d10133c71d30f
BLAKE2b-256 529610ff1c2f0972379d47b73f543492ad390b828fe97c6923b125c5e79266fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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

File details

Details for the file mpdsp-0.4.1.post2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mpdsp-0.4.1.post2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f9fa439caac57b16dd45997284d9c41c8bf998c12760e6d195c7dc2a7b857a4
MD5 4182d2d7af9bbb92285dbdcdc8099bbe
BLAKE2b-256 385806e7dbecee9be8d1101622ded03efb0c339a72b2b2ea1bb751b311914a3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpdsp-0.4.1.post2-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on stillwater-sc/mp-dsp-python

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