-
Notifications
You must be signed in to change notification settings - Fork 313
/
Copy pathtest_multi_record.py
113 lines (98 loc) · 3.59 KB
/
test_multi_record.py
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import wfdb
class TestMultiRecordRanges:
"""
Test logic that deduces relevant segments/ranges for given signals.
"""
def test_contained_ranges_simple_cases(self):
record = wfdb.MultiRecord(
segments=[
wfdb.Record(sig_name=["I", "II"], sig_len=5),
wfdb.Record(sig_name=["I", "III"], sig_len=10),
],
)
assert record.contained_ranges("I") == [(0, 15)]
assert record.contained_ranges("II") == [(0, 5)]
assert record.contained_ranges("III") == [(5, 15)]
def test_contained_ranges_variable_layout(self):
record = wfdb.rdheader(
"sample-data/multi-segment/s00001/s00001-2896-10-10-00-31",
rd_segments=True,
)
assert record.contained_ranges("II") == [
(3261, 10136),
(4610865, 10370865),
(10528365, 14518365),
]
assert record.contained_ranges("V") == [
(3261, 918261),
(920865, 4438365),
(4610865, 10370865),
(10528365, 14518365),
]
assert record.contained_ranges("MCL1") == [
(10136, 918261),
(920865, 4438365),
]
assert record.contained_ranges("ABP") == [
(14428365, 14450865),
(14458365, 14495865),
]
def test_contained_ranges_fixed_layout(self):
record = wfdb.rdheader(
"sample-data/multi-segment/041s/041s",
rd_segments=True,
)
for sig_name in record.sig_name:
assert record.contained_ranges(sig_name) == [(0, 2000)]
def test_contained_combined_ranges_simple_cases(self):
record = wfdb.MultiRecord(
segments=[
wfdb.Record(sig_name=["I", "II", "V"], sig_len=5),
wfdb.Record(sig_name=["I", "III", "V"], sig_len=10),
wfdb.Record(sig_name=["I", "II", "V"], sig_len=20),
],
)
assert record.contained_combined_ranges(["I", "II"]) == [
(0, 5),
(15, 35),
]
assert record.contained_combined_ranges(["II", "III"]) == []
assert record.contained_combined_ranges(["I", "III"]) == [(5, 15)]
assert record.contained_combined_ranges(["I", "II", "V"]) == [
(0, 5),
(15, 35),
]
def test_contained_combined_ranges_variable_layout(self):
record = wfdb.rdheader(
"sample-data/multi-segment/s00001/s00001-2896-10-10-00-31",
rd_segments=True,
)
assert record.contained_combined_ranges(["II", "V"]) == [
(3261, 10136),
(4610865, 10370865),
(10528365, 14518365),
]
assert record.contained_combined_ranges(["II", "MCL1"]) == []
assert record.contained_combined_ranges(["II", "ABP"]) == [
(14428365, 14450865),
(14458365, 14495865),
]
assert record.contained_combined_ranges(["II", "V", "ABP"]) == [
(14428365, 14450865),
(14458365, 14495865),
]
assert (
record.contained_combined_ranges(["II", "V", "MCL1", "ABP"]) == []
)
def test_contained_combined_ranges_variable_layout(self):
record = wfdb.rdheader(
"sample-data/multi-segment/041s/041s",
rd_segments=True,
)
for sig_1 in record.sig_name:
for sig_2 in record.sig_name:
if sig_1 == sig_2:
continue
assert record.contained_combined_ranges([sig_1, sig_2]) == [
(0, 2000)
]