mne-tools / mne-bids-pipeline

Automatically process entire electrophysiological datasets using MNE-Python.
https://mne.tools/mne-bids-pipeline/
BSD 3-Clause "New" or "Revised" License
137 stars 65 forks source link

make_epochs step fails if runs have different bads #797

Open hoechenberger opened 10 months ago

hoechenberger commented 10 months ago

I'm handling EEG data where bads may vary from one block ("run") to another.

I'm seeing the following problem when running preprocessing/make_epochs:

│23:10:33│ ❌ sub-184 A critical error occurred. The error message was: epochs[1].info['bads'] must match

Aborting pipeline run. The traceback is:

  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne_bids_pipeline/_run.py", line 54, in __mne_bids_pipeline_failsafe_wrapper__
    out = memory.cache(func)(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne_bids_pipeline/_run.py", line 154, in wrapper
    func(*args, **kwargs)
  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne_bids_pipeline/steps/preprocessing/_05_make_epochs.py", line 145, in run_epochs
    epochs_all_runs = mne.concatenate_epochs(
                      ^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-208>", line 12, in concatenate_epochs
  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne/epochs.py", line 4330, in concatenate_epochs
    ) = _concatenate_epochs(
        ^^^^^^^^^^^^^^^^^^^^
  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne/epochs.py", line 4189, in _concatenate_epochs
    _ensure_infos_match(epochs.info, info, f"epochs[{ii}]", on_mismatch=on_mismatch)
  File "/Users/richardhochenberger/mambaforge/envs/tasin/lib/python3.11/site-packages/mne/_fiff/meas_info.py", line 3723, in _ensure_infos_match
    raise ValueError(f"{name}.info['bads'] must match")

We should probably use unify_bad_channels()?

x-ref #538