Skip to content

Trouble with measurement dates when anonymizing or writing epochs data #13154

Closed
@SophieHerbst

Description

@SophieHerbst

Description of the problem

Hello,

Not sure if both problems are related, but I am getting errors about measurement dates when trying to anonymize or write epochs data that was created with the mne-bids-pipeline in the last months. I would rather avoid having to run the pipeline again, as I just wanted to quickly take an example dataset, anonymize it, and use it for teaching.

1) When trying to anonymize the data, I get the following error:

epochs = epochs.anonymize()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[59], [line 1](vscode-notebook-cell:?execution_count=59&line=1)
----> [1](vscode-notebook-cell:?execution_count=59&line=1) epochs = epochs.anonymize()

File <decorator-gen-26>:12, in anonymize(self, daysback, keep_his, verbose)

File ~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:795, in SetChannelsMixin.anonymize(self, daysback, keep_his, verbose)
    [793](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:793) info = self if isinstance(self, Info) else self.info
    [794](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:794) anonymize_info(info, daysback=daysback, keep_his=keep_his, verbose=verbose)
--> [795](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:795) self.set_meas_date(info["meas_date"])  # unify annot update
    [796](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:796) return self

File ~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:851, in SetChannelsMixin.set_meas_date(self, meas_date)
    [848](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:848)             value["machid"] = _tmp
    [850](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:850) if hasattr(self, "annotations"):
--> [851](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:851)     self.annotations._orig_time = meas_date
    [852](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/_fiff/meas_info.py:852) return self

AttributeError: 'NoneType' object has no attribute '_orig_time'

2) When trying to save the data without anonymization, I get this one:

epochs.save('example_data_epochs.fif', overwrite=True)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[61], [line 1](vscode-notebook-cell:?execution_count=61&line=1)
----> [1](vscode-notebook-cell:?execution_count=61&line=1) epochs.save('example_data_epochs.fif', overwrite=True)

File <decorator-gen-222>:12, in save(self, fname, split_size, fmt, overwrite, split_naming, verbose)

File ~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:2325, in BaseEpochs.save(self, fname, split_size, fmt, overwrite, split_naming, verbose)
   [2322](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:2322)     # avoid missing event_ids in splits
   [2323](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:2323)     this_epochs.event_id = self.event_id
-> [2325](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:2325)     _save_split(this_epochs, split_fnames, part_idx, n_parts, fmt, overwrite)
   [2326](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:2326) return split_fnames

File ~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:136, in _save_split(epochs, split_fnames, part_idx, n_parts, fmt, overwrite)
    [133](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:133)     next_fname = split_fnames[next_idx]
    [135](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:135) with start_and_end_file(this_fname) as fid:
--> [136](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:136)     _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)

File ~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:149, in _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)
    [146](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:146)     write_id(fid, FIFF.FIFF_PARENT_BLOCK_ID, info["meas_id"])
    [148](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:148) # Write measurement info
--> [149](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:149) write_meas_info(fid, info)
    [151](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:151) # One or more evoked data sets
    [152](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/epochs.py:152) start_block(fid, FIFF.FIFFB_PROCESSED_DATA)
...
    [999](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/utils/numerics.py:999)         or dt.tzinfo is not timezone.utc
   [1000](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/utils/numerics.py:1000)     ):
-> [1001](https://file+.vscode-resource.vscode-cdn.net/Users/sh254795/Documents/WORK_/TEACHING/2025_TEMPOMEGA_CAEN/~/.pyenv/versions/3.11.10/envs/mne/lib/python3.11/site-packages/mne/utils/numerics.py:1001)         raise ValueError(f"Date must be datetime object in UTC: {repr(dt)}")

ValueError: Date must be datetime object in UTC: None

Steps to reproduce

sb = '13'
subject = 'sub-' + sb
print('*******************************************************************************')
print('SUBJECT: ' + subject)

# file name in BIDS format
fname_epochs = BIDSPath(
        subject=sb,
        session='01', 
        task='audio',
        acquisition=None,
        run=None,
        recording=None,
        space=None,
        suffix="epo",
        extension=".fif",
        datatype='meg',
        root=deriv_path,
        processing="clean",  # always use clean epochs
        check=False,
    )

fname_epochs = op.join(deriv_path, subject, 'ses-01', 'meg', subject + '_ses-01_task-audio_proc-clean_epo.fif')
epochs = mne.read_epochs(fname_epochs, preload=True)

epochs = epochs.anonymize()

epochs.save('example_data_epochs.fif', overwrite=True)

Link to data

I can share the date privately, as I cannot anonymize them.

Expected results

No errors.

Actual results

Errors, see above.
The data is saved, but not complete.

Additional information

Version: '1.9.0'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions