MNE-Python 0.24 released

MNE-Python 0.24 has been released!

Hello everyone,

We are very pleased to announce the new v0.24 release of MNE-Python! :balloon::balloon::balloon:

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! :pray:

We are extremely excited to share all the amazing things we’ve been working on.

Google Summer of Code

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, Alex, and Martin: We had a blast working with you! Thank you for your effort, endurance, and persistence!

Summary of the most notable changes

  • 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! :raised_hands:
  • Working with intracranial recordings? A new GUI, mne.gui.locate_ieeg(), helps to localize intracranial electrodes with CT and MR scans! :brain:
  • 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! :star_struck:
  • 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_type parameter to automatically produce evokeds for each event type – no need to write a loop anymore! :relieved:
  • 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-browser package. We are certain it will redefine your experience of visual data inspection in MNE-Python!

Our selection of highlights

Preprocessing, epochs, and evokeds

  • Acquired some data with breaks :coffee: between experimental blocks, but the recording kept on running? These breaks can now be automatically annotated via mne.preprocessing.annotate_break().
  • 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. :bar_chart:
  • We have added cortical signal suppression (CSS) via mne.preprocessing.cortical_signal_suppression(). :no_bell:
  • Epochs.average() now has a by_event_type parameter to generate evokeds for each event type. :sunglasses:
  • We know you missed it: Evoked objects now have a get_data() method, just like Raw and Epochs! You’re welcome. :pray:

Source estimation

  • The coregistration GUI has been rebuilt from the ground up and no longer requires Mayavi. :hammer_and_wrench:
  • 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. :skull:
  • mne.inverse_sparse.mixed_norm now supports the SURE method to automate setting of the regularization parameter. :chart_with_upwards_trend:


  • 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. :brain:


  • Oxy- and deoxyhemoglobin data types can now be interpolated. :drop_of_blood:
  • NIRSport, NIRSport2, and data acquired with NIRx devices using Aurora software version 2021.9 can now be read. :open_book:


  • We completely revamped the report experience: new HTML layout, many new methods, more flexibility! The functionality is demonstrated in the respective tutorial. :closed_book:

File I/O

  • We’ve added support for exporting evoked MFF and raw EDF+ files. :articulated_lorry:
  • 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! :keyboard:


  • pooch is now required to download the included datasets. :open_file_folder:

API enhancements, changes, and deprecations

  • All get_data() methods now have tmin and tmax parameters to specify which time period to get. No more manual fiddling with those pesky indices! :stopwatch:
  • You should not modify the Info object 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. :wastebasket:
  • The mne kit2fiff GUI has been split off into the separate mne-kit-gui package. :package:
  • The mne.gui.fiducials() GUI has been deprecated, use mne coreg or mne_kit_gui.fiducials() to set MRI fiducials instead. :wastebasket:

Full changelog

For a full list of improvements and API changes, see the changelog.

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.


As usual, we welcome your bug reports, feature requests, critiques, and contributions. Development takes place on GitHub. If you would like to contribute, star :star: the project, or just take a peek at the code, visit mne-tools/mne-python.

Staying up to date

You may follow us on Twitter at @mne_news

Getting help

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,

Closing remarks

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.

First-time contributors

  • 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

All other contributors

  • 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

:heart: :heart: :heart: