OSCR

Speech clocks decode dementia phenotypes, social exposome, and biological aging.

Code ↔ Paper

10 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 10 matches
  1. [1] § MATERIALS AND METHODS › Diagnostic criteria and clinical/cognitive assessments ↔ Code/linear_regressions.ipynb, lines 1445 to 1464 · score 0.66 · episodic memory, visual memory, global cognition, executive, AD, diagnostic · Report a mismatch
  2. [2] § MATERIALS AND METHODS › Statistical analysis and predictor-based age estimation ↔ Code/regression_main.ipynb, lines 294 to 355 · score 0.64 · gradient boosting regressor, outer, nested, inner, R2, fold · Report a mismatch
  3. [3] § RESULTS › SAGs and clinical/cognitive domains ↔ Code/linear_regressions.ipynb, lines 1445 to 1464 · score 0.61 · episodic memory, visual memory, global cognition, executive, AD, diagnostic · Report a mismatch
  4. [4] § MATERIALS AND METHODS › Statistical analysis and predictor-based age estimation ↔ Code/loco_main.ipynb, lines 355 to 416 · score 0.57 · gradient boosting regressor, inner, R2, fold, predict, Model · Report a mismatch
  5. [5] § MATERIALS AND METHODS › Brain clocks › Structural clock (MRI-T1) ↔ Code/regression_main.ipynb, lines 294 to 355 · score 0.56 · gradient boosting, outer, nested, inner, pipeline, fold · Report a mismatch
  6. [6] § RESULTS › SAG building using speech composite features ↔ Code/loco_main.ipynb, lines 36 to 157 · score 0.56 · absolute error, squared error, MAE, MDE, predict · Report a mismatch
  7. [7] § RESULTS › SAG building using speech composite features ↔ Code/regression_main.ipynb, lines 36 to 157 · score 0.56 · absolute error, squared error, MAE, MDE, predict · Report a mismatch
  8. [8] § MATERIALS AND METHODS › Feature extraction (age predictors) ↔ Code/R2R/R2R-Fig3-prediction-power.ipynb, lines 199 to 263 · score 0.54 · processing speed, semantic memory, metric, predictive, age · Report a mismatch
  9. [9] § RESULTS › Sensitivity models confirm diagnostic differences in SAGs ↔ Code/R2R/R2R-Fig-3-analysis.ipynb, lines 656 to 786 · score 0.54 · composite comorbidity, linguistic predictors, covariates, pitch, languages, education · Report a mismatch
  10. [10] § RESULTS › SAGs outperform individual speech-feature domains in diagnostic discrimination ↔ Code/R2R/R2R-Fig3-prediction-power.ipynb, lines 199 to 263 · score 0.51 · processing speed, semantic memory, bootstrap, education, linguistic, sex · Report a mismatch

