Skip to content

Commit 8e7ffc2

Browse files
committed
[edf] rewrite tests using context managers to avoid not closed ios
1 parent 27d3c47 commit 8e7ffc2

1 file changed

Lines changed: 47 additions & 47 deletions

File tree

neo/test/iotest/test_edfio.py

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -27,64 +27,64 @@ def test_read_block(self):
2727
"""
2828
Test reading the complete block and general annotations
2929
"""
30-
io = EDFIO(self.filename)
31-
bl = io.read_block()
32-
self.assertTrue(bl.annotations)
30+
with EDFIO(self.filename) as io:
31+
bl = io.read_block()
32+
self.assertTrue(bl.annotations)
3333

34-
seg = bl.segments[0]
35-
assert seg.name == 'Seg #0 Block #0'
36-
for anasig in seg.analogsignals:
37-
assert anasig.name is not None
34+
seg = bl.segments[0]
35+
assert seg.name == 'Seg #0 Block #0'
36+
for anasig in seg.analogsignals:
37+
assert anasig.name is not None
3838

3939
def test_read_segment_with_time_slice(self):
4040
"""
4141
Test loading of a time slice and check resulting times
4242
"""
43-
io = EDFIO(self.filename)
44-
seg = io.read_segment(time_slice=None)
45-
46-
# data file does not contain spike, event or epoch timestamps
47-
self.assertEqual(len(seg.spiketrains), 0)
48-
self.assertEqual(len(seg.events), 1)
49-
self.assertEqual(len(seg.events[0]), 0)
50-
self.assertEqual(len(seg.epochs), 1)
51-
self.assertEqual(len(seg.epochs[0]), 0)
52-
for asig in seg.analogsignals:
53-
self.assertEqual(asig.shape[0], 256)
54-
n_channels = sum(a.shape[-1] for a in seg.analogsignals)
55-
self.assertEqual(n_channels, 5)
56-
57-
t_start, t_stop = 500 * pq.ms, 800 * pq.ms
58-
seg = io.read_segment(time_slice=(t_start, t_stop))
59-
60-
self.assertAlmostEqual(seg.t_start.rescale(t_start.units), t_start, delta=5.)
61-
self.assertAlmostEqual(seg.t_stop.rescale(t_stop.units), t_stop, delta=5.)
43+
with EDFIO(self.filename) as io:
44+
seg = io.read_segment(time_slice=None)
45+
46+
# data file does not contain spike, event or epoch timestamps
47+
self.assertEqual(len(seg.spiketrains), 0)
48+
self.assertEqual(len(seg.events), 1)
49+
self.assertEqual(len(seg.events[0]), 0)
50+
self.assertEqual(len(seg.epochs), 1)
51+
self.assertEqual(len(seg.epochs[0]), 0)
52+
for asig in seg.analogsignals:
53+
self.assertEqual(asig.shape[0], 256)
54+
n_channels = sum(a.shape[-1] for a in seg.analogsignals)
55+
self.assertEqual(n_channels, 5)
56+
57+
t_start, t_stop = 500 * pq.ms, 800 * pq.ms
58+
seg = io.read_segment(time_slice=(t_start, t_stop))
59+
60+
self.assertAlmostEqual(seg.t_start.rescale(t_start.units), t_start, delta=5.)
61+
self.assertAlmostEqual(seg.t_stop.rescale(t_stop.units), t_stop, delta=5.)
6262

6363
def test_compare_data(self):
6464
"""
6565
Compare data from AnalogSignal with plain data stored in text file
6666
"""
67-
io = EDFIO(self.filename)
68-
plain_data = np.loadtxt(io.filename.replace('.edf', '.txt'), dtype=np.int16)
69-
seg = io.read_segment(lazy=True)
70-
71-
anasigs = seg.analogsignals
72-
self.assertEqual(len(anasigs), 5) # all channels have different units, so expecting 5
73-
for aidx, anasig in enumerate(anasigs):
74-
# comparing raw data to original values
75-
ana_data = anasig.load(magnitude_mode='raw')
76-
np.testing.assert_array_equal(ana_data.magnitude, plain_data[:, aidx:aidx + 1])
77-
78-
# comparing floating data to original values * gain factor
79-
ch_head = io.edf_reader.getSignalHeader(aidx)
80-
physical_range = ch_head['physical_max'] - ch_head['physical_min']
81-
# number of digital values used (+1 to account for '0' value)
82-
digital_range = ch_head['digital_max'] - ch_head['digital_min'] + 1
83-
84-
gain = physical_range / digital_range
85-
ana_data = anasig.load(magnitude_mode='rescaled')
86-
rescaled_data = plain_data[:, aidx:aidx + 1] * gain
87-
np.testing.assert_array_equal(ana_data.magnitude, rescaled_data)
67+
with EDFIO(self.filename) as io:
68+
plain_data = np.loadtxt(io.filename.replace('.edf', '.txt'), dtype=np.int16)
69+
seg = io.read_segment(lazy=True)
70+
71+
anasigs = seg.analogsignals
72+
self.assertEqual(len(anasigs), 5) # all channels have different units, so expecting 5
73+
for aidx, anasig in enumerate(anasigs):
74+
# comparing raw data to original values
75+
ana_data = anasig.load(magnitude_mode='raw')
76+
np.testing.assert_array_equal(ana_data.magnitude, plain_data[:, aidx:aidx + 1])
77+
78+
# comparing floating data to original values * gain factor
79+
ch_head = io.edf_reader.getSignalHeader(aidx)
80+
physical_range = ch_head['physical_max'] - ch_head['physical_min']
81+
# number of digital values used (+1 to account for '0' value)
82+
digital_range = ch_head['digital_max'] - ch_head['digital_min'] + 1
83+
84+
gain = physical_range / digital_range
85+
ana_data = anasig.load(magnitude_mode='rescaled')
86+
rescaled_data = plain_data[:, aidx:aidx + 1] * gain
87+
np.testing.assert_array_equal(ana_data.magnitude, rescaled_data)
8888

8989

9090
if __name__ == "__main__":

0 commit comments

Comments
 (0)