We are very pleased to announce the new v0.24 release of MNE-Python!
This release is the culmination of more than 6 months of works by 45 contributors, 13 of whom contributed for the very first time – meaning almost one third of contributors were first-timers! Thanks so much to all of you!
We are extremely excited to share all the amazing things we’ve been working on.
The MNE-Python team supervised three students in this year’s Google Summer of Code (GSoC). We are thrilled to announce that all of our students successfully finished their projects, greatly enhancing the MNE-Python user experience:
- Adam Li produced the MNE-Connectivity package for advanced connectivity analysis with MNE-Python.
Alex Rockhill created a new GUI for the localization of intracranial electrodes on CT and MRI scans, available via
- Martin Schulz reimagined the time-series data browser and created the mne-qt-browser package that will redefine your experience of visual data inspection: faster, smoother, better.
Adam, Alex, and Martin: We had a blast working with you! Thank you for your effort, endurance, and persistence!
- The coregistration GUI has been rebuilt from the ground up using a state-of-the-art technology stack. It was tedious and difficult work, believe us, but it was worth it! What changes for you? The GUI should be more responsive, easier to use, and work more reliably on all platforms!
- Working with intracranial recordings? A new GUI,
mne.gui.locate_ieeg(), helps to localize intracranial electrodes with CT and MR scans!
- Ever heard of MNE reports? These single-file HTML documents can help you track an entire analysis from beginning to end, and share the results with your coworkers. With this release, reports are easier to use and looking better than ever!
- Often find yourself creating separate evokeds for the different event types in your epochs? Well, we just made your life a bit easier!
Epochs.average()now has a
by_event_typeparameter to automatically produce evokeds for each event type – no need to write a loop anymore!
- A new, modern, good-looking and fast way to visualize time-series data has been added by Martin Schulz via the new (optional)
mne-qt-browserpackage. We are certain it will redefine your experience of visual data inspection in MNE-Python!
- Acquired some data with breaks between experimental blocks, but the recording kept on running? These breaks can now be automatically annotated via
- The figures produced by
ICA.plot_sources()for evoked data now use different colors and line styles to make it easier to tell components apart.
- We have added cortical signal suppression (CSS) via
Epochs.average()now has a
by_event_typeparameter to generate evokeds for each event type.
- We know you missed it:
Evokedobjects now have a
get_data()method, just like
Epochs! You’re welcome.
- The coregistration GUI has been rebuilt from the ground up and no longer requires Mayavi.
- We’ve added a new function,
mne.bem.make_scalp_surfaces(), to compute the scalp surfaces required for coregistration. Previously, this could only be done on the command line.
mne.inverse_sparse.mixed_normnow supports the SURE method to automate setting of the regularization parameter.
- There is a new GUI,
mne.gui.locate_ieeg(), to locate intracranial electrode contacts from a CT and anatomical MRI scans. This is described in a new tutorial.
- Oxy- and deoxyhemoglobin data types can now be interpolated.
- NIRSport, NIRSport2, and data acquired with NIRx devices using Aurora software version 2021.9 can now be read.
- We completely revamped the report experience: new HTML layout, many new methods, more flexibility! The functionality is demonstrated in the respective tutorial.
- We’ve added support for exporting evoked MFF and raw EDF+ files.
- All functions for reading and writing files should now automatically handle
~(the tilde character) and expand it to the user’s home directory. Saves you Linux and macOS folks some typing!
- pooch is now required to download the included datasets.
get_data()methods now have
tmaxparameters to specify which time period to get. No more manual fiddling with those pesky indices!
- You should not modify the
Infoobject manually as this can have unexpected consequences. We’re now starting to enforce this and produce warnings if you don’t follow our advice 🥸 And in a future release of MNE-Python, these warnings will change into exceptions. So please pay attention to them! And do let us know if you need help avoiding them.
- We will remove Mayavi and PySurfer 3D plotting backends in the next version.
mne kit2fiffGUI has been split off into the separate
mne.gui.fiducials()GUI has been deprecated, use
mne_kit_gui.fiducials()to set MRI fiducials instead.
For a full list of improvements and API changes, see the changelog.
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.
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 mne-tools/mne-python.
You may follow us on Twitter at @mne_news
The MNE-Python forum is an excellent way to ask your questions and to share your knowledge with others. We also announce our bi-weekly online office hours there.
And of course, we provide a large body of documentation, tutorials, and examples on our website, mne.tools.
We hope you will enjoy the new features and the many, many small improvements we have added, and are looking forward to receiving your feedback.
We will also start highlighting and demonstrating some of the new functionality in brief tutorials and video clips shortly, so be sure to follow us on Twitter to not miss any of those!
Stay safe and take care!
The MNE-Python developers
MNE-Python is a community-driven project. We are always very happy to welcome new contributors of code and documentation! 45 people contributed to this release, and 13 of them (29%) 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.
- Darin Erat Sleiter
- Dominique Makowski
- Evgeny Goldstein
- Jan Sosulski
- John Samuelsson
- Joshua Teves
- Marian Dovgialo
- Mathieu Scheltienne
- Pierre-Antoine Bannier
- Reza Shoorangiz
- Romain Derollepot
- Timothy Gates
- Xiaokai Xia
- Adam Li
- Alex Rockhill
- Alexandre Gramfort
- Britta Westner
- Clemens Brunner
- Daniel McCloy
- David Julien
- Denis A. Engemann
- Eric Larson
- Erica Peterson
- Evan Hathaway
- Fede Raimondo
- Gansheng Tan
- Guillaume Favelier
- Hubert Banville
- Jean-Remi King
- Jeff Stout
- Johann Benerradi
- Josh Koen
- Lukas Hecker
- Luke Bloy
- Marijn van Vliet
- Martin Schulz
- Mikołaj Magnuski
- Richard Höchenberger
- Riessarius Stargardsky
- Robert Luke
- Ross Maddox
- Ryan Law
- Stefan Appelhoff
- Steve Matindi
- Valerii Chirkov