Paper

Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Jupyter notebook · 476 lines · 14 KB · no license · 3 matches

  1. # %%
  2. import pandas as pd
  3. import numpy as np
  4. import os
  5. import pandas as pd
  6. import numpy as np
  7. from collections import Counter
  8. import statsmodels.api as sm
  9. from sklearn.model_selection import train_test_split
  10. from sklearn.metrics import r2_score
  11. from sklearn.model_selection import KFold
  12. from sklearn.metrics import mean_squared_error, r2_score
  13. import math
  14. from sklearn.preprocessing import MinMaxScaler
  15. import scipy
  16. from sklearn import metrics
  17. import numpy as np
  18. from sklearn.metrics import mean_absolute_error
  19. from scipy.stats import pearsonr
  20. import seaborn as sns
  21. import matplotlib.pyplot as plt
  22. from tqdm.notebook import tqdm
  23. from sklearn.linear_model import LinearRegression, Ridge
  24. from sklearn.model_selection import train_test_split
  25. from sklearn.metrics import mean_squared_error, r2_score
  26. from scipy.stats import linregress
  27. from scipy import stats
  28. from sklearn.utils import resample
  29. # %%
  30. import pandas as pd
  31. import seaborn as sns
  32. import matplotlib.pyplot as plt
  33. from scipy.stats import permutation_test
  34. def perm_test(group1, group2, n_permutations=10000):
  35. observed_diff = np.mean(group1) - np.mean(group2)
  36. def statistic(x, y):
  37. return np.mean(x) - np.mean(y)
  38. result = permutation_test(
  39. data=(group1, group2),
  40. statistic=statistic,
  41. permutation_type='independent',
  42. vectorized=False, # importante: no usar vectorized
  43. n_resamples=n_permutations,
  44. alternative='two-sided',
  45. random_state=42
  46. )
  47. return observed_diff, result.pvalue
  48. def cliffs_delta(x, y):
  49. n_x = len(x)
  50. n_y = len(y)
  51. all_pairs = [(xi, yi) for xi in x for yi in y]
  52. n_greater = sum(1 for xi, yi in all_pairs if xi > yi)
  53. n_less = sum(1 for xi, yi in all_pairs if xi < yi)
  54. delta = (n_greater - n_less) / (n_x * n_y)
  55. return delta
  56. # Función para quitar outliers con IQR
  57. def remove_outliers_iqr(df, col, thres=1.5):
  58. Q1 = df[col].quantile(0.25)
  59. Q3 = df[col].quantile(0.75)
  60. IQR = Q3 - Q1
  61. lower = Q1 - thres * IQR
  62. upper = Q3 + thres * IQR
  63. return df[(df[col] >= lower) & (df[col] <= upper)]
  64. def mean_directional_accuracy(y_true, y_pred):
  65. differences = np.array(y_pred) - np.array(y_true)
  66. signs = np.sign(differences)
  67. mde = np.mean(signs)
  68. return mde
  69. def mean_absolute_error(y_true, y_pred):
  70. y_true = np.array(y_true)
  71. y_pred = np.array(y_pred)
  72. absolute_errors = np.abs(y_pred - y_true)
  73. mae = np.mean(absolute_errors)
  74. return mae
  75. def coef_pval(coef_array_mean_, X_, y_, y_p):
  76. n = X_.shape[0]
  77. t = coef_tval(coef_array_mean_, X_, y_, y_p)
  78. p = 2 * (1 - scipy.stats.t.cdf(abs(t), n - 1))
  79. return p
  80. def coef_tval(coef_array_mean_, X_, y_, y_p):
  81. '''
  82. coef_tval for OLS of statsmodels
  83. '''
  84. a = np.array(coef_array_mean_[0][0]/ coef_se(X_, y_, y_p)[0])
  85. b = np.array(coef_array_mean_[1::].flatten() / coef_se(X_, y_, y_p)[1:])
  86. return np.append(a, b)
  87. def coef_se(X_, y_, y_p):
  88. '''
  89. coef_se for OLS of statsmodels
  90. '''
  91. n = X_.shape[0]
  92. X1 = np.hstack((np.ones((n, 1)), np.matrix(X_)))
  93. se_matrix = scipy.linalg.sqrtm(
  94. metrics.mean_squared_error(y_, y_p) *
  95. np.linalg.inv(X1.T * X1)
  96. )
  97. return np.diagonal(se_matrix)
  98. def directional_accuracy(predicted_values, true_values):
  99. predicted_values = np.array(predicted_values)
  100. true_values = np.array(true_values)
  101. difference_direction = np.sign(predicted_values - true_values)
  102. correct_direction_count = np.sum(difference_direction == 1) + np.sum(difference_direction == -1)
  103. directional_accuracy_score = correct_direction_count / len(predicted_values)
  104. return directional_accuracy_score
  105. from sklearn.ensemble import GradientBoostingRegressor
  106. from statsmodels.api import GLM
  107. from statsmodels.api import families
  108. from sklearn.model_selection import GridSearchCV, KFold
  109. from sklearn.ensemble import GradientBoostingRegressor
  110. from sklearn.preprocessing import MinMaxScaler
  111. from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
  112. from scipy.stats import linregress
  113. import numpy as np
  114. import pandas as pd
  115. import math
  116. import warnings
  117. from skopt import BayesSearchCV
  118. from skopt.space import Real, Integer
  119. # %%
  120. import pandas as pd
  121. import numpy as np
  122. import seaborn as sns
  123. import matplotlib.pyplot as plt
  124. def remove_outliers_iqr(df, col, iqr_k=1.5):
  125. s = pd.to_numeric(df[col], errors="coerce")
  126. q1 = s.quantile(0.25)
  127. q3 = s.quantile(0.75)
  128. iqr = q3 - q1
  129. low = q1 - iqr_k * iqr
  130. high = q3 + iqr_k * iqr
  131. return df.loc[(s >= low) & (s <= high)].copy()
  132. def cliffs_delta(x, y):
  133. x = pd.to_numeric(pd.Series(x).dropna(), errors="coerce").dropna().values
  134. y = pd.to_numeric(pd.Series(y).dropna(), errors="coerce").dropna().values
  135. nx, ny = len(x), len(y)
  136. if nx == 0 or ny == 0:
  137. return np.nan
  138. diffs = x[:, None] - y[None, :]
  139. n_greater = np.sum(diffs > 0)
  140. n_less = np.sum(diffs < 0)
  141. return float((n_greater - n_less) / (nx * ny))
  142. def permutation_pvalue(x, y, n_perm=10000, seed=42):
  143. """Two-sided permutation test for mean difference"""
  144. rng = np.random.default_rng(seed)
  145. x = np.array(x.dropna())
  146. y = np.array(y.dropna())
  147. if len(x) == 0 or len(y) == 0:
  148. return np.nan
  149. obs_diff = np.abs(np.mean(x) - np.mean(y))
  150. combined = np.concatenate([x, y])
  151. nx = len(x)
  152. count = 0
  153. for _ in range(n_perm):
  154. rng.shuffle(combined)
  155. x_perm, y_perm = combined[:nx], combined[nx:]
  156. diff = np.abs(np.mean(x_perm) - np.mean(y_perm))
  157. if diff >= obs_diff:
  158. count += 1
  159. return count / n_perm
  160. def chunk_list(lst, n):
  161. """Split list into chunks of size n."""
  162. for i in range(0, len(lst), n):
  163. yield lst[i:i + n]
  164. def plot_gap_by_diagnosis_clean_wrap(
  165. df,
  166. gap_col,
  167. diagnosis_list,
  168. thresholds=(0.1, 0.5, 1.0, 1.5),
  169. per_line=3,
  170. title_fontsize=8,
  171. n_perm=10000
  172. ):
  173. # Build original data by group
  174. group_data_orig = {}
  175. for diag in diagnosis_list:
  176. sub = df[df["clinical_diagnosis"] == diag][[gap_col]].copy()
  177. sub["Origen"] = diag
  178. group_data_orig[diag] = sub
  179. # Unique pairs without repetition
  180. all_pairs = [(diagnosis_list[i], diagnosis_list[j])
  181. for i in range(len(diagnosis_list))
  182. for j in range(i+1, len(diagnosis_list))]
  183. cn_pairs = [(a, b) for (a, b) in all_pairs if a == "CN"]
  184. other_pairs = [p for p in all_pairs if p not in cn_pairs]
  185. results_table = []
  186. fig, axes = plt.subplots(2, 2, figsize=(7.0, 8.0), sharey=True)
  187. axes = axes.flatten()
  188. for ax, iqr_k in zip(axes, thresholds):
  189. group_data_clean = {
  190. diag: remove_outliers_iqr(group_data_orig[diag], gap_col, iqr_k)
  191. for diag in diagnosis_list
  192. }
  193. cn_lines = []
  194. for a, b in cn_pairs:
  195. x = group_data_clean[a][gap_col]
  196. y = group_data_clean[b][gap_col]
  197. dval = cliffs_delta(x, y)
  198. pval = permutation_pvalue(x, y, n_perm=n_perm)
  199. cn_lines.append(f"{a}-{b}: {dval:.3f}")
  200. results_table.append([iqr_k, a, b, dval, pval])
  201. other_lines = []
  202. for a, b in other_pairs:
  203. x = group_data_clean[a][gap_col]
  204. y = group_data_clean[b][gap_col]
  205. dval = cliffs_delta(x, y)
  206. pval = permutation_pvalue(x, y, n_perm=n_perm)
  207. other_lines.append(f"{a}-{b}: {dval:.3f}")
  208. results_table.append([iqr_k, a, b, dval, pval])
  209. cn_wrapped = [" | ".join(chunk) for chunk in chunk_list(cn_lines, per_line)]
  210. other_wrapped = [" | ".join(chunk) for chunk in chunk_list(other_lines, per_line)]
  211. title_parts = [f"IQR={iqr_k}"] + cn_wrapped + other_wrapped
  212. ax.set_title("\n".join(title_parts), fontsize=title_fontsize)
  213. combined = pd.concat([group_data_clean[d] for d in diagnosis_list], ignore_index=True)
  214. sns.boxplot(data=combined, x="Origen", y=gap_col, order=diagnosis_list, ax=ax)
  215. ax.axhline(0, color='gray', linestyle='--', linewidth=1)
  216. ax.set_xlabel("")
  217. ax.set_ylabel(gap_col)
  218. plt.tight_layout()
  219. results_df = pd.DataFrame(results_table, columns=["IQR_k", "Group1", "Group2", "CliffsDelta", "p_value"])
  220. return fig, axes, results_df
  221. # %%
  222. import numpy as np
  223. import pandas as pd
  224. from sklearn.model_selection import KFold, GridSearchCV
  225. from sklearn.pipeline import Pipeline
  226. from sklearn.preprocessing import MinMaxScaler
  227. from sklearn.ensemble import HistGradientBoostingRegressor
  228. from sklearn.metrics import r2_score
  229. from sklearn.inspection import permutation_importance
  230. from scipy.stats import linregress
  231. import shap
  232. def run_nested_hgb(
  233. df_data,
  234. selected_hgb,
  235. n_splits_outer = 10,
  236. n_splits_inner = 5,
  237. random_state = 42,
  238. scaler_range=(0.05, 0.95),
  239. param_grid=None,
  240. n_perm_repeats: int = 30,
  241. shap_check_additivity: bool = False,
  242. verbose: int = 2
  243. ):
  244. if param_grid is None:
  245. param_grid = {
  246. "model__max_iter": [300, 400, 500, 600],
  247. "model__max_depth": [3, 5, 7],
  248. "model__learning_rate": [0.01, 0.05, 0.1],
  249. }
  250. if isinstance(selected_hgb, str):
  251. selected_hgb = [selected_hgb]
  252. selected_hgb = list(selected_hgb)
  253. y = df_data["demo_age"]
  254. X_selected = df_data[selected_hgb]
  255. kf_outer = KFold(n_splits=n_splits_outer, shuffle=True, random_state=random_state)
  256. r2_scores = []
  257. y_true_all, y_pred_all = [], []
  258. results_labels_df = pd.DataFrame(columns=[
  259. 'y_labels', 'y_pred', 'y_pred_M1', 'y_pred_M2', 'y_pred_M3',
  260. 'GAP', 'GAP_corrected_M1', 'GAP_corrected_M2', 'GAP_corrected_M3', 'ID'
  261. ])
  262. shap_values_sum = pd.Series(0.0, index=X_selected.columns)
  263. perm_values_sum = pd.Series(0.0, index=X_selected.columns)
  264. best_params_by_fold = []
  265. for fold, (train_idx, test_idx) in enumerate(kf_outer.split(X_selected), start=1):
  266. print(f" Fold {fold} (Nested CV)")
  267. X_train, X_test = X_selected.iloc[train_idx], X_selected.iloc[test_idx]
  268. y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]
  269. pipeline = Pipeline([
  270. ("scaler", MinMaxScaler(feature_range=scaler_range)),
  271. ("model", HistGradientBoostingRegressor(random_state=random_state))
  272. ])
  273. grid_search = GridSearchCV(
  274. estimator=pipeline,
  275. param_grid=param_grid,
  276. scoring="r2",
  277. cv=n_splits_inner,
  278. n_jobs=-1,
  279. verbose=verbose
  280. )
  281. grid_search.fit(X_train, y_train)
  282. best_model = grid_search.best_estimator_
  283. best_params_by_fold.append(grid_search.best_params_)
  284. y_pred = best_model.predict(X_test)
  285. r2 = r2_score(y_test, y_pred)
  286. r2_scores.append(r2)
  287. print(f" R² fold {fold}: {r2:.4f} (best params: {grid_search.best_params_})")
  288. y_true_all.extend(y_test.tolist())
  289. y_pred_all.extend(y_pred.tolist())
  290. gap_test = y_pred - y_test
  291. gap_train_all = best_model.predict(X_train) - y_train
  292. train_ids = X_train.index
  293. diag_train = df_data.loc[train_ids, 'clinical_diagnosis']
  294. cn_mask = (diag_train == 'CN').values
  295. if cn_mask.sum() >= 2:
  296. slope, intercept, _, _, _ = linregress(y_train.values[cn_mask], gap_train_all.values[cn_mask])
  297. else:
  298. slope, intercept = 0.0, 0.0
  299. corrected_gap_M1 = gap_test - (slope * y_test + intercept)
  300. y_pred_M1 = y_test + corrected_gap_M1
  301. y_train_pred = best_model.predict(X_train)
  302. if cn_mask.sum() >= 2:
  303. slope_pred, intercept_pred, _, _, _ = linregress(y_train.values[cn_mask], y_train_pred[cn_mask])
  304. if slope_pred == 0:
  305. slope_pred = 1.0
  306. else:
  307. slope_pred, intercept_pred = 1.0, 0.0
  308. y_pred_M2 = (y_pred - intercept_pred) / slope_pred
  309. corrected_gap_M2 = y_pred_M2 - y_test
  310. y_pred_M3 = (y_pred - intercept_pred) / slope_pred
  311. corrected_gap_M3 = y_pred_M3 - y_test
  312. explainer = shap.Explainer(best_model.named_steps['model'], X_train)
  313. shap_values = explainer(X_test, check_additivity=shap_check_additivity)
  314. shap_values_mean = np.abs(shap_values.values).mean(axis=0)
  315. shap_values_sum += pd.Series(shap_values_mean, index=X_selected.columns)
  316. perm_importance = permutation_importance(
  317. best_model, X_test, y_test,
  318. n_repeats=n_perm_repeats,
  319. random_state=random_state,
  320. n_jobs=-1
  321. )
  322. perm_values_sum += pd.Series(perm_importance.importances_mean, index=X_selected.columns)
  323. result = np.column_stack((
  324. y_test, y_pred, y_pred_M1, y_pred_M2, y_pred_M3,
  325. gap_test, corrected_gap_M1, corrected_gap_M2, corrected_gap_M3
  326. ))
  327. temp_df = pd.DataFrame(result, columns=[
  328. 'y_labels', 'y_pred', 'y_pred_M1', 'y_pred_M2', 'y_pred_M3',
  329. 'GAP', 'GAP_corrected_M1', 'GAP_corrected_M2', 'GAP_corrected_M3'
  330. ])
  331. temp_df['ID'] = X_test.index
  332. results_labels_df = pd.concat([results_labels_df, temp_df], ignore_index=True)
  333. r2_mean = float(np.mean(r2_scores))
  334. r2_std = float(np.std(r2_scores))
  335. r2_global = float(r2_score(y_true_all, y_pred_all))
  336. print("\n R² promedio:", r2_mean, r2_std)
  337. print(" R² global:", r2_global)
  338. shap_importance_avg = (shap_values_sum / kf_outer.get_n_splits()).sort_values(ascending=False)
  339. perm_importance_avg = (perm_values_sum / kf_outer.get_n_splits()).sort_values(ascending=False)
  340. results_labels_df = results_labels_df.set_index('ID').sort_index()
  341. df_final = pd.concat(
  342. [df_data[['demo_age', 'clinical_diagnosis'] + selected_hgb], results_labels_df],
  343. axis=1
  344. )
  345. out = {
  346. "selected_hgb": selected_hgb,
  347. "df_final": df_final,
  348. "results_labels_df": results_labels_df,
  349. "r2_scores": r2_scores,
  350. "r2_mean": r2_mean,
  351. "r2_std": r2_std,
  352. "r2_global": r2_global,
  353. "y_true_all": y_true_all,
  354. "y_pred_all": y_pred_all,
  355. "best_params_by_fold": best_params_by_fold,
  356. "shap_importance_avg": shap_importance_avg,
  357. "perm_importance_avg": perm_importance_avg,
  358. }
  359. return out
  360. # %% [markdown]
  361. # ## Load Data
  362. # %%
  363. df_data = pd.read_excel('../Data/augmented_data.xlsx')
  364. # %%
  365. selected_hgb = ['concreteness',
  366. 'granularity_extraction', 'psycholinguistic_objective',
  367. 'pitch_analysis', 'sentiment_analysis', 'talking_intervals',
  368. 'verbosity']
  369. # %% [markdown]
  370. # ## Regression
  371. # %%
  372. results = run_nested_hgb(df_data, selected_hgb, n_splits_outer = 10, n_splits_inner = 5)
  373. # %%

regression_main.ipynb at commit d75d5c3, no license · at the source

Overview

Authors: Hernan Hernandez1, Lizeth Katherine Pedraza2, Hernando Santamaria-Garcia3,4,5,6,7, Sebastian Moguilner1,8,9, Agustina Legaz1,8,10, Pavel Prado11, Jhosmary Cuadros1,12,13, Lucía Amoruso8,14,15, Liset Gonzalez1,16, Damián Dellavale17,18, Juan Pablo Espinoza–Puelles1,19,20, Javier Palma Espinosa1,21, Cecilia Jarne1,22,23,24, Fabio Mattiussi1,25, Matías Caccia8, Alejandro Sosa Welford8,22, Nicolás Pelella8, Jeremías Inchauspe8,22, Franco J Ferrante8,26,27, Gonzalo Pérez8,26,27
and 32 other authorsMarcelo Adrián Maito1,8, Guido Rocatti8, Maria Eugenia Godoy1,8,18, Joaquin Migeot1,18, Paulina Orellana1, Ariel Caviedes1, Martin Bruno26,28, Leonel Takada29, Andrea Slachevsky30,31,32,33, Maria I Behrens33,34,35,36, Bárbara Bruna34, David Aguillon37, Lina Zapata10,38,39, Jose Alberto Avila-Funes40, Nilton Custodio41, Bruce Miller10,42, Maria Luisa Gorno-Tempini10,43, Stefanie Pina Escudero10,44, Pablo Reyes45,46, Kun Hu47,48, Maira Okada de Oliveira10,49, Carlos Coronel-Oliveros1,43,50, Josephine Cruzat1, Juan Felipe Cardona51, Michael Corley52,53, Irene B Meier54, Vaibhav A Narayan54,55, Enzo Tagliazucchi1,56, Sandra Baez18,57, Claudia Duran-Aniotz1, Adolfo M García8,10,58, Agustin Ibanez1,8,43,59,60
60 affiliations
  1. Latin American Brain Health Institute (BrainLat), Universidad Adolfo Ibañez, Santiago de Chile, Chile
  2. Laboratorio de Bases Biológicas del Comportamiento, Facultad de Ciencias del Comportamiento, Universidad de La Sabana, Chía, Colombia
  3. Pontificia Universidad Javeriana (PhD Program in Neuroscience), Bogotá, San Ignacio, Colombia
  4. Center of Memory and Cognition Intellectus, Hospital Universitario San Ignacio Bogotá, San Ignacio, Colombia
  5. Universidad Nacional de Colombia, Bogotá, Colombia
  6. Fundación Santa Fe de Bogotá, Departamento de Salud Mental, Bogotá, Colombia
  7. Universidad de los Andes, Bogotá, Colombia
  8. Cognitive Neuroscience Center, Departamento de Ciencias de la Vida y del Comportamiento, Universidad de San Andrés, Buenos Aires, Argentina
  9. Harvard Medical School, Boston, MA, USA
  10. Global Brain Health Institute (GBHI), University of California, San Francisco, CA, USA
  11. Escuela de Fonoaudiología, Facultad de Ciencias de la Rehabilitación y Calidad de Vida, Universidad San Sebastián, Santiago, Chile
  12. Grupo de Bioingeniería, Decanato de Investigación, Universidad Nacional Experimental del Táchira, San Cristóbal 5001, Venezuela
  13. Advanced Center for Electrical and Electronic Engineering, Universidad Técnica Federico Santa María, Valparaíso 2390123, Chile
  14. Basque Center on Cognition, Brain and Language (BCBL), San Sebastian, Spain
  15. Ikerbasque, Basque Foundation for Science, Bilbao, Spain
  16. Facultad de Ingeniería, Universidad de Concepción, Concepción, Chile
  17. Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET), Centro Atómico Bariloche, San Carlos de Bariloche, Río Negro, Argentina
  18. Global Brain Health Institute (GBHI), Trinity College Dublin (TCD), Dublin, Ireland
  19. Center for Social and Cognitive Neuroscience (CSCN), School of Psychology, Universidad Adolfo Ibáñez, Santiago, Chile
  20. IRyS Group, Physical Education School, Pontificia Universidad Católica de Valparaíso, Valparaíso, Chile
  21. Centro Interdisciplinario de Neurociencia de Valparaíso, Valparaíso, Chile
  22. Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET), Buenos Aires, Argentina
  23. Universidad Nacional de Quilmes, Buenos Aires, Argentina
  24. Aarhus Universitetshospital, Aarhus, Denmark
  25. Universitat Pompeu Fabra, Barcelona, Spain
  26. Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET), Godoy Cruz, Buenos Aires, Argentina
  27. Facultad de Ingeniería, Universidad de Buenos Aires, Colón, Argentina
  28. Instituto de Ciencias Biomédicas (ICBM), Universidad Católica de Cuyo, San Juan, Argentina
  29. Hospital das Clinicas, University of Sao Paulo Medical School, Sao Paulo, Brazil
  30. Centro Gerociencias, Salud Mental y Metabolismo (GERO), Santiago, Chile
  31. Laboratorio de Neuropsicología y Neurociencias Clínicas (LANNEC), Núcleo Interdisciplinario de Fisiología, Biofísica y Fisiopatología-ICBM, Departamento de Ciencias Neurológicas Oriente y Neurociencias, Facultad de Medicina, Universidad de Chile, Avenida Salvador 486, Providencia, Santiago, Chile
  32. Centro de Memoria y Neuropsiquiatría (CMYN), Servicio de Neurología, Hospital del Salvador y Facultad de Medicina, Universidad de Chile, Santiago, Chile
  33. Departamento de Neurología y Psiquiatría, Clínica Alemana-Universidad del Desarrollo, Santiago, Chile
  34. Centro de Investigación Clínica Avanzada (CICA), Hospital Clínico Universidad de Chile, Santiago, Chile
  35. Departamento de Neurología y Neurocirugía, Hospital Clínico Universidad de Chile, Santiago, Chile
  36. Departamento de Neurociencia, Facultad de Medicina, Universidad de Chile, Santiago, Chile
  37. Grupo de Neurociencias de Antioquia, Facultad de Medicina, Universidad de Antioquia, Medellín, Colombia
  38. Fundacion Valle del Lili, Cali, Colombia
  39. Universidad Icesi, Cali, Colombia
  40. Dirección de Ensenanza, Instituto Nacional de Ciencias Medicas y Nutricion, Salvador Zubirán, DF, Mexico
  41. Unidad de Investigación de Deterioro Cognitivo y Prevención de Demencia, Instituto Peruano de Neurociencias, Lince, Peru
  42. Edward and Pearl Fein Memory and Aging Center, University of California, San Francisco (UCSF), San Francisco, USA
  43. Trinity College Dublin, The University of Dublin, Dublin, Ireland
  44. Edward and Pearl Fein Memory and Aging Center, Department of Neurology, Weill Institute for Neurosciences, University of California, San Francisco, CA, USA
  45. Departamento de Psiquiatría y Salud Mental, Facultad de Medicina, Pontificia Universidad Javeriana, Bogotá, Colombia
  46. Oficina de Investigaciones, Hospital Universitario San Ignacio, Bogotá, Colombia
  47. Department of Anesthesia, Critical Care and Pain Medicine, Massachusetts General Hospital, Harvard Medical School, Massachusetts, USA
  48. Division of Sleep Medicine, Harvard Medical School, Massachusetts, USA
  49. Department of Neurology, Hospital das Clinicas, University of Sao Paulo School of Medicine, Sao Paulo, Brazil
  50. Departamento de Biología, Facultad de Ciencias, Universidad de Chile, Santiago, Chile
  51. Department of Developmental Sciences, Cognition and Neuroscience, Faculty of Psychology, Universidad del Valle, Cali, Colombia
  52. Rose Stein Institute for Research on Aging and Center for Healthy Aging, UCSD, La Jolla (San Diego), USA
  53. University of California San Diego Department of Medicine, Division of Geriatrics, Gerontology, and Palliative Care, UCSD, La Jolla (San Diego), USA
  54. Davos Alzheimer’s Collaborative, Wayne PA, USA
  55. Mental Health Goals Program, Office of Life Sciences UK Visiting Professor, Kings College, London, UK
  56. University of Buenos Aires, Buenos Aires, Argentina
  57. Departamento de Psicología, Universidad de los Andes, Bogotá, Colombia
  58. Departamento de Lingüística y Literatura, Facultad de Humanidades, Universidad de Santiago de Chile, Santiago, Chile
  59. Department of Biophysics, School of Medicine, Istanbul Medipol University, 34815 Istanbul, Türkiye
  60. Barcelonaβeta Brain Research Center (BBRC), Pasqual Maragall Foundation, 08005 Barcelona, Spain
Institutions: Adolfo Ibáñez University (Chile); Universidad de La Sabana (Colombia); Universidad de Los Andes (Colombia); Pontificia Universidad Javeriana (Colombia); Universidad Nacional de Colombia (Colombia); Fundación Santa Fe de Bogotá (Colombia); Hospital Universitario San Ignacio (Colombia); Harvard University (United States); University of San Andrés (Argentina); University of California, San Francisco (United States); Global Brain Health Institute (United States); Universidad San Sebastián (Chile); Universidad Nacional Experimental del Táchira (Venezuela); Universidad Técnica Federico Santa María (Chile); Ikerbasque (Spain); Basque Center on Cognition, Brain and Language (Spain); University of Concepción (Chile); Consejo Nacional de Investigaciones Científicas y Técnicas (Argentina); Trinity College Dublin (Ireland); Bariloche Atomic Centre (Argentina); Pontificia Universidad Católica de Valparaíso (Chile); National University of Quilmes (Argentina); Aarhus University Hospital (Denmark); Universitat Pompeu Fabra (Spain); Universidad de Buenos Aires (Argentina); Universidad Católica de Cuyo (Argentina); Universidade de São Paulo (Brazil); Hospital das Clínicas da Faculdade de Medicina da Universidade de São Paulo (Brazil); Universidad del Desarrollo (Chile); Clínica Alemana (Chile); Hospital del Salvador (Chile); Instituto de Neurociencia Biomédica (Chile); University of Chile (Chile); Hospital Clínico de la Universidad de Chile (Chile); Universidad de Antioquia (Colombia); Fundación Valle del Lili (Colombia); Universidad Icesi (Colombia); Instituto Nacional de Ciencias Médicas y Nutrición Salvador Zubirán (Mexico); Institute of Peruvian Studies (Peru); University Memory and Aging Center (United States); Massachusetts General Hospital (United States); Universidad del Valle (Colombia); University of California San Diego (United States); Institute on Aging (United States); Alzheimer’s Disease Neuroimaging Initiative (United States); Universidad de Santiago de Chile (Chile); Istanbul Medipol University (Türkiye); Pasqual Maragall Foundation (Spain); Barcelonaβeta Brain Research Center (Spain)
Journal: Science advances, volume 12, issue 40, article eaef9864
Dates: received 2 February 2026; accepted 25 August 2026; published online 30 September 2026; in print October 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1126/sciadv.aef9864 · PMID 42814823 · PMCID PMC13626050 · OpenAlex W7214974072
Open access: gold, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: human (organism), Alzheimer's / dementia (population), cognitive (subfield)
Methods: Spectral & time-frequency, Connectivity, Statistics, Machine learning, Preprocessing, fMRI & imaging, Physiology & signal measures
MeSH: Aging*, Dementia*, Frontotemporal Dementia*, Speech*, Aged, Alzheimer Disease, Cognitive Dysfunction, Female, Humans, Male, Phenotype (* major topic)
Topic: Dementia and Cognitive Impairment Research (Psychiatry and Mental health, Medicine), according to OpenAlex
Funding: Alzheimer's Association (SG-20- 725707, ANID/FOVI240065, ALZ-RWD-26-1466627, AARGD-24-1310017); Wellcome Trust (227012/Z/23/Z, 335293/Z/25/Z); Global Brain Health Institute (GBHI ALZ UK-23-971135); Rainwater Charitable Foundation; Alzheimer's Society; Ministerio de Ciencia y Tecnología (RYC2022-035514-I); Agencia Nacional de Investigación y Desarrollo (13240170, ANID/PIA/ANILLOS ACT210096, 21210855, 15150012, 3240042, FONDEF ID20I10152, ANID/FONDAP/15150012, NAM22I0007, 21250152, 1210622, 1250091); National Institutes of Health (1r01ag082056-01a1, R01AG21051, R01AG083799, 2P01AG019724, R01AG057234, R01AG075775, GBHI ALZ UK-23-971135, 1d43tw012455-01a1); University of California, San Francisco (P0544014); Fondo para la Investigación Científica y Tecnológica (01‐PICTE‐2022‐05‐00103); Fogarty International Center (ReDLat2); EQuity Social Venture (NIH D43 F, R56AG069118-01, SG-21-715176-LATAM FIN- GERS, 24AARG-D-1246942, DOCTORADO BECAS CHILE/2022, SG-21-715176-LATAM FIN, GBHI ALZ UK-25-1289623, R01AG082056, 24AARG-D-1246942); Wellcome Leap (CARE-2025-0883490149)
Citations: not cited yet (Europe PMC); 68 references in the paper

