Source code for pyPPG.ppg_bm.statistics

import numpy as np
import pandas as pd
import scipy.stats
import warnings

warnings.filterwarnings("ignore", category=RuntimeWarning)

###########################################################################
###################### Statistics of PPG Biomarkers #######################
###########################################################################

[docs] def get_statistics(peaks: pd.Series, onsets: pd.Series, ppg_biomarkers: dict): """ The function compares the different biomedical features of PPG signal. :param peaks: 1-d array, peaks of the signal :type peaks: Series :param onsets: 1-d array, onsets of the signal :type onsets: Series :param ppg_biomarkers: dictionary of the PPG biomarkers :type ppg_biomarkers: dict :return: df_windows: data frame with summary of PPG features """ BM_keys = list(ppg_biomarkers.keys()) ppg_statistics={} for j in range (0, len(BM_keys)): df_features=ppg_biomarkers[BM_keys[j]] df_stat = pd.DataFrame() for k in df_features.keys(): data = df_features[k].values data = data[~np.isnan(data)] df_tempstat = {} try: df_tempstat['mean'] = np.mean(data) except: pass try: df_tempstat['median'] = np.median(data) except: pass try: df_tempstat['std'] = np.std(data) except: pass try: percentile_25 = np.percentile(data, 25) except: pass try: percentile_75 = np.percentile(data, 75) except: pass try: df_tempstat['percentile_25'] = percentile_25 except: pass try: df_tempstat['percentile_75'] = percentile_75 except: pass try: df_tempstat['iqr'] = percentile_75 - percentile_25 except: pass try: df_tempstat['skew'] = scipy.stats.skew(data) except: pass try: df_tempstat['kurtosis'] = scipy.stats.kurtosis(data) except: pass try: df_tempstat['mad'] = np.mean(np.absolute(data - np.mean(data))) except: pass try:df_stat[k]=df_tempstat.values() except: pass df_stat.index = ['mean', 'median', 'std', 'percentile_25', 'percentile_75', 'iqr', 'skew', 'kurtosis', 'mad'] ppg_statistics[BM_keys[j]]=df_stat return ppg_statistics