GSoC Ideas
Pages 10
-
- MNE-Python
- About MNE-Python
- Contact
- Getting Started
- Writing your GSoC application
- Additional reading
- Project ideas
- 1a. Improve raw data browsing (pyqtgraph)
- Difficulty
- Project length
- Possible mentors
- Goal
- Subgoals
- 1b. Improve raw data browsing (matplotlib)
- Difficulty
- Project length
- Possible mentors
- Goal
- Subgoals
- 2. Event system for brain and evoked plots
- Difficulty
- Project length
- Possible mentors
- Goal
- Subgoals
- 3. Eye-tracking data support
- Difficulty
- Project length
- Possible mentors
- Goal
- Subgoals
Clone this wiki locally
MNE-Python
MNE-Python is planning to participate in the GSOC 2023 under the
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
⚠️ "MNE-Python" must be in the title of your application for us to consider it!⚠️ - Student application information for Python
Additional reading
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
- 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)
2. Event system for brain and evoked plots
Difficulty
Medium
Project length
350 hours
Possible mentors
Goal
We have an excellent 3D viewer for brain activations, and multiple ways of viewing evoked data (plot_topo, plot_topomap, plot_joint, etc.). 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
- Design and implement a callback system for Brain and time-based viewers (plot_topo, plot_topomap, plot_joint, etc.)
- Provide a simple API for hooking
- Possibly allow passing an
(evoked, inv)
pair to Brain to generate source time courses on the fly - Possibly allow integrating the
evoked.plot_*
matplotlib figures into the brain viewer directly (this is a UI design problem mostly: should it use tabs, or something else?)
3. Eye-tracking data support
Difficulty
Medium
Project length
175 or 350 hours
Possible mentors
Alex Gramfort, Eric Larson, Dan McCloy
Goal
MNE-Python has a PR open to add Eyelink data reading and channel types. After this is merged (possibly with GSoC help!), standard eye-tracking data preprocessing, regression, and visualization methods will be needed. This requires some domain-specific knowledge, i.e., some experience with eye-tracking data collection and analysis.
Subgoals
Any of the following would be helpful:
- Finish data reading PR
- Add any necessary preprocessing functions (interpolation during blinks, etc.)
- Extend support and add an example of using linear regression / deconvolution with a suitable pupil kernel and/or kernel estimation
- Adapt any other necessary code from the obsolete pyeparse