vital_sqi.common package

Submodules

vital_sqi.common.generate_template module

Generating templates of ECG and PPG complexes

vital_sqi.common.generate_template.ecg_dynamic_template(width, sfecg=256, N=256, Anoise=0, hrmean=60, hrstd=1, lfhfratio=0.5, sfint=512, ti=array([- 70, - 15, 0, 15, 100]), ai=array([1.2, - 5., 30., - 7.5, 0.75]), bi=array([0.25, 0.1, 0.1, 0.1, 0.4]))[source]

EXPOSE :param width: :param sfecg: :param N: :param Anoise: :param hrmean: :param hrstd: :param lfhfratio: :param sfint: :param ti: :param ai: :param bi: :return:

vital_sqi.common.generate_template.interp(ys, mul)[source]

handy func :param ys: :param mul: :return:

vital_sqi.common.generate_template.ordinary_differential_equation(t, x_equations, rr=None, sfint=None, ti=None, ai=None, bi=None)[source]

handy :param t: :param x_equations: :param rr: :param sfint: :param ti: :param ai: :param bi: :return:

vital_sqi.common.generate_template.ppg_absolute_dual_skewness_template(width, e_1=1, w_1=2.5, e_2=3, w_2=3, a=4)[source]

EXPOSE Generate a PPG template by using 2 skewness distribution. :param width: the sample size of the generated waveform :param e_1: the epsilon location of the first skew distribution :param w_1: the scale of the first skew distribution :param e_2: the epsilon location of the second skew distribution :param w_2: the scale of the second skew distribution :param a: the order :return: a 1-D numpy array of PPG waveform having diastolic peak at the high position

vital_sqi.common.generate_template.ppg_dual_double_frequency_template(width)[source]

EXPOSE Generate a PPG template by using 2 sine waveforms. The first waveform double the second waveform frequency :param width: the sample size of the generated waveform :return: a 1-D numpy array of PPG waveform having diastolic peak at the low position

vital_sqi.common.generate_template.ppg_nonlinear_dynamic_system_template(width)[source]

EXPOSE :param width: :return:

vital_sqi.common.generate_template.rr_process(flo, fhi, flostd, fhistd, lfhfratio, hrmean, hrstd, sfrr, n)[source]

handy :param flo: :param fhi: :param flostd: :param fhistd: :param lfhfratio: :param hrmean: :param hrstd: :param sfrr: :param n: :return:

vital_sqi.common.generate_template.skew_func(x, e=0, w=1, a=0)[source]

handy :param x: input sequence of time points :param e: location :param w: scale :param a: the order :return: a 1-D numpy array of a skewness distribution

vital_sqi.common.rpeak_detection module

R peak detection approaches for PPG and ECG

class vital_sqi.common.rpeak_detection.PeakDetector(wave_type='ppg', fs=100)[source]

Bases: object

Various peak detection approaches getting from the paper Systolic Peak Detection in Acceleration Photoplethysmograms Measured from Emergency Responders in Tropical Conditions

compute_feature(s, local_extrema)[source]

handy :param s: :param local_extrema:

detect_peak_trough_adaptive_threshold(s, adaptive_size=0.75, overlap=0, sliding=1)[source]
Parameters
  • s

  • adaptive_size

  • overlap – overlapping ratio

Returns

detect_peak_trough_clusterer(s, clusterer='kmean', **kwargs)[source]

handy Method 1: using clustering technique

Parameters
  • s – The input signals

  • method – param kwargs:

  • **kwargs

Returns

tuple of 1-D numpy array the first array is the peak list and the second array is the troughs list

Return type

type

detect_peak_trough_count_orig(s)[source]

handy Method 2: using local extreme technique with threshold

Parameters

s – Input signal

Returns

tuple of 1-D numpy array the first array is the peak list and the second array is the troughs list

Return type

type

detect_peak_trough_default_scipy(s)[source]
detect_peak_trough_moving_average_threshold(s)[source]

handy Method 4 (examine second derivative)

Parameters

s – return:

detect_peak_trough_slope_sum(s)[source]

handy Method 3: analyze the slope sum to get local extreme

Parameters

s – return:

ecg_detector(s, detector_type='pan_tompkins')[source]

Expose

ECG peak detector from the github https://github.com/berndporr/py-ecg-detectors

Parameters
  • s – Input signal

  • fs – The signal frequency. Default is ‘256 Hz’

  • detector_type

    ‘hamilton’: Open Source ECG Analysis Software Documentation, E.P.Limited, 2002.

    ’christov’:Real time electrocardiogram QRS detection using combined adaptive threshold

    ’engzee’: A single scan algorithm for QRS detection and feature extraction

    ’swt’: Real-time QRS detector using Stationary Wavelet Transform for Automated ECG Analysis. Uses the Pan and Tompkins thresolding.

    ’mva’: Frequency Bands Effects on QRS Detection.

    ’mtemp’:

    ’pan_tompkins’: A Real-Time QRS Detection Algorithm

    Default = ‘pan_tompkins’

Returns

an array of 1-D numpy array represent the peak list

Return type

type

get_ROI(s, mva)[source]
get_moving_average(q, w)[source]

handy :param q: :param w:

matched_filter_detector(unfiltered_ecg)[source]

handy FIR matched filter using template of QRS complex. Template provided in generate_template file

ppg_detector(s, detector_type=1, clusterer='kmean', preprocess=True, cubing=False)[source]

Expose

PPG peak detector from the paper Systolic Peak Detection in Acceleration Photoplethysmograms Measured from Emergency Responders in Tropical Conditions

Parameters
  • s – the input signal

  • detector_type

  • clusterer

Returns

search_for_onset(idx, local_max)[source]

handy :param Z: :param idx: :param local_max:

Module contents

vital_sqi.common

A subpackage for shared operations across package vital_sqi