Data-driven subtyping and staging of ALS: A multicenter, longitudinal, deformation-based morphometry study.
The 6 matches
- [1] § Methods › Image preprocessing ↔ PELICAN.sh, lines 117–164 · score 0.77 · volume_pol, Pre processing, PELICAN, ANTs, denoising, template
- [2] § Methods › Image preprocessing ↔ app_cicLngPipeline_ants_asym.sh, lines 61–115 · score 0.77 · volume_pol, Pre processing, ANTs, denoising, pipeline, template
- [3] § Methods › Subtype and stage inference modeling ↔ sim/simrun.py, lines 303–354 · score 0.75 · sample log likelihood, Cross Validation Information, Model selection, CVIC, subtypes
- [4] § Results › SuStaIn input features and optimal number of subtypes ↔ sim/simrun.py, lines 303–354 · score 0.72 · positional variance diagrams, cross validation information, log likelihood, CVIC, SuStaIn model, PVDs
- [5] § Results › SuStaIn input features and optimal number of subtypes ↔ pySuStaIn/AbstractSustain.py, lines 402–523 · score 0.58 · positional variance diagrams, cross validation, SuStaIn model, PVDs, likelihood, sequence
- [6] § Results ↔ sim/simrun.py, lines 246–301 · score 0.52 · positional variance diagrams, SuStaIn model, PVDs, inferred, sequence, subtype
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 · 358 lines · 17 KB · MIT · 3 matches
- ###
- # pySuStaIn: a Python implementation of the Subtype and Stage Inference (SuStaIn) algorithm
- #
- # If you use pySuStaIn, please cite the following core papers:
- # 1. The original SuStaIn paper: https://doi.org/10.1038/s41467-018-05892-0
- # 2. The pySuStaIn software paper: https://doi.org/10.1016/j.softx.2021.100811
- #
- # Please also cite the corresponding progression pattern model you use:
- # 1. The piece-wise linear z-score model (i.e. ZscoreSustain): https://doi.org/10.1038/s41467-018-05892-0
- # 2. The event-based model (i.e. MixtureSustain): https://doi.org/10.1016/j.neuroimage.2012.01.062
- # with Gaussian mixture modeling (i.e. 'mixture_gmm'): https://doi.org/10.1093/brain/awu176
- # or kernel density estimation (i.e. 'mixture_kde'): https://doi.org/10.1002/alz.12083
- # 3. The model for discrete ordinal data (i.e. OrdinalSustain): https://doi.org/10.3389/frai.2021.613261
- #
- # Thanks a lot for supporting this project.
- #
- # Authors: Peter Wijeratne ([email hidden]) and Leon Aksman ([email hidden])
- # Contributors: Arman Eshaghi ([email hidden]), Alex Young ([email hidden]), Cameron Shand ([email hidden])
- ###
- import numpy as np
- from matplotlib import pyplot as plt
- from matplotlib import cbook as cbook
- import os
- import pandas as pd
- from simfuncs import *
- from kde_ebm.mixture_model import fit_all_gmm_models, fit_all_kde_models
- from kde_ebm import plotting
- import warnings
- warnings.filterwarnings("ignore",category=cbook.mplDeprecation)
- from pySuStaIn.ZscoreSustain import ZscoreSustain
- from pySuStaIn.MixtureSustain import MixtureSustain
- from pySuStaIn.MixedTypeSustain import MixedTypeSustain
- import simfuncs_mixed
- import sklearn.model_selection
- import pylab
- def main():
- #***************** parameters for generating the ground-truth subtypes
- N = 5 # number of biomarkers
- M = 800 # number of observations ( e.g. subjects )
- N_S_ground_truth = 3 # number of ground truth subtypes
- # the fractions of the total number of subjects (M) belonging to each subtype
- ground_truth_fractions = np.array([0.5, 0.30, 0.20])
- #create some generic biomarker names
- BiomarkerNames = ['Biomarker ' + str(i) for i in range(N)]
- #***************** parameters for SuStaIn-based inference of subtypes
- use_parallel_startpoints = True
- # number of starting points
- N_startpoints = 25
- # maximum number of inferred subtypes - note that this could differ from N_S_ground_truth
- N_S_max = 2
- N_iterations_MCMC = int(1e4) #Generally recommend either 1e5 or 1e6 (the latter may be slow though) in practice
- #labels for plotting are biomarker names
- SuStaInLabels = BiomarkerNames
- # cross-validation
- validate = True
- N_folds = 3 #Set low to speed things up here, but generally recommend 10 in practice
- # either 'mixture_GMM' or 'mixture_KDE' or 'zscore' or 'mixed'
- sustainType = 'mixed'
- assert sustainType in ("mixture_GMM", "mixture_KDE", "zscore", "mixed"), \
- "sustainType should be either mixture_GMM, mixture_KDE, zscore, or mixed"
- #****************** generate the ground-truth sequences and groud-truth data (i.e. subjects' biomarker measures)
- dataset_name = 'sim'
- output_folder = os.path.join(os.getcwd(), dataset_name + '_' + sustainType)
- if not os.path.isdir(output_folder):
- os.mkdir(output_folder)
- if sustainType == 'mixture_GMM' or sustainType == "mixture_KDE":
- np.random.seed(5)
- ground_truth_subj_ids = list(np.arange(1, M+1).astype('str'))
- ground_truth_sequences = generate_random_mixture_sustain_model(N, N_S_ground_truth)
- ground_truth_subtypes = np.random.choice(range(N_S_ground_truth), M, replace=True, p=ground_truth_fractions).astype(int)
- N_stages = N
- ground_truth_stages_control = np.zeros((int(np.round(M * 0.25)), 1))
- ground_truth_stages_other = np.random.randint(1, N_stages+1, (int(np.round(M * 0.75)), 1))
- ground_truth_stages = np.vstack((ground_truth_stages_control, ground_truth_stages_other)).astype(int)
- data, data_denoised = generate_data_mixture_sustain(ground_truth_subtypes, ground_truth_stages, ground_truth_sequences, sustainType)
- # choose which subjects will be cases and which will be controls
- MIN_CASE_STAGE = np.round((N + 1) * 0.8)
- index_case = np.where(ground_truth_stages >= MIN_CASE_STAGE)[0]
- index_control = np.where(ground_truth_stages == 0)[0]
- labels = 2 * np.ones(data.shape[0], dtype=int) # 2 - intermediate value, not used in mixture model fitting
- labels[index_case] = 1 # 1 - cases
- labels[index_control] = 0 # 0 - controls
- data_case_control = data[labels != 2, :]
- labels_case_control = labels[labels != 2]
- if sustainType == "mixture_GMM":
- mixtures = fit_all_gmm_models(data, labels)
- elif sustainType == "mixture_KDE":
- mixtures = fit_all_kde_models(data, labels)
- fig, ax = plotting.mixture_model_grid(data_case_control, labels_case_control, mixtures, SuStaInLabels)#, plotting_font_size=20)
- fig.show()
- fig.savefig(os.path.join(output_folder, 'kde_fits.png'))
- L_yes = np.zeros(data.shape)
- L_no = np.zeros(data.shape)
- for i in range(N):
- if sustainType == "mixture_GMM":
- L_no[:, i], L_yes[:, i] = mixtures[i].pdf(None, data[:, i])
- elif sustainType == "mixture_KDE":
- L_no[:, i], L_yes[:, i] = mixtures[i].pdf(data[:, i].reshape(-1, 1))
- sustain = MixtureSustain(L_yes, L_no, SuStaInLabels, N_startpoints, N_S_max, N_iterations_MCMC, output_folder, dataset_name, use_parallel_startpoints)
- elif sustainType == 'zscore':
- np.random.seed(10)
- Z_vals = np.array([[1, 2, 3]] * N) # define the Z-score based events for each biomarker
- Z_max = np.array([5] * N) # maximum z-score for each biomarker
- ground_truth_subj_ids = list(np.arange(1, M+1).astype('str'))
- # generate the ground truth sequence for each subtype
- ground_truth_sequences = generate_random_Zscore_sustain_model(Z_vals, N_S_ground_truth)
- # randomly generate the ground truth subtype and stage assignment for every one of the M subjects
- ground_truth_subtypes = np.random.choice(range(N_S_ground_truth), M, replace=True, p=ground_truth_fractions).astype(int)
- N_stages = np.sum(Z_vals > 0) + 1
- #1/4 of all subjects are assigned stage zero, the rest a random number from 1 to number of stages
- ground_truth_stages_control = np.zeros((int(np.round(M * 0.25)), 1))
- ground_truth_stages_other = np.random.randint(1, N_stages+1, (int(np.round(M * 0.75)), 1))
- ground_truth_stages = np.vstack((ground_truth_stages_control, ground_truth_stages_other)).astype(int)
- data, data_denoised, stage_value = generate_data_Zscore_sustain( ground_truth_subtypes,
- ground_truth_stages,
- ground_truth_sequences,
- Z_vals,
- Z_max)
- # choose which subjects will be cases and which will be controls
- MIN_CASE_STAGE = int(np.round((N_stages + 1) * 0.8))
- index_case = np.where(ground_truth_stages >= MIN_CASE_STAGE)[0]
- index_control = np.where(ground_truth_stages == 0)[0]
- labels = 2 * np.ones(data.shape[0], dtype=int) # 2 - MCI, default assignment here
- labels[index_case] = 0
- labels[index_control] = 1
- sustain = ZscoreSustain(data, Z_vals, Z_max, SuStaInLabels, N_startpoints, N_S_max, N_iterations_MCMC, output_folder, dataset_name, use_parallel_startpoints)
- elif sustainType == 'mixed':
- data = simfuncs_mixed.generate_mixed_data(seed=42)
- zscore_data = data["zscore_data"]
- z_vals = data["z_vals"]
- z_max = data["z_max"]
- score_vals = data["score_vals"]
- n_biomarkers_ordinal = data["n_biomarkers_ordinal"]
- n_biomarkers_event = data["n_biomarkers_event"]
- ordinal_prob_nl = data["ordinal_prob_nl"]
- ordinal_prob_score = data["ordinal_prob_score"]
- event_prob_yes = data["event_prob_yes"]
- event_prob_no = data["event_prob_no"]
- if zscore_data is not None and zscore_data.shape[1] > 0:
- zscore_labels = [f"zscore_{i+1}" for i in range(zscore_data.shape[1])]
- else:
- zscore_labels = []
- ordinal_labels = [f"ordinal_{i+1}" for i in range(n_biomarkers_ordinal)]
- event_labels = [f"event_{i+1}" for i in range(n_biomarkers_event)]
- if n_biomarkers_ordinal > 0:
- ordinal_score_vals = score_vals[:n_biomarkers_ordinal, :]
- else:
- ordinal_prob_nl = None
- ordinal_prob_score = None
- ordinal_score_vals = np.zeros((0, 0), dtype=int)
- if n_biomarkers_event == 0:
- event_prob_no = None
- event_prob_yes = None
- if zscore_data is not None:
- num_subjects = zscore_data.shape[0]
- elif ordinal_prob_nl is not None:
- num_subjects = ordinal_prob_nl.shape[0]
- elif event_prob_no is not None:
- num_subjects = event_prob_no.shape[0]
- else:
- raise ValueError("Mixed simulation returned no modality data.")
- ground_truth_subj_ids = list(np.arange(1, num_subjects + 1).astype('str'))
- ground_truth_sequences = data["gt_sequence"]
- ground_truth_subtypes = data["gt_subtypes"]
- ground_truth_stages = data["gt_stages"]
- N_S_ground_truth = ground_truth_sequences.shape[0]
- sustain = MixedTypeSustain(
- zscore_data=zscore_data,
- z_vals=z_vals,
- z_max=z_max,
- zscore_biomarker_labels=zscore_labels,
- ordinal_prob_nl=ordinal_prob_nl,
- ordinal_prob_score=ordinal_prob_score,
- ordinal_score_vals=ordinal_score_vals,
- ordinal_biomarker_labels=ordinal_labels,
- event_prob_yes=event_prob_yes,
- event_prob_no=event_prob_no,
- event_biomarker_labels=event_labels,
- N_startpoints=N_startpoints,
- N_S_max=N_S_max,
- N_iterations_MCMC=N_iterations_MCMC,
- output_folder=output_folder,
- dataset_name=dataset_name,
- use_parallel_startpoints=use_parallel_startpoints
- )
- validate = False
- #****** plot the ground truth sequences
- ground_truth_sequences = np.expand_dims(ground_truth_sequences, axis=2)
- ground_truth_fractions_actual, _ = np.histogram(ground_truth_subtypes, bins=np.arange(N_S_ground_truth + 1) - 0.5)
- ground_truth_fractions_actual = ground_truth_fractions_actual/len(ground_truth_subtypes)
- ground_truth_fractions_actual = np.expand_dims(ground_truth_fractions_actual, axis=1)
- ground_truth_nsamples = np.inf
- #ordering of positional variance diagrams (PVDs)
- plot_subtype_order = np.arange(N_S_ground_truth)
- #ordering of biomarkers in each PVD
- plot_biomarker_order = ground_truth_sequences[plot_subtype_order[0], :].astype(int).ravel()
- #plot PVDs given subtype and biomarker ordering
- figs, ax = sustain._plot_sustain_model(ground_truth_sequences, ground_truth_fractions_actual, ground_truth_nsamples, \
- subtype_order=plot_subtype_order, biomarker_order=plot_biomarker_order, title_font_size=12)
- figs[0].suptitle('Ground truth sequences')
- figs[0].savefig(os.path.join(output_folder, 'PVD_true.png'))
- figs[0].show()
- #************* run SuStaIn to infer subtype sequences and subjects' subtypes/stages estimates
- samples_sequence, \
- samples_f, \
- ml_subtype, \
- prob_ml_subtype, \
- ml_stage, \
- prob_ml_stage, \
- prob_subtype_stage = sustain.run_sustain_algorithm(plot=True)
- #save the most likely subtype, the associated subtype probability,
- # the most likely stage and the associated stage probability for each subject
- df = pd.DataFrame()
- df['subj_id'] = ground_truth_subj_ids
- df['ml_subtype'] = ml_subtype
- df['prob_ml_subtype'] = prob_ml_subtype
- df['ml_stage'] = ml_stage
- df['prob_ml_stage'] = prob_ml_stage
- df.to_csv(os.path.join(output_folder, 'Subject_subtype_stage_estimates.csv'), index=False)
- FONT_SIZE = 15
- #plot the inferred subtypes as histograms binned by true subtype
- plt.style.use('seaborn-deep')
- bins = np.arange(0, N_S_ground_truth+1)
- X_hist = list()
- labels_hist = list()
- for i in range(N_S_max):
- X_hist.append(ml_subtype[ground_truth_subtypes==i].ravel())
- labels_hist.append('Subtype ' + str(i+1))
- fig, ax = plt.subplots()
- ax.hist(X_hist, bins, label=labels_hist)
- ax.set_xticks(np.arange(0, N_S_ground_truth)+0.5)
- ax.set_xticklabels(np.arange(1, N_S_ground_truth+1))
- ax.set_xlabel('Estimated subtype', fontsize=FONT_SIZE)
- ax.set_title('')
- ax.legend(loc='upper right', fontsize=FONT_SIZE)
- fig.savefig(os.path.join(output_folder, 'Subtype_estimate_histograms.png'))
- fig.show()
- #plot the inferred stages as boxplots binned by true stage
- df_boxplot = pd.DataFrame()
- df_boxplot['subtypes_true'] = ground_truth_subtypes
- df_boxplot['subtypes_est'] = ml_subtype
- df_boxplot['stages_true'] = ground_truth_stages
- df_boxplot['stages_est'] = ml_stage
- fig, ax = plt.subplots()
- df_boxplot.boxplot(column='stages_est', by='stages_true', grid=False, fontsize=FONT_SIZE, ax=ax)
- ax.set_xlabel('True stages', fontsize=FONT_SIZE)
- ax.set_ylabel('Estimated stages', fontsize=FONT_SIZE)
- ax.set_title('')
- fig.savefig(os.path.join(output_folder, 'Stage_estimate_boxplots.png'))
- fig.show()
- print('Maximum likelihood model finished. Saved figures and output files in ' + output_folder + ' folder.')
- # ************* cross-validation: splits the whole dataset into a number of folds (N_folds),
- # runs SuStaIn on the training data of each fold and evaluates out-of-sample log likelihood of fold's test data,
- # also evaluates cross-validation information criterion (CVIC) and displays cross-validated positional variance diagram (PVD)
- if validate:
- print('Running cross-validation. This may take an hour or longer. Set validate = False to disable.')
- test_idxs = []
- cv = sklearn.model_selection.StratifiedKFold(n_splits=N_folds, shuffle=True)
- cv_it = cv.split(data, labels)
- for train, test in cv_it:
- test_idxs.append(test)
- test_idxs = np.array(test_idxs)
- #For parallelization, you can call this several different ways
- #passing in one or a specific set ofcross-validation folds:
- #CVIC, loglike_matrix = sustain.cross_validate_sustain_model(test_idxs, 0) #just the first fold
- #CVIC, loglike_matrix = sustain.cross_validate_sustain_model(test_idxs, [0,5]) #first and sixth
- #You can also just run all folds at once
- CVIC, loglike_matrix = sustain.cross_validate_sustain_model(test_idxs)
- if CVIC == [] and loglike_matrix == []:
- return
- #output CV folds' out-of-sample log likelihoods
- df_loglike = pd.DataFrame(data = loglike_matrix, columns = ["Subtype " + str(i+1) for i in range(N_S_max)])
- df_loglike.to_csv(os.path.join(output_folder, 'Log_likelihoods_cv_folds.csv'), index=False)
- #this part estimates cross-validated positional variance diagrams
- for i in range(N_S_max):
- sustain.combine_cross_validated_sequences(i+1, N_folds)
- print('Cross-validation finished. Saved figures and output files in ' + output_folder + ' folder.')
- if __name__ == '__main__':
- np.random.seed(42)
- main()
simrun.py at commit 708fa22, under MIT · at the source
Overview
- Douglas Mental Health University Health Centre, Montreal, Quebec, Canada
- Department of Psychiatry, McGill University, Montreal, Quebec, Canada
- Neuroscience and Mental Health Institute, University of Alberta, Edmonton, Alberta, Canada
- Division of Neurology, Department of Medicine, University of Alberta, Edmonton, Alberta, Canada
Abstract
Amyotrophic lateral sclerosis (ALS) is clinically and biologically heterogeneous, yet data-driven imaging subtyping approaches have rarely been validated longitudinally or linked to clinical and survival outcomes. We aimed to identify and validate distinct ALS subtypes and disease stages using deformation-based morphometry (DBM) and the Subtype and Stage Inference (SuStaIn) model, and to characterize their cross-sectional and longitudinal imaging, clinical, cognitive, and survival profiles. Data from 198 ALS patients and 144 healthy controls in the Canadian ALS Neuroimaging Consortium (CALSNIC) multicenter cohort were analyzed. Baseline regional DBM w-scores from 14 ALS-relevant regions served as input to SuStaIn to infer subtypes and stages. Longitudinal consistency of subtype and stage assignments (e.g. adherence to the expected disease evolution) was assessed using follow-up visits. Imaging and clinical trajectories were compared across subtypes using linear mixed-effects models incorporating stage and elapsed time. Associations between longitudinal variables and SuStaIn stage were estimated using mixed models, while baseline clinical and cognitive differences were assessed with ordinary least squares regression. Survival differences were evaluated using Kaplan–Meier curves and log-rank tests. SuStaIn identified one normal-appearing group (S0) and three ALS atrophy subtypes. S0 showed no baseline atrophy but exhibited longitudinal motor decline and the most favorable survival (log-rank p < 0.05 to p < 0.01). S1 exhibited classical motor/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 6 matches between paragraphs and lines of code.
BIC-MNI/minc-tools
e3825986359ecd75d82aa88ff2015d36e234e55d, 13 September 2015Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
295 files
- Testing/
minc2-testminctools.sh , Shell, 29 lines - Testing/
mincaverage-test.sh , Shell, 25 lines - Testing/
minccalc-test.sh , Shell, 154 lines - Testing/
mincinfo-test.pl , Perl, 203 lines - Testing/
mincresample-test.sh , Shell, 30 lines - Testing/
mincreshape-test.pl , Perl, 145 lines - Testing/
mincstats-test.pl , Perl, 208 lines - Testing/
run_test_progs.sh , Shell, 12 lines - Testing/
xfmconcat_01.sh , Shell, 20 lines - Testing/
xfmconcat_02.sh , Shell, 42 lines - conversion/
Acr_nema/ , C, 1,257 linesacr_io.c - conversion/
Acr_nema/ , C/C++, 103 linesacr_nema.h - conversion/
Acr_nema/ , C/C++, 195 linesacr_nema/ acr_io.h - conversion/
Acr_nema/ , C/C++, 83 linesacr_nema/ dicom_client_routines.h - conversion/
Acr_nema/ , C/C++, 132 linesacr_nema/ dicom_network.h - conversion/
Acr_nema/ , C/C++, 219 linesacr_nema/ element.h - conversion/
Acr_nema/ , C/C++, 138 linesacr_nema/ file_io.h - conversion/
Acr_nema/ , C/C++, 163 linesacr_nema/ group.h - conversion/
Acr_nema/ , C/C++, 82 linesacr_nema/ message.h - conversion/
Acr_nema/ , C/C++, 88 linesacr_nema/ value_repr.h - conversion/
Acr_nema/ , C, 71 linesacr_test.c - conversion/
Acr_nema/ , Shell, 20 linesautogen.sh - conversion/
Acr_nema/ , C, 200 linescopy_acr_nema.c - conversion/
Acr_nema/ , C, 1,535 linesdicom_client_routines.c - conversion/
Acr_nema/ , C, 2,897 linesdicom_network.c - conversion/
Acr_nema/ , C, 54 linesdicom_test.c - conversion/
Acr_nema/ , C, 317 linesdump_acr_nema.c - conversion/
Acr_nema/ , C, 1,858 lineselement.c - conversion/
Acr_nema/ , C, 226 linesextract_acr_nema.c - conversion/
Acr_nema/ , C, 942 linesfile_io.c - conversion/
Acr_nema/ , C, 27 linesglobals.c - conversion/
Acr_nema/ , C, 1,555 linesgroup.c - conversion/
Acr_nema/ , C, 601 linesmessage.c - conversion/
Acr_nema/ , C, 168 linesread_acr_nema.c - conversion/
Acr_nema/ , C, 190 linessample_dicom_client.c - conversion/
Acr_nema/ , C, 607 linesvalue_repr.c - conversion/
ana2mnc/ , Perl, 856 linesana2mnc_xfm_reduce.pl - conversion/
ana2mnc/ , Perl, 171 linesana_dump.pl - conversion/
ana2mnc/ , C/C++, 100 linesdoc/ dbh.h - conversion/
ana2mnc/ , C, 128 linesdoc/ make_hdr.c - conversion/
ana2mnc/ , C, 172 linesdoc/ show_hdr.c - conversion/
ana2mnc/ , C/C++, 98 linesdoc/ spm_dbh.h - conversion/
ana2mnc/ , MATLAB, 144 linesdoc/ spm_hread.m - conversion/
ana2mnc/ , MATLAB, 138 linesdoc/ spm_hwrite.m - conversion/
ana2mnc/ , MATLAB, 484 linesdoc/ spm_realign.m - conversion/
ana2mnc/ , C, 442 linessteve_smith_ana2mnc/ analyze2minc.c - conversion/
ana2mnc/ , C/C++, 93 linessteve_smith_ana2mnc/ dbh.h - conversion/
ana2mnc/ , C, 556 linessteve_smith_ana2mnc/ minc2analyze.c - conversion/
dcm2mnc/ , C/C++, 184 linesacr_element_defs.h - conversion/
dcm2mnc/ , C, 1,150 linesdcm2mnc.c - conversion/
dcm2mnc/ , C/C++, 281 linesdcm2mnc.h - conversion/
dcm2mnc/ , C, 2,418 linesdicom_read.c - conversion/
dcm2mnc/ , C/C++, 16 linesdicom_read.h - conversion/
dcm2mnc/ , C, 3,255 linesdicom_to_minc.c - conversion/
dcm2mnc/ , C/C++, 293 linesdicom_to_minc.h - conversion/
dcm2mnc/ , C/C++, 45 linesext_element_defs.h - conversion/
dcm2mnc/ , C/C++, 55 linesgems_element_defs.h - conversion/
dcm2mnc/ , C, 1,453 linesminc_file.c - conversion/
dcm2mnc/ , C/C++, 11 linesminc_file.h - conversion/
dcm2mnc/ , C/C++, 85 linespms_element_defs.h - conversion/
dcm2mnc/ , C, 53 linesprogress.c - conversion/
dcm2mnc/ , C/C++, 1 lineprogress.h - conversion/
dcm2mnc/ , C/C++, 491 linessiemens_header_defs.h - conversion/
dcm2mnc/ , C/C++, 97 linessiemens_header_table.h - conversion/
dcm2mnc/ , C, 977 linessiemens_to_dicom.c - conversion/
dcm2mnc/ , C/C++, 3 linessiemens_to_dicom.h - conversion/
dcm2mnc/ , C/C++, 116 linesspi_element_defs.h - conversion/
dcm2mnc/ , C, 326 linesstring_to_filename.c - conversion/
dcm2mnc/ , C/C++, 2 linesstring_to_filename.h - conversion/
dicomserver/ , C, 23 linesdicom_element_defs.c - conversion/
dicomserver/ , C/C++, 121 linesdicom_element_defs.h - conversion/
dicomserver/ , C/C++, 67 linesdicom_prototypes.h - conversion/
dicomserver/ , C, 16 linesdicomserver-debug.c - conversion/
dicomserver/ , C, 712 linesdicomserver.c - conversion/
dicomserver/ , C/C++, 107 linesdicomserver.h - conversion/
dicomserver/ , C, 646 linesminc_file.c - conversion/
dicomserver/ , C, 182 linesopen_connection.c - conversion/
dicomserver/ , C, 209 linesproject_file.c - conversion/
dicomserver/ , C, 563 linesreply.c - conversion/
dicomserver/ , C, 146 linessave_transferred_object. c - conversion/
dicomserver/ , C, 823 linessiemens_dicom_read.c - conversion/
dicomserver/ , C, 402 linessiemens_dicom_to_minc.c - conversion/
dicomserver/ , C/C++, 162 linessiemens_dicom_to_minc.h - conversion/
dicomserver/ , C/C++, 40 linesspi_element_defs.h - conversion/
dicomserver/ , C, 92 linesstring_to_filename.c - conversion/
dicomserver/ , C, 201 linesuse_the_files.c - conversion/
dicomserver_sonata/ , C, 884 linesdcm2mnc.c - conversion/
dicomserver_sonata/ , C, 768 linesdcm2mnc2.c - conversion/
dicomserver_sonata/ , C, 23 linesdicom_element_defs.c - conversion/
dicomserver_sonata/ , C/C++, 154 linesdicom_element_defs.h - conversion/
dicomserver_sonata/ , C/C++, 82 linesdicom_prototypes.h - conversion/
dicomserver_sonata/ , C, 643 linesdicomreader.c - conversion/
dicomserver_sonata/ , C, 12 linesdicomserver-debug.c - conversion/
dicomserver_sonata/ , C, 930 linesdicomserver-nondebug.c - conversion/
dicomserver_sonata/ , C, 1,084 linesdicomserver-nondebug2.c - conversion/
dicomserver_sonata/ , C/C++, 158 linesdicomserver.h - conversion/
dicomserver_sonata/ , C/C++, 30 linesext_element_defs.h - conversion/
dicomserver_sonata/ , C, 1,025 linesminc_file.c - conversion/
dicomserver_sonata/ , C, 157 linesmodify_group_list.c - conversion/
dicomserver_sonata/ , C, 206 linesopen_connection.c - conversion/
dicomserver_sonata/ , C, 128 linesparse_dicom_groups.c - conversion/
dicomserver_sonata/ , C, 54 linesprogress.c - conversion/
dicomserver_sonata/ , C, 214 linesproject_file.c - conversion/
dicomserver_sonata/ , C, 617 linesreply.c - conversion/
dicomserver_sonata/ , C, 192 linessave_transferred_object. c - conversion/
dicomserver_sonata/ , C, 1,196 linessiemens_dicom_read.c - conversion/
dicomserver_sonata/ , C, 1,408 linessiemens_dicom_send.c - conversion/
dicomserver_sonata/ , C, 1,287 linessiemens_dicom_to_minc.c - conversion/
dicomserver_sonata/ , C/C++, 253 linessiemens_dicom_to_minc.h - conversion/
dicomserver_sonata/ , C/C++, 211 linessiemens_header_table.h - conversion/
dicomserver_sonata/ , C/C++, 720 linessiemens_include/ STC_Common_Status.h - conversion/
dicomserver_sonata/ , C/C++, 109 linessiemens_include/ ds_date.h - conversion/
dicomserver_sonata/ , C/C++, 560 linessiemens_include/ ds_functions.h - conversion/
dicomserver_sonata/ , C/C++, 237 linessiemens_include/ ds_head_acr_groups_types .h - conversion/
dicomserver_sonata/ , C/C++, 532 linessiemens_include/ ds_head_basic_types.h - conversion/
dicomserver_sonata/ , C/C++, 76 linessiemens_include/ ds_head_constants.h - conversion/
dicomserver_sonata/ , C/C++, 195 linessiemens_include/ ds_head_image_text_type. h - conversion/
dicomserver_sonata/ , C/C++, 671 linessiemens_include/ ds_head_shadow_groups_ty pes.h - conversion/
dicomserver_sonata/ , C/C++, 207 linessiemens_include/ ds_head_type.h - conversion/
dicomserver_sonata/ , C/C++, 42 linessiemens_include/ ds_include_files.h - conversion/
dicomserver_sonata/ , C/C++, 322 linessiemens_include/ ds_messages.h - conversion/
dicomserver_sonata/ , C/C++, 683 linessiemens_include/ ds_transformation.h - conversion/
dicomserver_sonata/ , C/C++, 599 linessiemens_include/ ds_transformation_contro l.h - conversion/
dicomserver_sonata/ , C, 794 linessiemens_to_dicom.c - conversion/
dicomserver_sonata/ , C/C++, 86 linesspi_element_defs.h - conversion/
dicomserver_sonata/ , C, 312 linesstring_to_filename.c - conversion/
dicomserver_sonata/ , C, 297 linesuse_the_files.c - conversion/
ecattominc/ , C, 170 linesdump_ecat_header.c - conversion/
ecattominc/ , C, 1,233 linesecat_file.c - conversion/
ecattominc/ , C/C++, 208 linesecat_file.h - conversion/
ecattominc/ , C/C++, 274 linesecat_header_definition.h - conversion/
ecattominc/ , C, 1,645 linesecattominc.c - conversion/
ecattominc/ , C, 70 linesinsertblood.c - conversion/
ecattominc/ , C, 252 linesmachine_indep.c - conversion/
ecattominc/ , C/C++, 63 linesmachine_indep.h - conversion/
gcomserver/ , C, 1,090 linesconvert_to_dicom.c - conversion/
gcomserver/ , C, 582 linesfix_dicom_coords/ fix_dicom_coords.c - conversion/
gcomserver/ , C, 127 linesfix_dicom_coords/ test_fix_dicom_coords.c - conversion/
gcomserver/ , C/C++, 71 linesgcom_prototypes.h - conversion/
gcomserver/ , C, 7 linesgcomserver-debug.c - conversion/
gcomserver/ , C, 619 linesgcomserver.c - conversion/
gcomserver/ , C/C++, 207 linesgcomserver.h - conversion/
gcomserver/ , C, 251 linesgcomtodicom.c - conversion/
gcomserver/ , C, 1,096 linesgyro_read.c - conversion/
gcomserver/ , C, 237 linesgyro_to_minc.c - conversion/
gcomserver/ , C/C++, 199 linesgyro_to_minc.h - conversion/
gcomserver/ , C, 114 linesgyrotominc.c - conversion/
gcomserver/ , C, 640 linesminc_file.c - conversion/
gcomserver/ , C, 234 linesopen_connection.c - conversion/
gcomserver/ , C, 454 linesproject_file.c - conversion/
gcomserver/ , C, 632 linesreply.c - conversion/
gcomserver/ , C, 190 linessave_transferred_object. c - conversion/
gcomserver/ , C, 16 linesspi_element_defs.c - conversion/
gcomserver/ , C/C++, 203 linesspi_element_defs.h - conversion/
gcomserver/ , C, 293 linesspi_message.c - conversion/
gcomserver/ , C, 99 linesstring_to_filename.c - conversion/
gcomserver/ , C, 247 linesuse_the_files.c - conversion/
gcomserver/ , C, 99 linesvoxelq_fix/ test_vq_fix.c - conversion/
gcomserver/ , C, 209 linesvoxelq_fix/ voxelq_fix_coords.c - conversion/
image_filters/ , C, 29 linesatob.c - conversion/
image_filters/ , C, 27 linesatof.c - conversion/
image_filters/ , C, 27 linesatoi.c - conversion/
image_filters/ , C, 27 linesatol.c - conversion/
image_filters/ , C, 28 linesbtoa.c - conversion/
image_filters/ , C, 35 linesbtof.c - conversion/
image_filters/ , C, 36 linesbyte_swap.c - conversion/
image_filters/ , C, 38 linesbyte_swap4.c - conversion/
image_filters/ , C, 103 linesextract.c - conversion/
image_filters/ , C, 64 linesfmaxmin.c - conversion/
image_filters/ , C, 71 linesfrange.c - conversion/
image_filters/ , C, 56 linesfscale.c - conversion/
image_filters/ , C, 28 linesftoa.c - conversion/
image_filters/ , C, 45 linesftob.c - conversion/
image_filters/ , C, 45 linesftoi.c - conversion/
image_filters/ , C, 45 linesftoui.c - conversion/
image_filters/ , C, 100 linesimageinvert.c - conversion/
image_filters/ , C, 87 linesimagetranspose.c - conversion/
image_filters/ , C, 94 linesinsert.c - conversion/
image_filters/ , C, 28 linesitoa.c - conversion/
image_filters/ , C, 35 linesitof.c - conversion/
image_filters/ , C, 28 linesltoa.c - conversion/
image_filters/ , C, 64 linesreecho.c - conversion/
image_filters/ , C, 47 linesskipdata.c - conversion/
image_filters/ , C, 35 linesuitof.c - conversion/
micropet/ , C, 1,542 linesupet2mnc.c - conversion/
minctoecat/ , C, 639 linesecat_write.c - conversion/
minctoecat/ , C/C++, 230 linesecat_write.h - conversion/
minctoecat/ , C, 404 linesmachine_indep.c - conversion/
minctoecat/ , C/C++, 35 linesmachine_indep.h - conversion/
minctoecat/ , C, 1,008 linesminctoecat.c - conversion/
mnitominc/ , C, 891 linesmnitominc.c - conversion/
mnitominc/ , C/C++, 261 linesmnitominc.h - conversion/
mri_to_minc/ , Perl, 34 linesdgtoieee.pl - conversion/
mri_to_minc/ , Perl, 485 linesdicom_to_minc.pl - conversion/
mri_to_minc/ , Perl, 272 linesdicomfile_to_minc.pl - conversion/
mri_to_minc/ , Perl, 190 linesge4_to_minc.pl - conversion/
mri_to_minc/ , Perl, 330 linesge5_to_minc.pl - conversion/
mri_to_minc/ , C, 74 linesge_uncompress.c - conversion/
mri_to_minc/ , Perl, 270 linesgedicom_to_minc.pl - conversion/
mri_to_minc/ , Perl, 1,028 linesmri_to_minc.pl - conversion/
mri_to_minc/ , Perl, 188 linessiemens_magnetom_vision_ to_minc.pl - conversion/
mri_to_minc/ , Perl, 876 linessiemens_to_minc.pl - conversion/
nifti1/ , C/C++, 100 linesanalyze75.h - conversion/
nifti1/ , C, 767 linesmnc2nii.c - conversion/
nifti1/ , C/C++, 70 linesnifti1_local.h - conversion/
nifti1/ , C, 77 linesnifti1_test.c - conversion/
nifti1/ , C, 7,837 linesnifti_stats.c - conversion/
nifti1/ , C, 687 linesnii2mnc.c - conversion/
scxtominc/ , C, 70 linesinsertblood.c - conversion/
scxtominc/ , C/C++, 49 linesisotope_list.h - conversion/
scxtominc/ , C, 524 linesscx_file.c - conversion/
scxtominc/ , C/C++, 75 linesscx_file.h - conversion/
scxtominc/ , C/C++, 301 linesscx_header_def.h - conversion/
scxtominc/ , C, 113 linesscxmnem.c - conversion/
scxtominc/ , C, 1,331 linesscxtominc.c - conversion/
siemens_mosaic2mnc/ , Perl, 20 linesMakefile.PL - conversion/
vff2mnc/ , C, 1,324 linesvff2mnc.c - conversion/
vff2mnc/ , C/C++, 104 linesvff2mnc.h - progs/
Proglib/ , C, 179 linesconvert_origin_to_start. c - progs/
Proglib/ , C/C++, 41 linesconvert_origin_to_start. h - progs/
Proglib/ , C, 113 linesminc_endian.c - progs/
Proglib/ , C/C++, 10 linesminc_endian.h - progs/
Proglib/ , C, 175 linesvax_conversions.c - progs/
Proglib/ , C/C++, 52 linesvax_conversions.h - progs/
coordinates/ , C, 151 linesvoxeltoworld.c - progs/
coordinates/ , C, 146 linesworldtovoxel.c - progs/
minc_modify_header/ , C, 559 linesminc_modify_header.c - progs/
mincaverage/ , C, 1,078 linesmincaverage.c - progs/
mincblob/ , C, 410 linesmincblob.c - progs/
minccalc/ , C/C++, 12 lineserrx.h - progs/
minccalc/ , C, 865 lineseval.c - progs/
minccalc/ , C, 2,572 linesgram.c - progs/
minccalc/ , C, 68 linesident.c - progs/
minccalc/ , C, 2,043 lineslex.c - progs/
minccalc/ , C, 706 linesminccalc.c - progs/
minccalc/ , C, 88 linesnode.c - progs/
minccalc/ , C/C++, 132 linesnode.h - progs/
minccalc/ , C, 5 linesoptim.c - progs/
minccalc/ , C, 33 linesscalar.c - progs/
minccalc/ , C, 194 linessym.c - progs/
minccalc/ , C, 48 linesvector.c - progs/
minccmp/ , C, 636 linesminccmp.c - progs/
mincconcat/ , C, 1,463 linesmincconcat.c - progs/
mincconvert/ , C, 229 linesmincconvert.c - progs/
minccopy/ , C, 227 linesminccopy.c - progs/
mincdump/ , C, 228 linesdumplib.c - progs/
mincdump/ , C/C++, 72 linesdumplib.h - progs/
mincdump/ , C, 730 linesmincdump.c - progs/
mincdump/ , C/C++, 79 linesmincdump.h - progs/
mincdump/ , C, 865 linesvardata.c - progs/
mincdump/ , C/C++, 27 linesvardata.h - progs/
mincexample/ , C, 643 linesmincexample1.c - progs/
mincexample/ , C, 733 linesmincexample2.c - progs/
mincexpand/ , C, 146 linesmincexpand.c - progs/
mincextract/ , C, 515 linesmincextract.c - progs/
mincgen/ , C, 96 linesescapes.c - progs/
mincgen/ , C/C++, 18 linesgeneric.h - progs/
mincgen/ , C, 1,836 linesgenlib.c - progs/
mincgen/ , C/C++, 80 linesgenlib.h - progs/
mincgen/ , C, 130 linesgetfill.c - progs/
mincgen/ , C, 50 linesinit.c - progs/
mincgen/ , C, 496 linesload.c - progs/
mincgen/ , C, 144 linesmain.c - progs/
mincgen/ , C/C++, 78 linesncgen.h - progs/
mincinfo/ , C, 661 linesmincinfo.c - progs/
minclookup/ , C, 999 linesminclookup.c - progs/
mincmakescalar/ , C, 542 linesmincmakescalar.c - progs/
mincmakevector/ , C, 293 linesmincmakevector.c - progs/
mincmath/ , C, 931 linesmincmath.c - progs/
mincmorph/ , C, 428 lineskernel_io.c - progs/
mincmorph/ , C/C++, 43 lineskernel_io.h - progs/
mincmorph/ , C, 797 lineskernel_ops.c - progs/
mincmorph/ , C/C++, 22 lineskernel_ops.h - progs/
mincmorph/ , Perl, 104 linesmake_mincmorph_kernel.pl - progs/
mincmorph/ , C, 745 linesmincmorph.c - progs/
mincresample/ , C, 2,303 linesmincresample.c - progs/
mincresample/ , C/C++, 382 linesmincresample.h - progs/
mincresample/ , C, 1,518 linesresample_volumes.c - progs/
mincreshape/ , C, 897 linescopy_data.c - progs/
mincreshape/ , C, 1,793 linesmincreshape.c - progs/
mincreshape/ , C/C++, 124 linesmincreshape.h - progs/
mincsample/ , C, 606 linesmincsample.c - progs/
mincsample/ , C, 190 linesmt19937ar.c - progs/
mincsample/ , C/C++, 70 linesmt19937ar.h - progs/
mincstats/ , C, 1,943 linesmincstats.c - progs/
minctoraw/ , C, 296 linesminctoraw.c - progs/
mincview/ , C, 111 linesinvert_raw_image.c - progs/
mincwindow/ , C, 258 linesmincwindow.c - progs/
rawtominc/ , C, 1,907 linesrawtominc.c - progs/
xfm/ , C, 195 linestransformtags.c - progs/
xfm/ , C, 201 linesxfm2def.c - progs/
xfm/ , C, 182 linesxfmconcat.c - progs/
xfm/ , C, 169 linesxfminvert.c - COPYING, License, 9 lines
- README, Text, 55 lines
VANDAlab/Preprocessing_Pipeline
1e2f4abd90baa404fedf0d91f914fa3be3051820, 15 April 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
11 files
- PELICAN.sh, Shell, 867 lines, 1 match
- ants_nl_registration.sh, Shell, 31 lines
- app_cicLngPipeline_ants.
sh , Shell, 674 lines - app_cicLngPipeline_ants_
asym.sh , Shell, 770 lines, 1 match - app_cicLngPipeline_ants_
beta.sh , Shell, 760 lines - cicLngPipeline.sh, Shell, 427 lines
- cicLngPipeline_ants.sh, Shell, 433 lines
- cicLngPipeline_c.sh, Shell, 428 lines
- cicLngPipeline_g.sh, Shell, 430 lines
- cicLngPipeline_ukbb.sh, Shell, 425 lines
- readme.md, Text, 48 lines
ucl-pond/pySuStaIn
708fa22d89c9692dbeafcc2c31a1c8460ced5640, 30 March 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
19 files
- notebooks/
SuStaIn tutorial using mixed input data.ipynb , Jupyter, 568 lines - notebooks/
SuStaIn tutorial using simulated data.ipynb , Jupyter, 657 lines - notebooks/
SuStaInWorkshop.ipynb , Jupyter, 426 lines - pySuStaIn/
AbstractSustain.py , Python, 1,133 lines, 1 match - pySuStaIn/
MixedTypeSustain.py , Python, 1,263 lines - pySuStaIn/
MixtureSustain.py , Python, 770 lines - pySuStaIn/
OrdinalSustain.py , Python, 793 lines - pySuStaIn/
ZScoreSustainMissingData , Python, 616 lines.py - pySuStaIn/
ZscoreSustain.py , Python, 820 lines - pySuStaIn/
__init__.py , Python, 9 lines - setup.py, Python, 35 lines
- sim/
__init__.py , Python, 7 lines - sim/
simfuncs.py , Python, 202 lines - sim/
simfuncs_mixed.py , Python, 589 lines - sim/
simrun.py , Python, 358 lines, 3 matches - tests/
create_validation.py , Python, 132 lines - tests/
validation.py , Python, 143 lines - LICENSE.txt, License, 21 lines
- README.md, Text, 133 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:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 320 scripts, each with its path and the digest of its content;
- 6 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 and Code Availability
Imaging and clinical data can be requested from the CALSNIC consortium (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, 27 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 3 authors, 4 keywords, 4 funders, 50 references.
Cite
This paper
Lajoie, I., Kalra, S., & Dadar, M. (2026). Data-driven subtyping and staging of ALS: A multicenter, longitudinal, deformation-based morphometry study. Imaging neuroscience (Cambridge, Mass.), 4, IMAG.a.1264. https://
BibTeX
@article{lajoie2026data,
author = {Lajoie, Isabelle and Kalra, Sanjay and Dadar, Mahsa},
title = {{Data-driven subtyping and staging of ALS: A multicenter, longitudinal, deformation-based morphometry study}},
journal = {Imaging neuroscience (Cambridge, Mass.)},
year = {2026},
month = jun,
volume = {4},
pages = {IMAG.a.1264},
publisher = {MIT Press},
issn = {2837-6056},
doi = {10.1162/
url = {https://
pmid = {42253609},
pmcid = {PMC13238002}
}
RIS
TY - JOUR
AU - Lajoie, Isabelle
AU - Kalra, Sanjay
AU - Dadar, Mahsa
TI - Data-driven subtyping and staging of ALS: A multicenter, longitudinal, deformation-based morphometry study
T2 - Imaging neuroscience (Cambridge, Mass.)
J2 - Imaging Neurosci (Camb)
PY - 2026
DA - 2026/
VL - 4
SP - IMAG.a.1264
SN - 2837-6056
PB - MIT Press
DO - 10.1162/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1162/
"type": "article-journal",
"title": "Data-driven subtyping and staging of ALS: A multicenter, longitudinal, deformation-based morphometry study",
"container-title": "Imaging neuroscience (Cambridge, Mass.)",
"author": [
{
"family": "Lajoie",
"given": "Isabelle"
},
{
"family": "Kalra",
"given": "Sanjay"
},
{
"family": "Dadar",
"given": "Mahsa"
}
],
"container-title-short":
"volume": "4",
"page": "IMAG.a.1264",
"DOI": "10.1162/
"PMID": "42253609",
"PMCID": "PMC13238002",
"ISSN": "2837-6056",
"publisher": "MIT Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
4
]
]
}
}
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.1235 [code]
- Intracranial volume: To adjust or not to adjust? It is not a matter of if, but how.Journal: Imaging neuroscience (Cambridge, Mass.)In common: ANTs, pandas, SciPy, 1 other tool, structural MRI / diffusion, 9 references
- [2] doi:10.1093/braincomms/fcag176 [code]
- Tau topography subtypes account for clinical heterogeneity and longitudinal trajectories in early-onset Alzheimer's disease.Journal: Brain communicationsIn common: SPM, Pillow, statsmodels, 6 other tools, clinical / translational, 3 references
- [3] doi:10.1371/journal.pbio.3003856 [code]
- Aging and metabolism contribute separately to brain-body health.Journal: PLoS biologyIn common: ANTs, SPM, statsmodels, 6 other tools, structural MRI / diffusion, clinical / translational, 1 reference
- [4] doi:10.1038/s41467-026-71151-2 [code]
- Common and distinct neural correlates of social interaction processing and theory of mind in narratives.Journal: Nature communicationsIn common: ANTs, SPM, Pillow, 7 other tools, 1 reference
- [5] doi:10.1162/imag.a.1276 [code]
- High-resolution whole-brain magnetic resonance spectroscopic imaging in youth at risk for psychosis.Journal: Imaging neuroscience (Cambridge, Mass.)In common: ANTs, Pillow, seaborn, 5 other tools, clinical / translational, 2 references
- [6] doi:10.1002/alz.71649 [code]
- Postmortem brain MRI reveals differential associations of subcortical and limbic volumes with cortical thinning and neurodegenerative pathologies.Journal: Alzheimer's & dementia : the journal of the Alzheimer's AssociationIn common: ANTs, Pillow, statsmodels, 6 other tools, structural MRI / diffusion, other condition
- [7] doi:10.1038/s41398-026-03965-z [code]
- Disentangling individual heterogeneity reveals robust network and molecular signatures of major depressive disorder with suicidal ideation.Journal: Translational psychiatryIn common: SPM, Pillow, statsmodels, 6 other tools, 1 reference
- [8] doi:10.1093/braincomms/fcag127 [code]
- Individualized phenotyping of functional amyotrophic lateral sclerosis pathology in sensorimotor cortex.Journal: Brain communicationsIn common: ANTs, SPM, seaborn, 5 other tools, other condition, 1 reference
- [9] doi:10.1038/s41467-026-71568-9 [code]
- Convergent and selective representations of pain, appetitive processes, aversive processes, and cognitive control in the insula.Journal: Nature communicationsIn common: ANTs, SPM, Pillow, 6 other tools
- [10] doi:10.1038/s41467-026-71555-0 [code]
- A deep representation learning model to predict response to vagus nerve stimulation.Journal: Nature communicationsIn common: ANTs, seaborn, scikit-learn, 4 other tools, structural MRI / diffusion, clinical / translational, 2 references
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: 3 repositories of the authors' code, each at its verified commit and with its license, 320 scripts, and 6 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:6ee189565fc221b8…
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.
