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