Version 1.12.0.dev157+g2d0c20262 (development) (2026-04-07)#
Dependencies#
Updated minimum for:
Core dependency
scipy >= 1.12Optional dependency
pandas >= 2.2Optional dependency
scikit-learn >= 1.4
Changed implemented via CI action created by Thomas Binns. (#13611)
Updated minimum for:
Core dependency
scipy >= 1.13
Changed implemented via CI action created by Thomas Binns. (#13814)
Bugfixes#
Fix bug where outdated
seghead.mgzfiles were reused inmne.bem.make_scalp_surfaces(). Add a new parameterreuse_segheadto control whether to reuse existingseghead.mgzfiles, by Victor Ferat. (#13024)Make
interpolate_bads()method flexible (ignore, warn, raise) about how to handle interpolation of channels with invalid positions, by Himanshu Mahor. (#13518)Preserve
kit_system_idin forward-solutionInfo, by new contributor Melih Yayli. (#13520)Fix bug preventing
mne.time_frequency.read_spectrum()from reading savedmne.time_frequency.Spectrumobjects created frommne.time_frequency.EpochsSpectrum.average(), by Thomas Binns. (#13521)Fix bug where
mne.chpi.refit_hpi()did not takegof_limitinto account when fitting HPI order, by Eric Larson (#13525)Fix bug preventing reading of
mne.time_frequency.Spectrumandmne.time_frequency.BaseTFRobjects created in MNE<1.8 using the deprecated subject info birthday tuple format, by Thomas Binns. (#13526)Fix bug where invalid date formats passed to
mne.Info.set_meas_date()were not caught, by Thomas Binns. (#13528)Fix bug with mne coreg where interactively altered MRI fiducials were not used when scaling a surrogate subject, by Eric Larson. (#13539)
Fix bug with
mne.viz.plot_evoked()where channels were plotted above axis spines, by Michael Straube. (#13549)Fix axis limits in
mne.preprocessing.eyetracking.Calibration.plot()to use screen resolution if available, by new contributor Gnaneswar Lopinti. (#13558)Fix bug with montage test error message checking, by Eric Larson. (#13579)
Fix bug where
mne.viz.plot_evoked_white()did not accept a single “meg” rank value like those returned frommne.compute_rank(), by Eric Larson. (#13595)Fix bug where
mne.viz.plot_raw()would access incorrect matplotlib attributes, by new contributor Thomas Caswell. (#13606)Fix bug with
mne.make_forward_solution()when no MEG channels are present wheredev_head_twas errantly set, by Eric Larson. (#13619)Fix
mne.io.read_raw_snirf()raisingTypeErrorwhenlandmarkLabelsis empty or scalar, by Bruno Aristimunha. (#13628)Fix bug with
mne.datasets.somato.data_path()where the archive couldn’t be extracted due to an absolute path issue, by Eric Larson. (#13630)Fix bug in
mne.Epochs.plot()where clicking on the scrollbar would not scroll to the last epoch, by Clemens Brunner. (#13654)Expose
mne.bemnamespace, which was inadverdently removed in MNE version 1.5. As an example, users can once again use themne.bem.make_watershed_bemAPI entrypoint, by Scott Huberty. (#13669)Allow reading alternative nasion label (“Nz”) in SNIRF files when parsing landmarkPos3D, by new contributor Aniket Singh Yadav. (#13672)
Fix sensor name ordering in
plot_topomap()when passing anInfoobject asposwithnamesargument, by Famous077. (#13686)Fix bug in
compute_source_morph()where thespacingattribute was set incorrectly whensrc_tois provided, by Famous077. (#13687)Avoid raising an error when setting montage on a
DigMontageof MEG+EEG recordings, when EEG reference positions were set to the placeholder value[1, 0, 0](i.e., digitization was not performed), by Famous077. (#13700)Fix annotation removal logic in matplotlib based figures to correctly handle non-contiguous visible annotations, by Johannes Herforth. (#13703)
Fix bug in 3D overlay compositing that could produce NaN RGBA values when the resulting alpha is zero, by Pragnya Khandelwal. (#13714)
Change default-pick ‘data’ for “eyegaze” to false, following existing documentation. by new contributor Benedikt Ehinger. (#13723)
Support mixed-type concatenation of
mne.Annotationsandmne.HEDAnnotations, preserving HED strings inextras["HED"], by Bruno Aristimunha. (#13736)Improved handling of dropped epochs in
mne.viz.plot_ica_properties()andmne.preprocessing.ICA.plot_properties(), allowing plots to be generated even with many bad annotations, by Clemens Brunner. (#13746)When interpolating from axial to planar gradiometers, set info fields “chs”, “ch_names”, and “nchan”, according to the interpolated data, reset info fields “device_info”, “helium_info”, “gantry_angle”, “ctf_head_t”, “dev_ctf_t”, “bads”, “projs”, and “comps” to [] or None, and preserve all remaining info fields. by new contributor Christoph Huber-Huber. (#13759)
Clarified an internal forward-model invariant in
mne.forward._lead_dotsby asserting thatrrefisNoneon the current code path, by Pragnya Khandelwal. (#13764)Fix bug in when reading EDF/GDF files where non-positive lowpass values were not handled correctly, now mapping them to the Nyquist frequency to prevent errors during plotting, by new contributor Hansuja Budhiraja. (#13769)
Clearer error message when no ECG events are found in
find_ecg_events(), by new contributor Hansuja Budhiraja. (#13771)Avoid some unnecessary computations when
n_jobs=Noneis equivalent ton_jobs=1, by Simon Kern. (#13777)Fix clipped annotations and x-axis label in
mne.io.Raw.plot(), by Clemens Brunner. (#13787)
New features#
Add
mne.HEDAnnotationsfor attaching HED (Hierarchical Event Descriptors) tags to annotations, by new contributor Kay Robbins, Bruno Aristimunha, and Daniel McCloy. (#13059)Add support for
mne.io.Raw.interpolate_to()and related methods (andmne.channels.read_meg_canonical_info()) for interpolating MEG data across systems, by new contributor Konstantinos Tsilimparis. (#13196)Add support for multi-wavelength NIRS processing to
mne.preprocessing.nirs.beer_lambert_law(),mne.preprocessing.nirs.scalp_coupling_index(), and SNIRF readermne.io.read_raw_snirf(), by new contributor Tamas Fehervari. (#13408)Add an optional
show_channel_namesparameter tomne.viz.plot_alignment()to overlay channel labels at sensor locations in the 3D alignment view, by new contributor Aman Srivastava. (#13570)Add
mne.io.read_raw_mef()for reading MEF3 files, supporting BIDS iEEG data formats, by Bruno Aristimunha. (#13610)Add finer-grained control to
mne.io.anonymize_info()and the related methodsmne.io.Raw.anonymize(),mne.Epochs.anonymize(), andmne.Evoked.anonymize()by allowingkeep_histo accept one or more strings;keep_his=Trueremains unchanged (retaining"his_id","sex", and"hand"from anonymization), but individual fields can now also be retained (the defaultkeep_his=Falsealso remains unchanged and still anonymizes all fields), by Clemens Brunner. (#13647)Add ICA source timecourse plots to
mne.Report.add_ica(), by Aniket Singh Yadav. (#13697)Add support for reading BCI2000
.datfiles viamne.io.read_raw_bci2k(), and an exampleexamples/io/read_bci2k.pyfor downloading and visualizing BCI2000 data, by new contributor Hansuja Budhiraja. (#13699)Add support for scalar or per-vertex
alpha(shape(n_vertices,)) in distributed overlays, including validation/errors for invalid shapes, tests, and a visualization example inexamples/visualization/brain.pyusingmne.viz.Brain.add_data(), by new contributor Pragnya Khandelwal. (#13706) (#13706)Improve memory usage and runtime of
mne.time_frequency.csd_fourier(),mne.time_frequency.csd_multitaper(),mne.time_frequency.csd_array_fourier(), andmne.time_frequency.csd_array_multitaper()by avoiding unnecessary full-matrix CSD construction, by Pragnya Khandelwal. (#13719)Add example showing how to interoperate with R using
rpy2, by Aman Srivastava. (#13729)Added
cmapparameter toEvoked.animate_topomapto allow user-specified colormaps., by new contributor Hansuja Budhiraja. (#13756)Allow per-channel color overrides in
mne.viz.plot_raw()via channel name keys in thecolordict, by new contributor Hansuja Budhiraja. (#13765)Added a
font_fileparameter tomne.viz.Brain.add_text()to support rendering glyphs not available in the default font, by Pragnya Khandelwal. (#13778)
Other changes#
Created a quality control report tutorial Quality control (QC) reports with mne.Report, by new contributor varshaa-1616. (#13532)
Improved docs for
mne.io.read_raw_nirx(), by new contributor Natneal B. (#13541)Refactor f-strings in
mne/tests/test_import_nesting.py, by new contributor Shruti Bhale. (#13551)Remove legacy Python-version compatibility checks in
mne.utils.misc._empty_hashnow thatusedforsecurity=Falseis always supported, by new contributor Varun Kasyap Pentamaraju (#13566). (#13566)Fix deprecation of setting a shape on an array directly in
numpy2.5+, by Mathieu Scheltienne. (#13585)Documentation improvement for eSSS in docstring
mne.preprocessing.maxwell_filter()and in the MaxFilter example by Simon Kern. (#13591)make
mne.sys_info()work on Windows systems with Powershell version 7+, by Marijn van Vliet (#13593)Examples Using <some-method> section quirk fix in documentation, by new contributor Himanshu Mahor. (#13596)
Code refactor in
mne.preprocessing.eyetracking.set_channel_types_eyetrack(), by Himanshu Mahor. (#13602)Improve documentation of return values to clarify that methods typically return the original instance type for chaining purposes, by Aniket Singh Yadav. (#13674)
Add
mne.Epochs.reset_index(), which replaces the legacymne.Epochs.reset_drop_log_selection()(the new name better reflects the method’s purpose), by Clemens Brunner. (#13675)Document the behavior of first_samp after
crop()and addreset_first_sampparameter to reset it to 0 after cropping, by new contributor Famous077. (#13685)Add a note to
mne.Epochs.drop()describing a potential mismatch between the indices expected bydrop()and those found in theselectionattribute when epochs have been automatically dropped, by new contributor Famous077. (#13688)Add optional low-variance (“hat”) regularization to
mne.stats.f_oneway()via newsigmaandmethodparameters, by Aniket Singh Yadav. (#13698)Extended support for visualising cross-spectral densities in
mne.viz.plot_csd()andmne.time_frequency.CrossSpectralDensity.plot()to all types of data channels, by new contributor Aniket Singh Yadav. (#13713)Add native save and read functionality for
mne.decoding.SSD,mne.decoding.CSP,mne.decoding.SPoC, andmne.decoding.XdawnTransformerobjects, by Aniket Singh Yadav. (#13718)Remove
from __future__ import annotationsas it is only needed for Python ≤ 3.9 by Aniket Singh Yadav. (#13749)Improved internal functions for inspecting MATLAB v7.3 (HDF5) files in
mne.io.read_raw_eeglab(), by Bruno Aristimunha. (#13753)Made
evoked.plot()instantiateMNELineFigurewhen it creates its own figure, aligning this path with the ongoing 2D plotting figure-class refactor discussed in #7751, by Pragnya Khandelwal. (#13795)Replacing
abc.abstractclassmethod()withabc.abstractmethod()inmne.viz.Figure3D, by new contributor Himanshu Mahor. (#13806)