-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
49 lines (36 loc) · 1.21 KB
/
utils.py
File metadata and controls
49 lines (36 loc) · 1.21 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
from wfdb.processing import ann2rr
from time import time
import random
random.seed(42)
def timed(func, *args):
start = time()
res = func(*args)
return time() - start, res
class SignalIterator:
"""return one at a time n signals randomly extracted from a given rule to construct filenames"""
def __init__(self, n, filename_expr, arg_value_list):
self.n = n
self.filename_expr = filename_expr
self.arg_value_list = arg_value_list
self.chosen = random.sample(self.arg_value_list, self.n)
print(self.chosen)
def __iter__(self):
self.counter = 0
return self
def __next__(self):
if self.counter < self.n:
self.counter += 1
return ann2rr(
self.filename_expr.format(self.chosen[self.counter - 1]), "ecg"
)
else:
raise StopIteration
def __len__(self):
return self.n
if __name__ == "__main__":
it = SignalIterator(10, "nsr2/nsr{:03d}", list(range(1, 54)))
for i, j in enumerate(it):
print(i, j)
it = SignalIterator(10, "nsr2/nsr{:03d}", list(range(1, 54)))
from entropy import entropies_for_m_range
entropies_for_m_range(it, range(1, 3))