💻 🧠 Contact school.brainhack@gmail.com for questions! 🧠 💻

Predicting Tau Burden and Tau Positivity from Multimodal Neuroimaging and Clinical Data in ADNI

By Sebastian Rodriguez
Published on June 11, 2026

"This project is a complete and reproducible ML pipeline using data from the Alzheimer’s Disease Neuroimaging Initiative (ADNI) to: Predict tau PET SUVR as a continuous outcome, predict tau positivity as a binary outcome (classify participants as tau-positive or tau-negative), and identify which predictors drive model performance using SHAP explainability"

About Me

Hi, I’m Sebastian Rodriguez, I’m from Colombia and currently a first year Master’s student at Université de Montréal. I am passionate about neuroscience and machine learning.

Introduction/Background

Alzheimer’s disease (AD) is characterized by pathological accumulation of amyloid plaques and tau neurofibrillary tangles in the brain. Tau PET is one of the most accurate methods to identify AD pathology currently, as it allows in vivo quantification of tau burden. However, it is very expensive, time-consuming, and not widely available in clinical settings.

So, a model capable of predicting tau PET burden, or classifying tau positivity, from cheaper, more accessible measures (FDG-PET, amyloid PET, cognitive scores, genetics) would have significant clinical & research value.

This project is a complete and reproducible ML pipeline using data from the Alzheimer’s Disease Neuroimaging Initiative (ADNI) to:

  1. Predict tau PET SUVR as a continuous outcome
  2. Predict tau positivity as a binary outcome (classify participants as tau-positive or tau-negative)
  3. Identify which predictors drive model performance using SHAP explainability

The pipeline is fully open-source and designed for reproducibility: so anyone can clone this repository and run the full pipeline immediately using the included synthetic dataset that follows my real ADNI data distribution! :D


Objectives

  • Build and compare ML models predicting Tau PET MetaROI SUVR from clinical, FDG-PET, and amyloid-PET features
  • Classify tau positivity (tau+ / tau−) using expert visual reads as ground truth labels
  • Evaluate generalization across imaging sites using Leave-One-Site-Out cross-validation
  • Identify the most relevant predictors using SHAP values
  • Generate synthetic data for open-science sharing
  • Improve my programming skills

Methods

Tools & Technologies

  • Python

    • scikit-learn for ML pipelines, cross-validation, preprocessing, and evaluation metrics
    • XGBoost for gradient-boosted tree models
    • SHAP for model explainability and feature importance analysis
    • nilearn for 3D brain visualization
    • pandas & NumPy for data preprocessing, dataset merging, and metric computation
    • Matplotlib & Seaborn for data visualization and figure generation
    • SciPy for statistical tests and synthetic data distribution fitting
  • Git & GitHub for version control and open-science sharing

  • Bash for pipeline automation

  • ADNI (Alzheimer’s Disease Neuroimaging Initiative) as the data source

Data

All data comes from ADNI. The primary dataset includes 469 participants with Tau PET, FDG-PET, amyloid PET, and clinical assessments acquired. Tau binary labels (tau+ / tau−) were obtained from the Gothenburg visual read consensus (3-expert panel), available for a subset of participants (423 participants).

Tau PET MetaROI was computed as the mean SUVR across five regions: posterior cingulate cortex, left and right inferior temporal cortex, and left and right supramarginal gyrus.

Preprocessing

  • Merged all PET, Amyloid and clinical data in one single csv
  • Age corrected to scan date using baseline age + time elapsed since baseline visit
  • Diagnosis recoded: LMCI/EMCI → MCI; Dementia → AD; SMC → CN

Predictor Sets

SetFeatures
clinicalAge, sex, education, APOE ε4, CDR-SB, MMSE
amyloidAmyloid PET SUVR, Centiloids
fdgFDG SUVR, HCI, SROI AD, SROI MCI
clinical_amyloidclinical + amyloid
clinical_fdgclinical + FDG
allAll predictors combined

Models

Four model types were evaluated for both continuous and binary tasks:

  • ElasticNet / Logistic Regression
  • Random Forest
  • XGBoost
  • Gradient Boosting

Cross-Validation Strategy

Repeated Stratified K-Fold (5 folds × 3 repeats = 15 splits): stratified on DX × APOE4 binary status to ensure balanced group representation in every fold

Leave-One-Site-Out (LOSO): each imaging site held out as the test set, training on all remaining sites. Tests generalization across scanner and protocol variability.

