OSCR

Do common dopaminergic variants modulate processing speed in cognitive aging? A longitudinal candidate gene study.

Code ↔ Paper

20 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 20 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
  1. [1] § Materials and methods › Statistical analysis › Exploratory post-mortem analyses. ↔ 10_postmortem_neuropathology_analysis.sh, lines 183–233 · score 0.79 · binary outcomes, Thal phase, post mortem, Braak stage, synuclein, linear
  2. [2] § Materials and methods › Statistical analysis › Exploratory post-mortem analyses. ↔ 11_postmortem_neuropathology_results_and_checks.R, lines 241–297 · score 0.71 · Thal phase, Braak stage, cognitive trajectories, APOE, death, TDP
  3. [3] § Results › Exploratory neuropathological analyses ↔ 13_postmortem_synaptic_density_results.R, lines 90–146 · score 0.71 · occipital cortex synaptic, parietal cortex, frontal cortex, Synaptic density, Bonferroni, FDR
  4. [4] § Materials and methods › Statistical analysis › Exploratory post-mortem analyses. ↔ 10_postmortem_neuropathology_analysis.sh, lines 1–59 · score 0.66 · Thal phase, post mortem, Braak stage, pathological, TDP, synuclein
  5. [5] § Results › Secondary outcomes: Other cognitive domains › Gene-based associations. ↔ 05_gene_based_magma_results.R, lines 1–28 · score 0.66 · Episodic Memory, MAGMA gene, Fluid Reasoning, cognitive outcomes, Vocabulary, slopes
  6. [6] § Results › Exploratory neuropathological analyses ↔ 11_postmortem_neuropathology_results_and_checks.R, lines 1–47 · score 0.65 · binary neuropathology outcomes, sparse cells, exploratory SNP
  7. [7] § Materials and methods › Statistical analysis › Primary genetic association analyses. ↔ 03_primary_single_snp_results_and_diagnostics.R, lines 1–54 · score 0.63 · episodic memory, fluid reasoning, Single SNP, vocabulary, processing speed, intercepts
  8. [8] § Materials and methods › Genotyping and quality control › Quality control procedures. ↔ 01_prepare_analysis_files.R, lines 1–83 · score 0.62 · ppp1r1b, DRD5, DRD3, DRD1, DBH, DDC
  9. [9] § Materials and methods › Statistical analysis › Exploratory post-mortem analyses. ↔ 13_postmortem_synaptic_density_results.R, lines 148–186 · score 0.62 · frontal cortex, synaptic density, hippocampus, occipital, parietal, exploratory
  10. [10] § Materials and methods › Genotyping and quality control › Quality control procedures. ↔ 02_primary_single_snp_analysis.sh, lines 1–58 · score 0.60 · PC1 PC20, LD pruned, indep, pairwise, PLINK, genotyped
  11. [11] § Materials and methods › Statistical analysis › Gene-based analyses. ↔ 07_pathway_allele_score_models.R, lines 1–32 · score 0.59 · dopamine pathway allele, covariate adjustment, allele score, unweighted
  12. [12] § Results › Pathway-wide analysis: Dopamine pathway allele score ↔ 07_pathway_allele_score_models.R, lines 54–78 · score 0.58 · pathway allele score, dopamine pathway alleles, S4, processing speed, model
  13. [13] § Materials and methods › Genotyping and quality control ↔ 01_prepare_analysis_files.R, lines 1–83 · score 0.57 · ppp1r1b, DRD3, DRD1, DBH, DDC, COMT
  14. [14] § Materials and methods › Statistical analysis › Gene-based analyses. ↔ 06_pathway_allele_score.sh, the whole file · a weak match · score 0.57 · dopamine pathway allele, allele score, stricter, unweighted, r2, LD
  15. [15] § Materials and methods › Statistical analysis › Analysis overview. ↔ 03_primary_single_snp_results_and_diagnostics.R, lines 1–54 · score 0.55 · episodic memory, fluid reasoning, vocabulary, processing speed, dopaminergic, cognitive
  16. [16] § Materials and methods › Genotyping and quality control › Quality control procedures. ↔ 08_clinical_lifestyle_sensitivity_analysis.sh, lines 1–60 · score 0.53 · PC1 PC20, LD pruned, Genome wide, PLINK, genotyped, covariates
  17. [17] § Materials and methods › Protocol ↔ 01_prepare_analysis_files.R, lines 346–417 · score 0.52 · DBP, SBP, depression, status, MVPA, lifestyle
  18. [18] § Results › Exploratory neuropathological analyses ↔ 13_postmortem_synaptic_density_results.R, lines 211–242 · score 0.51 · Model R2, Synaptic density, cognitive trajectories, S13, FDR
  19. [19] § Materials and methods › Statistical analysis › Sensitivity analysis with clinical covariates. ↔ 01_prepare_analysis_files.R, lines 419–478 · score 0.51 · MCAR, imputation, mice, status, predictive, variables
  20. [20] § Materials and methods › Cognitive assessment › Cognitive battery. ↔ 05_gene_based_magma_results.R, lines 1–28 · score 0.51 · Episodic memory, Fluid reasoning, Vocabulary, Processing speed, Cognitive

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