Abstract

Biological aging clocks offer estimations of aging and dementia, yet scalability is limited. We introduce a large-scale, cross-national speech clock derived from 2928 individuals across five Latin American countries, spanning healthy controls (HCs), mild cognitive impairment (MCI), Alzheimer’s disease (AD), and non-language/language-dominant frontotemporal dementia (nldFTD/ldFTD). Multimodal acoustic and linguistic features were trained with supervised models to estimate chronological age, generating speech age gaps (SAGs) as cross-sectional markers of deviations from chronological age, with positive values interpreted as relatively older-appearing speech profiles. SAGs differentiated diagnostic groups (HCs < patient groups, with AD < nldFTD < ldFTD). This pattern was associated with clinical/cognitive domains. SAGs correlated with phosphorylated tau (p-Tau217) in AD and social exposome in HCs and AD. Brain clocks (structural/functional/combined) were associated with SAG in AD, nldFTD, and ldFTD. Epigenetic age correlated with SAGs in HCs and AD across Hannum, Retroclock, and OMICmAge, whereas ldFTD associations were limited to Retroclock and OMICmAge. These results indicate that SAGs capture cross-sectional multilevel aging-related variation and may offer a scalable, culturally adaptable, low-cost biomarker candidate for research in underrepresented global settings.

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 10 matches between paragraphs and lines of code.

