Mapping the causal chain from genetic risk variants to lipid dysmetabolism in Parkinson's disease.
The 11 matches
- [1] § Materials and methods › Quantitative trait locus analysis ↔ co-localization_and_MR_clean.R, lines 374–430 · score 0.96 · peqtl heidi, peqtl smr, co localization, beqtl summary, smr multi, gwas summary
- [2] § Materials and methods › Quantitative trait locus analysis ↔ co-localization_and_MR_clean.R, lines 84–134 · score 0.95 · posterior probabilities, pp h4, common causal variant, Co localization, B3GALNT1, eQTLs
- [3] § Results › PD risk variants colocalize with SPTSSB expression in brain and fatty acid perturbations in blood ↔ co-localization_and_MR_clean.R, lines 84–134 · score 0.92 · posterior probability, pp h4, common causal variant, PPM1L, B3GALNT1, mQTL
- [4] § Results › PD risk variants colocalize with SPTSSB expression in brain and fatty acid perturbations in blood ↔ co-localization_and_MR_clean.R, lines 44–82 · score 0.82 · BrainMeta, inhibitory neurons, RNA seq, excitatory neurons, eQTL, tibial
- [5] § Materials and methods › Metabolomics ↔ mass-spec_differential_expression_clean.R, lines 1–41 · score 0.69 · mass spectrometry, plasma metabolites, HD4, batch, imputed, transformed
- [6] § Results › PD risk variants colocalize with SPTSSB expression in brain and fatty acid perturbations in blood ↔ co-localization_and_MR_clean.R, lines 182–220 · score 0.65 · mQTLs, plasma heptanoate, eQTL, colocalization, SMR, genome
- [7] § Materials and methods › Metabolomics ↔ metabolomics_preprocessing_clean.R, lines 1–41 · score 0.62 · Metabolon HD4, metabolite abundance, imputed, transformed, scores, BCM
- [8] § Materials and methods › Human subjects ↔ co-localization_and_MR_clean.R, lines 44–82 · score 0.60 · inhibitory neurons, RNA seq, nucleus, cortex, excitatory, ROSMAP
- [9] § Materials and methods › Quantitative trait locus analysis ↔ additive_recessive_models_clean.R, lines 41–111 · score 0.55 · linear models, Additive, recessive, cohort, sex, sphingolipids
- [10] § Materials and methods › Analysis of differential metabolites ↔ mass-spec_differential_expression_clean.R, lines 180–222 · score 0.54 · regression models, Volcano, overlap, LRT, Linear, AD
- [11] § Materials and methods › Proteomics ↔ mass-spec_differential_expression_clean.R, lines 1–41 · score 0.52 · mass spectrometry, proteomic, imputed, transformed, scores, ROSMAP
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 · 469 lines · 28 KB · no license · 6 matches
- # Pipeline by Ruth De Paula
- ## Co-localization and SMR analysis ##
- # Coloc pipeline was adapted from Senkevich et al., 2023: https://pubmed.ncbi.nlm.nih.gov/36370000/
- options(digits=22) ## necessary to ensure R is going to read big key numbers
- ### 1. Co-localization with GWAS-eQTLs and GWAS-mQTLs ----
- setwd("/mnt/belinda_local/ruth/data/omics_integration/colocalization_analysis")
- # GitHub file: https://github.com/gan-orlab/GALC/blob/main/coloc (Senkevich et al., 2023)
- library(coloc) # Original coloc package, which is used to run coloc.abf() and sensitivity()
- library(colochelpR) # Helper package with wrapper functions
- library(data.table) # Loaded for fread(), which permits fast loading of files with many rows
- library(ggpubr) # For formatting of plots
- library(here) # For file path construction
- library(purrr)
- library(dplyr)
- library(dbplyr)
- library(tibble)
- library(locuscomparer)
- library(stringr)
- library(ggplot2)
- library(ggrepel)
- #### Preparing datasets for coloc ----
- # Will use hg19 files, to be consistent w/ SMR MR analysis later (SMR already provides formatted QTLs in hg19).
- # Coloc GWAS-QTL file mandatory columns should be (first half comes from GWAS file, and second half comes from QTL file):
- # "b_MA.gwas","varbeta.gwas","p_value.gwas","b_MA.eqtl","varbeta.eqtl","MAF.eqtl","p_value.eqtl","snp (rsid)"
- # If you don't have "b_MA", "MAF", and "varbeta" columns, calculate them this way:
- # SPTSSB_eqtl$b_MA <- SPTSSB_eqtl$Effect
- # SPTSSB_eqtl[SPTSSB_eqtl$Freq1 > 0.50, ]$b_MA <- SPTSSB_eqtl[SPTSSB_eqtl$Freq1 > 0.50, ]$b_MA *-1
- #
- # SPTSSB_eqtl$MAF <- SPTSSB_eqtl$Freq1
- # SPTSSB_eqtl[SPTSSB_eqtl$Freq1 > 0.50, ]$MAF <- 1 - SPTSSB_eqtl[SPTSSB_eqtl$Freq1 > 0.50, ]$MAF
- #
- # SPTSSB_eqtl$varbeta = SPTSSB_eqtl$StdErr*SPTSSB_eqtl$StdErr
- # BESD eQTL files were downloaded from here: https://yanglab.westlake.edu.cn/software/smr/#DataResource
- # eQTLs were extracted from SMR BESD files, using the following command line:
- # smr-1.3.1-linux-x86_64/smr --beqtl-summary BrainMeta_cis_eqtl_summary/BrainMeta_cis_eQTL_chr3 --query 1 --snp-chr 3 --from-snp-kb 160577 --to-snp-kb 161678 --out SPTSSB_locus_cis_eQTL_BrainMeta_query_ALL_GENES
- # nerve <- read.table("nerve_tibial_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # nerve tibial GTEx SPTSSB eQTL
- # hypothalamus <- read.table("hypothalamus_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # hypothalamus GTEx SPTSSB eQTL
- # cerebellum <- read.table("cerebellum_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # cerebellum GTEx SPTSSB eQTL
- # blood <- read.table("whole_blood_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # whole blood GTEx SPTSSB eQTL
- # accumbens <- read.table("nucleus_accumbens_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # nucleus accumbens GTEx SPTSSB eQTL
- # cortex <- read.table("brain_cortex_hg19_df_for_SPTSSB_coloc_ALL_GENES.txt", header=T, sep="\t") # brain cortex BrainMeta SPTSSB eQTL
- blood <- read.table("whole_blood_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # whole blood GTEx SPTSSB eQTL
- cortex <- read.table("brain_cortex_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain cortex BrainMeta SPTSSB eQTL
- cortex <- cortex[cortex$Probe %in% "ENSG00000196542.8",]
- # For single-cell, no genes were detected for SPTSSB locus in endothelial_cells
- excitatory <- read.table("excitatory_neurons_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL
- # microglia <- read.table("microglia_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL; unfortunately, no SPTSSB eQTLs detected
- oligo <- read.table("oligodendrocytes_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL
- astro <- read.table("astrocytes_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL
- inhibitory <- read.table("inhibitory_neurons_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL
- # OPC <- read.table("OPC_hg19_df_for_SPTSSB_coloc_ALL_GENES_case-control.txt", header=T, sep="\t") # brain DLPFC ROSMAP snRNA-seq eQTL; unfortunately, no SPTSSB eQTLs detected
- # mQTL summary stats were downloaded from here: https://omicscience.org/apps/mgwas/mgwas.table.php
- # heptanoate <- read.table("heptanoate_hg19_df_for_SPTSSB_coloc.txt", header=T, sep="\t") # plasma Surendran mQTL
- # oleate <- read.table("oleate-vaccenate_hg19_df_for_SPTSSB_coloc.txt", header=T, sep="\t") # plasma Surendran mQTL
- # myristoleate <- read.table("myristoleate_hg19_df_for_SPTSSB_coloc.txt", header=T, sep="\t") # plasma Surendran mQTL
- # sphinganine <- read.table("sphinganine_hg19_df_for_SPTSSB_coloc.txt", header=T, sep="\t") # plasma Surendran mQTL
- heptanoate <- read.table("heptanoate_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Surendran mQTL - allele 2 is effect allele
- oleate <- read.table("oleate-vaccenate_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Surendran mQTL - allele 2 is effect allele
- myristoleate <- read.table("myristoleate_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Surendran mQTL - allele 2 is effect allele
- sphinganine <- read.table("sphinganine_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Surendran mQTL - allele 2 is effect allele
- CERd20_1_24_0 <- read.table("CERd20-1_24-0_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Cadby mQTL
- CERd20_1_24_1 <- read.table("CERd20-1_24-1_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Cadby mQTL
- dhCERd18_0_18_0 <- read.table("dhCERd18-0_18-0_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Cadby mQTL
- SM43_1 <- read.table("SM43-1_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Cadby mQTL
- DE22_6 <- read.table("DE22-6_hg19_df_for_SPTSSB_coloc_case-control.txt", header=T, sep="\t") # plasma Cadby mQTL
- # Select QTL list of interest
- df <- CERd20_1_24_1
- unique(df$Gene) # see which genes of interest have eQTLs
- QTL <- "CERd20_1_24_1_mQTL_SPTSSB_PD-GWAS"
- # Select gene eQTLs of interest
- df_sub <- df[df$Gene == "SPTSSB", ]
- df_sub <- df[df$Gene == "PPM1L", ]
- df_sub <- df[df$Gene == "B3GALNT1", ]
- df_sub <- df[df$Gene == "NMD3", ]
- # df_sub <- df[df$Gene == "OTOL1", ]
- # Remove zeroed/duplicated SNPs
- df_sub <- df_sub[!(df_sub$snp %in% df_sub$snp[duplicated(df_sub$snp)]), ]
- #### Run coloc ----
- ## GWAS vs. QTL
- res <- coloc.abf(dataset1=list(beta=df_sub$b_MA.gwas, varbeta=df_sub$varbeta.gwas, type="cc", snp=df_sub$snp, pvalue=df_sub$p_value),
- dataset2=list(beta=df_sub$b_MA.eqtl, varbeta=df_sub$varbeta.eqtl, N=nrow(df_sub), MAF=as.numeric(df_sub$MAF.eqtl), type="quant", snp=df_sub$snp, pvalue=df_sub$P.value))
- ## eQTL vs. mQTL
- # Re-format input
- eQTL <- excitatory[,c(3,15:ncol(excitatory))] # snRNA-seq
- # eQTL <- cortex[,c(2:3,15:ncol(cortex))] # bulk RNA-seq
- mQTL <- heptanoate[,c(3,15:ncol(heptanoate))]
- df <- merge(eQTL, mQTL, by="SNP_ID")
- df_sub <- df[df$Gene.x == "SPTSSB", ]
- df_sub <- df_sub[!(df_sub$snp %in% df_sub$snp[duplicated(df_sub$snp)]), ]
- # Run
- res <- coloc.abf(dataset1=list(beta=df_sub$b_MA.eqtl.x, varbeta=df_sub$varbeta.eqtl.x, N=nrow(df_sub), MAF=as.numeric(df_sub$MAF.eqtl.x), type="quant", snp=df_sub$snp, pvalue=df_sub$P.value.x),
- dataset2=list(beta=df_sub$b_MA.eqtl.y, varbeta=df_sub$varbeta.eqtl.y, N=nrow(df_sub), MAF=as.numeric(df_sub$MAF.eqtl.y), type="quant", snp=df_sub$snp, pvalue=df_sub$P.value.y))
- results <- as.data.frame(t(res$summary))
- results
- all_res_output_name <- paste0("Cadby_", QTL, "_case-control.tsv")
- # all_res_output_name <- paste0("GTEx-Surendran_", QTL, ".tsv")
- write.table(results, all_res_output_name, sep = "\t")#, quote = F, row.names = F)
- #### Stats per SNP instead of per region ----
- # In colocalization analysis, the most important or significant SNPs are typically those
- # that have the highest posterior probabilities of being shared causal variants across traits.
- # Specifically, these SNPs are those with high posterior probabilities of colocalization
- # (i.e., shared causal variants), particularly from models like PP.H4 (common causal variant).
- o <- order(res$results$SNP.PP.H4,decreasing=TRUE)
- cs <- cumsum(res$results$SNP.PP.H4[o])
- w <- which(cs > 0.95)[1]
- top_snps_index <- res$results[o,][1:w,]$snp
- top_snps_stats <- res$results[o,][1:w,][,c("snp","SNP.PP.H4")] # High PP.H4.abf values (e.g., >0.5 or higher) suggest strong evidence for shared causality.
- # top_snps_index <- res$results[o,][1:20,]$snp
- # top_snps_stats <- res$results[o,][1:20,][,c("snp","SNP.PP.H4")] # High PP.H4.abf values (e.g., >0.5 or higher) suggest strong evidence for shared causality.
- top_snps <- merge(top_snps_stats, df_sub, by="snp")
- # save a table with SNPs
- top_snps_output_name <- paste0("Cadby_", QTL, "_case-control_top_snps.tsv")
- # top_snps_output_name <- paste0("GTEx-Surendran_", QTL, "_top_snps.tsv")
- write.table(top_snps, top_snps_output_name, sep = "\t", quote = F)#, row.names = F)
- #### Plot LocusCompare plots ----
- # select top SNP
- top_var <- top_snps[which.max(top_snps[[2]]), ]$snp
- top_var
- # Optional - instead of using top var as LD reference, use variant of choice
- top_var <- "rs1450522" # SPTSSB
- # prepare datasets for locuscompare
- ## GWAS vs. QTL
- df_sub_eqtl <- df_sub %>%
- dplyr::select(snp, P.value) %>%
- dplyr::mutate(rsid = as.character(snp)) %>%
- dplyr::rename(pval = P.value)
- df_sub_gwas <- df_sub %>%
- dplyr::select(snp, p_value) %>%
- dplyr::mutate(rsid = as.character(snp)) %>%
- dplyr::rename(pval = p_value)
- # plot significant colocalization
- plot <- locuscompare(in_fn1=df_sub_gwas,
- in_fn2=df_sub_eqtl,
- title1="PD GWAS",
- title2="Cer(d20:1/24:1) mQTL",
- # title2="QTL",
- snp=top_var,
- genome="hg19",
- population = "EUR")
- plot
- ## eQTL vs. mQTL
- df_sub_mqtl <- df_sub %>%
- dplyr::select(snp, P.value.y) %>%
- dplyr::mutate(rsid = as.character(snp)) %>%
- dplyr::rename(pval = P.value.y)
- df_sub_eqtl <- df_sub %>%
- dplyr::select(snp, P.value.x) %>%
- dplyr::mutate(rsid = as.character(snp)) %>%
- dplyr::rename(pval = P.value.x)
- # plot significant colocalization
- plot <- locuscompare(in_fn1=df_sub_eqtl,
- in_fn2=df_sub_mqtl,
- title1="Brain cortex eQTL",
- title2="Plasma heptanoate mQTL",
- # title2="QTL",
- snp=top_var,
- genome="hg19",
- population = "EUR")
- plot
- # save plot
- ggsave(filename = paste0("SPTSSB_", QTL, "_locuscompare_hg19_rs1450522_ref_case-control.pdf"),
- plot = plot + theme(legend.position = "none") +
- geom_text_repel(max.overlaps = 1000000), # Increase the limit
- device = "pdf",
- width = 12,
- height = 6)
- #________________________________________________________________________________
- ### 2. SMR/HEIDI Mendelian Randomization ----
- setwd("/mnt/belinda_local/ruth/data/omics_integration/MR_analysis")
- # Outcome: Clinical PD status;
- # Instruments: GWAS significant SNPs;
- # Exposure: mQTLs or eQTLs
- # MR pipeline (from SMR):
- # Github of source code: https://github.com/NIH-CARD/NDD_SMR/blob/main/scripts/SMR_v8.ipynb
- # Program download: https://yanglab.westlake.edu.cn/software/smr/#Download
- # Instructions: https://yanglab.westlake.edu.cn/software/smr/#SMR&HEIDIanalysis
- # Data visualization tool: https://yanglab.westlake.edu.cn/smr-portal/viewer (very similar to LocusZoom)
- #### Formatting GWAS summary stats ----
- # Basically, GWAS file mandatory columns should be:
- # "rsid","effect_allele","other_allele","effect_allele_frequency","beta","standard_error","p_value","N_datasets"
- # gwas_all <- read.table("../colocalization_analysis/SPTSSB_gwas_locus_for_coloc-MR_hg19.txt", header=T)
- # gwas_sig <- read.table("../colocalization_analysis/SPTSSB_gwas_locus_for_coloc-MR_0_00000005_hg19.txt", header=T)
- gwas_all <- read.table("../colocalization_analysis/SPTSSB_gwas_locus_for_coloc-MR_hg19_case-control.txt", header=T)
- gwas_sig <- read.table("../colocalization_analysis/SPTSSB_gwas_locus_for_coloc-MR_0_00000005_hg19_case-control.txt", header=T)
- mygwas <- gwas_sig
- # Optional - Replacing empty rsid fields (those are not SNVs but are still short mutations)
- mygwas[mygwas$SNP_ID %in% "chr3:160958484:A:AAT",]$rsid <- "rs34371992" # effect allele:other allele
- mygwas[mygwas$SNP_ID %in% "chr3:161093790:C:CA",]$rsid <- "rs5853931" # effect allele:other allele
- mygwas[mygwas$SNP_ID %in% "chr3:161096040:T:TTTG",]$rsid <- "rs149705199" # effect allele:other allele
- mygwas[mygwas$SNP_ID %in% "chr3:160600563:G:A",]$rsid <- "rs935497" # effect allele:other allele
- mygwas <- mygwas[,c("rsid","effect_allele","other_allele","effect_allele_frequency","beta","standard_error","p_value","N_datasets")]
- colnames(mygwas) <- c("SNP","A1","A2","freq","b","se","p","N")
- #### Formatting QTL summary stats (only necessary for Surendran mQTLs and ROSMAP single-cell eQTLs) ----
- smr_path <- "/mnt/belinda_70t/ruth_data/QTLs/for_SMR_coloc_graphs/smr-1.3.1-linux-x86_64/smr"
- SPTSSB_eqtl_2 <- read.table("/mnt/belinda_local/ruth/data/omics_integration/colocalization_analysis/Surendran_mGWAS_SPTSSB_data/SPTSSB_PD_GWAS_var_+-_500kb_heptanoate_only.txt", sep = '\t', header = T, stringsAsFactors = TRUE)
- # SPTSSB_eqtl_2 <- read.table("/mnt/belinda_local/ruth/data/omics_integration/colocalization_analysis/Surendran_mGWAS_SPTSSB_data/extract_SPTSSB_160577630_161577630_M52285.txt", sep = '\t', header = T, stringsAsFactors = TRUE) # oleate-vaccenate
- # SPTSSB_eqtl_2 <- read.table("/mnt/belinda_70t/ruth_data/QTLs/celltype-eqtl-sumstats.Exc.SPTSSB_locus_genes.tsv", header = T) # ROSMAP snRNA-seq for excitatory neurons
- # For single-cell eQTLs
- SPTSSB_eqtl_2 <- SPTSSB_eqtl_2[,c(3:12)]
- colnames(SPTSSB_eqtl_2) <- c("gene","rsid","CHR","pos.hg38","Allele2","Allele1","Freq1","Effect","StdErr","P.value")
- SPTSSB_eqtl_1 <- read.table("/mnt/belinda_local/ruth/data/omics_integration/colocalization_analysis/Surendran_mGWAS_SPTSSB_data/sptssb_heptanoate_500kb+-coordinates_hg38_conversion_w_rsids.txt", sep = '\t', header = T, stringsAsFactors = TRUE)[,c(2,4)]
- colnames(SPTSSB_eqtl_1)[1] <- "Pos"
- SPTSSB_eqtl_2 <- merge(SPTSSB_eqtl_1, SPTSSB_eqtl_2, by="pos.hg38")
- colnames(SPTSSB_eqtl_2)[2] <- "Pos"
- # For mQTLs other than heptanoate - rescue rsids
- rsids <- read.table("/mnt/belinda_local/ruth/data/omics_integration/colocalization_analysis/Surendran_mGWAS_SPTSSB_data/SPTSSB_PD_GWAS_var_+-_500kb_heptanoate_only.txt", sep = '\t', header = T, stringsAsFactors = TRUE)[,c("Pos","rsid")]
- SPTSSB_eqtl_2 <- merge(rsids, SPTSSB_eqtl_2, by="Pos")
- SPTSSB_eqtl_2$Allele1 <- toupper(SPTSSB_eqtl_2$Allele1)
- SPTSSB_eqtl_2$Allele2 <- toupper(SPTSSB_eqtl_2$Allele2)
- SPTSSB_eqtl <- SPTSSB_eqtl_2
- # Only for mQTLs
- SPTSSB_eqtl$gene <- "ENSG00000196542" # SPTSSB
- SPTSSB_eqtl$FDR <- p.adjust(SPTSSB_eqtl$P.value, method = "BH")
- SPTSSB_eqtl$t_stat <- SPTSSB_eqtl$Effect / SPTSSB_eqtl$StdErr
- SPTSSB_eqtl <- SPTSSB_eqtl[,c("rsid","gene","Effect","t_stat","P.value","FDR")]
- colnames(SPTSSB_eqtl) <- c("SNP","gene","beta","t.stat","p.value","FDR")
- # Remove columns with either empty or duplicated rsids
- SPTSSB_eqtl <- SPTSSB_eqtl[!(SPTSSB_eqtl$SNP %in% ""),]
- SPTSSB_eqtl <- SPTSSB_eqtl[!(SPTSSB_eqtl$SNP %in% SPTSSB_eqtl$SNP[duplicated(SPTSSB_eqtl$SNP)]), ] # if there are no duplicated values, result will be empty
- # For Surendran mQTLs only - Need to flip beta signal (because they flipped effect and reference alleles)
- SPTSSB_eqtl$beta <- -(SPTSSB_eqtl$beta)
- write.table(SPTSSB_eqtl, "heptanoate_SPTSSB_for_SMR_flipped.txt", row.names=F, col.names=T, quote=F, sep="\t")
- # For single-cell eQTLs only - Need to save eQTLs per gene
- temp <- SPTSSB_eqtl[SPTSSB_eqtl$gene %in% "ENSG00000196542",]
- write.table(temp, "excitatory_neurons_SPTSSB_for_SMR.txt", row.names=F, col.names=T, quote=F, sep="\t")
- ##### Creating .besd files (only necessary for Surendran mQTLs/single-cell eQTLs) ----
- # Instructions: https://yanglab.westlake.edu.cn/software/smr/#DataManagement
- ## Make a BESD file from Matrix QTL output
- # First, ----for mQTLs----, we need to properly name the genes where the SNVs fall onto
- # gene_rescue <- unique(read.table("VEP_SPTSSB_locus_SNV-gene_rescue_Surendran.txt")[,c(1,6:7)])
- # gene_rescue <- gene_rescue[grep("^ENSG", gene_rescue$V7), ] # only over half of SNPs get rescued...
- PPM1L_coord <- c(160473995, 160788817) # start, end
- B3GALNT1_coord <- c(160801670, 160823160)
- NMD3_coord <- c(160939098, 160969795)
- SPTSSB_coord <- c(161062579, 161089871)
- OTOL1_coord <- c(161214595, 161221730)
- # Gene names and coordinates as a list
- genes <- list(
- PPM1L = list(coord = PPM1L_coord, gene_id = "ENSG00000163590"),
- B3GALNT1 = list(coord = B3GALNT1_coord, gene_id = "ENSG00000169255"),
- NMD3 = list(coord = NMD3_coord, gene_id = "ENSG00000169251"),
- SPTSSB = list(coord = SPTSSB_coord, gene_id = "ENSG00000196542"),
- OTOL1 = list(coord = OTOL1_coord, gene_id = "ENSG00000182447")
- )
- # Load mQTL data
- mQTL <- read.table("heptanoate_SPTSSB_for_SMR_flipped.txt", header = TRUE)
- mQTL$gene <- NA # Initialize gene column
- # Assign genes to SNPs
- for (i in 1:nrow(mQTL)) {
- rsid <- mQTL[i, "SNP"]
- pos <- SPTSSB_eqtl_2[SPTSSB_eqtl_2$rsid %in% rsid,]$Pos
- # Calculate distances to all genes
- distances <- sapply(genes, function(gene) {
- if (pos >= gene$coord[1] && pos <= gene$coord[2]) {
- return(0) # SNP falls within the gene
- } else if (pos < gene$coord[1]) {
- return(gene$coord[1] - pos) # Distance to gene start
- } else {
- return(pos - gene$coord[2]) # Distance to gene end
- }
- })
- # Assign the nearest gene
- nearest_gene <- names(distances)[which.min(distances)]
- mQTL[i, "gene"] <- genes[[nearest_gene]]$gene_id
- }
- write.table(mQTL, "heptanoate_SPTSSB_for_SMR_flipped.txt", row.names = F, col.names = T, sep="\t", quote = F)
- # Create BESD itself
- cmd <- paste0(smr_path, " --eqtl-summary heptanoate_SPTSSB_for_SMR_flipped.txt --matrix-eqtl-format --make-besd --out heptanoate_SPTSSB_for_SMR_flipped ")
- # cmd <- paste0(smr_path, " --eqtl-summary excitatory_neurons_SPTSSB_for_SMR.txt --matrix-eqtl-format --make-besd --out excitatory_neurons_SPTSSB_for_SMR ")
- cmd
- system(cmd)
- # After make BESD file command, I realized the.esi and .epi files were not properly formatted.
- # Need to re-format it, so it looks like this:
- # # .esi:
- # chromosome SNP genetic_distance(can be 0) position effect_allele other_allele freq
- # 1 rs1001 0 744055 A G 0.23
- # 1 rs1002 0 765522 C G 0.06
- # 1 rs1003 0 995669 T C 0.11
- # ......
- # # .epi (only used for graphs):
- # chromosome probeID(exon or transc) genetic_distance(can be 0) physical_position geneID gene_strand
- # 1 probe1001 0 924243 Gene01 +
- # 1 probe1002 0 939564 Gene02 -
- # 1 probe1003 0 1130681 Gene03 -
- # ......
- # Gene range list: https://www.cog-genomics.org/static/bin/plink/glist-hg38
- esi_file <- read.table("heptanoate_SPTSSB_for_SMR_flipped.esi")
- positions <- SPTSSB_eqtl_2[,c("rsid","Pos","Allele1","Allele2","Freq1")]
- # positions <- positions[!(positions$rsid %in% ""),]
- positions <- positions[!(positions$rsid %in% positions$rsid[duplicated(positions$rsid)]), ]
- positions <- unique(positions)
- esi_file$V1 <- 3
- esi_file$V4 <- positions$Pos
- # When alleles are NOT flipped
- esi_file$V5 <- positions$Allele1
- esi_file$V6 <- positions$Allele2
- esi_file$V7 <- positions$Freq1
- # When alleles are flipped
- esi_file$V5 <- positions$Allele2
- esi_file$V6 <- positions$Allele1
- esi_file$V7 <- 1-positions$Freq1
- write.table(esi_file, "heptanoate_SPTSSB_for_SMR_flipped.esi", row.names = F, col.names = F, sep = "\t", quote = F)
- # Rescue info for genes of interest
- epi_file <- read.table("heptanoate_SPTSSB_for_SMR_flipped.epi")
- # Rescue only for the genes with eQTL within the .besd file
- epi_file[1,] <- c(3, "ENSG00000163590", 0, 160631406, "PPM1L", "+") # coordinate in the middle of the gene
- epi_file[2,] <- c(3, "ENSG00000169255", 0, 160812415, "B3GALNT1", "-")
- epi_file[3,] <- c(3, "ENSG00000169251", 0, 160954447, "NMD3", "+")
- epi_file[4,] <- c(3, "ENSG00000196542", 0, 161076225, "SPTSSB", "-")
- epi_file[5,] <- c(3, "ENSG00000182447", 0, 161218162, "OTOL1", "+")
- write.table(epi_file, "heptanoate_SPTSSB_for_SMR_flipped.epi", row.names = F, col.names = F, sep = "\t", quote = F)
- #### Running MR itself (SMR and HEIDI test) ----
- # Instructions: https://yanglab.westlake.edu.cn/software/smr/#SMR&HEIDIanalysis
- binaries_path <- "/mnt/belinda_local/ruth/home/plink_binaries/g1000_eur_hg19"
- # gwas_path <- "./gwas_SPTSSB_for_SMR_hg19.ma"
- gwas_path <- "./gwas_SPTSSB_for_SMR_hg19_case-control.ma"
- heptanoate_path <- "./heptanoate_SPTSSB_for_SMR_flipped"
- # oleate_path <- "./oleate-vaccenate_SPTSSB_for_SMR"
- nerve_path <- "/mnt/belinda_70t/ruth_data/QTLs/for_GTEx_coloc_graphs/Nerve_Tibial/Nerve_Tibial"
- hypothalamus_path <- "/mnt/belinda_70t/ruth_data/QTLs/for_GTEx_coloc_graphs/Brain_Hypothalamus/Brain_Hypothalamus"
- cortex_path <- "/mnt/belinda_70t/ruth_data/QTLs/for_SMR_coloc_graphs/BrainMeta_cis_eqtl_summary/BrainMeta_cis_eQTL_chr3"
- blood_path <- "/mnt/belinda_70t/ruth_data/QTLs/for_GTEx_coloc_graphs/Whole_Blood/Whole_Blood"
- # excitatory_path <- "./excitatory_neurons_SPTSSB_for_SMR_all_genes"
- excitatory_path <- "./excitatory_neurons_SPTSSB_for_SMR"
- # Multi-SNP-based SMR test
- # Below shows an option to combine the information from all the SNPs in a region that pass a p-value threshold
- # (the default value is 5.0e-8 which can be modified by the flag --peqtl-smr)
- # Note that SMR always considers GWAS phenotype as outcome, so it is unclear whether it can test reverse causation...
- # But for the version with 2 molecular traits, it is indeed possible to test reverse causation by flipping the order the exposure and outcome
- # summary stats are presented in the command line.
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", heptanoate_path, " --gwas-summary ", gwas_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_plasma_heptanoate_FLIPPED_mQTLs_multiSNP_0.05_case-control ")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", oleate_path, " --gwas-summary ", gwas_path, " oleate-vaccenate_SPTSSB_for_SMR --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_plasma_oleate-vaccenate_mQTLs_multiSNP_0.05 ")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", nerve_path, " --gwas-summary ", gwas_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_nerve_tibial_SPTSSB_eQTLs_multiSNP_0.05 ") # genome build needs to match!
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", hypothalamus_path, " --gwas-summary ", gwas_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_hypothalamus_SPTSSB_eQTLs_multiSNP_0.05 ") # genome build needs to match!
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", cortex_path, " --gwas-summary ", gwas_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_cortex_SPTSSB_eQTLs_multiSNP_0.05_case-control ") # genome build needs to match!
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", blood_path, " --gwas-summary ", gwas_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_blood_SPTSSB_eQTLs_multiSNP_0.05 ") # genome build needs to match!
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", excitatory_path, " --gwas-summary ", gwas_path, " excitatory_neurons_SPTSSB_for_SMR_all_genes --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_PD_GWAS_excitatory_neurons_SPTSSB_all_genes_eQTLs_multiSNP_0.05_case-control ")
- cmd
- system(cmd)
- # --bfile (plink binaries) can be replaced by --bld, which reads LD information from a binary file in BLD format
- # You may add "--maf 0.01" to filter SNPs by MAF (in the reference sample) - OPTIONAL
- # You may run with multiple threads: "--thread-num 10" - OPTIONAL
- # SMR analysis of two molecular traits
- # Here we provide an option to test the pleiotropic association between two molecular traits using summary data.
- # Exposure should come first, outcome should come second
- # eQTL -> mQTL
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", nerve_path, " --beqtl-summary ", heptanoate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_nerve_to_heptanoate_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", hypothalamus_path, " --beqtl-summary ", heptanoate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_hypothalamus_to_heptanoate_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", cortex_path, " --beqtl-summary ", heptanoate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_cortex_to_heptanoate_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", blood_path, " --beqtl-summary ", heptanoate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_blood_to_heptanoate_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", excitatory_path, " --beqtl-summary ", heptanoate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_excitatory_to_heptanoate_multiSNP_0.05_SPTSSB_only")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", nerve_path, " --beqtl-summary ", oleate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_nerve_to_oleate-vaccenate_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", hypothalamus_path, " --beqtl-summary ", oleate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_hypothalamus_to_oleate-vaccenate_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", cortex_path, " --beqtl-summary ", oleate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_cortex_to_oleate-vaccenate_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", blood_path, " --beqtl-summary ", oleate_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_blood_to_oleate-vaccenate_multiSNP_0.05")
- cmd
- system(cmd)
- # mQTL -> eQTL (reverse causation)
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", heptanoate_path, " --beqtl-summary ", nerve_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_heptanoate_to_nerve_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", oleate_path, " --beqtl-summary ", nerve_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_oleate_to_nerve_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", heptanoate_path, " --beqtl-summary ", hypothalamus_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_heptanoate_to_hypothalamus_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", oleate_path, " --beqtl-summary ", hypothalamus_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_oleate_to_hypothalamus_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", heptanoate_path, " --beqtl-summary ", cortex_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_heptanoate_to_cortex_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", oleate_path, " --beqtl-summary ", cortex_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_oleate_to_cortex_multiSNP_0.05")
- cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", heptanoate_path, " --beqtl-summary ", blood_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_heptanoate_to_blood_multiSNP_0.05")
- # cmd <- paste0(smr_path, " --bfile ", binaries_path, " --beqtl-summary ", oleate_path, " --beqtl-summary ", blood_path, " --peqtl-smr 0.05 --peqtl-heidi 0.05 --smr-multi --out smr_oleate_to_blood_multiSNP_0.05")
- cmd
- system(cmd)
- # Data visualization tool: https://yanglab.westlake.edu.cn/smr-portal/viewer
- # Formatting files for plotting: https://yanglab.westlake.edu.cn/software/smr/#SMRlocusplot19
co-localization_and_MR_clean.R at commit 6dc5d54, no license · at the source
Overview
and 7 other authors
Richard A Gibbs4,8, Sarah H Elsea4,8, Asa Abeliovich3, Peter Lansbury9, Nora Vanegas-Arroyave2,10, Chad A Shaw8,10,11, Joshua M Shulman2,8,10,11,12- Quantitative and Computational Biosciences Program, Baylor College of Medicine, Houston, TX 77030, USA
- Department of Neurology, Baylor College of Medicine, Houston, TX 77030, USA
- Leal Therapeutics, Worcester, MA 01605, USA
- Human Genome Sequencing Center, Baylor College of Medicine, Houston, TX 77030, USA
- Nantz National Alzheimer Center, Houston Methodist Neurological Institute and Weill Cornell Medicine, Houston, TX 77030, USA
- Rush Alzheimer's Disease Center, Rush University Medical Center, Chicago, IL 60612, USA
- Department of Neurological Sciences, Rush University Medical Center, Chicago, IL 60612, USA
- Department of Molecular and Human Genetics, Baylor College of Medicine, Houston, TX 77030, USA
- Department of Neurology, Harvard Medical School, Boston, MA 02115, USA
- Center for Alzheimer’s and Neurodegenerative Diseases, Baylor College of Medicine, Houston, TX 77030, USA
- Jan and Dan Duncan Neurological Research Institute, Texas Children’s Hospital, Houston, TX 77030, USA
- Department of Neuroscience, Baylor College of Medicine, Houston, TX 77030, USA
Abstract
The molecular pathways linking genetic variants to Parkinson’s disease (PD) onset and progression remain incompletely defined; however, risk alleles in multiple genes, including GBA1, strongly implicate lipid metabolism.
To systematically identify causal biomarker signatures, we analysed comprehensive metabolome profiles from blood plasma in 149 PD patients and 150 controls, along with complementary genetic, RNA-sequencing and metabolic data from other available clinical and pathologic cohorts. Using colocalization and summary-data-based Mendelian randomization, we tested whether expression and metabolic quantitative trait loci mediate the association between implicated genetic variants and PD risk. We further integrated differential metabolomics and proteomics from blood and brain to reveal pertinent mechanisms.
We show that common PD risk variants at the serine palmitoyltransferase small subunit B (SPTSSB) locus, a key regulator of de novo sphingolipid biosynthesis, are associated with increased SPTSSB brain expression and elevated plasma ceramides. Additional analyses strongly support our hypothesis that a common SPTSSB causal variant is responsible for PD risk as well as the expression and metabolic quantitative trait loci. Multiple sphingolipids and fatty acid derivatives were perturbed in PD, and we identified both unique and shared features with the Alzheimer’s disease metabolome. A PD acylcarnitine signature was further replicated in human post-mortem brain tissue, when comparing those with or without preclinical Lewy body pathology. Integrated analysis of complementary brain proteomic profiles revealed dysregulation of mitochondrial processes dependent on acylcarnitines, including fatty acid beta-oxidation, the tricarboxylic acid cycle and oxidative phosphorylation.
Our results identify promising biomarkers and reveal a causal chain linking genetic variation to altered gene/
Reproduced under the paper's license (CC BY-NC), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 11 matches between paragraphs and lines of code.
ruthbpaula/PD_multiomics
6dc5d543f1b3b3c790224ad7b85a31c1d875e187, 3 February 2026Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
6 files
- additive_recessive_model
s_clean.R , R, 111 lines, 1 match - co-localization_and_MR_c
lean.R , R, 469 lines, 6 matches - mass-spec_differential_e
xpression_clean.R , R, 222 lines, 3 matches - metabolomics_preprocessi
ng_clean.R , R, 110 lines, 1 match - proteomics_preprocessing
_clean.R , R, 140 lines - README.md, Text, 8 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 5 scripts, each with its path and the digest of its content;
- 11 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
ROSMAP data are available from the Synapse AD Knowledge Portal (https://
Reproduced under the paper's license (CC BY-NC), 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, 27 authors, 6 keywords, 13 MeSH terms, 7 funders, 83 references.
Cite
This paper
De-Paula, R. B., Kim, J., Rhinn, H., Saade, H., Chavez, F., Segura, T., Lozano, M. V., Etoundi, M., Silos, K., Kass, N., Korchina, V., Doddapaneni, H., Venner, E., Masdeu, J. C., Pavlik, V., Yu, M. M., Lin, C.-Y. R., Jankovic, J., Buchman, A. S., . . . Shulman, J. M. (2026). Mapping the causal chain from genetic risk variants to lipid dysmetabolism in Parkinson's disease. Brain : a journal of neurology, 149(9), 3119-3133. https://
BibTeX
@article{depaula2026mapp
author = {De-Paula, Ruth B and Kim, Jonggeol and Rhinn, Herve and Saade, Hiba and Chavez, Fatima and Segura, Téah and Lozano, Maria Valeria and Etoundi, Michelle and Silos, Karla and Kass, Naomi and Korchina, Viktoriya and Doddapaneni, Harshavardhan and Venner, Eric and Masdeu, Joseph C and Pavlik, Valory and Yu, Melissa M and Lin, Chi-Ying R and Jankovic, Joseph and Buchman, Aron S and Muzny, Donna and Gibbs, Richard A and Elsea, Sarah H and Abeliovich, Asa and Lansbury, Peter and Vanegas-Arroyave, Nora and Shaw, Chad A and Shulman, Joshua M},
title = {{Mapping the causal chain from genetic risk variants to lipid dysmetabolism in Parkinson's disease}},
journal = {Brain : a journal of neurology},
year = {2026},
month = sep,
volume = {149},
number = {9},
pages = {3119--3133},
publisher = {Oxford University Press},
issn = {0006-8950},
doi = {10.1093/
url = {https://
pmid = {41627849},
pmcid = {PMC13548858}
}
RIS
TY - JOUR
AU - De-Paula, Ruth B
AU - Kim, Jonggeol
AU - Rhinn, Herve
AU - Saade, Hiba
AU - Chavez, Fatima
AU - Segura, Téah
AU - Lozano, Maria Valeria
AU - Etoundi, Michelle
AU - Silos, Karla
AU - Kass, Naomi
AU - Korchina, Viktoriya
AU - Doddapaneni, Harshavardhan
AU - Venner, Eric
AU - Masdeu, Joseph C
AU - Pavlik, Valory
AU - Yu, Melissa M
AU - Lin, Chi-Ying R
AU - Jankovic, Joseph
AU - Buchman, Aron S
AU - Muzny, Donna
AU - Gibbs, Richard A
AU - Elsea, Sarah H
AU - Abeliovich, Asa
AU - Lansbury, Peter
AU - Vanegas-Arroyave, Nora
AU - Shaw, Chad A
AU - Shulman, Joshua M
TI - Mapping the causal chain from genetic risk variants to lipid dysmetabolism in Parkinson's disease
T2 - Brain : a journal of neurology
J2 - Brain
PY - 2026
DA - 2026/
VL - 149
IS - 9
SP - 3119
EP - 3133
SN - 0006-8950
PB - Oxford University Press
DO - 10.1093/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1093/
"type": "article-journal",
"title": "Mapping the causal chain from genetic risk variants to lipid dysmetabolism in Parkinson's disease",
"container-title": "Brain : a journal of neurology",
"author": [
{
"family": "De-Paula",
"given": "Ruth B"
},
{
"family": "Kim",
"given": "Jonggeol"
},
{
"family": "Rhinn",
"given": "Herve"
},
{
"family": "Saade",
"given": "Hiba"
},
{
"family": "Chavez",
"given": "Fatima"
},
{
"family": "Segura",
"given": "Téah"
},
{
"family": "Lozano",
"given": "Maria Valeria"
},
{
"family": "Etoundi",
"given": "Michelle"
},
{
"family": "Silos",
"given": "Karla"
},
{
"family": "Kass",
"given": "Naomi"
},
{
"family": "Korchina",
"given": "Viktoriya"
},
{
"family": "Doddapaneni",
"given": "Harshavardhan"
},
{
"family": "Venner",
"given": "Eric"
},
{
"family": "Masdeu",
"given": "Joseph C"
},
{
"family": "Pavlik",
"given": "Valory"
},
{
"family": "Yu",
"given": "Melissa M"
},
{
"family": "Lin",
"given": "Chi-Ying R"
},
{
"family": "Jankovic",
"given": "Joseph"
},
{
"family": "Buchman",
"given": "Aron S"
},
{
"family": "Muzny",
"given": "Donna"
},
{
"family": "Gibbs",
"given": "Richard A"
},
{
"family": "Elsea",
"given": "Sarah H"
},
{
"family": "Abeliovich",
"given": "Asa"
},
{
"family": "Lansbury",
"given": "Peter"
},
{
"family": "Vanegas-Arroyave",
"given": "Nora"
},
{
"family": "Shaw",
"given": "Chad A"
},
{
"family": "Shulman",
"given": "Joshua M"
}
],
"container-title-short":
"volume": "149",
"issue": "9",
"page": "3119-3133",
"DOI": "10.1093/
"PMID": "41627849",
"PMCID": "PMC13548858",
"ISSN": "0006-8950",
"publisher": "Oxford University Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
1
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1016/j.celrep.2026.117235 [code]
- Integration of aged brain multi-omics reveals cross-system mechanisms underlying Alzheimer's disease heterogeneity.Journal: Cell reportsIn common: circlize, ComplexHeatmap, ggpubr, 3 other tools, Alzheimer's / dementia, genetics / omics, 7 references
- [2] doi:10.1073/pnas.2609132123 [code]
- A human lysosomal storage disorder toolkit for decoding proteome landscapes in cortical-like and dopaminergic-like induced neurons.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: limma, circlize, ComplexHeatmap, 5 other tools, genetics / omics, 3 references
- [3] doi:10.1093/bioinformatics/btag592 [code]
- Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.Journal: Bioinformatics (Oxford, England)In common: limma, car, circlize, 6 other tools, genetics / omics, 1 reference
- [4] doi:10.1186/s12967-026-08266-z [code]
- Single-cell multi-omic integration analysis prioritizes druggable genes and reveals cell-type-specific causal effects in glioblastomagenesis.Journal: Journal of translational medicineIn common: limma, circlize, ComplexHeatmap, 4 other tools, genetics / omics, 3 references
- [5] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: limma, car, circlize, 6 other tools, genetics / omics
- [6] doi:10.1038/s42003-026-10312-x [code]
- Mapping the GDF15 arm of the integrated stress response in human cells and tissues.Journal: Communications biologyIn common: limma, circlize, ComplexHeatmap, 5 other tools, genetics / omics, 1 reference
- [7] doi:10.1093/braincomms/fcag176 [code]
- Tau topography subtypes account for clinical heterogeneity and longitudinal trajectories in early-onset Alzheimer's disease.Journal: Brain communicationsIn common: car, Plotly, ggpubr, 2 other tools, Alzheimer's / dementia, clinical / translational, author Joseph C Masdeu
- [8] doi:10.1038/s41514-026-00397-3 [code]
- Nasal administration of Protollin enhances monocyte phagocytosis and decreases CD8&
lt;sup& gt;+& lt;/ sup& gt; T cell cytotoxicity in subjects with early Alzheimer's disease: a Phase 1 clinical trial. Journal: npj agingIn common: limma, car, circlize, 5 other tools, Alzheimer's / dementia, clinical / translational - [9] doi:10.1016/j.isci.2026.115657 [code]
- Integration of machine learning to develop a disulfidptosis model for predicting glioma prognosis, immunotherapy response, and drug.Journal: iScienceIn common: limma, car, circlize, 5 other tools, clinical / translational
- [10] doi:10.1101/gr.281113.125 [code]
- Single-nucleus multiomic profiling of the aging mouse substantia nigra reveals conserved gene alterations linked to Parkinson's disease.Journal: Genome researchIn common: limma, circlize, ComplexHeatmap, 4 other tools, Parkinson's, genetics / omics, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 5 scripts, and 11 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:34dd6416f6dd6cb7…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