R · 782 lines · 29 KB · no license · 4 matches

  1. #!/usr/bin/env Rscript
  2. # 01_prepare_analysis_files.R
  3. #
  4. # Prepare the genotype, phenotype, covariate, neuropathology, and synaptic
  5. # analysis files used in the revised dopamine-pathway analyses.
  6. suppressPackageStartupMessages({
  7. library(tidyverse)
  8. library(mice)
  9. library(naniar)
  10. })
  11. # ─────────────────────────────────────────────────────────────────────────────
  12. # 0. Project paths and settings
  13. # ─────────────────────────────────────────────────────────────────────────────
  14. project_dir <- "/path/to/authorised/project_directory"
  15. plink_exe <- "plink"
  16. revision_dir <- file.path(project_dir, "PLOS_revision_genomewide_PC_analysis")
  17. qc_dir <- file.path(project_dir, "qc_outputs")
  18. clean_dir <- file.path(project_dir, "clean_data")
  19. pca_dir <- file.path(project_dir, "JOURNAL_REVISIONS")
  20. neuropath_source_dir <- file.path(project_dir, "NEUROPATH ANALYSIS")
  21. synaptic_source_dir <- file.path(project_dir, "SYNAPTIC ANALYSIS")
  22. neuropath_revision_dir <- file.path(revision_dir, "postmortem_neuropathology_genomewidePC20")
  23. synaptic_revision_dir <- file.path(revision_dir, "postmortem_synaptic_genomewidePC20")
  24. dir.create(revision_dir, showWarnings = FALSE, recursive = TRUE)
  25. dir.create(qc_dir, showWarnings = FALSE, recursive = TRUE)
  26. dir.create(clean_dir, showWarnings = FALSE, recursive = TRUE)
  27. dir.create(neuropath_revision_dir, showWarnings = FALSE, recursive = TRUE)
  28. dir.create(synaptic_revision_dir, showWarnings = FALSE, recursive = TRUE)
  29. genes <- c("comt", "drd2", "drd3", "dat1", "dbh", "ppp1r1b", "ddc", "drd1", "th", "drd5")
  30. pc_vars <- paste0("PC", 1:20)
  31. genomewide_pc_file <- file.path(pca_dir, "MANC_1000_pca_results.eigenvec")
  32. cognitive_pheno_for_fam <- file.path(project_dir, "cognitive_clean.tsv")
  33. main_base_file <- file.path(project_dir, "journal_main_phenotypes_base.tsv")
  34. sensitivity_phenotype_base_file <- file.path(project_dir, "journal_sensitivity_phenotypes_base.tsv")
  35. sensitivity_covariate_base_file <- file.path(project_dir, "journal_sensitivity_covariates_base.tsv")
  36. personal_details_file <- file.path(project_dir, "PersonalDetailsQuestionnaire_04-2021.csv")
  37. clinical_file <- file.path(project_dir, "ClinicalData_04-2021 (1).csv")
  38. depression_file <- file.path(project_dir, "DepressionData_04-2021 (1).csv")
  39. sleep_file <- file.path(project_dir, "PersonalDetailsQuestionnaire_Sleep_04-2021 (1).csv")
  40. neuropath_continuous_base_file <- file.path(neuropath_source_dir, "neuropath_basic_final_plink.tsv")
  41. neuropath_binary_base_file <- file.path(neuropath_source_dir, "neuropath_basic_final_recoded_plink.tsv")
  42. synaptic_base_file <- file.path(synaptic_source_dir, "synaptic_final_plink.tsv")
  43. main_output_file <- file.path(revision_dir, "journal_main_phenotypes_genomewide_PC20.tsv")
  44. main_keep_file <- file.path(revision_dir, "journal_main_keep_ids_genomewide_PC20.txt")
  45. sensitivity_output_file <- file.path(revision_dir, "journal_sensitivity_phenotypes_covariates_genomewide_PC20.tsv")
  46. sensitivity_keep_file <- file.path(revision_dir, "journal_sensitivity_keep_ids_genomewide_PC20.txt")
  47. sensitivity_covariate_list_file <- file.path(revision_dir, "journal_sensitivity_covariates_for_plink.txt")
  48. neuropath_continuous_output_file <- file.path(neuropath_revision_dir, "neuropath_basic_final_genomewide_PC20_plink.tsv")
  49. neuropath_binary_output_file <- file.path(neuropath_revision_dir, "neuropath_basic_final_recoded_genomewide_PC20_plink.tsv")
  50. neuropath_keep_file <- file.path(neuropath_revision_dir, "neuropath_basic_final_genomewide_PC20_ids.txt")
  51. neuropath_marker_trajectory_file <- file.path(neuropath_revision_dir, "neuropath_marker_trajectory_models.tsv")
  52. neuropath_subset_genotype_prefix <- file.path(neuropath_revision_dir, "dopamine_ps_neuropathology_subset")
  53. synaptic_output_file <- file.path(synaptic_revision_dir, "synaptic_final_genomewide_PC20_plink.tsv")
  54. synaptic_keep_file <- file.path(synaptic_revision_dir, "synaptic_final_genomewide_PC20_ids.txt")
  55. synaptic_marker_trajectory_file <- file.path(synaptic_revision_dir, "synaptic_marker_trajectory_models.tsv")
  56. synaptic_subset_genotype_prefix <- file.path(synaptic_revision_dir, "dopamine_ps_synaptic_subset")
  57. expected_main_n <- 1559
  58. expected_sensitivity_n <- 434
  59. expected_neuropath_n <- 116
  60. expected_synaptic_n <- 50
  61. # ─────────────────────────────────────────────────────────────────────────────
  62. # Helper functions
  63. # ─────────────────────────────────────────────────────────────────────────────
  64. run_plink <- function(args) {
  65. message("\nPLINK command:")
  66. message(plink_exe, " ", paste(args, collapse = " "))
  67. status <- system2(plink_exe, args = args)
  68. if (!identical(status, 0L)) {
  69. stop("PLINK command failed.")
  70. }
  71. }
  72. check_file_exists <- function(path, label = path) {
  73. if (!file.exists(path)) {
  74. stop(paste("Missing required file:", label, "\nPath:", path))
  75. }
  76. }
  77. check_bfile_exists <- function(prefix, label = prefix) {
  78. check_file_exists(paste0(prefix, ".bed"), paste0(label, ".bed"))
  79. check_file_exists(paste0(prefix, ".bim"), paste0(label, ".bim"))
  80. check_file_exists(paste0(prefix, ".fam"), paste0(label, ".fam"))
  81. }
  82. standardise_ids <- function(data) {
  83. data %>%
  84. mutate(
  85. FID = as.character(FID),
  86. IID = as.character(IID)
  87. )
  88. }
  89. check_duplicate_ids <- function(data, dataset_name) {
  90. duplicate_ids <- data %>%
  91. count(FID, IID) %>%
  92. filter(n > 1)
  93. if (nrow(duplicate_ids) > 0) {
  94. print(duplicate_ids, n = Inf)
  95. stop(paste("Duplicate FID/IID pairs detected in", dataset_name))
  96. }
  97. }
  98. check_required_variables <- function(data, required_vars, dataset_name) {
  99. missing_vars <- setdiff(required_vars, names(data))
  100. if (length(missing_vars) > 0) {
  101. print(missing_vars)
  102. stop(paste("Required variables missing from", dataset_name))
  103. }
  104. }
  105. warn_if_unexpected_n <- function(data, expected_n, dataset_name) {
  106. if (!is.na(expected_n) && nrow(data) != expected_n) {
  107. warning(paste(dataset_name, "has", nrow(data), "rows; expected", expected_n))
  108. }
  109. }
  110. replace_pcs <- function(data, pc_data) {
  111. data %>%
  112. standardise_ids() %>%
  113. select(-any_of(pc_vars)) %>%
  114. left_join(pc_data, by = c("FID", "IID"))
  115. }
  116. check_complete_pcs <- function(data, dataset_name) {
  117. missing_pcs <- data %>%
  118. summarise(across(all_of(pc_vars), ~ sum(is.na(.))))
  119. if (any(missing_pcs > 0)) {
  120. print(missing_pcs)
  121. stop(paste("Missing genome-wide PCs in", dataset_name))
  122. }
  123. }
  124. # ─────────────────────────────────────────────────────────────────────────────
  125. # 1. SNP QC and per-gene clean files
  126. # ─────────────────────────────────────────────────────────────────────────────
  127. for (gene in genes) {
  128. raw_prefix <- file.path(project_dir, gene)
  129. clean_prefix <- file.path(clean_dir, paste0(gene, "_clean"))
  130. if (!file.exists(paste0(raw_prefix, ".bed"))) {
  131. warning(paste("Raw genotype panel missing; skipping:", gene))
  132. next
  133. }
  134. run_plink(c(
  135. "--bfile", raw_prefix,
  136. "--missing",
  137. "--hardy",
  138. "--freq",
  139. "--out", file.path(qc_dir, gene)
  140. ))
  141. run_plink(c(
  142. "--bfile", raw_prefix,
  143. "--indep-pairwise", "1500", "150", "0.5",
  144. "--out", file.path(qc_dir, paste0(gene, "_prune"))
  145. ))
  146. run_plink(c(
  147. "--bfile", raw_prefix,
  148. "--mind", "0.02",
  149. "--geno", "0.02",
  150. "--maf", "0.05",
  151. "--hwe", "1e-4",
  152. "--make-bed",
  153. "--out", clean_prefix
  154. ))
  155. }
  156. clean_prefixes <- file.path(clean_dir, paste0(genes, "_clean"))
  157. clean_prefixes <- clean_prefixes[file.exists(paste0(clean_prefixes, ".bed"))]
  158. if (length(clean_prefixes) < 2) {
  159. stop("Fewer than two clean dopamine gene panels are available for merging.")
  160. }
  161. # ─────────────────────────────────────────────────────────────────────────────
  162. # 2. Merge clean gene panels into dopamine_clean
  163. # ─────────────────────────────────────────────────────────────────────────────
  164. base_gene_prefix <- clean_prefixes[1]
  165. merge_other_prefixes <- clean_prefixes[-1]
  166. merge_list_file <- file.path(clean_dir, "merge_list.txt")
  167. dopamine_clean_prefix <- file.path(project_dir, "dopamine_clean")
  168. writeLines(merge_other_prefixes, merge_list_file)
  169. run_plink(c(
  170. "--bfile", base_gene_prefix,
  171. "--merge-list", merge_list_file,
  172. "--make-bed",
  173. "--out", dopamine_clean_prefix
  174. ))
  175. check_bfile_exists(dopamine_clean_prefix, "dopamine_clean")
  176. # ─────────────────────────────────────────────────────────────────────────────
  177. # 3. Attach cognitive phenotype to create dopamine_ps
  178. # ─────────────────────────────────────────────────────────────────────────────
  179. check_file_exists(cognitive_pheno_for_fam, "cleaned cognitive phenotype file")
  180. dopamine_ps_prefix <- file.path(project_dir, "dopamine_ps")
  181. run_plink(c(
  182. "--bfile", dopamine_clean_prefix,
  183. "--pheno", cognitive_pheno_for_fam,
  184. "--make-bed",
  185. "--out", dopamine_ps_prefix
  186. ))
  187. check_bfile_exists(dopamine_ps_prefix, "dopamine_ps")
  188. # ─────────────────────────────────────────────────────────────────────────────
  189. # 4. Prepare main cognitive phenotype + genome-wide PC20 file
  190. # ─────────────────────────────────────────────────────────────────────────────
  191. check_file_exists(genomewide_pc_file, "genome-wide PC file")
  192. genomewide_pcs <- read_table(
  193. genomewide_pc_file,
  194. col_names = c("FID", "IID", pc_vars),
  195. col_types = cols(
  196. FID = col_character(),
  197. IID = col_character(),
  198. .default = col_double()
  199. )
  200. ) %>%
  201. standardise_ids()
  202. check_duplicate_ids(genomewide_pcs, "genome-wide PC file")
  203. check_required_variables(genomewide_pcs, c("FID", "IID", pc_vars), "genome-wide PC file")
  204. main_outcome_vars <- c(
  205. "gsstd_lin", "gsstd_int",
  206. "gfstd_lin", "gfstd_int",
  207. "gmstd_lin", "gmstd_int",
  208. "gvstd_lin", "gvstd_int"
  209. )
  210. check_file_exists(main_base_file, "main phenotype base file")
  211. main_base <- read_tsv(main_base_file, show_col_types = FALSE) %>%
  212. standardise_ids() %>%
  213. select(-any_of(pc_vars))
  214. check_duplicate_ids(main_base, "main phenotype base file")
  215. check_required_variables(main_base, c("FID", "IID", main_outcome_vars), "main phenotype base file")
  216. main_data <- main_base %>%
  217. left_join(genomewide_pcs, by = c("FID", "IID"))
  218. warn_if_unexpected_n(main_data, expected_main_n, "main revised analysis file")
  219. check_duplicate_ids(main_data, "main revised analysis file")
  220. check_required_variables(main_data, c("FID", "IID", main_outcome_vars, pc_vars), "main revised analysis file")
  221. check_complete_pcs(main_data, "main revised analysis file")
  222. write_tsv(main_data, main_output_file)
  223. write_tsv(
  224. main_data %>% select(FID, IID),
  225. main_keep_file,
  226. col_names = FALSE
  227. )
  228. # ─────────────────────────────────────────────────────────────────────────────
  229. # 5. Prepare 434 clinical/lifestyle sensitivity covariates, including MICE
  230. # ─────────────────────────────────────────────────────────────────────────────
  231. if (!file.exists(sensitivity_covariate_base_file)) {
  232. raw_files <- c(personal_details_file, clinical_file, depression_file, sleep_file)
  233. missing_raw_files <- raw_files[!file.exists(raw_files)]
  234. if (length(missing_raw_files) > 0) {
  235. print(missing_raw_files)
  236. stop("Cannot build sensitivity covariates because required raw files are missing.")
  237. }
  238. pers <- read_csv(personal_details_file, show_col_types = FALSE)
  239. clinical <- read_csv(clinical_file, show_col_types = FALSE)
  240. depress <- read_csv(depression_file, show_col_types = FALSE)
  241. sleep <- read_csv(sleep_file, show_col_types = FALSE, col_types = cols(.default = col_guess()))
  242. clinic_ids <- clinical %>%
  243. filter(!(is.na(bp1s) & is.na(bp1d) & is.na(bmi))) %>%
  244. pull(ID)
  245. pers <- pers %>% filter(ID %in% clinic_ids)
  246. clinical <- clinical %>% filter(ID %in% clinic_ids)
  247. depress <- depress %>% filter(ID %in% clinic_ids)
  248. sleep <- sleep %>% filter(ID %in% clinic_ids)
  249. pers_clean <- pers %>%
  250. mutate(
  251. p1smoke = recode(p1smoke, "Yes" = 1, "No" = 0, .default = NA_real_),
  252. p1drink = recode(p1drink, "Yes" = 1, "No" = 0, .default = NA_real_),
  253. p1yrdrnk = as.numeric(p1yrdrnk),
  254. p1cuhlth = recode(
  255. p1cuhlth,
  256. "Very bad" = 1,
  257. "Bad" = 2,
  258. "Fair" = 3,
  259. "Good" = 4,
  260. "Very good" = 5,
  261. .default = NA_real_
  262. )
  263. )
  264. sleep_clean <- sleep %>%
  265. mutate(
  266. p1hrslp = as.numeric(p1hrslp),
  267. p1sleff = as.numeric(p1sleff)
  268. )
  269. core <- pers_clean %>%
  270. transmute(
  271. IID = as.character(ID),
  272. sex_raw = sex,
  273. site_raw = city
  274. )
  275. clinical_core <- clinical %>%
  276. transmute(
  277. IID = as.character(ID),
  278. sbp_raw = rowMeans(across(bp1s:bp3s), na.rm = FALSE),
  279. dbp_raw = rowMeans(across(bp1d:bp3d), na.rm = FALSE),
  280. bmi_raw = as.numeric(bmi),
  281. knownhp = knownhp
  282. ) %>%
  283. left_join(
  284. depress %>% transmute(IID = as.character(ID), m1score_raw = as.numeric(m1score)),
  285. by = "IID"
  286. )
  287. lifestyle <- pers_clean %>%
  288. transmute(
  289. IID = as.character(ID),
  290. p1smoke,
  291. p1drink,
  292. p1yrdrnk,
  293. p1activm = as.numeric(p1activm),
  294. p1activn = as.numeric(p1activn),
  295. p1cuhlth
  296. ) %>%
  297. left_join(
  298. sleep_clean %>%
  299. transmute(
  300. IID = as.character(ID),
  301. sleep_hrs_raw = p1hrslp,
  302. sleep_eff_raw = p1sleff
  303. ),
  304. by = "IID"
  305. )
  306. covs_raw <- core %>%
  307. left_join(clinical_core, by = "IID") %>%
  308. left_join(lifestyle, by = "IID")
  309. covs <- covs_raw %>%
  310. mutate(
  311. FID = IID,
  312. sex = case_when(
  313. sex_raw %in% c("Female", "F", "2") ~ 0,
  314. sex_raw %in% c("Male", "M", "1") ~ 1,
  315. TRUE ~ NA_real_
  316. ),
  317. site = case_when(
  318. str_detect(site_raw, regex("Manchester", ignore_case = TRUE)) ~ 0,
  319. str_detect(site_raw, regex("Newcastle", ignore_case = TRUE)) ~ 1,
  320. TRUE ~ NA_real_
  321. ),
  322. htn_status = case_when(
  323. str_to_lower(knownhp) == "yes" ~ 1,
  324. str_to_lower(knownhp) == "no" ~ 0,
  325. is.na(knownhp) & !is.na(sbp_raw) & !is.na(dbp_raw) &
  326. (sbp_raw >= 140 | dbp_raw >= 90) ~ 1,
  327. is.na(knownhp) & !is.na(sbp_raw) & !is.na(dbp_raw) &
  328. (sbp_raw < 140 & dbp_raw < 90) ~ 0,
  329. TRUE ~ NA_real_
  330. ),
  331. MAP = dbp_raw + ((sbp_raw - dbp_raw) / 3),
  332. smoke_curr = p1smoke,
  333. alcohol_freq_wk = if_else(is.na(p1yrdrnk), NA_real_, p1yrdrnk / 52),
  334. mvpa_min_wk = (p1activm + p1activn) * 60 / 4.348,
  335. srh_raw = p1cuhlth
  336. ) %>%
  337. select(
  338. FID, IID,
  339. sex, site, htn_status,
  340. sbp_raw, dbp_raw, MAP, bmi_raw, m1score_raw,
  341. smoke_curr, alcohol_freq_wk, mvpa_min_wk,
  342. sleep_hrs_raw, sleep_eff_raw, srh_raw
  343. )
  344. miss_pct <- covs %>%
  345. select(-FID, -IID) %>%
  346. summarise(across(everything(), ~ mean(is.na(.)) * 100)) %>%
  347. pivot_longer(everything(), names_to = "variable", values_to = "pct_missing")
  348. print(miss_pct, n = Inf)
  349. if (ncol(covs %>% select(-FID, -IID) %>% select(where(~ any(is.na(.))))) > 0) {
  350. print(mcar_test(covs %>% select(-FID, -IID)))
  351. }
  352. set.seed(12345)
  353. covs_for_mice <- covs %>%
  354. filter(!is.na(sex), !is.na(site)) %>%
  355. mutate(
  356. htn_status = factor(htn_status, levels = c(0, 1)),
  357. smoke_curr = factor(smoke_curr, levels = c(0, 1)),
  358. srh_raw = ordered(srh_raw, levels = 1:5)
  359. )
  360. id_cols <- covs_for_mice %>% select(FID, IID)
  361. data_mice <- covs_for_mice %>% select(-FID, -IID)
  362. ini <- mice(data_mice, maxit = 0, printFlag = FALSE)
  363. meth <- ini$method
  364. pred <- ini$predictorMatrix
  365. meth[] <- ""
  366. numeric_vars <- names(data_mice)[purrr::map_lgl(data_mice, is.numeric)]
  367. meth[numeric_vars] <- "pmm"
  368. meth[c("htn_status", "smoke_curr")] <- "logreg"
  369. meth["srh_raw"] <- "polr"
  370. meth[c("sex", "site")] <- ""
  371. imp <- mice(
  372. data_mice,
  373. m = 20,
  374. maxit = 20,
  375. method = meth,
  376. predictorMatrix = pred,
  377. seed = 12345,
  378. printFlag = TRUE
  379. )
  380. covs_imp1 <- complete(imp, 1) %>%
  381. bind_cols(id_cols) %>%
  382. relocate(FID, IID) %>%
  383. mutate(
  384. htn_status = as.numeric(as.character(htn_status)),
  385. smoke_curr = as.numeric(as.character(smoke_curr)),
  386. srh_raw = as.numeric(as.character(srh_raw))
  387. )
  388. write_tsv(covs_imp1, sensitivity_covariate_base_file)
  389. saveRDS(imp, file.path(revision_dir, "sensitivity_covariate_imputations_mids.rds"))
  390. }
  391. check_file_exists(sensitivity_phenotype_base_file, "sensitivity phenotype base file")
  392. check_file_exists(sensitivity_covariate_base_file, "sensitivity covariate base file")
  393. sensitivity_covariates_for_plink <- c(
  394. "sex",
  395. "htn_status",
  396. "bmi_raw",
  397. "m1score_raw",
  398. "smoke_curr",
  399. "alcohol_freq_wk",
  400. "mvpa_min_wk",
  401. "sleep_hrs_raw",
  402. "sleep_eff_raw",
  403. "srh_raw",
  404. "MAP",
  405. pc_vars
  406. )
  407. sensitivity_phenotypes <- read_tsv(sensitivity_phenotype_base_file, show_col_types = FALSE) %>%
  408. standardise_ids() %>%
  409. select(-any_of(pc_vars))
  410. sensitivity_covariates <- read_tsv(sensitivity_covariate_base_file, show_col_types = FALSE) %>%
  411. standardise_ids() %>%
  412. select(-any_of(pc_vars))
  413. check_duplicate_ids(sensitivity_phenotypes, "sensitivity phenotype base file")
  414. check_duplicate_ids(sensitivity_covariates, "sensitivity covariate base file")
  415. check_required_variables(
  416. sensitivity_phenotypes,
  417. c("FID", "IID", "gsstd_lin", "gsstd_int"),
  418. "sensitivity phenotype base file"
  419. )
  420. check_required_variables(
  421. sensitivity_covariates,
  422. c(
  423. "FID", "IID",
  424. "sex", "htn_status", "bmi_raw", "m1score_raw",
  425. "smoke_curr", "alcohol_freq_wk", "mvpa_min_wk",
  426. "sleep_hrs_raw", "sleep_eff_raw", "srh_raw", "MAP"
  427. ),
  428. "sensitivity covariate base file"
  429. )
  430. sensitivity_data <- sensitivity_phenotypes %>%
  431. left_join(sensitivity_covariates, by = c("FID", "IID")) %>%
  432. left_join(genomewide_pcs, by = c("FID", "IID"))
  433. warn_if_unexpected_n(sensitivity_data, expected_sensitivity_n, "434 sensitivity analysis file")
  434. check_duplicate_ids(sensitivity_data, "434 sensitivity analysis file")
  435. check_required_variables(
  436. sensitivity_data,
  437. c("FID", "IID", "gsstd_lin", "gsstd_int", sensitivity_covariates_for_plink),
  438. "434 sensitivity analysis file"
  439. )
  440. check_complete_pcs(sensitivity_data, "434 sensitivity analysis file")
  441. write_tsv(sensitivity_data, sensitivity_output_file)
  442. write_tsv(
  443. sensitivity_data %>% select(FID, IID),
  444. sensitivity_keep_file,
  445. col_names = FALSE
  446. )
  447. writeLines(
  448. paste(sensitivity_covariates_for_plink, collapse = " "),
  449. sensitivity_covariate_list_file
  450. )
  451. # ─────────────────────────────────────────────────────────────────────────────
  452. # 6. Prepare neuropathology files and covariates
  453. # ─────────────────────────────────────────────────────────────────────────────
  454. check_file_exists(neuropath_continuous_base_file, "neuropathology continuous base file")
  455. check_file_exists(neuropath_binary_base_file, "neuropathology binary base file")
  456. neuropath_continuous_required <- c(
  457. "FID", "IID",
  458. "braak_stage", "thal_phase", "caa_score",
  459. "sex", "age_at_death", "pmi_hrs", "apoe_e4",
  460. "smoke_curr", "alcohol_freq_wk", "mvpa_min_wk",
  461. "sleep_hrs_raw", "sleep_eff_raw", "srh_raw"
  462. )
  463. neuropath_binary_required <- c(
  464. "FID", "IID",
  465. "synuclein_present", "tdp43_present",
  466. "sex", "age_at_death", "pmi_hrs", "apoe_e4"
  467. )
  468. neuropath_continuous_base <- read_tsv(neuropath_continuous_base_file, show_col_types = FALSE) %>%
  469. standardise_ids()
  470. neuropath_binary_base <- read_tsv(neuropath_binary_base_file, show_col_types = FALSE) %>%
  471. standardise_ids()
  472. check_duplicate_ids(neuropath_continuous_base, "neuropathology continuous base file")
  473. check_duplicate_ids(neuropath_binary_base, "neuropathology binary base file")
  474. check_required_variables(neuropath_continuous_base, neuropath_continuous_required, "neuropathology continuous base file")
  475. check_required_variables(neuropath_binary_base, neuropath_binary_required, "neuropathology binary base file")
  476. neuropath_continuous_gwpc <- replace_pcs(neuropath_continuous_base, genomewide_pcs)
  477. neuropath_binary_gwpc <- replace_pcs(neuropath_binary_base, genomewide_pcs)
  478. warn_if_unexpected_n(neuropath_continuous_gwpc, expected_neuropath_n, "neuropathology continuous file")
  479. warn_if_unexpected_n(neuropath_binary_gwpc, expected_neuropath_n, "neuropathology binary file")
  480. check_complete_pcs(neuropath_continuous_gwpc, "neuropathology continuous file")
  481. check_complete_pcs(neuropath_binary_gwpc, "neuropathology binary file")
  482. write_tsv(neuropath_continuous_gwpc, neuropath_continuous_output_file)
  483. write_tsv(neuropath_binary_gwpc, neuropath_binary_output_file)
  484. neuropath_marker_trajectory_data <- neuropath_continuous_gwpc %>%
  485. select(
  486. FID, IID,
  487. braak_stage, thal_phase, caa_score,
  488. sex, age_at_death, pmi_hrs, apoe_e4,
  489. smoke_curr, alcohol_freq_wk, mvpa_min_wk,
  490. sleep_hrs_raw, sleep_eff_raw, srh_raw
  491. ) %>%
  492. left_join(
  493. neuropath_binary_gwpc %>%
  494. select(FID, IID, synuclein_present, tdp43_present),
  495. by = c("FID", "IID")
  496. ) %>%
  497. left_join(
  498. main_data %>%
  499. select(FID, IID, gsstd_lin, gsstd_int),
  500. by = c("FID", "IID")
  501. )
  502. check_required_variables(
  503. neuropath_marker_trajectory_data,
  504. c(
  505. "FID", "IID", "gsstd_lin", "gsstd_int",
  506. "braak_stage", "thal_phase", "caa_score",
  507. "synuclein_present", "tdp43_present",
  508. "sex", "age_at_death", "pmi_hrs", "apoe_e4",
  509. "smoke_curr", "alcohol_freq_wk", "mvpa_min_wk",
  510. "sleep_hrs_raw", "sleep_eff_raw", "srh_raw"
  511. ),
  512. "neuropathology marker-to-trajectory file"
  513. )
  514. write_tsv(neuropath_marker_trajectory_data, neuropath_marker_trajectory_file)
  515. neuropath_event_counts <- neuropath_binary_gwpc %>%
  516. summarise(
  517. synuclein_absent = sum(synuclein_present == 1, na.rm = TRUE),
  518. synuclein_present = sum(synuclein_present == 2, na.rm = TRUE),
  519. tdp43_absent = sum(tdp43_present == 1, na.rm = TRUE),
  520. tdp43_present = sum(tdp43_present == 2, na.rm = TRUE)
  521. )
  522. print(neuropath_event_counts)
  523. # ─────────────────────────────────────────────────────────────────────────────
  524. # 7. Prepare synaptic-density files and covariates
  525. # ─────────────────────────────────────────────────────────────────────────────
  526. check_file_exists(synaptic_base_file, "synaptic-density base file")
  527. synaptic_required <- c(
  528. "FID", "IID",
  529. "frontal", "hippocampus", "parietal", "occipital",
  530. "sex", "age_at_death", "pmi_hrs", "apoe_e4",
  531. "smoke_curr", "alcohol_freq_wk", "mvpa_min_wk",
  532. "sleep_quality", "srh_raw"
  533. )
  534. synaptic_base <- read_tsv(synaptic_base_file, show_col_types = FALSE) %>%
  535. standardise_ids()
  536. check_duplicate_ids(synaptic_base, "synaptic-density base file")
  537. check_required_variables(synaptic_base, synaptic_required, "synaptic-density base file")
  538. synaptic_gwpc <- replace_pcs(synaptic_base, genomewide_pcs)
  539. warn_if_unexpected_n(synaptic_gwpc, expected_synaptic_n, "synaptic-density file")
  540. check_complete_pcs(synaptic_gwpc, "synaptic-density file")
  541. write_tsv(synaptic_gwpc, synaptic_output_file)
  542. synaptic_marker_trajectory_data <- synaptic_gwpc %>%
  543. select(
  544. FID, IID,
  545. frontal, hippocampus, parietal, occipital,
  546. sex, age_at_death, pmi_hrs, apoe_e4,
  547. smoke_curr, alcohol_freq_wk, mvpa_min_wk,
  548. sleep_quality, srh_raw
  549. ) %>%
  550. left_join(
  551. main_data %>%
  552. select(FID, IID, gsstd_lin, gsstd_int),
  553. by = c("FID", "IID")
  554. )
  555. check_required_variables(
  556. synaptic_marker_trajectory_data,
  557. c(
  558. "FID", "IID", "gsstd_lin", "gsstd_int",
  559. "frontal", "hippocampus", "parietal", "occipital",
  560. "sex", "age_at_death", "pmi_hrs", "apoe_e4",
  561. "smoke_curr", "alcohol_freq_wk", "mvpa_min_wk",
  562. "sleep_quality", "srh_raw"
  563. ),
  564. "synaptic marker-to-trajectory file"
  565. )
  566. write_tsv(synaptic_marker_trajectory_data, synaptic_marker_trajectory_file)
  567. synaptic_availability <- synaptic_gwpc %>%
  568. summarise(
  569. n_total = n(),
  570. frontal_n = sum(!is.na(frontal)),
  571. hippocampus_n = sum(!is.na(hippocampus)),
  572. parietal_n = sum(!is.na(parietal)),
  573. occipital_n = sum(!is.na(occipital))
  574. )
  575. print(synaptic_availability)
  576. # ─────────────────────────────────────────────────────────────────────────────
  577. # 8. Create post-mortem keep files / subset genotype files
  578. # ─────────────────────────────────────────────────────────────────────────────
  579. write_tsv(
  580. neuropath_continuous_gwpc %>% select(FID, IID),
  581. neuropath_keep_file,
  582. col_names = FALSE
  583. )
  584. write_tsv(
  585. synaptic_gwpc %>% select(FID, IID),
  586. synaptic_keep_file,
  587. col_names = FALSE
  588. )
  589. run_plink(c(
  590. "--bfile", dopamine_ps_prefix,
  591. "--keep", neuropath_keep_file,
  592. "--make-bed",
  593. "--out", neuropath_subset_genotype_prefix
  594. ))
  595. run_plink(c(
  596. "--bfile", dopamine_ps_prefix,
  597. "--keep", synaptic_keep_file,
  598. "--make-bed",
  599. "--out", synaptic_subset_genotype_prefix
  600. ))
  601. check_bfile_exists(neuropath_subset_genotype_prefix, "neuropathology dopamine subset")
  602. check_bfile_exists(synaptic_subset_genotype_prefix, "synaptic dopamine subset")
  603. # ─────────────────────────────────────────────────────────────────────────────
  604. # Output summary
  605. # ─────────────────────────────────────────────────────────────────────────────
  606. output_summary <- tibble(
  607. output = c(
  608. "dopamine_clean.bed/bim/fam",
  609. "dopamine_ps.bed/bim/fam",
  610. "journal_main_phenotypes_genomewide_PC20.tsv",
  611. "journal_main_keep_ids_genomewide_PC20.txt",
  612. "journal_sensitivity_phenotypes_covariates_genomewide_PC20.tsv",
  613. "journal_sensitivity_keep_ids_genomewide_PC20.txt",
  614. "journal_sensitivity_covariates_for_plink.txt",
  615. "neuropath_basic_final_genomewide_PC20_plink.tsv",
  616. "neuropath_basic_final_recoded_genomewide_PC20_plink.tsv",
  617. "neuropath_basic_final_genomewide_PC20_ids.txt",
  618. "dopamine_ps_neuropathology_subset.bed/bim/fam",
  619. "neuropath_marker_trajectory_models.tsv",
  620. "synaptic_final_genomewide_PC20_plink.tsv",
  621. "synaptic_final_genomewide_PC20_ids.txt",
  622. "dopamine_ps_synaptic_subset.bed/bim/fam",
  623. "synaptic_marker_trajectory_models.tsv"
  624. ),
  625. path = c(
  626. dopamine_clean_prefix,
  627. dopamine_ps_prefix,
  628. main_output_file,
  629. main_keep_file,
  630. sensitivity_output_file,
  631. sensitivity_keep_file,
  632. sensitivity_covariate_list_file,
  633. neuropath_continuous_output_file,
  634. neuropath_binary_output_file,
  635. neuropath_keep_file,
  636. neuropath_subset_genotype_prefix,
  637. neuropath_marker_trajectory_file,
  638. synaptic_output_file,
  639. synaptic_keep_file,
  640. synaptic_subset_genotype_prefix,
  641. synaptic_marker_trajectory_file
  642. )
  643. )
  644. cat("\nFinal setup outputs:\n")
  645. print(output_summary, width = Inf)
  646. cat("\n01_prepare_analysis_files.R complete.\n")

