-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.py
More file actions
73 lines (53 loc) · 1.8 KB
/
example.py
File metadata and controls
73 lines (53 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import scipy.datasets
import neurokit2
import sleepecg
import wfdb.processing
import wfdb
def example_neurokit2(ecg_signal):
"""
Это пример использования библиотеки neurokit2 для поиска пиков.
:param ecg_signal: numpy массив с размерностью 1
:return:
"""
_, r_peaks = neurokit2.ecg_peaks(ecg_signal, sampling_rate=360)
return r_peaks
def example_sleepecg(ecg_signal):
"""
Это пример использования библиотеки sleepecg для поиска пиков.
:param ecg_signal:
:return:
"""
r_peaks = sleepecg.detect_heartbeats(ecg_signal, fs=360)
return r_peaks
def example_wfdb(ecg_signal):
"""
Это пример использования библиотеки wfdb для поиска пиков.
:param ecg_signal:
:return:
"""
r_peaks = wfdb.processing.xqrs_detect(ecg_signal, fs=360, verbose=False)
return r_peaks
def correct_r_peaks(ecg_signal, r_peaks):
"""
Некоторые R пики сдвигаются в процессе обработки и их иногда нужно обработать
:param r_peaks:
:return:
"""
return wfdb.processing.correct_peaks(ecg_signal, r_peaks, search_radius=36, smooth_window_size=50, peak_dir="up")
def main():
ecg_signal = scipy.datasets.electrocardiogram()
r_peaks = example_sleepecg(ecg_signal)
# r_peaks = example_wfdb(ecg_signal)
corrected_r_peaks = correct_r_peaks(ecg_signal, r_peaks)
fig = wfdb.plot_items(
ecg_signal,
[corrected_r_peaks],
fs=360,
sig_name=["ECG"],
sig_units=["mV"],
time_units="seconds",
# return_fig=True,
ann_style="o",
)
if __name__ == "__main__":
main()