--- license: apache-2.0 library_name: compressionkit pipeline_tag: other tags: - compressionkit - signal-compression - ppg - spiht - wavelet - edge-ai - dsp --- # compressionkit-ppg-spiht-32x A **PPG** signal compression codec built on wavelet + SPIHT + arithmetic coding. **DSP-only — no trained weights.** The deployable artifact is the bitstream contract plus a portable C99 reference implementation. ## Operating point | Field | Value | |-------|-------| | Modality | PPG | | Sample rate | 64 Hz | | Frame size | 320 samples | | Target CR | 32x | | Wavelet | `coif5` | | DWT levels | 6 | | Bit budget | 160 bits/frame | | Entropy coder | arithmetic coding | ## Quality metrics ### Fidelity & Robustness Both fidelity yardsticks are reported so the codec is judged fairly: **faithfulness** is PRD vs the recorded (still-noisy) input, while **truth fidelity** is PRD vs clean ground truth. Lower is better. | Metric | Value | |--------|-------| | Truth PRD vs clean (%) | 19.35 | | Truth PRD at native noise (%) | 40.07 | | Faithful PRD vs input (%) | 20.38 | | PRD degradation slope (PRD%/dB) | 4.18 | | PRD at 0 dB SNR (%) | 78.25 | | PRD at -6 dB SNR (%) | 106.31 | | Pure-noise imprint autocorr | 0.2850 | ### Time Domain _PRD here is faithfulness (vs the recorded input); see **Fidelity & Robustness** above for the clean-truth and noise-regime view._ | Metric | Mean | Median | P90 | |--------|------|--------|-----| | PRD vs input — faithfulness (%) | 20.3765 | 19.8541 | 26.5802 | | RMSE | 0.2038 | 0.1985 | 0.2658 | | Cosine Similarity | 0.9783 | 0.9804 | 0.9889 | ### Spectral - **Band Total Relative Error (median):** 0.1120 ### Bitrate ## Python quickstart ```python from compressionkit.runtime import load_codec codec = load_codec("Ambiq/compressionkit-ppg-spiht-32x") enc = codec.compress(frame) # frame: (frame_size,) float32 recon = codec.decompress(enc) ``` ## C quickstart ```c #include "spiht_app_config.h" float frame[APP_SPIHT_FRAME_SIZE]; uint8_t bitstream[APP_SPIHT_MAX_BYTES]; /* ... fill frame from sensor (post-denoise, if hybrid) ... */ size_t nbits = spiht_encode_frame(&enc, bitstream, APP_SPIHT_MAX_BITS); ``` ## Files | File | Description | |------|-------------| | `config.json` | Deploy manifest (`family: "spiht"`) | | `spiht_config.json` | Codec parameters (language-neutral) | | `sample_stimulus.npz` | Synthetic test frames | | `reference_vectors.npz` | Reference encode/decode vectors | | `c_sources/spiht.[ch]` | Portable C99 reference | | `c_sources/spiht_app_config.h` | Codec-specific defines | | `model_card.json` | Provenance metadata | | `scorecard.json` | Frozen evaluation summary | ## Dataset & license Evaluation data provenance is not recorded in this package; sample data uses synthetic physiokit waveforms only — no patient data is redistributed. Codec source released under the **APACHE-2.0** license. ## Citation ```bibtex @software{compressionkit, author = {Ambiq AI}, title = {compressionKIT: Signal Compression for Edge AI}, url = {https://github.com/AmbiqAI/compressionkit} } ```