Brain Age Estimation on T2-FLAIR Scans for Application to Multiple Sclerosis.
The 2 matches
- [1] § Methods › Brain Age Modeling ↔ densenet_training.py, lines 11–59 · score 0.79 · absolute error, smaller, DenseNet, augmentation, pre, epoch
- [2] § Methods › Brain Age Modeling ↔ inception_resnet_training.py, lines 15–57 · score 0.79 · absolute error, smaller, augmentation, Inception ResNet, epoch, voxel
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 185 lines · 9.6 KB · MIT · 1 match
- import os
- import sys
- import pandas as pd
- import numpy as np
- import torch
- from torch.utils.data import DataLoader
- import monai
- from monai.data import NiftiDataset
- from monai.transforms import AddChannel, Compose, RandFlip, Resize, ScaleIntensity, ToTensor, SqueezeDim, AsChannelFirst, NormalizeIntensity, RandScaleIntensity, RandShiftIntensity, RandAdjustContrast, RandGaussianSmooth, RandHistogramShift, RandGaussianNoise, RandSpatialCrop, CenterSpatialCrop
- def main():
- ## load list of image files and the file with the coresponding ages in the same order. must be a text file with no header and a unique image file name on each row with ages in corresponding file in the exact same order.
- File_list_in = pd.read_csv('traning_imgs_flair.txt',header=None)
- Age_list_in = pd.read_csv('traning_imgs_ages.txt',header=None)
- File_list = np.array(File_list_in[0])
- Age_list = np.array(Age_list_in[0]).astype(float)
- ## print list lengths to ensure expected number of files
- print(len(File_list))
- print(len(Age_list))
- ## set up image transfomrations and data augmentation in this case the 1mm3 images are resized to 1.45mm isotropic
- ## various data agmentations used which are outlined in monai documentation. The image is randomly cropped to 3 voxels smaller in each dimension to allow for random shift of voxels within convolutional kernels
- train_transforms = Compose([AddChannel(), NormalizeIntensity(nonzero=True), Resize((121,145,121),mode="trilinear"), ScaleIntensity(), RandScaleIntensity(factors=0.2, prob=0.25), RandShiftIntensity(offsets=0.2, prob=0.25), RandFlip(prob=0.5,spatial_axis=0), RandAdjustContrast(), RandGaussianSmooth(), RandHistogramShift(), RandGaussianNoise(), RandSpatialCrop([118,142,118],random_size=False), ToTensor()])
- ## set up validation input trasforms without data augmentation. centre croped used instead of random crop
- val_transforms = Compose([AddChannel(), NormalizeIntensity(nonzero=True), Resize((121,145,121),mode="trilinear"), ScaleIntensity(), CenterSpatialCrop([118,142,118]), ToTensor()])
- # Define image dataset data loader and test
- check_ds = NiftiDataset(image_files=File_list, labels=Age_list, transform=train_transforms)
- check_loader = DataLoader(check_ds, batch_size=10, num_workers=1, pin_memory=torch.cuda.is_available())
- im, label = monai.utils.misc.first(check_loader)
- # create a training data loader. leave a set number of images out from the end of the list out for validation in this case 174 images. batch size set at 10 for a 12Gb GPU.
- train_ds = NiftiDataset(image_files=File_list[:-174], labels=Age_list[:-174], transform=train_transforms)
- train_loader = DataLoader(train_ds, batch_size=10, shuffle=True, num_workers=1, pin_memory=torch.cuda.is_available())
- # create a validation data loader. input only the left out images at the end of the list.
- val_ds = NiftiDataset(image_files=File_list[-174:], labels=Age_list[-174:], transform=val_transforms)
- val_loader = DataLoader(val_ds, batch_size=10, num_workers=1, pin_memory=torch.cuda.is_available())
- # Create DenseNet169 model using monai pre build. dropout of 0.1 added.
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
- model_1 = monai.networks.nets.densenet.densenet169(spatial_dims=3, in_channels=1, out_channels=1, dropout_prob=0.1)
- ## add a linear regression layer onto the end of the model to directly predict a continous variable, in this case age (without this the output will be limited from -1 to 1).
- model = torch.nn.Sequential(model_1,torch.nn.Linear(1,1)).to(device)
- ## define loss function and metric of the model in this case mean square error loss and mean absolute error.
- loss_function = torch.nn.MSELoss()
- MAE_metric = torch.nn.L1Loss()
- ## define the optimiser, ADAM is is used in this case with the commonly used learning rate of 1e-4 with a weight decay of 1e-5
- optimizer = torch.optim.Adam(model.parameters(), lr=1e-4,weight_decay=1e-5)
- ## set maximum number of epochs of the model
- max_epochs = 200
- ## additional learning rate decay schduling is added for further regulization of the model. Schduling used as recomended by DeepLab and commonly used in the liturature.
- lambda1 = lambda epoch: (1 - (epoch / max_epochs))**0.9
- scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda1)
- ## define and create text files to be used for output of model traning moitoring. A file for training epoch average and validation performance is defined
- txt_file_train_av_name = 'densenet_flair_train_epoch_average.txt'
- txt_file_val_name = 'densenet_flair_validation.txt'
- txt_file_train = open(txt_file_train_av_name, 'a')
- txt_file_train.write("densenet_flair")
- txt_file_train.write("\n")
- txt_file_train.close()
- txt_file_train = open(txt_file_val_name, 'a')
- txt_file_train.write("densenet_flair")
- txt_file_train.write("\n")
- txt_file_train.close()
- # start a typical PyTorch training
- # early stopping is utilized with a patients of 20 epochs defined here.
- val_interval = 1
- best_metric = 100000
- wait_num = 0
- patience = 20
- best_metric_epoch = -1
- epoch_loss_values = list()
- metric_values = list()
- ## start loop to run model for each epoch
- for epoch in range(max_epochs):
- print("-" * 10)
- print(f"epoch {epoch + 1}/{200}")
- model.train()
- epoch_loss = 0
- epoch_metric = 0
- step = 0
- for batch_data in train_loader:
- step += 1
- ## prepare input tensor
- inputs, labels = batch_data[0].to(device), batch_data[1].to(device)
- optimizer.zero_grad()
- ## run model
- outputs = torch.squeeze(model(inputs))
- print(outputs,labels)
- ## calculate loss and back propagate
- loss = loss_function(outputs.float(), labels.float())
- metric = MAE_metric(outputs.float(), labels.float())
- loss.backward()
- optimizer.step()
- ## add batch loss and metric to epoch runing total
- epoch_loss += loss.item()
- epoch_metric += metric.item()
- epoch_len = len(train_ds) // train_loader.batch_size
- print(f"{step}/{epoch_len}, metric: {metric} train_loss: {loss.item():.4f}")
- ## calculate mean epoch loss and metric and write to monitoring file
- epoch_loss /= step
- epoch_metric /= step
- epoch_loss_values.append(epoch_loss)
- print(f"epoch {epoch + 1} average loss: {epoch_loss:.4f}")
- txt_file_train_av = open(txt_file_train_av_name, 'a')
- txt_file_train_av.write(f"epoch {epoch + 1} average metric: {epoch_metric} average loss: {epoch_loss:.4f}")
- txt_file_train_av.write("\n")
- txt_file_train_av.close()
- ## step forward scheduler for LR decay
- scheduler.step()
- ## evaluate model performance on validation files at end of epoch
- model.eval()
- with torch.no_grad():
- num_correct = 0.0
- metric_count = 0
- loss_all = 0
- for val_data in val_loader:
- val_images, val_labels = val_data[0].to(device), val_data[1].to(device)
- val_outputs = torch.squeeze(model(val_images))
- loss = loss_function(val_outputs.float(), val_labels.float())
- metric_val = MAE_metric(val_outputs.float(), val_labels.float())
- metric_count += 1
- num_correct += metric_val.item()
- loss_all += loss.item()
- metric_av = num_correct / metric_count
- loss_av = loss_all / metric_count
- print('VAL LOSS',metric_av)
- ## write validation loss and metric to monitoring file
- txt_file_val = open(txt_file_val_name, 'a')
- txt_file_val.write(f"epoch {epoch + 1}, Val_metric: {metric_av} Val_loss: {loss_av:.4f}")
- txt_file_val.write("\n")
- txt_file_val.close()
- metric_values.append(metric)
- ## early stopping if current validation perfomrance not an improvment will add to wait with patience of 20 to stop model early.
- if metric_av > best_metric:
- wait_num += 1
- if wait_num >= patience:
- txt_file_val = open(txt_file_val_name, 'a')
- txt_file_val.write(f"stopped early at epoch {epoch + 1}, best val metric: {best_metric} at epoch {best_metric_epoch}")
- txt_file_val.write("\n")
- txt_file_val.close()
- break
- else:
- wait_num = 0
- #update saved weights if current epoch has the best metric so far
- if metric_av < best_metric:
- best_metric = metric_av
- best_metric_epoch = epoch + 1
- torch.save(model.state_dict(), "best_model_densenet_flair.pth")
- print("saved new best metric model")
- print(
- "current epoch: {} current accuracy: {:.4f} best accuracy: {:.4f} at epoch {}".format(
- epoch + 1, metric_av, best_metric, best_metric_epoch
- )
- )
- #writer.add_scalar("val_accuracy", metric, epoch + 1)
- print(f"train completed, best_metric: {best_metric:.4f} at epoch: {best_metric_epoch}")
- if __name__ == "__main__":
- main()
densenet_training.py at commit 84822e8, under MIT · at the source
Overview
and 14 other authors
Massimo Filippi17,18, Barbara Bellenberg19, Carsten Lukas19,20, Massimiliano Calabrese21, Marco Castellaro21,22, Tomas Uher23, Manuela Vaneckova24, Ahmed Toosy3, Olga Ciccarelli3,4, Tarek Yousry25, Ferran Prados1,3,26, Frederik Barkhof1,3,4,27, James H. Cole1,27, MAGNIMS Study Group27 affiliations
- UCL Hawkes Institute, University College London London UK
- Department of Neuroradiology King's College Hospital London UK
- Queen Square Multiple Sclerosis Centre, Department of Neuroinflammation UCL Queen Square Institute of Neurology London UK
- MS Center Amsterdam, Radiology and Nuclear Medicine, Vrije Universiteit Amsterdam, Amsterdam Neuroscience, Amsterdam UMC Location VUmc Amsterdam the Netherlands
- Department of Advanced Biomedical Sciences University of Naples “Federico II” Naples Italy
- Bayer Plc Reading UK
- Department of Neuroradiology Charité—Universitätsmedizin Berlin, Corporate Member of Freie Universität Berlin, Humboldt‐Universität Zu Berlin Berlin Germany
- Movement Disorders, Neurostimulation and Neuroimaging University Medicine Mainz Mainz Germany
- Department of Neurology Oslo University Hospital Oslo Norway
- Department of Psychology University of Oslo Oslo Norway
- Institute of Clinical Medicine, University of Oslo Oslo Norway
- Nuffield Department of Clinical Neurosciences Medical Sciences Division, University of Oxford Oxford UK
- Department of Medicine Surgery and Neuroscience, University of Siena Siena Italy
- Section of Neuroradiology, Department of Radiology Hospital Universitari Vall D'hebron Barcelona Spain
- Department of Neurology Medical University of Graz Graz Austria
- Neuroimaging Research Unit, Division of Neuroscience IRCCS San Raffaele Scientific Institute, Vita‐Salute San Raffaele University Milan Italy
- Vita‐Salute San Raffaele University Milan Italy
- Neurology Unit, Neurorehabilitation Unit, Neurophysiology Service, and Neuroimaging Research Unit, Division of Neuroscience, IRCCS San Raffaele Scientific Institute Milan Italy
- Institute of Neuroradiology, St. Josef Hospital, Ruhr‐University Bochum Bochum Germany
- Department of Neurology St. Josef Hospital, Ruhr University Bochum Bochum Germany
- Department of Neurosciences, Biomedicine and Movement Sciences University of Verona Verona Italy
- Department of Information Engineering University of Padova Padova Italy
- Department of Neurology and Center of Clinical Neuroscience First Faculty of Medicine, Charles University and General University Hospital Prague Czech Republic
- Department of Radiology First Faculty of Medicine, Charles University and General University Hospital Prague Czech Republic
- Lysholm Department of Neuroradiology UCLH National Hospital for Neurology and Neurosurgery London UK
- E‐Health Center, Universitat Oberta de Catalunya Barcelona Spain
- Dementia Research Centre, UCL Queen Square Institute of Neurology London UK
Abstract
The brain‐predicted age difference (brain‐PAD) is associated with measures of clinical interest in people with multiple sclerosis (pwMS). Most brain age models rely on 3D T1‐weighted scans, which are not routinely acquired in MS clinical practice, limiting their potential for clinical translation. We aimed to develop a model predicting brain age using T2‐FLAIR, the core sequence for MS diagnosis and monitoring, and validate the resulting brain‐PAD values as a biomarker of MS severity and progression. We collected 3D T2‐FLAIR and 3D T1‐weighted brain MRI scans to compose (i) a multicentre cohort of healthy participants for brain age modeling, and (ii) a single‐centre cohort of pwMS and healthy controls for external validation. We trained and evaluated 3D convolutional neural network models predicting brain age from T2‐FLAIR or T1‐weighted images. Models were compared using t‐tests based on bootstrapped standard errors. Saliency maps were obtained with the SmoothGrad method to visualize regions that were most important for the predictions. Finally, using a linear model framework, we clinically validated the resulting brain‐PAD metric by assessing its relationship with diagnosis (MS versus healthy controls), clinical phenotype, disease duration, and physical disability as measured with the Expanded Disability Status Scale (EDSS), adjusting for age and sex. The Inception‐ResNet‐V2 model based on T2‐FLAIR scans yielded accurate brain age predictions (test set MAE = 3.31 years, R2 = 0.944, 5x ensemble MAE = 2.81, R2 = 0.955), which were comparable to those obtained with the T1w‐based model (test set MAE = 3.34 years, R2 = 0.942, 5x ensemble MAE = 2.84, R2 = 0.955, p = 0.91). Brain age predictions were mostly driven by subcortical regions, particularly the thalamus. T2‐FLAIR‐based brain‐PAD was higher in pwMS than healthy controls (7.07 vs −0.50 years, p < 0.0001). As with T1 brain‐PAD, FLAIR brain‐PAD correlated with MS disease duration (R = 0.24, p < 0.0001) and EDSS (R = 0.30, p < 0.0001). Brain age predictions relying on T2‐FLAIR scans are as accurate as those derived from T1‐weighted scans and could be used as an easily obtainable biomarker of MS severity and progression in clinical practice.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 2 matches between paragraphs and lines of code.
jordan-colman/FLAIR-Brain-Age
84822e8abe9737c80026bd247424211a565be71f, 14 April 2025Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
25 files
- FLAIR-InseptionNet-Docke
r/ , Python, 53 linesbrainAge/ Preprocessing_of_images. py - FLAIR-InseptionNet-Docke
r/ , Python, 75 linesbrainAge/ inception_resnet_evaluat ion_ensemble.py - FLAIR-InseptionNet-Docke
r/ , Python, 209 linesbrainAge/ inception_resnet_model.p y - FLAIR-InseptionNet-Docke
r/ , Shell, 22 linesbuild_brainAge_container .sh - FLAIR-InseptionNet-Docke
r/ , Shell, 125 linescompute_brainAge.sh - FLAIR-InseptionNet-Docke
r/ , Shell, 16 linesrun_brainAge_container.s h - FLAIR-InseptionNet-Docke
r/ , Python, 873 linesscripts/ _niftkCommon.py - FLAIR-InseptionNet-Docke
r/ , Python, 474 linesscripts/ niftkBiasFieldCorrection .py - Preprocessing_of_images.
py , Python, 53 lines - SFCN_biobank_evaluation.
py , Python, 91 lines - SFCN_biobank_training.py
, Python, 167 lines - SFCN_model/
__init__.py , Python, 1 line - SFCN_model/
dp_loss.py , Python, 14 lines - SFCN_model/
dp_utils.py , Python, 68 lines - SFCN_model/
model_files/ , Python, 1 line__init__.py - SFCN_model/
model_files/ , Python, 181 linesresnet3d.py - SFCN_model/
model_files/ , Python, 66 linessfcn.py - densenet_evaluation.py, Python, 98 lines
- densenet_training.py, Python, 185 lines, 1 match
- inception_resnet_evaluat
ion.py , Python, 93 lines - inception_resnet_evaluat
ion_ensemble.py , Python, 104 lines - inception_resnet_model.p
y , Python, 209 lines - inception_resnet_trainin
g.py , Python, 180 lines, 1 match - LICENSE, License, 21 lines
- README.md, Text, 29 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 23 scripts, each with its path and the digest of its content;
- 2 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data Availability Statement
The data that support the findings of this study are available on request from the corresponding author. The data are not publicly available due to privacy or ethical restrictions. Models developed in the study and all relevant code are available at https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 34 authors, 12 MeSH terms, 14 funders, 38 references.
Cite
This paper
Colman, J., Pontillo, G., Goodkin, O., Foster, M. A., Mahmoudi, N., Wattjes, M. P., Brunetti, A., Gonzalez‐Escamilla, G., Groppa, S., Høgestøl, E. A., Westlye, L. T., Messina, S., Palace, J., Cortese, R., De Stefano, N., Rovira, À., Sastre‐Garriga, J., Ropele, S., Enzinger, C., . . . MAGNIMS Study Group. (2026). Brain Age Estimation on T2-FLAIR Scans for Application to Multiple Sclerosis. Human brain mapping, 47(5), e70425. https://
BibTeX
@article{colman2026brain
author = {Colman, Jordan and Pontillo, Giuseppe and Goodkin, Olivia and Foster, Michael A. and Mahmoudi, Nima and Wattjes, Mike P. and Brunetti, Arturo and Gonzalez‐Escamilla, Gabriel and Groppa, Sergiu and Høgestøl, Einar August and Westlye, Lars T. and Messina, Silvia and Palace, Jacqueline and Cortese, Rosa and De Stefano, Nicola and Rovira, Àlex and Sastre‐Garriga, Jaume and Ropele, Stefan and Enzinger, Christian and Rocca, Maria A. and Filippi, Massimo and Bellenberg, Barbara and Lukas, Carsten and Calabrese, Massimiliano and Castellaro, Marco and Uher, Tomas and Vaneckova, Manuela and Toosy, Ahmed and Ciccarelli, Olga and Yousry, Tarek and Prados, Ferran and Barkhof, Frederik and Cole, James H. and {MAGNIMS Study Group}},
title = {{Brain Age Estimation on T2-FLAIR Scans for Application to Multiple Sclerosis}},
journal = {Human brain mapping},
year = {2026},
month = apr,
volume = {47},
number = {5},
pages = {e70425},
publisher = {Wiley},
issn = {1065-9471},
doi = {10.1002/
url = {https://
pmid = {41853885},
pmcid = {PMC13081688}
}
RIS
TY - JOUR
AU - Colman, Jordan
AU - Pontillo, Giuseppe
AU - Goodkin, Olivia
AU - Foster, Michael A.
AU - Mahmoudi, Nima
AU - Wattjes, Mike P.
AU - Brunetti, Arturo
AU - Gonzalez‐Escamilla, Gabriel
AU - Groppa, Sergiu
AU - Høgestøl, Einar August
AU - Westlye, Lars T.
AU - Messina, Silvia
AU - Palace, Jacqueline
AU - Cortese, Rosa
AU - De Stefano, Nicola
AU - Rovira, Àlex
AU - Sastre‐Garriga, Jaume
AU - Ropele, Stefan
AU - Enzinger, Christian
AU - Rocca, Maria A.
AU - Filippi, Massimo
AU - Bellenberg, Barbara
AU - Lukas, Carsten
AU - Calabrese, Massimiliano
AU - Castellaro, Marco
AU - Uher, Tomas
AU - Vaneckova, Manuela
AU - Toosy, Ahmed
AU - Ciccarelli, Olga
AU - Yousry, Tarek
AU - Prados, Ferran
AU - Barkhof, Frederik
AU - Cole, James H.
AU - MAGNIMS Study Group
TI - Brain Age Estimation on T2-FLAIR Scans for Application to Multiple Sclerosis
T2 - Human brain mapping
J2 - Hum Brain Mapp
PY - 2026
DA - 2026/
VL - 47
IS - 5
SP - e70425
SN - 1065-9471
PB - Wiley
DO - 10.1002/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1002/
"type": "article-journal",
"title": "Brain Age Estimation on T2-FLAIR Scans for Application to Multiple Sclerosis",
"container-title": "Human brain mapping",
"author": [
{
"family": "Colman",
"given": "Jordan"
},
{
"family": "Pontillo",
"given": "Giuseppe"
},
{
"family": "Goodkin",
"given": "Olivia"
},
{
"family": "Foster",
"given": "Michael A."
},
{
"family": "Mahmoudi",
"given": "Nima"
},
{
"family": "Wattjes",
"given": "Mike P."
},
{
"family": "Brunetti",
"given": "Arturo"
},
{
"family": "Gonzalez‐Escamilla",
"given": "Gabriel"
},
{
"family": "Groppa",
"given": "Sergiu"
},
{
"family": "Høgestøl",
"given": "Einar August"
},
{
"family": "Westlye",
"given": "Lars T."
},
{
"family": "Messina",
"given": "Silvia"
},
{
"family": "Palace",
"given": "Jacqueline"
},
{
"family": "Cortese",
"given": "Rosa"
},
{
"family": "De Stefano",
"given": "Nicola"
},
{
"family": "Rovira",
"given": "Àlex"
},
{
"family": "Sastre‐Garriga",
"given": "Jaume"
},
{
"family": "Ropele",
"given": "Stefan"
},
{
"family": "Enzinger",
"given": "Christian"
},
{
"family": "Rocca",
"given": "Maria A."
},
{
"family": "Filippi",
"given": "Massimo"
},
{
"family": "Bellenberg",
"given": "Barbara"
},
{
"family": "Lukas",
"given": "Carsten"
},
{
"family": "Calabrese",
"given": "Massimiliano"
},
{
"family": "Castellaro",
"given": "Marco"
},
{
"family": "Uher",
"given": "Tomas"
},
{
"family": "Vaneckova",
"given": "Manuela"
},
{
"family": "Toosy",
"given": "Ahmed"
},
{
"family": "Ciccarelli",
"given": "Olga"
},
{
"family": "Yousry",
"given": "Tarek"
},
{
"family": "Prados",
"given": "Ferran"
},
{
"family": "Barkhof",
"given": "Frederik"
},
{
"family": "Cole",
"given": "James H."
},
{
"literal": "MAGNIMS Study Group"
}
],
"container-title-short":
"volume": "47",
"issue": "5",
"page": "e70425",
"DOI": "10.1002/
"PMID": "41853885",
"PMCID": "PMC13081688",
"ISSN": "1065-9471",
"publisher": "Wiley",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
1
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1162/imag.a.1352 [code]
- Brain-age in ultra-low-field MRI: How well does it work?Journal: Imaging neuroscience (Cambridge, Mass.)In common: MONAI, FSL, PyTorch, 3 other tools, structural MRI / diffusion, 6 references, author James H Cole
- [2] doi:10.1162/netn.a.545 [code]
- Structure-function multilayer network integration and cognition in multiple sclerosis.Journal: Network neuroscience (Cambridge, Mass.)In common: SciPy, NumPy, multiple sclerosis, structural MRI / diffusion, 3 authors
- [3] doi:10.1162/imag.a.1164 [code]
- Bias and generalizability of brain age prediction models: A multi-cohort evaluation with anatomical and interpretability insights.Journal: Imaging neuroscience (Cambridge, Mass.)In common: MONAI, FSL, PyTorch, 3 other tools, structural MRI / diffusion, 7 references
- [4] doi:10.1186/s40708-026-00316-y [code]
- Generalizable and explainable deep learning for brain MRI: a multi-cohort evaluation of 3D architectures for age and sex prediction.Journal: Brain informaticsIn common: MONAI, PyTorch, pandas, 2 other tools, structural MRI / diffusion, 7 references
- [5] doi:10.1038/s43856-026-01722-3 [code]
- Local and global patterns support medical imaging as a biomarker of ageing.Journal: Communications medicineIn common: PyTorch, pandas, SciPy, 1 other tool, clinical / translational, 8 references
- [6] doi:10.3389/fdgth.2026.1691088 [code]
- Real-world federated learning for brain imaging scientists.Journal: Frontiers in digital healthIn common: MONAI, PyTorch, pandas, 2 other tools, multiple sclerosis, structural MRI / diffusion, 4 references
- [7] doi:10.1093/braincomms/fcag129 [code]
- Longitudinal changes of choroid plexus volumes and MRI ratios in multiple sclerosis.Journal: Brain communicationsIn common: FSL, pandas, SciPy, 1 other tool, multiple sclerosis, structural MRI / diffusion, clinical / translational, 1 reference, author Barbara Bellenberg
- [8] doi:10.1038/s41398-026-04078-3 [code]
- Brain age prediction in generalized anxiety disorder using a convolutional neural network.Journal: Translational psychiatryIn common: structural MRI / diffusion, clinical / translational, 4 references, author Massimo Filippi
- [9] doi:10.1073/pnas.2519586123 [code]
- Personalized functional topography-based multisite brain age prediction modeling reveals divergent neurodevelopment in major depression.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: pandas, SciPy, NumPy, structural MRI / diffusion, 5 references
- [10] doi:10.1093/braincomms/fcag162 [code]
- Disability profiles in progressive multiple sclerosis reflect pathology distribution, independent of clinical phenotype.Journal: Brain communicationsIn common: pandas, SciPy, NumPy, multiple sclerosis, structural MRI / diffusion, clinical / translational, author James H Cole
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 23 scripts, and 2 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:61da5e6d5dcba0e1…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