Synthetic Data

Synthetic data was generated using a conditional multivariate Gaussian approach: for each diagnostic group (CN, MCI, AD), the mean vector and covariance matrix were estimated from the real data, and synthetic samples were drawn from the resulting multivariate normal distribution. Values were clipped to observed ranges for each predictor. This approach produces data that preserves group-specific means, variances, and covariance structure without relying on generative models.

Important: the plots and metrics will be lower using this synthetic data than the ones presented on this report, as the real ADNI data has a higher correlation than the one created by the synthetic algorithm.


Results

Participant Statistics

ContinuousBinary (with visual reads)
N total469423
tau+152 (35.9%)
tau−271 (64.1%)
Imbalance ratio1.78
CN161 (34.3%)
MCI234 (49.9%)
AD74 (15.8%)

TAU_SUVR Distribution:

  • tau− participants: 1.129 ± 0.075 SUVR (range: 0.919–1.345)
  • tau+ participants: 1.527 ± 0.423 SUVR (range: 1.048–3.247)
  • SUVR midpoint: 1.328
  • Overlap zone: 1.048–1.345 (where SUVR alone cannot separate groups)

Diagnostic groups:

  • CN: 161 | MCI: 234 | AD: 74
  • tau+ by group: CN 16.5% · MCI 35.2% · AD 76.1%

Continuous Outcome — TAU_SUVR Prediction

Performance Across Models

Site Generalization (LOSO)

Predicted vs Actual TAU_SUVR. Best Model (Random Forest)

Metrics. All Predictor Set (mean ± SD across 15 CV folds)

ModelRMSEMAEPearson rSpearman ρ
Random Forest0.504 ± 0.1190.213 ± 0.0270.125 ± 0.0100.723 ± 0.0700.608 ± 0.061
Gradient Boosting0.485 ± 0.0870.218 ± 0.0240.131 ± 0.0120.710 ± 0.0580.581 ± 0.074
XGBoost0.457 ± 0.1070.224 ± 0.0290.135 ± 0.0120.687 ± 0.0680.578 ± 0.065
ElasticNet0.361 ± 0.0480.245 ± 0.0330.143 ± 0.0120.644 ± 0.0410.540 ± 0.062

Metrics. By Predictor Set (Random Forest)

Predictor SetRMSEPearson r
all0.504 ± 0.1190.213 ± 0.0270.723 ± 0.070
clinical_amyloid0.448 ± 0.1170.225 ± 0.0240.681 ± 0.080
clinical_fdg0.398 ± 0.1700.233 ± 0.0280.650 ± 0.110
clinical0.255 ± 0.1900.260 ± 0.0260.548 ± 0.130
fdg0.229 ± 0.1960.265 ± 0.0290.520 ± 0.106
amyloid0.193 ± 0.0870.275 ± 0.0360.480 ± 0.063

Key finding: Amyloid PET provides the largest individual improvement over clinical features alone, but a model with ALL clinical, amyloid and PET predictors performs better than models with single or dual markers. Tree-based models outperform ElasticNet and other models.


Binary Outcome. Tau+/Tau− Classification

Performance Across Models

ROC Curves and Calibration

Metrics. All Predictor Set (mean ± SD, threshold = 0.445)

ModelAUC-ROCAUC-PRBal. Acc.SensitivitySpecificityF1Brier
Logistic Regression0.912 ± 0.0330.868 ± 0.0380.835 ± 0.0350.838 ± 0.0640.831 ± 0.0310.783 ± 0.0390.116 ± 0.020
Random Forest0.907 ± 0.0300.867 ± 0.0350.840 ± 0.0280.856 ± 0.0500.824 ± 0.0320.789 ± 0.0320.117 ± 0.018
XGBoost0.898 ± 0.0290.857 ± 0.0340.833 ± 0.0410.808 ± 0.0710.857 ± 0.0470.783 ± 0.0490.128 ± 0.027
Gradient Boosting0.897 ± 0.0320.855 ± 0.0370.824 ± 0.0390.779 ± 0.0660.868 ± 0.0440.774 ± 0.0490.134 ± 0.029

Metrics. By Predictor Set (Logistic Regression)

