예제 #1
0
    def test_threshold_filter(self):
        fake_rri = RRi([810, 830, 860, 865, 804, 1100, 800], time=[0, 1, 2, 3, 4, 5, 6])

        rri_filt = threshold_filter(fake_rri, threshold=250)
        expected_rri = [810, 830, 860, 865, 804, 748.40625, 800]
        expected_time = [0, 1, 2, 3, 4, 5, 6]

        assert isinstance(rri_filt, RRi)
        np.testing.assert_almost_equal(rri_filt.values, expected_rri, decimal=2)
        np.testing.assert_almost_equal(rri_filt.time, expected_time, decimal=2)
예제 #2
0
    def test_threshold_filter_noise_in_the_beginning(self):
        fake_rri = RRi([810, 500, 860, 865, 804, 810, 800], time=[0, 1, 2, 3, 4, 5, 6])

        rri_filt = threshold_filter(fake_rri, threshold=250)
        expected_rri = [810, 814.34375, 860, 865, 804, 810, 800]
        expected_time = [0, 1, 2, 3, 4, 5, 6]

        assert isinstance(rri_filt, RRi)
        np.testing.assert_almost_equal(rri_filt.values, expected_rri, decimal=2)
        np.testing.assert_almost_equal(rri_filt.time, expected_time, decimal=2)
예제 #3
0
    def test_threshold_filter_string_threshold(self):
        fake_rri = RRi([810, 650, 860, 865, 804, 810, 800], time=[0, 1, 2, 3, 4, 5, 6])

        rri_filt = threshold_filter(fake_rri, threshold="strong")
        expected_rri = [810, 814.34375, 860, 865, 804, 810, 800]
        expected_time = [0, 1, 2, 3, 4, 5, 6]

        assert isinstance(rri_filt, RRi)
        np.testing.assert_almost_equal(rri_filt.values, expected_rri, decimal=2)
        np.testing.assert_almost_equal(rri_filt.time, expected_time, decimal=2)
예제 #4
0
 def preprocess_hr_signal(raw_signal,
                          fs,
                          sig_len,
                          desired_fs: int = 1,
                          interval: int = 1):
     """
     correct sampling bias by making a frequency shift, moving average filter and threshold LPF
     :param raw_signal: signal to be preprocessed
     :param fs: the raw_signal's sampling frequency
     :param sig_len: raw signal's number of samples
     :param desired_fs: desired sampling frequency
     :param interval: window for moving average filter
     :return: processed signal
     """
     # interval in hours
     signal = Waveforms.frequency_shift(raw_signal, sig_len, fs, desired_fs)
     signal = pos_sig(signal)
     if np.isnan(signal).all():
         return np.nan
     signal = RRi(signal)
     window = desired_fs * interval * 3600
     return threshold_filter(moving_average(signal, window),
                             threshold='strong')