systole.detection.ecg_peaks#
- systole.detection.ecg_peaks(signal: List | ndarray | Series, sfreq: int = 1000, new_sfreq: int = 1000, method: str = 'sleepecg', find_local: bool = False, win_size: float = 0.1, clean_nan: bool = False, verbose: bool = False) Tuple[ndarray, ndarray] [source]#
A simple wrapper for many popular R peaks detectors algorithms.
This function calls methods from py-ecg-detectors [1].
- Parameters:
- signal
The raw ECG signal.
- sfreq
The sampling frequency. Default is set to 1000 Hz.
- new_sfreq
The new sampling frequency. Defaults to 1000 Hz.
- method
The method used. Can be one of the following: ‘sleepecg’, ‘hamilton’, ‘christov’, ‘engelse-zeelenberg’, ‘pan-tompkins’, ‘moving-average’.
- find_local
If True, will use peaks indexs to search for local peaks given the window size (win_size).
- win_size
Size of the time window used by
systole.utils.to_neighbour()
expressed in seconds. Defaut set to 0.1.- clean_nan
If True, will interpolate NaNs values if any before any other operation. Defaults to False.
- verbose
Control function verbosity. Defaults to False (do not print processing steps).
- Returns:
- resampled_signal
Signal resampled to the new_sfreq frequency.
- peaks
Boolean array corresponding to the R peaks detection.
- Raises:
- ValueError
- If method is not one of the following: ‘hamilton’, ‘christov’,
‘engelse-zeelenberg’, ‘pan-tompkins’, ‘moving-average’
Notes
Warning
This function will resample the signal to 1000 Hz.
References
[1]Howell, L., Porr, B. Popular ECG R peak detectors written in python. DOI: 10.5281/zenodo.3353396
Examples
>>> from systole import import_dataset >>> from systole.detection import ecg_peaks >>> signal_df = import_dataset()[:20*2000] >>> signal, peaks = ecg_peaks(signal_df.ecg.to_numpy(), method='hamilton', >>> sfreq=2000, find_local=True) >>> print(f'{sum(peaks)} peaks detected.') 24 peaks detected.