-
Notifications
You must be signed in to change notification settings - Fork 1.3k
GSoC Ideas
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.
MNE-Python is a pure Python package for preprocessing and analysis of M/EEG data. For more information, see our homepage.
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.
⚠️ "MNE-Python" must be in the title of your application for us to consider it!⚠️ - Student application information for Python
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.
We list some potential project ideas below, but we welcome other ideas that could fit within the scope of the project!
Medium
350 hours
Alex Gramfort, Eric Larson, Dan McCloy
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.
- 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
Medium
350 hours
Alex Gramfort, Eric Larson, Dan McCloy
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.
- Speed up rendering, both when scrolling (through time or through channels) and when toggling projections on and off (see visualizing how projectors affect the signal). This may involve some or all of the following: blitting, multiprocessing (to precompute projected data), working with SubFigures, LineCollections, clipping.
- Add zoom-to-rectangle (click-drag-release, or fixed ratio zoom-to-pointer; #7006)
- Rework the MNEAnnotationFigure and MNESelectionFigure to address recent changes in the Matplotlib API (see partial progress in #11417 and #11409).
- Improve interaction with annotations (e.g., #9133, #8946, #9199)
Medium
175 hours, 350 hours
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.
Create missing functionality such as:
- Build an Xfit replacement: https://github.com/mne-tools/mne-python/pull/12071, https://github.com/mne-tools/mne-python/pull/12070, etc.
- Improve inverse interactivity, e.g., allow
(evoked, inv)
pair to Brain to generate source time courses on the fly - Integrate the
evoked.plot_*
matplotlib figures into the brain viewer directly (this is a UI design problem mostly: should it use tabs, or something else?)
Medium
175 hours
MNE-Python uses internal code for reading EGI-MFF files, but we should leverage mffpy instead. See for example: