Skip to content

clean

ECG cleaning methods.

Functions

clean(data, lowcut=0.5, highcut=30, sample_rate=1000, order=3, axis=-1, forward_backward=True)

Clean ECG signal by applying biquad filter.

By default, a 3rd order Butterworth bandpass filter from 0.5 to 30 Hz is applied.

Parameters:

  • data (NDArray) –

    ECG signal.

  • lowcut (float, default: 0.5 ) –

    Lower cutoff in Hz. Defaults to 0.5 Hz.

  • highcut (float, default: 30 ) –

    Upper cutoff in Hz. Defaults to 30 Hz.

  • sample_rate (float, default: 1000 ) –

    Sampling rate in Hz. Defaults to 1000 Hz.

  • order (int, default: 3 ) –

    Filter order. Defaults to 3 (3rd order Butterworth filter).

  • axis (int, default: -1 ) –

    Axis to apply against. Defaults to -1.

  • forward_backward (bool, default: True ) –

    Apply filter forward and backward. Defaults to True.

Returns:

  • NDArray

    npt.NDArray: Cleaned ECG signal.

Source code in physiokit/ecg/clean.py
def clean(
    data: npt.NDArray,
    lowcut: float = 0.5,
    highcut: float = 30,
    sample_rate: float = 1000,
    order: int = 3,
    axis: int = -1,
    forward_backward: bool = True,
) -> npt.NDArray:
    """Clean ECG signal by applying biquad filter.

    By default, a 3rd order Butterworth bandpass filter from 0.5 to 30 Hz is applied.

    Args:
        data (npt.NDArray): ECG signal.
        lowcut (float, optional): Lower cutoff in Hz. Defaults to 0.5 Hz.
        highcut (float, optional): Upper cutoff in Hz. Defaults to 30 Hz.
        sample_rate (float, optional): Sampling rate in Hz. Defaults to 1000 Hz.
        order (int, optional): Filter order. Defaults to 3 (3rd order Butterworth filter).
        axis (int, optional): Axis to apply against. Defaults to -1.
        forward_backward (bool, optional): Apply filter forward and backward. Defaults to True.

    Returns:
        npt.NDArray: Cleaned ECG signal.
    """

    # Bandpass filter
    ecg_clean = filter_signal(
        data=data,
        lowcut=lowcut,
        highcut=highcut,
        sample_rate=sample_rate,
        order=order,
        axis=axis,
        forward_backward=forward_backward,
    )

    return ecg_clean

square_filter_mask(rr_ints, lowcut=300, highcut=900)

Mask out RR intervals that fall outside bounds.

Parameters:

  • rr_ints (NDArray) –

    RR-interval list in ms.

  • lowcut (float, default: 300 ) –

    Lower cutoff limit. Defaults to 300 ms.

  • highcut (float, default: 900 ) –

    Upper cutoff limit. Defaults to 900 ms.

Returns:

  • NDArray

    npt.NDArray: RR rejection mask 0=accept, 1=reject.

Source code in physiokit/ecg/clean.py
def square_filter_mask(rr_ints: npt.NDArray, lowcut: float = 300, highcut: float = 900) -> npt.NDArray:
    """Mask out RR intervals that fall outside bounds.

    Args:
        rr_ints (npt.NDArray): RR-interval list in ms.
        lowcut (float, optional): Lower cutoff limit. Defaults to 300 ms.
        highcut (float, optional): Upper cutoff limit. Defaults to 900 ms.

    Returns:
        npt.NDArray: RR rejection mask 0=accept, 1=reject.
    """
    rr_mask = np.where((rr_ints < lowcut) | (rr_ints > highcut), 1, 0)
    return rr_mask