Download this file
174 lines (155 with data), 16.6 kB
Version 1.8.0 (2024-08-18)
Dependencies
- Minimum versions for dependencies were bumped to those ~2 years old at the time of release (by `Eric Larson`_), including:
- NumPy ≥ 1.23
- SciPy ≥ 1.9
- Matplotlib ≥ 3.6
- scikit-learn ≥ 1.1 (#12554)
- Official support for PySide2 has been dropped in this release (though it might continue
to work), by `Eric Larson`_. (#12742)
Bugfixes
- Fix bug where an event that occurred only once was excluded in :func:`mne.io.read_raw_egi`, by :newcontrib:`Ping-Keng Jao`. (#12300)
- Fix bug where :func:`mne.stats.permutation_cluster_test` (and related functions) uses excessive amount of memory for large 2D data when TFCE method is selected, by :newcontrib:`Nicolas Fourcaud-Trocmé`. (#12609)
- Assure that blink times are handled correctly :func:`mne.preprocessing.eyetracking.interpolate_blinks`, even when the raw object is cropped by `Scott Huberty`_ and :newcontrib:`Sammi Chekroud`. (#12759)
- Fix check for dropping all channels in :meth:`mne.io.Raw.drop_channels` and related methods, by :newcontrib:`Farzin Negahbani`. (#12763)
- Fix scrolling behavior in :class:`~mne.Report` when clicking on a TOC entry multiple times, by `Richard Höchenberger`_. (#12561)
- Fix bug where :func:`mne.decoding.get_coef` did not work properly with :class:`mne.decoding.CSP`, by `Eric Larson`_. (#12562)
- The color scaling of Evoked topomaps added to reports via :meth:`mne.Report.add_evokeds`
was sometimes sub-optimal if bad channels were present in the data. This has now been fixed
and should be more consistent with the topomaps shown in the joint plots, by `Richard Höchenberger`_. (#12578)
- Fix error causing :meth:`mne.Epochs.interpolate_bads` not to work for seeg channels and fix a single contact on neighboring shafts sometimes being included in interpolation, by `Alex Rockhill`_ (#12593)
- Fix bug where :func:`mne.io.read_raw_fil` could not assign bad channels on import, by `George O'Neill`_. (#12597)
- Fixed a bug where :meth:`mne.Evoked.animate_topomap` did not work with :func:`mne.preprocessing.compute_current_source_density` - modified data, by `Michal Žák`_. (#12605)
- Fix overflow when plotting source estimates where data is all zero (or close to zero), and fix the range of allowed values for the colorbar sliders, by `Marijn van Vliet`_. (#12612)
- Fix adding channels to :class:`~mne.time_frequency.EpochsTFR` objects, by `Clemens Brunner`_. (#12616)
- Fix for new sklearn metadata routing protocol in decoding search_light, by `Alex Gramfort`_ (#12620)
- Fix bug where :func:`mne.time_frequency.csd_multitaper`, :func:`mne.time_frequency.csd_fourier`, :func:`mne.time_frequency.csd_array_multitaper`, and :func:`mne.time_frequency.csd_array_fourier` would return cross-spectral densities with the fmin and fmax frequencies missing, by `Thomas Binns`_ (#12633)
- Output types of sparse arrays were changed from matrix to array in
:func:`~mne.channels.read_ch_adjacency`, :func:`~mne.channels.find_ch_adjacency`,
:func:`~mne.stats.combine_adjacency`, :func:`~mne.spatio_temporal_src_adjacency`,
and related functions to comply with the pending deprecation of np.matrix.
The returned objects now behave like standard :class:`~numpy.ndarray` objects, and
in particular * now operates element-wise instead of performing matrix
multiplication. You can use @ as a backward compatible matrix multiplication
for both np.matrix and np.ndarray objects, and if a matrix is desired
the outputs can be cast directly, for example as scipy.sparse.csr_matrix(out).
Changed by `Eric Larson`_. (#12646)
- Fix incorrect RuntimeWarning (different channel filter settings) in EDF/BDF import, by `Clemens Brunner`_. (#12661)
- In :func:`mne.export.export_raw` (fmt='edf'), when padding data to create equal-length data blocks,
edge-padding is favored over zero-padding in order to avoid accidentally enlarging physical range, by `Qian Chu`_. (#12676)
- In :func:`mne.io.read_raw_eyelink`, gracefully handle missing datetime in file by `Scott Huberty`_. (#12687)
- Fix regression with :class:`mne.decoding.CSP` where using rank="full" errantly
raised an error, by `Eric Larson`_. (#12694)
- Fix in-memory anonymization of data read with :func:`mne.io.read_raw_edf` by `Eric Larson`_. (#12720)
- Fix bug with overplotting of butterfly labels in :func:`mne.viz.plot_raw` and related
functions and methods, by `Eric Larson`_. (#12721)
- Fix a bug where the ylim parameter would sometimes apply to the wrong channel types in :func:`mne.viz.plot_evoked_topo`, by `Marijn van Vliet`_. (#12724)
- Fix bug where ad-hoc regularization of a covariance with
:func:`mne.cov.regularize` did not properly account for bad channels
in rank calculations, by `Eric Larson`_. (#12727)
- Fix bug when reading NIRX files saved in a non-western encoding, by `Daniel McCloy`_. (#12730)
- :func:`~mne.set_log_file` and :func:`~mne.set_log_level` can now be correctly detected by
static analysis tools like Pylance, by `Richard Höchenberger`_. (#12735)
- Safeguard loading of meas_date in :func:`mne.io.read_raw_edf`, by `Mathieu Scheltienne`_. (#12754)
- Fix bug in :func:`~mne.preprocessing.maxwell_filter_prepare_emptyroom` where a difference in sampling frequencies between data and emptyroom files was ignored, by `Daniel McCloy`_. (#12760)
API changes by deprecation
- A new argument events_as_annotations has been added to :func:`mne.io.read_raw_egi`
with a default value of False that will change to True in version 1.9, by
`Scott Huberty`_ and `Eric Larson`_. (#12300)
- mne.Info.ch_names will now return an empty list instead of raising a KeyError if no channels
are present, by `Richard Höchenberger`_. (#12583)
- Documented that :func:`~mne.match_channel_orders` can also work on Epochs, and Evoked objects. Reflecting this, deprecated the raws parameter in favor of an insts parameter, by `Stefan Appelhoff`_. (#12699)
- The block argument to :class:`mne.viz.Brain` is deprecated and will be removed in
1.9, use :func:`matplotlib.pyplot.show` with block=True instead, by `Eric Larson`_. (#12719)
- :func:`mne.datasets.fetch_fsaverage` now returns a :class:`python:pathlib.Path` object
rather than a string. Support for string concatenation with plus (+) is thus
deprecated and will be removed in 1.9, use the forward-slash / operator instead,
by `Eric Larson`_. (#12771)
New features
- Added internals to allow modifying single-channel annotations in the Qt
raw browser, by :newcontrib:`Noah Markowitz`. (#12669)
- Adding :meth:`mne.channels.Layout.copy` and :meth:`mne.channels.Layout.pick` to copy and select channels from a :class:`mne.channels.Layout` object. Plotting 2D topographies of evoked responses with :func:`mne.viz.plot_evoked_topo` with both arguments layout and exclude now ignores excluded channels from the :class:`mne.channels.Layout`. By `Mathieu Scheltienne`_. (#12338)
- In :class:`~mne.Report` you can now easily navigate through images and figures connected to a slider with the left and right arrow keys. Clicking on the slider or respective image will focus the slider, enabling keyboard navigation, by `Richard Höchenberger`_ (#12556)
- When plotting EOG and ECG artifact scores for ICA in :meth:`mne.Report.add_ica`,
the channel names used for artifact detection are now displayed in the titles of
each respective subplot, by `Richard Höchenberger`_. (#12573)
- Use aseg='auto' for :meth:`mne.viz.Brain.add_volume_labels` and :func:`mne.get_montage_volume_labels` to use aparc+aseg by default or if not present use wmparc because freesurfer uses wmparc in the latest version, by `Alex Rockhill`_. (#12576)
- The HTML representations of :class:`~mne.io.Raw`, :class:`~mne.Epochs`,
and :class:`~mne.Evoked` (which you will see e.g. when working with Jupyter Notebooks or
:class:`~mne.Report`) have been updated to be more consistent and contain
slightly more information, by `Richard Höchenberger`_. (:gh:`12624`) (#12583)
- When adding :class:`~mne.Evoked` data to a :class:`~mne.Report` via
:meth:`~mne.Report.add_evokeds`, we now also include an "Info" section
with some basic summary info, as has already been the case for raw and
epochs data, by `Richard Höchenberger`_. (#12584)
- We added new installation variants for a full installation with the PySide6 Qt binding
("mne[full-pyside6]"), with the PyQt6 binding ("mne[full-pyqt6]", equivalent to
"mne[full]"), and without any Qt binding ("mne[full-no-qt]"), which may be useful
in certain situations by `Richard Höchenberger`_. (#12628)
- Adding argument 'random' to :func:`~mne.epochs.equalize_epoch_counts` and to :meth:`~mne.Epochs.equalize_event_counts` to randomly select epochs or events. By `Mathieu Scheltienne`_. (#12649)
- Add new parameter ignore_marker_types to :func:`~mne.io.read_raw_brainvision` to ignore marker types (and only use marker descriptions) when reading BrainVision files, by `Clemens Brunner`_. (#12652)
- Added support for passing axes to :func:`mne.viz.plot_head_positions` when
mode='field', by `Eric Larson`_. (#12655)
- The HTML representation of :class:`~mne.Epochs` (visible e.g. in Jupyter or in :class:`~mne.Report`) now
indicates whether metadata is attached to the epochs, by `Richard Höchenberger`_. (#12686)
- Montage plots created with :meth:`~mne.channels.DigMontage.plot` now scale both the channel dots and channel names with the new scale parameter. The default is scale=1 (factors less than 1 will scale down, whereas factors greater than 1 will scale up). The previous scale_factor parameter only affected marker size, and this parameter is now deprecated. By `Clemens Brunner`_. (#12703)
- Add :func:`~mne.stats.erp.compute_sme` to compute the analytical standardized measurement error (SME) as a data quality measure for ERP studies, by `Clemens Brunner`_. (#12707)
- Use :class:`python:datetime.date` for info["subject_info"]["birthday"] rather than
a tuple of (year, month, day) by `Eric Larson`_. (#12720)
- Add default spatial_colors="auto" to :func:`mne.viz.plot_evoked_white` and
:meth:`mne.Evoked.plot_white` to enable spatial colors by default, by `Eric Larson`_. (#12725)
- :func:`mne.minimum_norm.make_inverse_operator` and related functions now more robustly
warn if the whitener computed from the noise covariance has an incorrect rank,
by `Eric Larson`_. (#12727)
- When indexing :class:`~mne.Epochs` (e.g. by doing epochs[0]), static code analysis tools like Pylance
should now be able to infer that the returned object is an epoch, too, and provide editor support
like automated code completions, by `Richard Höchenberger`_. (#12733)
- When using the data_path() in any dataset included in :py:mod:`mne.datasets`,
static analysis tools like Pylance will now correctly infer that a pathlib.Path will
be returned and provide editor support like automated code completions, by `Richard Höchenberger`_. (#12734)
- Add support for storing Fourier coefficients in :class:`mne.time_frequency.Spectrum`,
:class:`mne.time_frequency.EpochsSpectrum`, :class:`mne.time_frequency.SpectrumArray`,
and :class:`mne.time_frequency.EpochsSpectrumArray` objects, by `Thomas Binns`_. (#12747)
Other changes
- Fixed issue template links by :newcontrib:`Michal Žák` (#12600)
- Enhance documentation on decimation filtering to prevent aliasing, by :newcontrib:`Xabier de Zuazo`. (#12650)
- Added vulture as a pre-commit hook and removed related dead code, by `Eric Larson`_. (#12569)
- Add link to BEst-Python in the list of related software. by `Ilian Azz`_. (#12659)
- Improved clarity of parameter documentation for mne.decoding.SSD.fit, by `Thomas Binns`_. (#12664)
- Disable the "Back to top" button in the documentation, by `Richard Höchenberger`_. (#12688)
- Improve argument ylim documentation through :class:`~mne.Evoked` plotting function and validate type to :class:`dict` or None to prevent misuage, by `Mathieu Scheltienne`_. (#12697)
- Code contributions are now measured using PRs and reported on the :ref:`contributors`
page, by `Eric Larson`_. (#12774)
- Authorship headers in MNE-Python code have been standardized, by `Eric Larson`_. (#12781)
Authors
- Alex Rockhill
- Alexandre Gramfort
- Clemens Brunner
- Daniel McCloy
- Dimitri Papadopoulos Orfanos
- Eric Larson
- Farzin Negahbani+
- George O'Neill
- Ilian AZZ
- Marijn van Vliet
- Mathieu Scheltienne
- Michal Žák+
- Nabil Alibou
- Nicolas Fourcaud-Trocmé+
- Noah Markowitz+
- Ping-Keng Jao+
- Qian Chu
- Richard Höchenberger
- Sammi Chekroud+
- Scott Huberty
- Stefan Appelhoff
- Thomas S. Binns
- Xabier de Zuazo+