Predictor SetAUC-ROCAUC-PRBal. Acc.SensitivitySpecificity
all0.912 ± 0.0330.868 ± 0.0380.835 ± 0.0350.838 ± 0.0640.831 ± 0.031
clinical_amyloid0.906 ± 0.0330.860 ± 0.0420.842 ± 0.0340.856 ± 0.0590.829 ± 0.041
amyloid0.890 ± 0.0390.829 ± 0.0630.839 ± 0.0340.838 ± 0.0600.839 ± 0.028
clinical_fdg0.852 ± 0.0250.763 ± 0.0290.786 ± 0.0290.785 ± 0.0570.786 ± 0.052
clinical0.835 ± 0.0230.741 ± 0.0340.741 ± 0.0360.746 ± 0.0610.737 ± 0.042
fdg0.783 ± 0.0320.698 ± 0.0530.719 ± 0.0340.728 ± 0.0580.710 ± 0.069

Key finding: Logistic Regression outperforms tree-based models (AUC-ROC 0.912), with maybe suggests that the tau+/tau− decision boundary is mainly linear. Amyloid alone achieves AUC-ROC 0.890: the strongest single predictor of tau positivity.


Feature Importance (SHAP)


Brain Visualization


Skills I Learned

  • Machine Learning: regression and classification pipelines, hyperparameter configuration, model comparison, handling class imbalance
  • Cross-Validation: stratified K-Fold, repeated C, Leave-One-Site-Out for multi-site generalization
  • Model Explainability: SHAP values, multi-model feature importance comparison
  • Clinical Metrics: AUC-ROC, AUC-PR, balanced accuracy, sensitivity, specificity, PPV, NPV, calibration curves
  • Neuroimaging: tau PET MetaROI computation, nilearn brain visualization
  • Open Science: synthetic data generation, GitHub reproducibility
  • Python: scikit-learn pipelines, XGBoost, SHAP, nilearn, pandas

Conclusion

This project shows that tau PET burden and positivity can be predicted from multimodal biomarker data with clinically meaningful accuracy. The comparison of predictor sets shows the contribution of clinical, amyloid, and FDG predictors. LOSO cross-validation might confirm site generalizability. SHAP analysis provides interpretable insights into which biomarkers have the strongest power in predictions. The full pipeline is reproducible by anyone via the included synthetic dataset. I learned A LOT about machine learning and kept making mistakes, but everything turned out ok by the end. Next step: actual PET/MRI images as predictors???


Repository Structure

├── config.yaml                  
├── requirements.txt
├── run_all.sh                   
├── Makefile
├── data/         
│   └── synthetic/
│       └── synthetic_dataset.csv 
├── src/
│   ├── utils.py
│   ├── 00_data_prep.py
│   ├── 01_generate_synthetic.py
│   ├── 02_ml_continuous.py
│   ├── 03_ml_binary.py
│   ├── 04_shap_analysis.py
│   └── 05_brain_render.py
└── results/
    ├── figures/
    

How To Use

# 1. Clone
git clone git@github.com:brainhack-school2026/Rodriguez_project.git
cd Rodriguez_project

# 2. Set up a virtual environment

#For Linux/Mac:
python -m venv .venv
source .venv/bin/activate

#For Windows:
python -m venv .venv
.venv\Scripts\activate

# 3. Install
pip install -r requirements.txt

# 4. Run full pipeline on synthetic data (IMPORTANT: you won't run the 01_generate_synthetic.py nor the 05_brain_render.py scripts)
bash run_all.sh

# Results in results/figures/ and results/tables/

With the real ADNI data:

bash run_all.sh --real \
  --merged  /path/to/merged_data.csv \
  --visual  /path/to/visual_reads.csv

If you want to generate synthetic data from your real data (run once only):

python src/01_generate_synthetic.py --mode from_real \
  --merged      /path/to/merged_data.csv \
  --visual_reads /path/to/visual_reads.csv

References

Jack CR Jr, et al. The Alzheimer’s Disease Neuroimaging Initiative (ADNI): MRI methods. J Magn Reson Imaging. 2008.

See also these similar projects

The face of pain: predicting the facial expression of pain from fMRI data

What can our brain tells us about our facial expression in response to painful stimulus ? This projects aims to compare different regression …

Discover this project

Detecting ADHD through fMRI signals using ML classification models

We used the ADHD-200 Sample dataset to implement various machine learning classification models, aimed at diagnosing ADHD through resting-state fMRI …

Discover this project

Schizophrenia prediction: use of Neuroimages and Artificial Intelligence Models

Schizophrenia (SZ) involves significant alterations in perception, thoughts, mood, and behavior. This project aims to develop an AI model using …

Discover this project