Zenodo 20186949

License: CC-BY-4.0
State: the link answers, verified on 3 October 2026
Evidence: files inventoried
Languages: Jupyter (13)
Size: 35 files, 13 scripts
Software Heritage: not checked
Found in: “Data, code, and materials availability:”
Holds: 13 notebooks
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (13 files), pandas (13 files), SciPy (13 files), statsmodels (13 files), Matplotlib (11 files), seaborn (9 files), scikit-learn (7 files), SHAP (4 files)
Availability: 1 check, the latest on 3 October 2026: the link answers (HTTP 200)
  • 3 October 2026: the link answers (HTTP 200)
13 files

euroladbrainlat/Speech-age-gap

License: none: the authors keep all their rights
State: the link answers, verified on 3 October 2026
Evidence: files inventoried
Commit: d75d5c3f1a713c9c5a501e900be7af33fb38b0bf, 18 May 2026
Languages: Jupyter (6)
Size: 30 files, 6 scripts
Software Heritage: not archived
Found in: “Data, code, and materials availability:”
Holds: README, 6 notebooks
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (6 files), pandas (6 files), SciPy (6 files), statsmodels (6 files), Matplotlib (5 files), seaborn (4 files), scikit-learn (3 files), SHAP (2 files)
Availability: 1 check, the latest on 3 October 2026: the link answers
  • 3 October 2026: the link answers
7 files

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:

  • 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 19 scripts, each with its path and the digest of its content;
  • 10 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, code, and materials availability

