Mentors: Johanna Bayer <johanna.bayer@radboudumc.nl>, Konstantinos Tsilimparis <konstantinos.tsilimparis@radboudumc.nl>, Augustijn de Boer <augustijndeboer@gmail.com>, Andre Marquand <Andre.Marquand@radboudumc.nl>
Skill level: Intermediate
Required skills: The applicant combines expertise in neuroscience with software engineering skills, including machine learning, Python and object-oriented programming.
Bonus skills: Statistics/Bayesian modelling, longitudinal modelling, scientific software practices (testing/CI/documentation), high-performance computing (HPC), experience with brain data (especially MRI)
Time commitment: 350h (full-time or part-time)
About: The Predictive Clinical Neuroscience toolkit (PCNtoolkit) is an open-source Python toolbox for normative modelling in neuroimaging and other clinical data. Normative modelling enables predictions at the subject level, which is particularly valuable for clinical applications and precision medicine. More specifically, normative models estimate a reference distribution of variation (for example on covariates such as age/sex/site) and allow the computation of subject-level deviation scores (e.g., z-scores) relative to that reference cohort (Marquand et al. 2016, 2019). The focus of the PCNtookit lies in the implementation of new models for normative modelling, such as implementing non-Gaussian and heteroscedastic noise models (de Boer et al., 2025) that can more accurately fit neuroimaging data and derivatives.
Aims: The aim for this project is the implementation of longitudinal (velocity) normative models. Hence, whereas standard normative modelling asks the question: “Where does an individual lie within the normative distribution given their age and other covariates?”, velocity modelling supports questions like: “Is this person changing faster/slower than expected given their age and other covariate, taking into account their past history?” The theoretical foundations of velocity normative modelling have already been described (Bayer et al., 2026), and an initial implementation is available in PCNtoolkit. This project will focus on validating, extending, and hardening this functionality into a robust, well-documented, and well-tested component of the toolbox.
Tasks:
- Validate and extend the existing velocity normative modelling architecture in the PCNtookit
- Extend the architecture to make predictions based on a past trajectory (multiple time points) instead of just based on one time point. This will include translating existing code that already exists outside the toolbox, into the toolbox
- Develop tutorials and documentation for velocity and longitudinal normative modelling workflows.
- Extend unit and integration test coverage to ensure reliability and maintainability.
Website: Welcome to PCNToolkit’s documentation! — PCNToolkit 1.0.0 documentation
What can I do before GSoC to familiarize myself with the project?
-
Familiarize yourself with the existing PCNtoolkit codebase and its modular (class-based) architecture: GitHub - amarquand/PCNtoolkit: Toolbox for normative modelling and spatial inference of neuroimaging data. https://pcntoolkit.readthedocs.io/en/latest/ · GitHub
-
Explore the PCNtoolkit documentation: Welcome to PCNToolkit’s documentation! — PCNToolkit 1.0.0 documentation
-
Work through the PCNtoolkit demo tutorials:
Helpful literature:
- Introduction to velocity normative modelling paper (Bayer et al., 2026, [2601.07591] Charting the velocity of brain growth and development)
- Overview paper about normative modelling (Rutherford et al. 2022 The normative modeling framework for computational psychiatry | Nature Protocols)
- A recent review paper on normative modelling: https://www.sciencedirect.com/science/article/pii/S0149763425002854
- Non-Gaussian normative modelling with hierarchical Bayesian regression:
(de Boer et al., 2025, https://direct.mit.edu/imag/article/doi/10.1162/imag_a_00132/120371/Non-Gaussian-normative-modelling-with-hierarchical)
Tech keywords: Machine learning, normative modelling, computational modelling, longitudinal modelling, Bayesian modelling, Python, object oriented programming