01_prepare_analysis_files.R, no license · at the source

Overview

Authors: Monica Anona Rose1, Andrew C Robinson2, Antony Payton1
  1. Division of Informatics, Imaging and Data Sciences, The University of Manchester, Manchester, United Kingdom
  2. Division of Neuroscience and Experimental Psychology, The University of Manchester, Salford, United Kingdom
Institutions: University of Manchester (United Kingdom)
Journal: PloS one, volume 21, issue 7, article e0353790
Dates: received 8 March 2026; accepted 29 June 2026; published online 17 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pone.0353790 · PMID 42467707 · PMCID PMC13379125 · OpenAlex W7169602409
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: histology / microscopy (modality), human (organism)
Methods: Statistics, Smoothing, state filtering, decompositions, Connectivity, Machine learning
MeSH: Aging*, Cognitive Aging*, Dopamine*, Aged, Aged, 80 and over, Cognition, Female, Humans, Linkage Disequilibrium, Longitudinal Studies, Male, Polymorphism, Single Nucleotide, Processing Speed (* major topic)
Topic: Neurotransmitter Receptor Influence on Behavior (Cellular and Molecular Neuroscience, Neuroscience), according to OpenAlex
Citations: not cited yet (Europe PMC); 53 references in the paper

Abstract

Amid a global shift toward older populations, understanding the mechanisms of cognitive aging is a public health priority. Processing speed shows age-related decline and predicts dementia risk. Neuroimaging links dopaminergic system integrity to cognitive performance in aging, but the contribution of common genetic variation remains unclear. This study tested whether common dopaminergic variants influence 12-year processing speed decline, performance at age 70, and other cognitive domains, with exploratory analyses of post-mortem pathology. A total of 89 linkage disequilibrium-independent variants (derived from 957 SNPs) across nine dopamine pathway genes (TH, DDC, DRD1-3, SLC6A3, COMT, DBH, PPP1R1B) were analysed in 1,539 participants from The University of Manchester Longitudinal Study of Cognition in Normal Healthy Old Age. Across single-variant, gene-based, and unweighted pathway allele score analyses, no associations survived multiple testing correction (Bonferroni p < 5.62 × 10⁻4). For processing speed decline, the strongest nominal signals were DRD2 rs10789943 (p = 0.0066) and DBH rs2005663 (p = 0.0074), followed by DRD2 rs12805897 (p = 0.013). For performance at age 70, the leading signal was DRD2 rs11214607 (p = 0.0025). Gene-based tests were non-significant (strongest: DRD2 for slopes p = 0.063; DRD2 for intercepts p = 0.019), and the dopamine pathway allele score was unassociated with decline (β = 0.001, p = 0.969) and performance (β = 0.009, p = 0.721). Null findings extended to fluid reasoning, episodic memory, and vocabulary, and to post-mortem analyses (neuropathology n = 116; synaptic density n = 50), including SNP-marker and marker-trajectory tests. With 80% power to detect single variants explaining at least 1.19% of variance and allele score effects explaining at least 0.51% of variance, no moderate-to-large effects of common dopaminergic variation on cognitive aging trajectories were detected. Smaller effects, or mechanisms not captured by common variant analyses such as rare variants, epigenetic regulation, or gene-environment interactions, may contribute to individual differences in cognitive aging.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 20 matches between paragraphs and lines of code.

