skillfed

pyPPG

pyPPG: a python toolbox for PPG morphological analysis.

pyppg v1.0.73 95.1K downloads/30d#13,290 on PyPI75
AGPL license AGING released

What it is and what it does

pyPPG is a Python toolbox for analyzing finger photoplethysmogram (PPG) signals—the optical signals captured from fingertip blood flow. It automates the full pipeline of PPG analysis: loading raw signals from multiple file formats (MAT, TXT, CSV, EDF), preprocessing to remove noise and compute signal derivatives, detecting individual pulse waves by identifying systolic peaks and pulse onsets/offsets, and extracting a comprehensive set of 74 biomarkers (pulse wave features) that characterize cardiac and vascular properties. The toolbox is built on validated algorithms tested against public PPG databases and provides a signal quality index.

The package is intended for researchers and clinicians who need to extract standardized cardiac biomarkers from continuous PPG recordings. It handles real-time analysis of long-term recordings and abstracts away the complexity of beat detection and fiducial point identification, allowing users to focus on downstream analysis or clinical interpretation. The toolbox depends heavily on scipy, numpy, and pandas for numerical computation, plus wfdb and mne for signal I/O, and includes a web-based GUI via Eel for interactive use.

Use it for:

  • Extract heart rate and pulse wave morphology features from finger PPG recordings for cardiovascular research or clinical studies.
  • Preprocess and segment PPG signals from wearable devices or clinical monitors to identify individual heartbeats and their fiducial points.
  • Batch analyze multiple PPG files in different formats (MAT, CSV, EDF) to compute standardized biomarkers for population-level health assessment.
  • Develop custom cardiac analysis pipelines by using pyPPG's API to load, filter, and extract biomarkers within your own Python code.
  • Assess PPG signal quality and detect artifacts in continuous recordings before downstream analysis or machine learning model input.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Analyzes finger photoplethysmogram (PPG) signals to detect pulse waves, identify fiducial points, and extract biomarkers from continuous PPG recordings.

Yes, with conditions. Install if you work with finger PPG signals and need validated, standardized biomarker extraction—the toolbox is well-documented, has no known vulnerabilities, and is actively maintained at the repository level. However, be aware that the last PyPI release was over a year ago (aging status), the AGPL v3 license requires open-source compliance or internal-only use, and the 66 runtime dependencies create a large installation footprint. Verify that the aging release cycle does not conflict with your stability or support expectations.

Install

pyppg on PyPI

pip

pip install pyppg

uv

uv add pyppg

poetry

poetry add pyppg

Installing pyPPG

Before you install

Low friction installation via pip. Maintenance status is aging—last release was over a year ago (2024-07-21), though the repository remains active with a recent commit (2025-04-28). The package carries 66 runtime dependencies including scipy, numpy, pandas, and visualization libraries; this large dependency tree increases the surface area for transitive issues.

License in practice

Licensed under AGPL v3, which requires that any modifications or derivative works distributed must also be released under AGPL v3 and make source code available. This is a strong copyleft license; use it only if you can comply with open-source redistribution obligations or if your use is internal only.

Quickstart

pip install pyPPG

import pyppg
# Load and analyze a PPG signal from a file
ppg_signal = pyppg.load_signal('signal.mat')
biomarkers = ppg_signal.get_biomarkers()

Requires Python >= 3.10. The package has a large dependency tree (66 runtime packages) which may take time to resolve and install.

Verify before relying

  • Whether the aging maintenance status (last release 754 days ago) affects real-world usability or if the package is stable enough for production use.
  • Performance characteristics and scalability for processing long-term or high-frequency PPG recordings.
  • Whether all 66 runtime dependencies are strictly necessary or if some are optional/unused in typical workflows.

Package facts

License not declared (agpl)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 66 — scipy, numpy, dotmap, pandas, wfdb, mne, Eel, Jinja2, MarkupSafe, Pillow, altgraph, appdirs, attrs, auto-py-to-exe, boltons, bottle, bottle-websocket, certifi, cffi, chardet, charset-normalizer, colorama, contourpy, cycler, decorator, dotteddict, face, fonttools, future, gevent
Maintenance aging — 754 days since the last release
Last repo commit
First released
Downloads 95,143/month — #13,290 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pyPPG-1.0.73-py3-none-any.whl

License :: OSI Approved :: GNU Affero General Public License v3Operating System :: OS IndependentProgramming Language :: Python :: 3

Tags

PPG signal analysisphotoplethysmogram processingpulse wave detectionheart rate biomarkersPPG beat detectionfiducial point detectioncardiac signal analysis
signal-processingbiomedicalcardiovascular

More Information Analysis packages