@@ -27,20 +27,23 @@ class EDFModel:
2727 ]
2828
2929 def __init__ (self , path ):
30- with EdfReader (str (path )) as f :
31- self ._header = f .getHeader ()
32- self ._annots = [annot for annot in zip (* f .readAnnotations ())]
33- self ._signal_headers = f .getSignalHeaders ()
34- self ._signals = [
35- f .readSignal (s , digital = True ) for s in range (f .signals_in_file )
36- ]
37- edf_file_type = f .filetype
38-
39- if edf_file_type == pyedflib .FILETYPE_EDF :
40- # This is a legacy EDF file, so we copy the legacy header
41- # fields into the EDF+ “extra” fields.
42- self ._header ["patient_additional" ] = f .patient
43- self ._header ["recording_additional" ] = f .recording
30+ try :
31+ with EdfReader (str (path )) as f :
32+ self ._header = f .getHeader ()
33+ self ._annots = [annot for annot in zip (* f .readAnnotations ())]
34+ self ._signal_headers = f .getSignalHeaders ()
35+ self ._signals = [
36+ f .readSignal (s , digital = True ) for s in range (f .signals_in_file )
37+ ]
38+ edf_file_type = f .filetype
39+
40+ if edf_file_type == pyedflib .FILETYPE_EDF :
41+ # This is a legacy EDF file, so we copy the legacy header
42+ # fields into the EDF+ “extra” fields.
43+ self ._header ["patient_additional" ] = f .patient
44+ self ._header ["recording_additional" ] = f .recording
45+ except OSError as err :
46+ raise InvalidFileError (str (err ))
4447
4548 @property
4649 def header_fields (self ):
@@ -62,7 +65,7 @@ def get_header_field_value(self, field_name):
6265
6366 def _parse_birthdate (self ):
6467 birthdate_str = self ._header .get ("birthdate" )
65- if birthdate_str == '' :
68+ if birthdate_str == "" :
6669 return None
6770 return datetime .datetime .strptime (birthdate_str , "%d %b %Y" )
6871
@@ -91,3 +94,7 @@ def write(self, filename):
9194 header ["annotations" ] = self .annotations
9295
9396 write_edf (filename , self ._signals , self ._signal_headers , header , digital = True )
97+
98+
99+ class InvalidFileError (IOError ):
100+ """The EDF file is invalid or malformed."""
0 commit comments