All data and code needed to evaluate and reproduce the results in the paper are present in the paper and/or the Supplementary Materials (https://doi.org/10.5281/zenodo.20186949 and https://github.com/euroladbrainlat/Speech-age-gap). This study did not generate new materials. Due to regulatory and ethical considerations, the underlying recorded datasets are available under restricted access, as the acoustic and linguistic features of the recorded and transcribed materials contain identifiable information about the participants. Access can be obtained after IRB approval of the formal data-sharing agreement in a process that can last up to 12 weeks. For questions related to the data request and usage, contact A.I. at .

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, 3 October 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 52 authors, 11 MeSH terms, 13 funders, 65 references.

Cite

This paper

Hernandez, H., Pedraza, L. K., Santamaria-Garcia, H., Moguilner, S., Legaz, A., Prado, P., Cuadros, J., Amoruso, L., Gonzalez, L., Dellavale, D., Espinoza–Puelles, J. P., Espinosa, J. P., Jarne, C., Mattiussi, F., Caccia, M., Welford, A. S., Pelella, N., Inchauspe, J., Ferrante, F. J., . . . Ibanez, A. (2026). Speech clocks decode dementia phenotypes, social exposome, and biological aging. Science advances, 12(40), eaef9864. https://doi.org/10.1126/sciadv.aef9864

BibTeX

@article{hernandez2026speech,
author = {Hernandez, Hernan and Pedraza, Lizeth Katherine and Santamaria-Garcia, Hernando and Moguilner, Sebastian and Legaz, Agustina and Prado, Pavel and Cuadros, Jhosmary and Amoruso, Lucía and Gonzalez, Liset and Dellavale, Damián and Espinoza–Puelles, Juan Pablo and Espinosa, Javier Palma and Jarne, Cecilia and Mattiussi, Fabio and Caccia, Matías and Welford, Alejandro Sosa and Pelella, Nicolás and Inchauspe, Jeremías and Ferrante, Franco J and Pérez, Gonzalo and Maito, Marcelo Adrián and Rocatti, Guido and Godoy, Maria Eugenia and Migeot, Joaquin and Orellana, Paulina and Caviedes, Ariel and Bruno, Martin and Takada, Leonel and Slachevsky, Andrea and Behrens, Maria I and Bruna, Bárbara and Aguillon, David and Zapata, Lina and Avila-Funes, Jose Alberto and Custodio, Nilton and Miller, Bruce and Gorno-Tempini, Maria Luisa and Escudero, Stefanie Pina and Reyes, Pablo and Hu, Kun and de Oliveira, Maira Okada and Coronel-Oliveros, Carlos and Cruzat, Josephine and Cardona, Juan Felipe and Corley, Michael and Meier, Irene B and Narayan, Vaibhav A and Tagliazucchi, Enzo and Baez, Sandra and Duran-Aniotz, Claudia and García, Adolfo M and Ibanez, Agustin},
title = {{Speech clocks decode dementia phenotypes, social exposome, and biological aging}},
journal = {Science advances},
year = {2026},
month = sep,
volume = {12},
number = {40},
pages = {eaef9864},
publisher = {American Association for the Advancement of Science},
issn = {2375-2548},
doi = {10.1126/sciadv.aef9864},
url = {https://doi.org/10.1126/sciadv.aef9864},
pmid = {42814823},
pmcid = {PMC13626050}
}

RIS

TY - JOUR
AU - Hernandez, Hernan
AU - Pedraza, Lizeth Katherine
AU - Santamaria-Garcia, Hernando
AU - Moguilner, Sebastian
AU - Legaz, Agustina
AU - Prado, Pavel
AU - Cuadros, Jhosmary
AU - Amoruso, Lucía
AU - Gonzalez, Liset
AU - Dellavale, Damián
AU - Espinoza–Puelles, Juan Pablo
AU - Espinosa, Javier Palma
AU - Jarne, Cecilia
AU - Mattiussi, Fabio
AU - Caccia, Matías
AU - Welford, Alejandro Sosa
AU - Pelella, Nicolás
AU - Inchauspe, Jeremías
AU - Ferrante, Franco J
AU - Pérez, Gonzalo
AU - Maito, Marcelo Adrián
AU - Rocatti, Guido
AU - Godoy, Maria Eugenia
AU - Migeot, Joaquin
AU - Orellana, Paulina
AU - Caviedes, Ariel
AU - Bruno, Martin
AU - Takada, Leonel
AU - Slachevsky, Andrea
AU - Behrens, Maria I
AU - Bruna, Bárbara
AU - Aguillon, David
AU - Zapata, Lina
AU - Avila-Funes, Jose Alberto
AU - Custodio, Nilton
AU - Miller, Bruce
AU - Gorno-Tempini, Maria Luisa
AU - Escudero, Stefanie Pina
AU - Reyes, Pablo
AU - Hu, Kun
AU - de Oliveira, Maira Okada
AU - Coronel-Oliveros, Carlos
AU - Cruzat, Josephine
AU - Cardona, Juan Felipe
AU - Corley, Michael
AU - Meier, Irene B
AU - Narayan, Vaibhav A
AU - Tagliazucchi, Enzo
AU - Baez, Sandra
AU - Duran-Aniotz, Claudia
AU - García, Adolfo M
AU - Ibanez, Agustin
TI - Speech clocks decode dementia phenotypes, social exposome, and biological aging
T2 - Science advances
J2 - Sci Adv
PY - 2026
DA - 2026/09/30
VL - 12
IS - 40
SP - eaef9864
SN - 2375-2548
PB - American Association for the Advancement of Science
DO - 10.1126/sciadv.aef9864
UR - https://doi.org/10.1126/sciadv.aef9864
LA - en
ER -

CSL-JSON

{
"id": "10.1126/sciadv.aef9864",
"type": "article-journal",
"title": "Speech clocks decode dementia phenotypes, social exposome, and biological aging",
"container-title": "Science advances",
"author": [
{
"family": "Hernandez",
"given": "Hernan"
},
{
"family": "Pedraza",
"given": "Lizeth Katherine"
},
{
"family": "Santamaria-Garcia",
"given": "Hernando"
},
{
"family": "Moguilner",
"given": "Sebastian"
},
{
"family": "Legaz",
"given": "Agustina"
},
{
"family": "Prado",
"given": "Pavel"
},
{
"family": "Cuadros",
"given": "Jhosmary"
},
{
"family": "Amoruso",
"given": "Lucía"
},
{
"family": "Gonzalez",
"given": "Liset"
},
{
"family": "Dellavale",
"given": "Damián"
},
{
"family": "Espinoza–Puelles",
"given": "Juan Pablo"
},
{
"family": "Espinosa",
"given": "Javier Palma"
},
{
"family": "Jarne",
"given": "Cecilia"
},
{
"family": "Mattiussi",
"given": "Fabio"
},
{
"family": "Caccia",
"given": "Matías"
},
{
"family": "Welford",
"given": "Alejandro Sosa"
},
{
"family": "Pelella",
"given": "Nicolás"
},
{
"family": "Inchauspe",
"given": "Jeremías"
},
{
"family": "Ferrante",
"given": "Franco J"
},
{
"family": "Pérez",
"given": "Gonzalo"
},
{
"family": "Maito",
"given": "Marcelo Adrián"
},
{
"family": "Rocatti",
"given": "Guido"
},
{
"family": "Godoy",
"given": "Maria Eugenia"
},
{
"family": "Migeot",
"given": "Joaquin"
},
{
"family": "Orellana",
"given": "Paulina"
},
{
"family": "Caviedes",
"given": "Ariel"
},
{
"family": "Bruno",
"given": "Martin"
},
{
"family": "Takada",
"given": "Leonel"
},
{
"family": "Slachevsky",
"given": "Andrea"
},
{
"family": "Behrens",
"given": "Maria I"
},
{
"family": "Bruna",
"given": "Bárbara"
},
{
"family": "Aguillon",
"given": "David"
},
{
"family": "Zapata",
"given": "Lina"
},
{
"family": "Avila-Funes",
"given": "Jose Alberto"
},
{
"family": "Custodio",
"given": "Nilton"
},
{
"family": "Miller",
"given": "Bruce"
},
{
"family": "Gorno-Tempini",
"given": "Maria Luisa"
},
{
"family": "Escudero",
"given": "Stefanie Pina"
},
{
"family": "Reyes",
"given": "Pablo"
},
{
"family": "Hu",
"given": "Kun"
},
{
"family": "de Oliveira",
"given": "Maira Okada"
},
{
"family": "Coronel-Oliveros",
"given": "Carlos"
},
{
"family": "Cruzat",
"given": "Josephine"
},
{
"family": "Cardona",
"given": "Juan Felipe"
},
{
"family": "Corley",
"given": "Michael"
},
{
"family": "Meier",
"given": "Irene B"
},
{
"family": "Narayan",
"given": "Vaibhav A"
},
{
"family": "Tagliazucchi",
"given": "Enzo"
},
{
"family": "Baez",
"given": "Sandra"
},
{
"family": "Duran-Aniotz",
"given": "Claudia"
},
{
"family": "García",
"given": "Adolfo M"
},
{
"family": "Ibanez",
"given": "Agustin"
}
],
"container-title-short": "Sci Adv",
"volume": "12",
"issue": "40",
"page": "eaef9864",
"DOI": "10.1126/sciadv.aef9864",
"PMID": "42814823",
"PMCID": "PMC13626050",
"ISSN": "2375-2548",
"publisher": "American Association for the Advancement of Science",
"URL": "https://doi.org/10.1126/sciadv.aef9864",
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
30
]
]
}
}

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/s41591-024-03209-x [code]
Brain clocks capture diversity and disparities in aging and dementia across geographically diverse populations.
Journal: Nature medicine
In common: Alzheimer's / dementia, 10 references, 14 authors
[2] doi:10.1038/s41467-025-63277-6 [code]
Social exposome and brain health outcomes of dementia across Latin America.
Journal: Nature communications
In common: Alzheimer's / dementia, 13 references, 9 authors
[3] doi:10.1002/alz.14085 [code]
Educational disparities in brain health and dementia across Latin America and the United States.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: Alzheimer's / dementia, 10 references, 9 authors
[4] doi:10.1016/j.lana.2022.100387
Classification of Alzheimer's disease and frontotemporal dementia using routine clinical and cognitive measures across multicentric underrepresented samples: A cross sectional observational study.
Journal: Lancet regional health. Americas
In common: Alzheimer's / dementia, 3 references, 10 authors
[5] doi:10.1093/cvr/cvaf185
Cardiovascular risk factors and the allostatic interoceptive network in dementia.
Journal: Cardiovascular research
In common: Alzheimer's / dementia, 7 references, 8 authors
[6] doi:10.1038/s41597-023-02806-8 [code]
The BrainLat project, a multimodal neuroimaging dataset of neurodegeneration from underrepresented backgrounds.
Journal: Scientific data
In common: SciPy, NumPy, Alzheimer's / dementia, 7 references, 7 authors
[7] doi:10.1016/j.eclinm.2025.103187
Qualitative and quantitative educational disparities and brain signatures in healthy aging and dementia across global settings.
Journal: EClinicalMedicine
In common: Alzheimer's / dementia, 4 references, 7 authors
[8] doi:10.1038/s41467-025-64173-9 [code]
Creative experiences and brain clocks.
Journal: Nature communications
In common: statsmodels, seaborn, scikit-learn, 4 other tools, cognitive, 7 references, 4 authors
[9] doi:10.1186/s13195-025-01832-5
White matter hyperintensities and their impact in brain structure and function in alzheimer's disease and behavioral variant frontotemporal dementia across Latin America and the United States: a cross-sectional study.
Journal: Alzheimer's research & therapy
In common: Alzheimer's / dementia, 7 references, 5 authors
[10] doi:10.1002/alz.71232
Neural embedding of frailty in cognitively unimpaired aging and dementia across Latin America.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: Alzheimer's / dementia, 11 references, 4 authors

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.

Add the badge to the code's README

OSCR: the badge of this paper

If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.

Markdown
<!-- oscr-badge:start -->
[![OSCR](https://openscicode.org/badge/doi/10.1126/sciadv.aef9864.svg)](https://openscicode.org/badge/doi/10.1126/sciadv.aef9864)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.1126/sciadv.aef9864.svg
   :target: https://openscicode.org/badge/doi/10.1126/sciadv.aef9864
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1126/sciadv.aef9864"><img src="https://openscicode.org/badge/doi/10.1126/sciadv.aef9864.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".

If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge page.

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: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.

Report a mismatch between the code and the paper · Report a code error (signed in)

Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.

Report a reproduction failure (signed in)

Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.