wogh2012 commited on
Commit
7e401f6
·
1 Parent(s): 1c46aff

feat: add gradio app to demonstrating segmentations by hrnet

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. README.md +1 -1
  2. app.py +212 -0
  3. requirements.txt +4 -0
  4. res/ludb/{test_for_public.csv → dataset/test_for_public.csv} +0 -0
  5. res/ludb/{train_for_public.csv → dataset/train_for_public.csv} +0 -0
  6. res/ludb/{valid_for_public.csv → dataset/valid_for_public.csv} +0 -0
  7. res/ludb/ecg_np/1.npy +3 -0
  8. res/ludb/ecg_np/10.npy +3 -0
  9. res/ludb/ecg_np/100.npy +3 -0
  10. res/ludb/ecg_np/101.npy +3 -0
  11. res/ludb/ecg_np/102.npy +3 -0
  12. res/ludb/ecg_np/103.npy +3 -0
  13. res/ludb/ecg_np/104.npy +3 -0
  14. res/ludb/ecg_np/105.npy +3 -0
  15. res/ludb/ecg_np/106.npy +3 -0
  16. res/ludb/ecg_np/107.npy +3 -0
  17. res/ludb/ecg_np/108.npy +3 -0
  18. res/ludb/ecg_np/109.npy +3 -0
  19. res/ludb/ecg_np/11.npy +3 -0
  20. res/ludb/ecg_np/110.npy +3 -0
  21. res/ludb/ecg_np/111.npy +3 -0
  22. res/ludb/ecg_np/112.npy +3 -0
  23. res/ludb/ecg_np/113.npy +3 -0
  24. res/ludb/ecg_np/114.npy +3 -0
  25. res/ludb/ecg_np/115.npy +3 -0
  26. res/ludb/ecg_np/116.npy +3 -0
  27. res/ludb/ecg_np/117.npy +3 -0
  28. res/ludb/ecg_np/118.npy +3 -0
  29. res/ludb/ecg_np/119.npy +3 -0
  30. res/ludb/ecg_np/12.npy +3 -0
  31. res/ludb/ecg_np/120.npy +3 -0
  32. res/ludb/ecg_np/121.npy +3 -0
  33. res/ludb/ecg_np/122.npy +3 -0
  34. res/ludb/ecg_np/123.npy +3 -0
  35. res/ludb/ecg_np/124.npy +3 -0
  36. res/ludb/ecg_np/125.npy +3 -0
  37. res/ludb/ecg_np/126.npy +3 -0
  38. res/ludb/ecg_np/127.npy +3 -0
  39. res/ludb/ecg_np/128.npy +3 -0
  40. res/ludb/ecg_np/129.npy +3 -0
  41. res/ludb/ecg_np/13.npy +3 -0
  42. res/ludb/ecg_np/130.npy +3 -0
  43. res/ludb/ecg_np/131.npy +3 -0
  44. res/ludb/ecg_np/132.npy +3 -0
  45. res/ludb/ecg_np/133.npy +3 -0
  46. res/ludb/ecg_np/134.npy +3 -0
  47. res/ludb/ecg_np/135.npy +3 -0
  48. res/ludb/ecg_np/136.npy +3 -0
  49. res/ludb/ecg_np/137.npy +3 -0
  50. res/ludb/ecg_np/138.npy +3 -0
README.md CHANGED
@@ -4,7 +4,7 @@ emoji: 🌍
4
  colorFrom: red
5
  colorTo: pink
6
  sdk: gradio
7
- sdk_version: 5.11.0
8
  app_file: app.py
9
  pinned: false
10
  license: apache-2.0
 
4
  colorFrom: red
5
  colorTo: pink
6
  sdk: gradio
7
+ sdk_version: 5.12.0
8
  app_file: app.py
9
  pinned: false
10
  license: apache-2.0