supp:PMC13379125/pone.0353790.s022.zip

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Languages: R (7), Shell (6)
Size: 14 files, 13 scripts
Software Heritage: not checked
Found in: the supplementary material
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (7 files), ggplot2 (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
14 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:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 13 scripts, each with its path and the digest of its content;
  • 20 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data Availability

Data from The University of Manchester Longitudinal Study of Cognition in Normal Healthy Old Age are not publicly available due to ethical and data protection restrictions, as they contain potentially identifiable human participant information. Qualified researchers may request access to the data by contacting Dr Altug Didikoglu at The University of Manchester (). Data access requests will be reviewed by the study custodians and, where required, the relevant ethics or institutional governance committees. Data will be stored and maintained by The University of Manchester in accordance with institutional data governance and research ethics requirements to support long-term availability. Full summary association results and the GWAS analysis code used for the revised analyses are provided as Supporting information files accompanying this article.

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, issue, pages, dates, 3 authors, 13 MeSH terms, 47 references.

Cite

This paper

Rose, M. A., Robinson, A. C., & Payton, A. (2026). Do common dopaminergic variants modulate processing speed in cognitive aging? A longitudinal candidate gene study. PloS one, 21(7), e0353790. https://doi.org/10.1371/journal.pone.0353790

BibTeX

@article{rose2026do,
author = {Rose, Monica Anona and Robinson, Andrew C and Payton, Antony},
title = {{Do common dopaminergic variants modulate processing speed in cognitive aging? A longitudinal candidate gene study}},
journal = {PloS one},
year = {2026},
month = jul,
volume = {21},
number = {7},
pages = {e0353790},
publisher = {PLOS},
issn = {1932-6203},
doi = {10.1371/journal.pone.0353790},
url = {https://doi.org/10.1371/journal.pone.0353790},
pmid = {42467707},
pmcid = {PMC13379125}
}

RIS

TY - JOUR
AU - Rose, Monica Anona
AU - Robinson, Andrew C
AU - Payton, Antony
TI - Do common dopaminergic variants modulate processing speed in cognitive aging? A longitudinal candidate gene study
T2 - PloS one
J2 - PLoS One
PY - 2026
DA - 2026/07/17
VL - 21
IS - 7
SP - e0353790
SN - 1932-6203
PB - PLOS
DO - 10.1371/journal.pone.0353790
UR - https://doi.org/10.1371/journal.pone.0353790
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pone.0353790",
"type": "article-journal",
"title": "Do common dopaminergic variants modulate processing speed in cognitive aging? A longitudinal candidate gene study",
"container-title": "PloS one",
"author": [
{
"family": "Rose",
"given": "Monica Anona"
},
{
"family": "Robinson",
"given": "Andrew C"
},
{
"family": "Payton",
"given": "Antony"
}
],
"container-title-short": "PLoS One",
"volume": "21",
"issue": "7",
"page": "e0353790",
"DOI": "10.1371/journal.pone.0353790",
"PMID": "42467707",
"PMCID": "PMC13379125",
"ISSN": "1932-6203",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pone.0353790",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
17
]
]
}
}

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.1257 [code]
Motor- and cognitive-dominant functional network adaptations supporting dual-task performance in older adults.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: ggplot2, tidyverse, 2 references
[2] doi:10.1162/imag.a.1302 [code]
Five-year associations among dopamine D2-like receptor loss, cognitive decline, education, and self-reported leisure activities in healthy older adults.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: tidyverse, 2 references
[3] doi:10.2147/jpr.s619982 [code]
Spatially Contextualized Integrative Genomics Highlights Neuronal and Glial Regulatory Programs in Low Back Pain.
Journal: Journal of pain research
In common: ggplot2, tidyverse, 2 references
[4] doi:10.1038/s41562-026-02486-5 [code]
Genome-wide association studies of infant and toddler temperament in European and multi-ancestry populations.
Journal: Nature human behaviour
In common: ggplot2, tidyverse, 2 references
[5] doi:10.1038/s41467-026-71682-8 [code]
GWAS meta-analysis of cerebrospinal fluid Alzheimer's biomarkers reveals loci regulating lipids, brain volume and autophagy.
Journal: Nature communications
In common: ggplot2, tidyverse, 2 references
[6] doi:10.1002/alz.71271 [code]
Intracellular protein GBF1 displays significant associations with amyloid pathology in Alzheimer's disease.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: ggplot2, tidyverse, histology / microscopy, 1 reference
[7] doi:10.1186/s12916-026-04957-y [code]
Thyroid-stimulating hormone receptor mediates peripheral-central neuroimmune crosstalk in autoimmune thyroid diseases.
Journal: BMC medicine
In common: ggplot2, tidyverse, histology / microscopy, 1 reference
[8] doi:10.1038/s41514-026-00391-9 [code]
Region-specific transcriptional signatures of brain aging in the absence of neuropathology at the single-cell level.
Journal: npj aging
In common: ggplot2, tidyverse, histology / microscopy, 1 reference
[9] doi:10.1038/s41386-026-02433-y [code]
Computational phenotyping of effort-based decision-making in type-2 diabetes on and off semaglutide.
Journal: Neuropsychopharmacology : official publication of the American College of Neuropsychopharmacology
In common: ggplot2, tidyverse, 1 reference
[10] doi:10.1093/braincomms/fcag121 [code]
Anterior insular co-activation patterns associated with stress markers in chronic primary pain.
Journal: Brain communications
In common: ggplot2, tidyverse, 1 reference

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

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.