A toolbox for finger photoplethysmogram (PPG) analysis, including beat detection, fiducial point detection, and comprehensive assessment of standard biomarkers.
If you use the pyPPG resource, please cite:
Goda, M. A., Charlton, P. H., & Behar, J. A. (2023). pyPPG: A Python toolbox for comprehensive photoplethysmography signal analysis. DOI 10.1088/1361-6579/ad33a2, (THE ACCEPTED MANUSCRIPT IS AVAILABLE HERE)
pyPPG is a standardised toolbox to analyze long-term finger PPG recordings in real-time. The toolbox extracts state-of-the-art PPG biomarkers (i.e. pulse wave features) from PPG signals. The algorithms implemented in the pyPPG toolbox have been validated on freely available PPG databases. Consequently, pyPPG offers robust and comprehensive assessment of clinically relevant biomarkers from continuous PPG signals.
The following steps are implemented in the pyPPG toolbox:
The pyPPG toolbox also provides an optional PPG signal quality index based on the Matlab implementation of the work by (Li et al. 2015).
The toolbox identifies individual pulse waves in a PPG signal by identifying systolic peaks (sp), and then identifying the pulse onset (on) and offset (off) on either side of each systolic peak which indicate the start and end of the pulse wave, respectively.
Available on pip, with the command: pip install pyPPG
pip project: https://pypi.org/project/pyPPG/
For more details see the pyPPG example code and pyPPG YouTube video
Python == 3.10
scipy == 1.9.1
numpy == 1.23.2
dotmap == 1.3.30
pandas == 1.5.0
wfdb == 4.0.0
mne == 1.5.0
All the python requirements are installed when the toolbox is installed, so there is no need for any additional commands.
For more details see the Validation and Benchmarking
The fiducial point annotations and benchmarking results are accessible at doi.org/10.5281/zenodo.10523285.
https://pyppg.readthedocs.io/en/latest/
Databases
The pyPPG signal analysis is based on the following datasets:
Further PPG datasets:
All PPG measures can be further adapted for the analysis for efficient heart rate measurement as well as health assessment with clinically relevant biomarkers.
This work was supported by the Estate of Zofia (Sophie) Fridman and funding from the Israel Innovation Authority, COST Action CA18216 VascAgeNet, supported by COST (European Cooperation in Science and Technology), and the British Heart Foundation (grant FS/20/20/34626).