This repository contains the codes corresponding to study continous blood pressure estimation using PPG features.
Please install the following Python (3.8) libraries:
- hrv-analysis
- biosppy
- pyampd
- scipy
- mat73
- sklearn
- pandas
- numpy
- matplotlib
- pickle
You can skip steps 1,2, and 3 and use the pre-extracted features.csv.
1-
- Download MIMIC II dataset (BP, ECG, PPG) raw signals and save as MATLAB matrices in "data" folder. (similar to the matrices available on UCI BP dataset)
or,
- Use the sample dataset provided in data folder and load it using the following code:
>>> import pickle
>>> with open('data_sample_BP_PPG.pkl', 'rb') as f:
... [data] = pickle.load(f)
2- Run featureExtractor.py
3- Run CSVconcat.py to concat CSV feature files created by the previous step.
4- Run BPEstimation.py to fit and test machine learning based models.
The results of BP estimation using Random Forest model (10-fold cross validation, MIMIC II dataset):
Systolic BP: corr=0.79, MAE=11.12 mmHg, STD=9.96 mmHg
Diastolic BP: corr=0.78, MAE=4.06 mmHg, STD=3.95 mmHg
Please use the following citation:
Hasanzadeh, Navid, Mohammad Mahdi Ahmadi, and Hoda Mohammadzade. "Blood pressure estimation using photoplethysmogram signal and its morphological features." IEEE Sensors Journal 20, no. 8 (2019): 4300-4310.