Skip to content

Commit ea6f182

Browse files
author
sprenger
committed
[edf] extend data comparison tests
1 parent 33f934a commit ea6f182

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

neo/test/iotest/test_edfio.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,26 @@ def test_compare_data(self):
6161
Compare data from AnalogSignal with plain data stored in text file
6262
"""
6363
io = EDFIO(self.filename)
64-
plain_data = np.loadtxt(io.filename.replace('.edf', '.txt'))
65-
seg = io.read_segment(signal_group_mode='split-all')
64+
plain_data = np.loadtxt(io.filename.replace('.edf', '.txt'), dtype=np.int16)
65+
seg = io.read_segment(lazy=True)
6666

6767
anasigs = seg.analogsignals
68-
68+
self.assertEqual(len(anasigs), 5) # all channels have different units, so expecting 5
6969
for aidx, anasig in enumerate(anasigs):
70-
ana_data = anasig.magnitude.flatten()
70+
# comparing raw data to original values
71+
ana_data = anasigs[0].load(magnitude_mode='raw')
72+
np.testing.assert_array_equal(ana_data.magnitude, plain_data[:, aidx:aidx+1])
7173

72-
# reverting gain and offset conversion
73-
sig_dict = io.signal_headers[aidx]
74-
physical_range = sig_dict['physical_max'] - sig_dict['physical_min']
75-
digital_range = sig_dict['digital_max'] - sig_dict['digital_min']
76-
gain = physical_range / digital_range
77-
offset = -1 * sig_dict['digital_min'] * gain + sig_dict['physical_min']
74+
# comparing floating data to original values * gain factor
75+
ch_head = io.edf_reader.getSignalHeader(aidx)
76+
physical_range = ch_head['physical_max'] - ch_head['physical_min']
77+
# number of digital values used (+1 to account for '0' value)
78+
digital_range = ch_head['digital_max'] - ch_head['digital_min'] + 1
7879

79-
ana_data = (ana_data - offset) / gain
80-
# allow for some floating imprecision between calculations
81-
np.testing.assert_array_almost_equal(ana_data, plain_data[:, aidx], decimal=2)
80+
gain = physical_range / digital_range
81+
ana_data = anasigs[0].load(magnitude_mode='rescaled')
82+
rescaled_data = plain_data[:, aidx:aidx+1] * gain
83+
np.testing.assert_array_equal(ana_data.magnitude, rescaled_data)
8284

8385

8486
if __name__ == "__main__":

0 commit comments

Comments
 (0)