def test_parse_annotation(tmpdir): """Test parsing the tal channel.""" # test the parser annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot_file = tmpdir.join('annotations.txt') annot_file.write(annot) annot = [a for a in bytes(annot)] annot[1::2] = [a * 256 for a in annot[1::2]] tal_channel_A = np.array(list(map(sum, zip(annot[0::2], annot[1::2]))), dtype=np.int64) with open(str(annot_file), 'rb') as fid: # ch_data = np.fromfile(fid, dtype=np.int16, count=len(annot)) tal_channel_B = _read_ch(fid, subtype='EDF', dtype=np.int16, samp=(len(annot) - 1) // 2, dtype_byte='This_parameter_is_not_used') for tal_channel in [tal_channel_A, tal_channel_B]: onset, duration, description = _read_annotations_edf([tal_channel]) assert_equal(np.column_stack((onset, duration, description)), [[180., 0., 'Lights off'], [180., 0., 'Close door'], [180., 0., 'Lights off'], [180., 0., 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']])
def test_parse_annotation(tmp_path): """Test parsing the tal channel.""" # test the parser annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot_file = tmp_path / 'annotations.txt' with open(annot_file, "wb") as f: f.write(annot) annot = [a for a in bytes(annot)] annot[1::2] = [a * 256 for a in annot[1::2]] tal_channel_A = np.array(list(map(sum, zip(annot[0::2], annot[1::2]))), dtype=np.int64) with open(annot_file, 'rb') as fid: # ch_data = np.fromfile(fid, dtype='<i2', count=len(annot)) tal_channel_B = _read_ch(fid, subtype='EDF', dtype='<i2', samp=(len(annot) - 1) // 2, dtype_byte='This_parameter_is_not_used') want_onset, want_duration, want_description = zip( *[[180., 0., 'Lights off'], [180., 0., 'Close door'], [180., 0., 'Lights off'], [180., 0., 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']]) for tal_channel in [tal_channel_A, tal_channel_B]: onset, duration, description = _read_annotations_edf([tal_channel]) assert_allclose(onset, want_onset) assert_allclose(duration, want_duration) assert description == want_description
def test_read_annot(tmp_path): """Test parsing the tal channel.""" EXPECTED_ANNOTATIONS = [[180.0, 0, 'Lights off'], [180.0, 0, 'Close door'], [180.0, 0, 'Lights off'], [180.0, 0, 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']] EXPECTED_ONSET = [180.0, 180.0, 180.0, 180.0, 3.14, 1800.2] EXPECTED_DURATION = [0, 0, 0, 0, 4.2, 25.5] EXPECTED_DESC = [ 'Lights off', 'Close door', 'Lights off', 'Close door', 'nothing', 'Apnea' ] EXPECTED_ANNOTATIONS = Annotations(onset=EXPECTED_ONSET, duration=EXPECTED_DURATION, description=EXPECTED_DESC, orig_time=None) annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot_file = tmp_path / 'annotations.txt' with open(annot_file, "wb") as f: f.write(annot) onset, duration, desc = _read_annotations_edf(annotations=str(annot_file)) annotation = Annotations(onset=onset, duration=duration, description=desc, orig_time=None) _assert_annotations_equal(annotation, EXPECTED_ANNOTATIONS) # Now test when reading from buffer of data with open(annot_file, 'rb') as fid: ch_data = np.fromfile(fid, dtype='<i2', count=len(annot)) onset, duration, desc = _read_annotations_edf([ch_data]) annotation = Annotations(onset=onset, duration=duration, description=desc, orig_time=None) _assert_annotations_equal(annotation, EXPECTED_ANNOTATIONS)
def test_read_annot(tmpdir): """Test parsing the tal channel.""" EXPECTED_ANNOTATIONS = [[180.0, 0, 'Lights off'], [180.0, 0, 'Close door'], [180.0, 0, 'Lights off'], [180.0, 0, 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']] EXPECTED_ONSET = [180.0, 180.0, 180.0, 180.0, 3.14, 1800.2] EXPECTED_DURATION = [0, 0, 0, 0, 4.2, 25.5] EXPECTED_DESC = ['Lights off', 'Close door', 'Lights off', 'Close door', 'nothing', 'Apnea'] EXPECTED_ANNOTATIONS = Annotations(onset=EXPECTED_ONSET, duration=EXPECTED_DURATION, description=EXPECTED_DESC, orig_time=None) annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot_file = tmpdir.join('annotations.txt') annot_file.write(annot) onset, duration, desc = _read_annotations_edf(annotations=str(annot_file)) annotation = Annotations(onset=onset, duration=duration, description=desc, orig_time=None) _assert_annotations_equal(annotation, EXPECTED_ANNOTATIONS) # Now test when reading from buffer of data with open(str(annot_file), 'rb') as fid: ch_data = np.fromfile(fid, dtype=np.int16, count=len(annot)) onset, duration, desc = _read_annotations_edf([ch_data]) annotation = Annotations(onset=onset, duration=duration, description=desc, orig_time=None) _assert_annotations_equal(annotation, EXPECTED_ANNOTATIONS)
def test_parse_annotation(): """Test parsing the tal channel.""" # test the parser annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot = [a for a in iterbytes(annot)] annot[1::2] = [a * 256 for a in annot[1::2]] tal_channel = map(sum, zip(annot[0::2], annot[1::2])) onset, duration, description = _read_annotations_edf([tal_channel]) assert_equal(np.column_stack((onset, duration, description)), [[180., 0., 'Lights off'], [180., 0., 'Close door'], [180., 0., 'Lights off'], [180., 0., 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']])
def test_parse_annotation(): """Test parsing the tal channel.""" # test the parser annot = (b'+180\x14Lights off\x14Close door\x14\x00\x00\x00\x00\x00' b'+180\x14Lights off\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+180\x14Close door\x14\x00\x00\x00\x00\x00\x00\x00\x00' b'+3.14\x1504.20\x14nothing\x14\x00\x00\x00\x00' b'+1800.2\x1525.5\x14Apnea\x14\x00\x00\x00\x00\x00\x00\x00' b'+123\x14\x14\x00\x00\x00\x00\x00\x00\x00') annot = [a for a in bytes(annot)] annot[1::2] = [a * 256 for a in annot[1::2]] tal_channel = map(sum, zip(annot[0::2], annot[1::2])) onset, duration, description = _read_annotations_edf([tal_channel]) assert_equal(np.column_stack((onset, duration, description)), [[180., 0., 'Lights off'], [180., 0., 'Close door'], [180., 0., 'Lights off'], [180., 0., 'Close door'], [3.14, 4.2, 'nothing'], [1800.2, 25.5, 'Apnea']])