Skip to content

BUG: Insufficient checking for isfinite in compute_psd and ica.fit #13364

@skjerns

Description

@skjerns

For some participants, my pipeline fails during the report creation, at the step compute_psd. I don't quite know what the issue could be, as the data itself looks ok.

Later during ICA fitting i also get an additional error: sub-03 A critical error occurred. The error message was: array must not contain infs or NaNs, however, I cannot efficiently debug, as I cannot reach the statement (either pipeline fails beforehand, or if ignore errors it just continue)

traceback
┌────────┬ Welcome aboard MNE-BIDS-Pipeline! 👋 ──────────────────────────────────────────────────────────────────────────────────────────────
│11:00:55│ 📝 sub-03 Using configuration: preprocessing_pipeline_conf.py
│11:00:55│ ❌ Overriding config.bids_root = PosixPath('/data/highspeed/highspeed-MEG-bids')
│11:00:55│ ❌ Overriding config.deriv_root = PosixPath('/data/highspeed/highspeed-MEG-bids/derivatives')
│11:00:55│ ❌ Overriding config.subjects = ['03']
│11:00:55│ ❌ Overriding config.task = 'main'
└────────┴ 
┌────────┬ init/_01_init_derivatives_dir ─────────────────────────────────────────────────────────────────────────────────────────────────────
│11:00:55│ ⏳️ Initializing output directories.
└────────┴ done (2s)
┌────────┬ init/_02_find_empty_room ──────────────────────────────────────────────────────────────────────────────────────────────────────────
│11:00:57│ ✅ sub-03 Computation unnecessary (cached) …
└────────┴ done (1s)
┌────────┬ preprocessing/_01_data_quality ────────────────────────────────────────────────────────────────────────────────────────────────────
│11:01:00│ ⏳️ sub-03 Reading experimental recording: sub-03_task-main
│11:01:06│ ✅ sub-03 run-noise Computation unnecessary (cached) …
│11:01:13│ ⏳️ sub-03 Adding original raw data to report
/home//anaconda3/lib/python3.13/site-packages/mne/viz/_figure.py:387: RuntimeWarning: Mean of empty slice
  data -= np.nanmean(data[..., time_slice], axis=1, keepdims=True)
│11:01:45│ ⏳️ sub-03 Adding config and sys info to report
│11:01:48│ ⏳️ sub-03 Saving report: /data/highspeed/highspeed-MEG-bids/derivatives/sub-03/meg/sub-03_task-main_report.html
│11:01:49│ ❌ sub-03 A critical error occurred. The error message was: 

Aborting pipeline run. The traceback is:

  File "/home//anaconda3/lib/python3.13/site-packages/mne_bids_pipeline/steps/preprocessing/_01_data_quality.py", line 198, in assess_data_quality
    _add_raw(
    ~~~~~~~~^
        cfg=cfg,
        ^^^^^^^^
    ...<4 lines>...
        tags=("data-quality",),
        ^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home//anaconda3/lib/python3.13/site-packages/mne_bids_pipeline/_report.py", line 867, in _add_raw
    report.add_raw(
    ~~~~~~~~~~~~~~^
        raw=raw,
        ^^^^^^^^
    ...<5 lines>...
        replace=True,
        ^^^^^^^^^^^^^
    )
    ^
  File "/home//anaconda3/lib/python3.13/site-packages/mne/report/report.py", line 1469, in add_raw
    self._add_raw(
    ~~~~~~~~~~~~~^
        raw=raw,
        ^^^^^^^^
    ...<8 lines>...
        replace=replace,
        ^^^^^^^^^^^^^^^^
    )
    ^
  File "/home//anaconda3/lib/python3.13/site-packages/mne/report/report.py", line 3518, in _add_raw
    fig = raw.compute_psd(**init_kwargs).plot(**plot_kwargs)
          ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "<decorator-gen-255>", line 12, in compute_psd
  File "/home//anaconda3/lib/python3.13/site-packages/mne/io/base.py", line 2329, in compute_psd
    return Spectrum(
        self,
    ...<12 lines>...
        **method_kw,
    )
  File "/home//anaconda3/lib/python3.13/site-packages/mne/time_frequency/spectrum.py", line 1178, in __init__
    self._compute_spectra(data, fmin, fmax, n_jobs, method_kw, verbose)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home//anaconda3/lib/python3.13/site-packages/mne/time_frequency/spectrum.py", line 452, in _compute_spectra
    result = self._psd_func(
        data, self.sfreq, fmin=fmin, fmax=fmax, n_jobs=n_jobs, verbose=verbose
    )
  File "<decorator-gen-151>", line 12, in psd_array_welch
  File "/home//anaconda3/lib/python3.13/site-packages/mne/time_frequency/psd.py", line 224, in psd_array_welch
    assert np.allclose(good_mask, good_mask[[0]], equal_nan=True)

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