Machine-learning prediction and risk stratification of 12-month cognitive decline in Alzheimer's disease using routine clinical and MRI data.
The 18 matches
- [1] § Results › Model performance in cross-validation ↔ 10_make_supp_tables_S7_S8_S9.py, lines 39–123 · score 0.84 · unnecessary interventions, clinically interpretable, probability threshold, confusion matrix, NPV, PPV
- [2] § Methods › Internal validation and performance metrics ↔ 01_rebuild_models_and_outputs_legacy.py, lines 64–166 · score 0.81 · isotonic regression, ROC curve, Brier score, event rate, logit, fitting
- [3] § Methods › Data preprocessing ↔ config.py, lines 1–21 · score 0.81 · hot encoded, single imputation, analytic sample, candidate predictor, preprocessing, reproducible
- [4] § Methods › Data preprocessing ↔ 01_archive_legacy_model.py, lines 1–34 · score 0.80 · hot encoded, modelling pipeline, single imputation, analytic sample, preprocessing, median
- [5] § Methods › Model specification and comparators ↔ 10_make_supp_tables_S7_S8_S9.py, lines 39–123 · score 0.79 · max_depth, max_features, n_estimators, random forest, S9, sqrt
- [6] § Methods › Model specification and comparators ↔ config.py, lines 1–21 · score 0.79 · max_depth, max_features, n_estimators, candidate predictors, sqrt, hyperparameters
- [7] § Methods › Internal validation and performance metrics ↔ 08_sensitivity_ventricles_icv.py, lines 114–257 · score 0.74 · isotonic regression, Brier score, calibration slope, fitting, trained, sensitivity
- [8] § Methods › Model specification and comparators ↔ 08_sensitivity_ventricles_icv.py, lines 1–33 · score 0.72 · replacing absolute ventricular, ICV ratio, ventricular volume, S5, Sensitivity
- [9] § Methods › Risk stratification and clinical use case ↔ 01_rebuild_models_and_outputs_legacy.py, lines 64–166 · score 0.69 · 0.25–0.5, random forest, MMSE change, stratum, intermediate, Median
- [10] § Results › Model performance in cross-validation ↔ 08_sensitivity_ventricles_icv.py, lines 1–33 · score 0.68 · ventricular volume, intracranial volume, fold stratified, absolute, S5, ICV
- [11] § Results › Participants and baseline characteristics ↔ 06_make_supp_tables_S2_S4.py, lines 39–147 · score 0.65 · MRI derived, baseline categorical, analytic sample, S2, demographic, age
- [12] § Methods › Candidate predictors ↔ config.py, lines 66–85 · score 0.61 · middle temporal, entorhinal, fusiform, intracranial, hippocampal, ventricular
- [13] § Methods › Candidate predictors ↔ 06_make_supp_tables_S2_S4.py, lines 39–147 · score 0.59 · APOE4 allele, genetics, Demographics, sex, age, ADNIMERGE
- [14] § Methods › Software ↔ 01_archive_legacy_model.py, lines 282–349 · score 0.58 · full analytic, random forest, SHAP, curve, calibration, model
- [15] § Methods › Candidate predictors ↔ 11_make_table1_and_suppS2_from_raw_ADNIMERGE.py, lines 48–141 · score 0.58 · CDR SB, ADAS Cog, Baseline, MMSE
- [16] § Results › Model performance in cross-validation ↔ 01_archive_legacy_model.py, lines 104–120 · score 0.53 · confusion matrix, NPV, PPV, Youden, FN, TN
- [17] § Methods › Candidate predictors ↔ config.py, lines 39–64 · score 0.51 · genetics, education, allele, carrier, Demographics, APOE4
- [18] § Results › Participants and baseline characteristics ↔ 05_export_submission_tables.py, lines 1–22 · score 0.51 · baseline categorical characteristics, analytic sample, S2, ADNI
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 · 114 lines · 4.4 KB · MIT · 4 matches
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Central configuration for the Scientific Reports reproducibility package.
- All "rules" are taken from the submitted manuscript:
- - Outcome: 12-month MMSE decline >=3 points
- - Analytic sample: baseline AD with complete 12-month MMSE (n=306 in the paper)
- - Candidate predictors: demographics/genetics + cognition/severity + MRI volumes
- - Internal validation: 5-fold stratified CV, within-fold preprocessing, median/mode single imputation,
- standardization, one-hot encoding, isotonic calibration within fold.
- - RF tuned hyperparameters: n_estimators=200, max_features='sqrt', max_depth=None
- - Threshold metrics: Table 3 (0.25 / 0.40 / 0.50) + Supp Table S3 (0.20/0.30/0.40/0.50/0.60)
- - Risk strata: low <0.25, intermediate 0.25–0.50, high >=0.50
- - DCA thresholds: 0.20–0.80
- """
- from __future__ import annotations
- from dataclasses import dataclass
- from typing import Dict, List, Sequence, Tuple
- RANDOM_SEED: int = 20260221
- # Fixed thresholds and risk strata (manuscript)
- TABLE3_THRESHOLDS = [0.25, 0.40, 0.50]
- SUPP_S3_THRESHOLDS = [0.20, 0.30, 0.40, 0.50, 0.60]
- DCA_THRESHOLD_GRID = [round(x, 2) for x in [i/100 for i in range(20, 81)]]
- RISK_STRATA = [
- ("low", 0.0, 0.25),
- ("intermediate", 0.25, 0.50),
- ("high", 0.50, 1.0000001),
- ]
- # Columns expected in the analysis-ready CSV created by 00_build_analysis_ready_from_ADNIMERGE.py.
- # The script lowercases all column names; we keep the lowercase names here.
- RID_COL = "rid"
- Y_COL = "decline_3pt"
- MMSE_CHANGE_COL = "mmse_change"
- # Candidate predictor columns (lowercase), per manuscript.
- # Note: ADNIMERGE naming can vary across releases; we therefore allow synonyms via COLUMN_SYNONYMS.
- CANDIDATE_PREDICTORS: List[str] = [
- # Demographics/genetics
- "age",
- "ptgender", # sex
- "pteducat", # years education
- "apoe4", # allele count -> derive carrier
- # Baseline cognition / severity
- "mmse_bl",
- "adas13_bl",
- "adas11_bl",
- "adasq4_bl",
- "cdrsb_bl",
- "faq_bl",
- # MRI volumes (baseline)
- "hippocampus_bl",
- "ventricles_bl",
- "wholebrain_bl",
- "entorhinal_bl",
- "fusiform_bl",
- "midtemp_bl",
- "icv_bl",
- # Derived ratio used in Supplementary Table S4; computed in preprocessing
- # "hippo_icv",
- ]
- # Synonyms mapping: when a preferred column is missing, use the first existing alias.
- COLUMN_SYNONYMS: Dict[str, Sequence[str]] = {
- "ptgender": ("ptgender", "gender", "sex"),
- "pteducat": ("pteducat", "educ", "education", "edu", "yrs_edu", "yearseducation"),
- "apoe4": ("apoe4", "apoe4allele", "apoe4_count", "apoe_e4"),
- "mmse_bl": ("mmse_bl", "mmse", "mmscore", "mmse_total"),
- "adas13_bl": ("adas13_bl", "adas13", "adas_cog13", "adascog13"),
- "adas11_bl": ("adas11_bl", "adas11", "adas_cog11", "adascog11"),
- "adasq4_bl": ("adasq4_bl", "adasq4", "adas_q4"),
- "cdrsb_bl": ("cdrsb_bl", "cdrsb", "cdrsb_total"),
- "faq_bl": ("faq_bl", "faq"),
- # MRI: ADNI sometimes uses volumes with suffix _ucsf, _ba, etc; keep a few common aliases.
- "hippocampus_bl": ("hippocampus_bl", "hippocampus", "hippocampus_ucsf", "hippocampus_u"),
- "ventricles_bl": ("ventricles_bl", "ventricles", "ventricles_ucsf", "ventricles_u"),
- "wholebrain_bl": ("wholebrain_bl", "wholebrain", "wholebrain_ucsf", "wholebrain_u"),
- "entorhinal_bl": ("entorhinal_bl", "entorhinal", "entorhinal_ucsf", "entorhinal_u"),
- "fusiform_bl": ("fusiform_bl", "fusiform", "fusiform_ucsf", "fusiform_u"),
- "midtemp_bl": ("midtemp_bl", "midtemp", "middletemporal", "middle_temporal", "midtemp_ucsf", "midtemp_u"),
- "icv_bl": ("icv_bl", "icv", "intracranialvolume", "intracranial_vol", "icv_ucsf", "icv_u"),
- }
- # Model hyperparameters (as reported)
- RF_PARAMS = dict(
- n_estimators=200,
- max_features="sqrt",
- max_depth=None,
- random_state=RANDOM_SEED,
- n_jobs=-1,
- )
- LOGREG_PARAMS = dict(
- solver="liblinear",
- max_iter=1000,
- random_state=RANDOM_SEED,
- )
- def resolve_column(df_columns: Sequence[str], preferred: str) -> str | None:
- """Return the actual column name present in df_columns matching preferred or its synonyms."""
- cols = set(df_columns)
- for c in COLUMN_SYNONYMS.get(preferred, (preferred,)):
- if c in cols:
- return c
- return None
- def apoe4_carrier_from_count(apoe4_series):
- """Return 1 if >=1 allele, 0 if 0, NaN if missing."""
- import numpy as np
- x = apoe4_series.astype("float")
- return np.where(np.isnan(x), np.nan, (x >= 1).astype(int))
config.py at commit b71d69f, under MIT · at the source
Overview
- School of Nursing, Jinzhou Medical University, Jinzhou, Liaoning China
- Jinzhou Medical University, Jinzhou, Liaoning China
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above, with 18 matches between paragraphs and lines of code.
gengyinghui/ADNI-12M-Cognitive-Decline-ML
b71d69f103d372358403ced982ab62ba51fe5492, 22 February 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
18 files
- 00_build_analysis_ready_
from_ADNIMERGE.py , Python, 76 lines - 01_archive_legacy_model.
py , Python, 352 lines, 3 matches - 01_rebuild_models_and_ou
tputs_legacy.py , Python, 169 lines, 2 matches - 02_plot_outputs_from_csv
.py , Python, 146 lines - 03_dca_plot_R_template.R
, R, 19 lines - 04_make_table1_descripti
ves.py , Python, 30 lines - 05_export_submission_tab
les.py , Python, 143 lines, 1 match - 06_make_supp_tables_S2_S
4.py , Python, 150 lines, 2 matches - 07_make_supp_figures_S1_
S4.py , Python, 338 lines - 08_sensitivity_ventricle
s_icv.py , Python, 261 lines, 3 matches - 09_make_supp_tables_S6_b
ootstrap_CI.py , Python, 104 lines - 10_make_supp_tables_S7_S
8_S9.py , Python, 127 lines, 2 matches - 11_make_table1_and_suppS
2_from_raw_ADNIMERGE.py , Python, 144 lines, 1 match - archive_legacy_model.py, Python, 352 lines
- config.py, Python, 114 lines, 4 matches
- run_all.py, Python, 72 lines
- LICENSE, License, 21 lines
- README.md, Text, 118 lines
Code availability statement
The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: gengyinghui/
ADNI-12M-Cognitive-Decli ne-ML - it says that the code is available on request
Read it in the paper: doi.org/10.1038/s41598-026-43321-1.
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;
- 16 scripts, each with its path and the digest of its content;
- 18 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.
Code and data availability statement
The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: gengyinghui/
ADNI-12M-Cognitive-Decli ne-ML - it says that the code is available on request
Read it in the paper: doi.org/10.1038/s41598-026-43321-1.
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, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 2 authors, 10 keywords, 17 MeSH terms, 3 funders, 26 references.
Cite
This paper
Geng, Y., & Zhang, H. (2026). Machine-learning prediction and risk stratification of 12-month cognitive decline in Alzheimer's disease using routine clinical and MRI data. Scientific reports, 16(1), 12227. https://
BibTeX
@article{geng2026machine
author = {Geng, Yinghui and Zhang, Huijun},
title = {{Machine-learning prediction and risk stratification of 12-month cognitive decline in Alzheimer's disease using routine clinical and MRI data}},
journal = {Scientific reports},
year = {2026},
month = mar,
volume = {16},
number = {1},
pages = {12227},
publisher = {Nature Publishing Group},
issn = {2045-2322},
doi = {10.1038/
url = {https://
pmid = {41820490},
pmcid = {PMC13076664}
}
RIS
TY - JOUR
AU - Geng, Yinghui
AU - Zhang, Huijun
TI - Machine-learning prediction and risk stratification of 12-month cognitive decline in Alzheimer's disease using routine clinical and MRI data
T2 - Scientific reports
J2 - Sci Rep
PY - 2026
DA - 2026/
VL - 16
IS - 1
SP - 12227
SN - 2045-2322
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Machine-learning prediction and risk stratification of 12-month cognitive decline in Alzheimer's disease using routine clinical and MRI data",
"container-title": "Scientific reports",
"author": [
{
"family": "Geng",
"given": "Yinghui"
},
{
"family": "Zhang",
"given": "Huijun"
}
],
"container-title-short":
"volume": "16",
"issue": "1",
"page": "12227",
"DOI": "10.1038/
"PMID": "41820490",
"PMCID": "PMC13076664",
"ISSN": "2045-2322",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
12
]
]
}
}
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.1038/s41514-026-00390-w [code]
- Mild cognitive impairment cases affect the predictive power of Alzheimer's disease diagnostic models using routine clinical variables.Journal: npj agingIn common: SHAP, ggplot2, tidyverse, 5 other tools, Alzheimer's / dementia, clinical / translational
- [2] doi:10.1073/pnas.2516601123 [code]
- Unveiling the glymphatic system's role in brain aging: A comprehensive biomarker and modifiable intervention target.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: SHAP, ggplot2, tidyverse, 5 other tools, structural MRI / diffusion, clinical / translational
- [3] doi:10.1038/s41467-026-76837-1 [code]
- Drug screen and machine learning predict neuroprotective agents in a preclinical human model of childhood dementia.Journal: Nature communicationsIn common: SHAP, ggplot2, tidyverse, 5 other tools, Alzheimer's / dementia
- [4] doi:10.1016/j.nicl.2026.104012 [code]
- Structural-functional multilayer brain network properties and outcome of combined repetitive transcranial magnetic stimulation and psychotherapy for obsessive-compulsive disorder.Journal: NeuroImage. ClinicalIn common: SHAP, ggplot2, tidyverse, 5 other tools, structural MRI / diffusion
- [5] doi:10.1016/j.isci.2026.115329 [code]
- Brain metastases converge on shared geometric architecture and transcriptomic landscape yet remain distinct from gliomas.Journal: iScienceIn common: SHAP, ggplot2, tidyverse, 5 other tools, clinical / translational
- [6] doi:10.1002/dad2.70430 [code]
- Benchmarking privacy and utility in synthetic tabular cohorts for Alzheimer's disease research.Journal: Alzheimer's & dementia (Amsterdam, Netherlands)In common: ggplot2, tidyverse, scikit-learn, 4 other tools, Alzheimer's / dementia, 1 reference
- [7] doi:10.1038/s42003-026-10957-8 [code]
- Brain defence by the extracellular matrix protein Cochlin.Journal: Communications biologyIn common: SHAP, ggplot2, tidyverse, 5 other tools
- [8] doi:10.1093/nargab/lqag050 [code]
- TSProm: deep learning framework to predict tissue-specific regulatory logic.Journal: NAR genomics and bioinformaticsIn common: SHAP, ggplot2, tidyverse, 5 other tools
- [9] doi:10.1002/advs.202600020 [code]
- Early Retinal UCHL1 Dysregulation Coupled With Synaptic Loss Reflects Alzheimer's Disease Severity.Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)In common: SHAP, scikit-learn, pandas, 3 other tools, Alzheimer's / dementia, 1 reference
- [10] doi:10.1038/s44318-026-00818-9 [code]
- FAM134B-mediated ER-phagy degrades APP and suppresses Alzheimer's disease pathology.Journal: The EMBO journalIn common: ggplot2, tidyverse, scikit-learn, 4 other tools, Alzheimer's / dementia, 1 reference
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, 16 scripts, and 18 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:4fb75718b92d6730…
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.