app.py ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # from io import BytesIO
2
+ import gradio as gr
3
+ import pandas as pd
4
+ import numpy as np
5
+ import torch
6
+ import os
7
+ from aitiautils.model_loader import ModelLoader
8
+ import tempfile
9
+ import matplotlib.pyplot as plt
10
+ import traceback as tb
11
+
12
+ # True 이면, tmp directory 에 파일 존재 유무와 상관없이 항상 새로운 이미지 생성
13
+ ALWAYS_RECREATE_IMAGE = os.getenv("ALWAYS_RECREATE_IMAGE", "False").lower() == "true"
14
+ selected_columns = ["subject_id", "no_p", "Rhythm", "Electric axis of the heart", "Etc"]
15
+ train_df = pd.read_csv("./res/ludb/dataset/train_for_public.csv").drop_duplicates(
16
+ subset=["subject_id"]
17
+ )[selected_columns]
18
+ valid_df = pd.read_csv("./res/ludb/dataset/valid_for_public.csv").drop_duplicates(
19
+ subset=["subject_id"]
20
+ )[selected_columns]
21
+ test_df = pd.read_csv("./res/ludb/dataset/test_for_public.csv").drop_duplicates(
22
+ subset=["subject_id"]
23
+ )[selected_columns]
24
+ cutoffs = [0.001163482666015625, 0.15087890625, -0.587890625]
25
+ lead_names = ["I", "II", "III", "aVR", "aVL", "aVF", "V1", "V2", "V3", "V4", "V5", "V6"]
26
+
27
+
28
+ def gen_seg(subject_id):
29
+ input = np.load(f"./res/ludb/ecg_np/{subject_id}.npy")
30
+ network = ModelLoader("./res/models/hrnetv2/checkpoint.pth").get_network()
31
+ output: torch.Tensor = network(torch.from_numpy(input)).detach().numpy()
32
+ seg = [(output[:, i, :] >= cutoffs[i]).astype(int) for i in range(len(cutoffs))]
33
+ return input, np.stack(seg, axis=1)
34
+
35
+
36
+ def concat_short_interval(seg, th):
37
+ """seg에서 구간(1)과 구간(1) 사이에 th 보다 짧은 부분(0)을 이어 붙인다. (0 -> 1)"""
38
+ # seg 에서 같은 구간끼리 그룹을 만듦. ex: seg = [0, 0, 1, 1, 0, 1, 1, 1, 1] -> seg_groups=[[0, 0], [1, 1], [0], [1, 1, 1, 1]]]
39
+ seg_groups = np.split(seg, np.where(np.diff(seg) != 0)[0] + 1)
40
+ for i in range(1, len(seg_groups) - 1): # 첫 번째와 마지막 그룹 제외
41
+ group = seg_groups[i]
42
+ if len(group) <= th and np.all(group == 0):
43
+ seg_groups[i] = np.ones_like(group) # 0 -> 1
44
+
45
+ return np.concatenate(seg_groups)
46
+
47
+
48
+ def remove_short_duration(seg, th):
49
+ """seg의 구간(1)중에 th 보다 짧은 구간은 제거 (1 -> 0)"""
50
+ seg_groups = np.split(seg, np.where(np.diff(seg) != 0)[0] + 1)
51
+ for i, group in enumerate(seg_groups):
52
+ if len(group) <= th and np.all(group == 1):
53
+ seg_groups[i] = np.zeros_like(group) # 1 -> 0
54
+
55
+ return np.concatenate(seg_groups)
56
+
57
+
58
+ def gen_each_image(input, seg, image_path, ths, pp=False):
59
+ fig = plt.figure(figsize=(15, 18))
60
+ plt.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.02, hspace=0.2)
61
+ for idx, (in_by_lead, seg_by_lead) in enumerate(zip(input, seg)):
62
+ sub_fig = fig.add_subplot(12, 1, idx + 1)
63
+ sub_fig.text(
64
+ 0.02,
65
+ 0.5,
66
+ f"{lead_names[idx]}",
67
+ fontsize=9,
68
+ fontweight="bold",
69
+ ha="center",
70
+ va="center",
71
+ rotation=90,
72
+ transform=sub_fig.transAxes,
73
+ )
74
+ sub_fig.set_xticks([])
75
+ sub_fig.set_yticks([])
76
+ sub_fig.plot(
77
+ range(len(in_by_lead[0])), in_by_lead[0], color="black", linewidth=1.0
78
+ )
79
+ p_seg = seg_by_lead[0]
80
+ qrs_seg = seg_by_lead[1]
81
+ t_seg = seg_by_lead[2]
82
+ if pp:
83
+ p_seg = remove_short_duration(concat_short_interval(p_seg, ths[0]), ths[1])
84
+ qrs_seg = remove_short_duration(
85
+ concat_short_interval(qrs_seg, ths[2]), ths[3]
86
+ )
87
+ t_seg = remove_short_duration(concat_short_interval(t_seg, ths[4]), ths[5])
88
+ sub_fig.plot(
89
+ range(len(p_seg)), p_seg / 2, label="P", color="red", linewidth=0.7
90
+ )
91
+ sub_fig.plot(
92
+ range(len(qrs_seg)), qrs_seg, label="QRS", color="green", linewidth=0.7
93
+ )
94
+ sub_fig.plot(
95
+ range(len(t_seg)), t_seg / 2, label="T", color="blue", linewidth=0.7
96
+ )
97
+ plt.savefig(image_path, dpi=150)
98
+ plt.close()
99
+
100
+
101
+ def gen_image(subject_id, image_path, pp_image_path, ths):
102
+ try:
103
+ input, seg = gen_seg(subject_id)
104
+ gen_each_image(input, seg, image_path, ths)
105
+ gen_each_image(input, seg, pp_image_path, ths, True)
106
+ return True
107
+ except Exception:
108
+ print(tb.format_exc())
109
+ return False
110
+
111
+
112
+ with gr.Blocks() as demo:
113
+ with gr.Tab("App"):
114
+ with gr.Row():
115
+ gr.Textbox(
116
+ "Welcome to visit ECG-Delineation space",
117
+ label="Information",
118
+ lines=1,
119
+ )
120
+ gr_dfs = []
121
+ with gr.Row():
122
+ gr_dfs.append(
123
+ gr.Dataframe(
124
+ value=train_df,
125
+ interactive=False,
126
+ max_height=250,
127
+ label="our train dataset. (source: ./res/ludb/dataset/train_for_public.csv)",
128
+ )
129
+ )
130
+
131
+ with gr.Row():
132
+ gr_dfs.append(
133
+ gr.Dataframe(
134
+ value=valid_df,
135
+ interactive=False,
136
+ max_height=250,
137
+ label="our valid dataset. (source: ./res/ludb/dataset/valid_for_public.csv)",
138
+ )
139
+ )
140
+
141
+ with gr.Row():
142
+ gr_dfs.append(
143
+ gr.Dataframe(
144
+ value=test_df,
145
+ interactive=False,
146
+ max_height=250,
147
+ label="our test dataset. (source: ./res/ludb/dataset/test_for_public.csv)",
148
+ )
149
+ )
150
+
151
+ with gr.Row():
152
+ gr_ths = [
153
+ gr.Textbox(
154
+ label="Interval Threshold of P (ms)",
155
+ lines=1,
156
+ value="10",
157
+ ),
158
+ gr.Textbox(
159
+ label="Duration Threshold of P (ms)",
160
+ lines=1,
161
+ value="50",
162
+ ),
163
+ gr.Textbox(
164
+ label="Interval Threshold of QRS (ms)",
165
+ lines=1,
166
+ value="50",
167
+ ),
168
+ gr.Textbox(
169
+ label="Duration Threshold of QRS (ms)",
170
+ lines=1,
171
+ value="50",
172
+ ),
173
+ gr.Textbox(
174
+ label="Interval Threshold of T (ms)",
175
+ lines=1,
176
+ value="30",
177
+ ),
178
+ gr.Textbox(
179
+ label="Duration Threshold of T (ms)",
180
+ lines=1,
181
+ value="50",
182
+ ),
183
+ ]
184
+
185
+ with gr.Row():
186
+ gr_image = gr.Image(type="filepath", label="Output")
187
+ gr_pp_image = gr.Image(type="filepath", label="PostProcessed Output")
188
+
189
+ def show_image(df: pd.DataFrame, evt: gr.SelectData, *ths):
190
+ subject_id = evt.row_value[0]
191
+
192
+ image_path = f"{tempfile.gettempdir()}/ludb_{subject_id}.png"
193
+ pp_image_path = f"{tempfile.gettempdir()}/ludb_{subject_id}_pp.png"
194
+ if not ALWAYS_RECREATE_IMAGE and (
195
+ os.path.exists(image_path) and os.path.exists(pp_image_path)
196
+ ):
197
+ return [image_path, pp_image_path]
198
+
199
+ gen_image(
200
+ subject_id, image_path, pp_image_path, [int(th) / 2 for th in ths]
201
+ )
202
+
203
+ return [image_path, pp_image_path]
204
+
205
+ for gr_df in gr_dfs:
206
+ gr_df.select(
207
+ fn=show_image,
208
+ inputs=[gr_df, *gr_ths],
209
+ outputs=[gr_image, gr_pp_image],
210
+ )
211
+
212
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ --extra-index-url https://download.pytorch.org/whl/cpu
2
+
3
+ ./res/whl/aitiautils-1.1.59-py3-none-any.whl[torch]
4
+ gradio==5.12.0
res/ludb/{test_for_public.csv → dataset/test_for_public.csv} RENAMED
File without changes
res/ludb/{train_for_public.csv → dataset/train_for_public.csv} RENAMED
File without changes
res/ludb/{valid_for_public.csv → dataset/valid_for_public.csv} RENAMED
File without changes
res/ludb/ecg_np/1.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:368d65fdac71aedee5bc1283ce8b35c3dc4c716a0186448585b8526c9b94adc6
3
+ size 240128
res/ludb/ecg_np/10.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:857c0c5986eb39435d85b22cf2654e95156e0cdeb7e46142deca901ccd1d5b61
3
+ size 240128
res/ludb/ecg_np/100.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7dbf9ffefad0afa77ec23d4b52848923b64411e3257d64bea18a5cb01d55f747
3
+ size 240128
res/ludb/ecg_np/101.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:88cd2a1955f6b6e9466a5d1d6d13af44e6da6b9aa3e03b4cce12fe4761fbdacd
3
+ size 240128
res/ludb/ecg_np/102.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d6a8b159c2c42e118cadae95e7690bfc1bfce3b067b65c830ac3c4255c7a6e8b
3
+ size 240128
res/ludb/ecg_np/103.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c5da0eaddc4030ba02b55510383c0b921b74e0871eb320676cfcd3688f8b4f98
3
+ size 240128
res/ludb/ecg_np/104.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a352a2105960680477d5afd978f6a8036655dc8142fe72d2acbf6ca8f0b42803
3
+ size 240128
res/ludb/ecg_np/105.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98167e89f2a083998953cd8cd89d32c2ea4d81cd746a7620a3569a2e140dfad0
3
+ size 240128
res/ludb/ecg_np/106.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a2f81eba6141a7432966fcdad8f0e30d73e28d5eb578d4b3894dee56c2a348e5
3
+ size 240128
res/ludb/ecg_np/107.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dd33ff42757dcdbc666a9e4fd556d3abc8d5dd18dc6222d44b116f68d2eed7c9
3
+ size 240128
res/ludb/ecg_np/108.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a0facefcb3099cdf9d83f3e13c4800f5aaa5a77ac6fceb80b5699bf5bef7ad24
3
+ size 240128
res/ludb/ecg_np/109.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1206c6d4f8ccfc4de616e60d003f9317d38bec82d166937818cc3f0e2b1876d
3
+ size 240128
res/ludb/ecg_np/11.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:156c711c965e3137010224d6a42e599f166327e782910289103b145b19b923ea
3
+ size 240128
res/ludb/ecg_np/110.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5881697a62ca45e3ef09cd33929e852c540e21c5b5328e71b2b937c448c0c810
3
+ size 240128
res/ludb/ecg_np/111.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f276b1b9872e3879edf984b838f90cdc99232e9771b63622378fe88bdf61986
3
+ size 240128
res/ludb/ecg_np/112.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f447e28087bbf8a6caa873e07590363c65c66b17403a95dd2f9cedbbe075d033
3
+ size 240128
res/ludb/ecg_np/113.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e16d4120aca29df7cc49d04a91dbe5e96bff1e5611d1c9b678074190005adb7
3
+ size 240128
res/ludb/ecg_np/114.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98c867026c89b44c65bdc26ae765e686b403ff67ba96c31f72d95d3bf4c30ac4
3
+ size 240128
res/ludb/ecg_np/115.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6559dd88f41f3e5eb8874daffa05a3f6d6ddd35838b4ccf51eb56a7abf32cdf
3
+ size 240128
res/ludb/ecg_np/116.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3889acd9da5f079ebb29d731aa9e1aa355a475a29f96d77f8c1135df7852146c
3
+ size 240128
res/ludb/ecg_np/117.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4e04ab0a28f820cb3f0abefcc9b2e0844ae07a7c843d1b5f12b4de785f1347b
3
+ size 240128
res/ludb/ecg_np/118.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd35fe2cc08f2cf53e36580c3a960154a9fb2015d623339fc12ce817ccf3ab4e
3
+ size 240128
res/ludb/ecg_np/119.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:75fc681fb57d1e187814d5c8c801a7aa7f31684a8325d7464f4329c88d33c3d7
3
+ size 240128
res/ludb/ecg_np/12.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b306c571117005cb33d287f863f167e035b05be90916a324a834af228e9d3885
3
+ size 240128
res/ludb/ecg_np/120.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a5f0e332cd95ceb2427ec7d43461c42f541413ec83a46ac11746426888e3648d
3
+ size 240128
res/ludb/ecg_np/121.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c75fb64caad95119d14b616592e4d7a509591e23a0bef2886221816a84268c6b
3
+ size 240128
res/ludb/ecg_np/122.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f679a277be20e844b6e7ad355b5d4a08df6e975933a1a03dc9ff2be89ca55f34
3
+ size 240128
res/ludb/ecg_np/123.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4c800a19f9b2fcfd159c20290fa4cdd25c2f7fcb1997df0324d27657ad0aa761
3
+ size 240128
res/ludb/ecg_np/124.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1e9d04bfc93ddc18be73b6fde11b6c5c3d76113e291c0b04021351b1df12854
3
+ size 240128
res/ludb/ecg_np/125.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f2bbd7d74178c11af5644d8b2b52dc416c3a8fab28a49e04bc706ee1b0f5c769
3
+ size 240128
res/ludb/ecg_np/126.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22507f390a48dd420ae4aba6e6d389a78041533006ed42b2e65b27dd71b23b4a
3
+ size 240128
res/ludb/ecg_np/127.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e0f3c44160bdd0128b0dfab804bb0f814f4355c20ddb36e400da777734e07b03
3
+ size 240128
res/ludb/ecg_np/128.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:df81cca3e1458dd975221fdf05766795edcf2aefef06c6736cd5785e0af7450a
3
+ size 240128
res/ludb/ecg_np/129.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d4edcb79c43a08ca85f5eb9517e63baee382140078e75ccbf10f65534e5404e
3
+ size 240128
res/ludb/ecg_np/13.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b318be5e59eccaf6038f1358eeebe849f1ffdf9236fc8fb806338918fd42853
3
+ size 240128
res/ludb/ecg_np/130.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24975cf4479d4c0e1c2fcc567cc1ee0bcd46079e292e29a5eb4c8719064c43d4
3
+ size 240128
res/ludb/ecg_np/131.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d942fe67d7795253b22350a52558e15648e1a24729fe37e2b5f98cbb4ad42ce
3
+ size 240128
res/ludb/ecg_np/132.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e4fa38607c152bd95c14280163383e3182fd9b76a4f5dc3e0e9725573bbc65de
3
+ size 240128
res/ludb/ecg_np/133.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4550f31dffc65ac77a1f951d97100f43330389cfc9050982c5347b96cb030559
3
+ size 240128
res/ludb/ecg_np/134.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1badedce88a5f78de7c1b748a9f10c5fd237e9b05d7b976d1b51d72e0eb5886c
3
+ size 240128
res/ludb/ecg_np/135.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d9d0b26f56b4a981a4d2930d7ef951bb2611d288ab134739dd12c01dffa0421
3
+ size 240128
res/ludb/ecg_np/136.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:59fe573f2764594e7a4690a46e79a3aaded4a74646f97f2669f0c21f02a727ab
3
+ size 240128
res/ludb/ecg_np/137.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4ab5778ace84dacfd627fc31ea8f9224a9eabb6aa4f88365348dc4c72abe951e
3
+ size 240128
res/ludb/ecg_np/138.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:29fefd91b32b60d85efb567b0734737c3af9f988cdfec2b41b46c36cd4e2fd33
3
+ size 240128