Skip to content

Dev version

v1.11.0 (unreleased)

🆕 New features & enhancements

  • Added ignore_warnings config option to allow users to specify warnings to ignore when calling read_raw_bids (#1224 by @larsoner)
  • Added tracking of the current step in the terminal title (#1266 by @larsoner)
  • Added a "Pipeline flow" section to the reports with an auto-generated diagram of the steps that ran for a subject and the files they passed to one another (#1291 by @larsoner)
  • Added report_image_format config option to control the encoding of images embedded in reports, e.g. dict(raster="png") to trade larger reports for faster processing (#1300 by @larsoner)
  • Report HDF5 and HTML files are no longer rewritten when a step did not modify the report (requires MNE-Python ≥ 1.13; older versions keep the previous always-save behavior) (#1300 by @larsoner)
  • report_image_format now accepts dict(raster="webp-lossy"), which encodes about as fast as PNG while producing reports roughly 3× smaller (requires MNE-Python ≥ 1.13) (#1304 by @larsoner)

⚠ Behavior changes

  • The default for mne_log_level has been changed from 'error' to 'warning' to make possible dataset and processing errors more visible (#1224 by @larsoner)

📦 Requirements

  • Minimum supported versions were raised to Python 3.11, MNE-Python 1.8, MNE-BIDS 0.16, and joblib 1.4.1, following SPEC 0 (#1289 by @larsoner)

🐛 Bug fixes

  • Fixed spurious recomputation of the init steps on every run: the subject report was declared as a cached output but is legitimately rewritten by later steps, so its modification time always mismatched (#1300 by @larsoner)
  • Fixed report section ordering: run-specific sections now always appear in run order, even when parallelization across runs finishes them out of order (#1293 by @larsoner)
  • All FileLock acquisitions now time out after 10 minutes, so a contended lock raises an error naming the file rather than hanging the run forever (#1301 by @larsoner)
  • Handle contrasts with too few epochs for cross-validation by saving NaN scores, excluding invalid subject-level results from group statistics, and reporting the effective sample size (#1265 by @viranovskaya)
  • Raise an informative error if rest_epochs_duration is not set for resting-state data and document the parameter (#1272 by @viranovskaya)
  • Fixed bug where log_level was not being applied to the MBPlogger (#1224 by @larsoner)
  • Corrected import order: remove channels before setting template montage as stated in eeg_template_montage (#1220 by @dnacombo)
  • Fixed crash when concatenating epochs from runs with different bad channels. The pipeline now uses the union of bad channels across runs. (#1242 by @hoechenberger)
  • Fixed a small CSP labeling glitch in the report. (#1241 by @hoechenberger)
  • Fixed bug where on_error "continue" and "debug" were not respected by the init and freesurfer/recon_all steps, which could abort the whole run instead of moving on to (or debugging) the next subject (#1022 by @larsoner)
  • The pipeline now recognizes source space files named with a dash between the spacing letters and number (e.g., sample-oct-6-src.fif), avoiding needless recomputation (#1047 by @larsoner)

⚕ Code health and infrastructure

  • Pinned Python version for development to 3.13. (#1243 by @hoechenberger)
  • Improved the accounting of options used in each step (#1268 by @larsoner)
  • The CSP decoding step now band-pass filters the epochs once per passband instead of once per table row, cutting its runtime roughly in half with identical results (#1304 by @larsoner)
  • The pipeline flow recordings are now read and written with the standard-library json module rather than json_tricks (about 8× faster for their plain-JSON schema) and memoized per process, so a step no longer re-parses the whole recording on each of its calls (#1305 by @larsoner)