@@ -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
8486if __name__ == "__main__" :
0 commit comments