Hello everyone, we are very pleased to announce the new 0.23 release of MNE-Python!
This release includes 72 pull requests merged as part of our New Developers Code Sprint in March, and more than a dozen additional contributions from those new developers after the code sprint.
Big thanks to all who participated!
A few highlights
General infos
- The MNE team has started offering regular fortnightly “office ours” on Discord to answer user questions. The next office hour will take place this Friday at 16:00 UTC. Come say “Hi!” at https://discord.gg/2hF3V4yT9Q
- The community has now moved to a new forum to answer users’ questions and make announcements (e.g., when office hours will be) at https://mne.discourse.group/.
- The documentation at https://mne.tools now features a new theme . We are continuously working to improve layout, usability, and accessibility of our documentation. If you discover anything you don’t like, that just doesn’t work for you, or that might present a barrier to some users, please do reach out to us! We’re looking forward to receiving your feedback.
Usability
- Gone is the 15-character limitation for channel names when writing FIFF files.
- Raw, Epochs, and Info objects now have a beautiful tabular representation in Jupyter Notebooks.
- Ever wanted to add Annotations to individual channels? This is now possible with the new
ch_names
parameter. - Annotations can now be exported to a pandas DataFramevia
Annotations.to_data_frame()
. - Interested in summary descriptive statistics for all your channels? Have a look at the new
Raw.describe()
. - Epochs and Evoked now allow you to easily apply transformations to their data using the brand-new
apply_function()
method. - Epochs metadata can now be generated automatically from events using
mne.epochs.make_metadata()
. - Raw.get_data() now has a
units
parameter to return data in the desired unit.
Visualization
- Dark mode! Source estimate plots can now detect the operating system theme preferences and will apply a dark theme automatically if the OS is currently in dark mode. Dark mode can also be activated manually via the
theme
parameter ofmne.viz.Brain
. - Much improved interactive 3D plots in Jupyter Notebooks. (We’re still trying to get Jupyter Lab to work nicely as well – it currently behaves rather erratically, though!)
- The new
silhouette
parameter ofmne.viz.Brain
can be used to display sharp edges and to improve perception.
Source imaging
- New method
mne.Dipole.to_mni()
for more convenient conversion fromDipole.pos
to MNI. - We have a new infant template MRI dataset downloader,
mne.datasets.fetch_infant_template()
. - Add digitizer information to
mne.io.read_raw_egi()
. - We now allow reading digitization from files other than
*.fif
in the coregistration GUI. - We managed to speed up
mne.inverse_sparse.tf_mixed_norm()
using STFT/ISTFT linearity.
Data reading and writing
- Moving over from EEGLAB? No problem! We’ve added support for reading new (2021) EEGLAB file format.
- Moving back to EEGLAB? No problem either! You can now export Raw and Epochs to the EEGLAB format, thanks to the new
export()
methods and theeeglabio
package. -
mne.channels.read_custom_montage()
got more versatile! It now supports CSV, TSV, and XYZ support formats. - StarStim / enobio NEDF files can now be read via
mne.io.read_raw_nedf()
.
Channel types
- There is now a new
dbs
channel type for deep brain stimulation recordings.
Notable API changes
-
mne.beamformer.tf_dics()
has been deprecated - The default of
real_filter=False
inmne.beamformer.make_dics()
will change toTrue
in the next version of MNE-Python. -
mne.io.anonymize_info()
now also anonymizes thesex
andhand
fields whenkeep_his=False
. - Evoked objects have gained a new
baseline
attribute that is automatically assembled based on the baseline of the averaged Epochs. -
mne.read_selection()
has been deprecated in favor ofmne.read_vectorview_selection()
. - Fitting ICA on baseline-corrected Epochs, and / or applying it on baseline-corrected Epochs or Evoked data will now display a warning.
Full changelog
For a full list of improvements and API changes, see:
https://mne.tools/stable/whats_new.html#version-0-23
Find the full documentation at https://mne.tools/
Installing the new release
Since quite a few things – including dependencies – have changed, we recommend creating a new environment with a “fresh” installation. Please follow the installation instructions on our website:
https://mne.tools/stable/install/mne_python.html
Feedback
As usual, we welcome your bug reports, feature requests, critiques, and contributions. Development takes place on GitHub. If you would like to contribute, star the project, or just take a peek at the code, visit GitHub - mne-tools/mne-python: MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python.
You may follow us on Twitter: https://twitter.com/mne_news
We hope you will enjoy the new features and many, many small improvements we have added, and are looking forward to receiving your feedback.
Stay safe and take care!
The MNE-Python developers
Contributors
MNE-Python is a community-driven project. We are always very happy to welcome new contributors of code and documentation! 41 people contributed to this release, and 11 of them contributed for the very first time – thank you so much for your time and effort, we truly appreciate it!
This is the list of contributors in alphabetical order (first-time contributors marked with a “+”):
- Adam Li
- Alex Rockhill
- Alexandre Gramfort
- Ana Radanovic
- Andres Rodriguez +
- Anna Padee +
- Apoorva Karekal +
- Britta Westner
- Catalina Magalvan
- Christian Brodbeck
- Christian Mista
- Christian O’Reilly
- Christina Zhao
- Christopher J. Bailey
- Clemens Brunner
- Cora Kim +
- Daniel McCloy
- Denis A. Engemann
- Dominik Welke +
- Eduard Ort
- Enrico Varano +
- Eric Larson
- Erica Peterson +
- Evgenii Kalenkovich
- Felix Klotzsche +
- Giorgio Marinato
- Guillaume Favelier
- Jack Zhang+
- Jean-Remi King
- Johann Benerradi
- Joris Van den Bossche
- Judy D Zhu +
- Liberty Hamilton
- Luke Bloy
- Maggie Clarke +
- Mainak Jas
- Manorama Kadwani
- Marijn van Vliet
- Martin Schulz
- Matt Sanderson +
- Matteo Anelli +
- Nicolas Gensollen
- Ram Pari +
- Richard Höchenberger
- Richard Koehler +
- Robert Luke
- Rotem Falach +
- Sebastien Treguer
- Silvia Cotroneo +
- Stefan Appelhoff
- Steven Bierer
- Sumalyo Datta +
- Timon Merk
- Tristan Stenner
- Valerii Chirkov+
- Victoria Peterson
- Yu-Han Luo
- Zhi Zhang +