annotating .edf file

raw_train = mne.io.read_raw_edf('C:/Users/Admin/Downloads/wesley_annot2022.03.11_12.18.26.edf', stim_channel=None)
annot_train = mne.read_annotations(raw_train)

raw_train.set_annotations(annot_train, emit_warning=False)

raw_train.plot(start=60, duration=60,
               scalings=dict(eeg=1e-4, resp=1e3, eog=1e-4, emg=1e-7,
                             misc=1e-1))

while running this code I get the following error:

Extracting EDF parameters from C:\Users\Admin\Downloads\wesley_annot2022.03.11_12.18.26.edf...
EDF file detected
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-e3a998e7f9d8> in <module>
----> 1 raw_train = mne.io.read_raw_edf('C:/Users/Admin/Downloads/wesley_annot2022.03.11_12.18.26.edf', stim_channel=None)
      2 annot_train = mne.read_annotations(raw_train)
      3 
      4 raw_train.set_annotations(annot_train, emit_warning=False)
      5 

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in read_raw_edf(input_fname, eog, misc, stim_channel, exclude, preload, verbose)
   1218         raise NotImplementedError(
   1219             'Only EDF files are supported by read_raw_edf, got %s' % (ext,))
-> 1220     return RawEDF(input_fname=input_fname, eog=eog, misc=misc,
   1221                   stim_channel=stim_channel, exclude=exclude, preload=preload,
   1222                   verbose=verbose)

<decorator-gen-197> in __init__(self, input_fname, eog, misc, stim_channel, exclude, preload, verbose)

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in __init__(self, input_fname, eog, misc, stim_channel, exclude, preload, verbose)
    112         logger.info('Extracting EDF parameters from {}...'.format(input_fname))
    113         input_fname = os.path.abspath(input_fname)
--> 114         info, edf_info, orig_units = _get_info(input_fname,
    115                                                stim_channel, eog, misc,
    116                                                exclude, preload)

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in _get_info(fname, stim_channel, eog, misc, exclude, preload)
    356     misc = misc if misc is not None else []
    357 
--> 358     edf_info, orig_units = _read_header(fname, exclude)
    359 
    360     # XXX: `tal_ch_names` to pass to `_check_stim_channel` should be computed

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in _read_header(fname, exclude)
    343     logger.info('%s file detected' % ext.upper())
    344     if ext in ('bdf', 'edf'):
--> 345         return _read_edf_header(fname, exclude)
    346     elif ext == 'gdf':
    347         return _read_gdf_header(fname, exclude), None

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in _read_edf_header(fname, exclude)
    569         else:
    570             meas_date = fid.read(8).decode('latin-1')
--> 571             day, month, year = [int(x) for x in meas_date.split('.')]
    572             year = year + 2000 if year < 85 else year + 1900
    573 

~\anaconda3\lib\site-packages\mne\io\edf\edf.py in <listcomp>(.0)
    569         else:
    570             meas_date = fid.read(8).decode('latin-1')
--> 571             day, month, year = [int(x) for x in meas_date.split('.')]
    572             year = year + 2000 if year < 85 else year + 1900
    573 

ValueError: invalid literal for int() with base 10: ''

Kindly help me to fix this error.

It would really help readers if you formatted your code in your question correctly (I’ve done this for you now).

Regarding the issue, mne.read_annotations() takes the filename as the first input argument, but you are trying to load that file with mne.io.read_raw_edf(). Can you try to run

annot_train = mne.read_annotations('C:/Users/Admin/Downloads/wesley_annot2022.03.11_12.18.26.edf')

to see if this fixes the problem?

Thank you @cbrnr for your support. I will structure my code from now on. I was now able to read the annotations. thank you so much.

1 Like