Introduction to DIPY
DIPY is a free and open-source software library for the analysis of 3D/4D+ imaging in Python. It contains generic methods for spatial normalization, signal processing, machine learning, statistical analysis, and visualization of medical images. Additionally, it contains specialized methods for computational anatomy including diffusion, perfusion, and structural imaging. DIPY has many users from computational neuroanatomy and the medical data science field. DIPY is an international project which brings together scientists across labs and countries to share their state-of-the-art code and expertise in the same codebase, accelerating scientific research in medical imaging. DIPY is participating in GSoC this year for the 9th time.
How to become a part of DIPY's Google Summer of Code 2026
GSoC is a program that allows students to learn by contributing to an open-source project while receiving a fellowship from Google, and mentorship from open-source software developers. For details about this year's GSoC, please refer to this page.
Before considering becoming part of the DIPY GSoC, please read about our expectations.
All participants should have basic knowledge of scientific computing and development in Python. For a comprehensive introduction to these topics, please refer to the book Effective Computation in Physics by Katy Huff and Anthony Scopatz. However, you should be already familiar with data analysis using Python and Numpy before applying.
Be happy to ask questions directly in our forum https://github.com/dipy/dipy/discussions
Advice
Potential candidates should take a look at the guidelines on how to contribute to DIPY. Making a small enhancement/bugfix/documentation fix/etc to DIPY already before applying for the GSoC can help you get some idea how things would work during the GSoC. The fix does not need to be related to your proposal. We have and will continue adding some beginner-friendly issues in Github. You can see some of them here or all the issues here.
A Note on the Use of AI:
The DIPY maintainers are well-versed in AI tools and utilize them regularly. While AI can be a helpful assistant, we expect every contributor to have a deep, line-by-line understanding of their pull requests (PRs). Before submitting, ensure you have thoroughly researched the problem, consulted the documentation, and verified that the issue hasn't already been addressed. Quality and technical accuracy are our priorities; unverified AI-generated content can lead to delays or rejection.
Furthermore, If you submit a PR that is clearly a blind copy-paste from a LLM, it won't just be rejected — it will make you look like you aren't doing the work. Use AI to optimize your workflow, but don't let it make you look like a "black box" contributor. Show us your own thinking.
Project Ideas
Notice 1: More project ideas might appears Stay tuned and check regularly this page!
Notice 2: We want to provide the best mentoring to our students, only 1 or 2 of these projects will be selected. Not more!
If you have any questions or if you want to contact a mentor:
- open a new discussion with GSOC as a category.
Project 1. Performance Monitoring with ASV Integration
Difficulty: Intermediate
Mentors: Serge Koudoro, Eleftherios Garyfallidis
Description: As DIPY introduces more optimized and parallelized algorithms (including GPU-based ones), it is critical to ensure that new changes do not introduce performance regressions. This project involves setting up and integrating Airspeed Velocity (ASV), a tool designed to benchmark Python packages over their commit history. The candidate will create a dedicated benchmarking suite that tracks execution time and memory usage for DIPY’s core modules, providing a visual dashboard to monitor the library's efficiency over time.
Project Steps:
- Step 1: Set up the ASV configuration (asv.conf.json) and environment for the DIPY repository.
- Step 2: Identify "critical path" algorithms (e.g., reconstruction, tracking, and registration) and write representative benchmarks for them.
- Step 3: Implement automated performance tracking using GitHub Actions to run benchmarks on Pull Requests.
- Step 4: Build and deploy a public-facing performance dashboard (hosted via GitHub Pages) to visualize DIPY's speed trends across versions.
- Step 5: Create a "benchmarking guide" for contributors to help them write and run local benchmarks before submitting code.
Time: Full-time (350 hours) or Part-time (175 hours)
Skills Required: Python, Git, Benchmarking, GitHub Actions, ASV.
Project 2. Add new similarity metrics to our image registration frameworks
Difficulty: Beginner
Mentors: Sreekar Chigurupati, Serge Koudoro, Jong Sung Park (contact via github discussion)
Description:
Mutual information (MI) similarity metric is a metric for registering images that have different modalities or styles. Currently, the metric is available only for affine registration and not nonrigid registration. The student will need to implement this metric, compare and test MI for nonrigid registration. An existing implementation in DIPY of different metrics will provide a guideline. An initial implementation separate from DIPY will be provided as well. This metric is expected to boost registration accuracy. This project will focus on multimodal images. If time is permitted the student can also investigate a tensor based metric for registration.
Time: small (~90 hour projects) or medium (~175 hr projects)
Skills required: Familiarity with registration algorithms, Python and some knowledge in Cython or C/C++.
Project 3. DIPY algorithms Parallelization using GPU
Difficulty: Intermediate
Mentors: Ariel Rokem, Serge Koudoro (contact via github discussion)
Description:
Many of our algorithms are compute bound so performance can be easily be improved via GPU. To realize this, the candidate will study some of the current algorithms, and start to implement a wgpu version. Despite lower performance than CUDA, WGPU is preferred due to its ability to be multiplatform and easy to install on any hardware.
Project Steps:
- Step 1: Look at algorithms that are compute-bouds and Select the one with the highest performance rewards.
- Step 2: Start WGPU-PY implementation.
- Step 3: Benchmark performance improvement.
- Step 4: Integrate and deploy performance improvement via ASV.
- Step 5 (optional): Implement a second algorithms
Time: Full-time (350 hours) or Part-time (175 hours)
Skills Required: Python, cython, math, algorithms, optimization, WGPU
Project 4. Modernize DIPY Documentation
Difficulty: Beginner
Mentors: Serge Koudoro, Maharshi Gor, Jong Sung Park
Description:
As DIPY grows in complexity and feature set, the entry barrier for new users often depends on the quality of its documentation. This project aims to overhaul the existing documentation structure to meet modern standards. The candidate will focus on improving the visual theme, streamlining the navigation, and ensuring that the documentation is not just a reference manual, but a comprehensive learning resource. This includes moving toward a "Four Pillars" documentation structure: tutorials, how-to guides, reference material, and topical explanations.
Project Steps:
- Step 1: Audit existing documentation to identify broken links, outdated examples, and areas with poor navigation.
- Step 2: Integrate numpydoc as a Github Action. Make sure that not
- Step 3: Improve documentation version managment.
- Step 4: Standardize the Docstring format across major modules to ensure consistency in the API reference section.
- Step 5: Improve the "Getting Started" flow, making it easier for researchers with varying levels of coding expertise to install and run their first DIPY pipeline.
- Step 6 (optional): Study auto-generation of videos from our Tutorials.
Time: Part-time (175 hours) or Full-time (350 hours)
Skills Required: Python, Sphinx, ReStructuredText (reST) or MyST-Parser, Basic CSS/HTML, Git.
Time: Part-time (175 hours) or full-time (350 hours) project
Skills Required: Python, Sphinx.