Skip to content
Daniel McCloy edited this page Aug 9, 2024 · 41 revisions

MNE-Python

MNE-Python regularly participates in GSoC (as a sub-org under the 🐍 Python Software Foundation (PSF) umbrella organization).

Note: If you are not currently pursuing research activities in MEG or EEG and do not use or do not plan to use MNE-Python for your own research, our GSoC might not be for you. Our projects require domain-specific interest and are not simple coding jobs.

About MNE-Python

MNE-Python is a pure Python package for preprocessing and analysis of M/EEG data. For more information, see our homepage.

Contact

For modes of communication see our getting help page. It's a good idea to introduce yourself on our Discourse forum to get in touch with potential mentors before submitting an application.

Getting Started

Writing your GSoC application

Additional reading

Additionally, we expect GSoC participants to be pro-active about communicating with mentors frequently. We typically schedule weekly meetings on Discord, but you should also expect to check in with your mentors at least 1-2 other times per week to make sure things stay on track. These are not necessarily meetings (though they might be) --- it could be an @username ping on GitHub to say "hey mentor, this test is failing and I don't know why", or an email or Discord message saying "I've finished A and B, but won't get to C before our next meeting because I'm busy the next 2 days", or it could be a full-blown pair programming session. Regardless of the form it takes (which you'll work out with your mentors, and might change from week to week), expect to be communicating regularly throughout the project period.

Project ideas

We list some potential project ideas below, but we welcome other ideas that could fit within the scope of the project!

1a. Improve raw data browsing (pyqtgraph)

Difficulty

Medium

Project length

350 hours

Possible mentors

Alex Gramfort, Eric Larson, Dan McCloy

Goal

mne-qt-browser is a modern eletrophysiology browser based on Qt. It offers fast visualization of raw, epochs, and ICA time courses. However, there are many UI and usability improvements that could be added.

Subgoals

  • Improve the overview bar
  • Enable interactive switching between time courses and STFT/spectrogram view for individual traces, including UI elements to control various parameters (clim, cmap, n_fft, etc.)
  • Add a two-control "time slider" and/or "channel slider" that allows setting the time span and channel span to show
  • Optionally, add text overlays for each channel giving their value at the current time point (continuously updating)
  • Add the possibility to load a file from the UI (add button or menu) or to simple drop a file in the window to view it
  • Multiple other ideas on this project page

1b. Improve raw data browsing (matplotlib)

Difficulty

Medium

Project length

350 hours

Possible mentors

Alex Gramfort, Eric Larson, Dan McCloy

Goal

The newer pyqtgraph-based data browser in 1a is modeled on our original Matplotlib-based browser. The Matplotlib data browser is better tested and more feature-complete, but less performant than its pyqtgraph-based counterpart. The main goal is to improve rendering speed. Secondary goals include re-working some of the dialog windows to leverage modern matplotlib capabilities, and adding a zoom-to-rectangle feature.

Subgoals

2. Utilize event system for brain and evoked plots

Difficulty

Medium

Project length

175 hours, 350 hours

Possible mentors

Eric Larson, Marijn van Vliet

Goal

We have an excellent 3D viewer for brain activations, and multiple ways of viewing evoked data (plot_topo, plot_topomap, plot_joint, etc.), and an event system for linking them. We want to integrate these so that you can, for example, click on a time point in a Brain and have the evoked.plot_topomap update. This should be done using callbacks to allow for customizability.

Subgoals

Create missing functionality such as:

3. Refactor EGIMFF to use mffpy

Difficulty

Medium

Project length

175 hours

Possible mentors

Eric Larson, Dan McCloy

Goal

MNE-Python uses internal code for reading EGI-MFF files, but we should leverage mffpy instead. See for example: