Pre-Processing¶
Filters¶
Moving Average
from hrv.filters import moving_average
filt_rri = moving_average(rri, order=3)
fig, ax = rri.plot()
filt_rri.plot(ax=ax)
Moving Median
from hrv.filters import moving_median
filt_rri = moving_median(rri, order=3)
fig, ax = rri.plot()
filt_rri.plot(ax=ax)
Quotient
from hrv.filters import quotient
filt_rri = quotient(rri)
fig, ax = rri.plot()
filt_rri.plot(ax=ax)
Threshold Filter
This filter is inspired by the threshold-based artifact correction algorithm offered by kubios <sup>®</sup> . To elect outliers in the tachogram series, each RRi is compared to the median value of local RRi (default N=5). All the RRi which the difference is greater than the local median value plus a threshold is replaced by cubic interpolated RRi.
The threshold filter has five pre-defined strength values:
- Very Low: 450ms
- Low: 350ms
- Medium: 250ms
- Strong: 150ms
- Very Strong: 50ms
It also accepts custom threshold values (in milliseconds). The following snippet shows the ectopic RRi removal:
from hrv.filters import threshold_filter
filt_rri = threshold_filter(rri, threshold='medium', local_median_size=5)
fig, ax = rri.plot()
filt_rri.plot(ax=ax)
Detrending¶
The hrv module also offers functions to remove the non-stationary trends from the RRi series. It allows the removal of slow linear or more complex trends using the following approaches:
Polynomial models
Given a degree a polynomial filter is applied to the RRi series and subtracted from the tachogram
from hrv.detrend import polynomial_detrend
rri_detrended = polynomial_detrend(rri, degree=1)
fig, ax = rri.plot()
rri_detrended.plot(ax, color='k')
Smoothness priors
Developed by Tarvainen et al, allow the removal of complex trends. Visit here for more information.
It worth noticing that the detrended RRi with the Smoothness priors approach is also interpolated
and resampled using frequency equals to `fs`
.
from hrv.detrend import smoothness_priors
rri_detrended = smoothness_priors(rri, l=500, fs=4.0)
fig, ax = rri.plot()
rri_detrended.plot(ax, color='k')
Note: this approach depends on a numpy matrix inversion and due to floating-point precision it might present round-off errors in the trend calculation
Savitzky-Golay
Uses the lowpass filter known as Savitzky-Golay filter to smooth the RRi series and remove slow components from the tachogram
from hrv.detrend import sg_detrend
rri_detrended = sg_detrend(rri, window_size=51, polyorder=3)
fig, ax = rri.plot()
rri_detrended.plot(ax, color='k')