OSCR

Cellular signatures of melanocortin pathway genes across the locus coeruleus.

Code ↔ Paper

27 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 27 matches
  1. [1] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ figures_main.Rmd, lines 338–409 · score 0.93 · MC3R, MC2R, MC5R, MC1R, melanocortin pathway, MC4R
  2. [2] § Materials and methods › Neuronal subtype analysis in the integrated snRNA-seq meta-dataset ↔ 02_meta_integration.Rmd, lines 227–277 · score 0.92 · avg_log2FC, discriminative genes, FindAllMarkers, ligand genes, low background, curated gene
  3. [3] § Materials and methods › Integration with published Weber LC Visium data and spatial cluster annotation ↔ figures_main.Rmd, lines 412–465 · score 0.90 · SCN4B, GABAergic, serotonergic neurons, glutamatergic neurons, CRH neurons, spatial cell
  4. [4] § Results › Visium spatial transcriptomics of the human LC ↔ figures_supplementary.Rmd, lines 337–383 · score 0.90 · SCN4B, GABAergic, PENK neurons, VGF neurons, serotonergic neurons, glutamatergic neurons
  5. [5] § Results › Visium spatial transcriptomics of the human LC ↔ figures_main.Rmd, lines 412–465 · score 0.90 · SCN4B, GABAergic, PENK neurons, VGF neurons, serotonergic neurons, glutamatergic neurons
  6. [6] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ figures_supplementary.Rmd, lines 227–284 · score 0.88 · MC3R, MC2R, MC5R, MC1R, MC4R, neuron subtypes
  7. [7] § Materials and methods › snRNA-seq analysis of human LC ↔ 01_basak_snRNAseq.Rmd, lines 116–153 · score 0.86 · kernel density, QC batches, Gaussian mixture, batch aware, nFeature_RNA, nCount_RNA
  8. [8] § Materials and methods › snRNA-seq analysis of human LC ↔ figures_main.Rmd, lines 168–221 · score 0.85 · C1QB, pan neuronal, SLC6A2, AIF1, GFAP, PDGFRA
  9. [9] § Results › Visium spatial transcriptomics of the human LC ↔ figures_main.Rmd, lines 338–409 · score 0.85 · MC3R, MC2R, MC5R, MC1R, MC4R, AD associated
  10. [10] § Materials and methods › Integration with published Weber LC Visium data and spatial cluster annotation ↔ figures_supplementary.Rmd, lines 385–437 · score 0.84 · SCN4B, DCN, HBA2, SLC6A2, CCDC153, MAG
  11. [11] § Materials and methods › snRNA-seq analysis of human LC ↔ 01_basak_snRNAseq.Rmd, lines 23–62 · score 0.82 · filtered feature bc, LC001A, LC002A, percent.mt, Seurat, matrices
  12. [12] § Results › Visium spatial transcriptomics of the human LC ↔ figures_supplementary.Rmd, lines 227–284 · score 0.82 · MC3R, MC2R, MC5R, MC1R, MC4R, SLC6A2
  13. [13] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ figures_main.Rmd, lines 270–335 · score 0.82 · HTR2C, BDNF, CARTPT, CHRNA3, DLK1, GPX3
  14. [14] § Materials and methods › Integration with published Weber LC Visium data and spatial cluster annotation ↔ 04_visium_integrated.Rmd, lines 95–126 · score 0.77 · SCTransform, FindNeighbors, k.param, PCA, resolutions, layers
  15. [15] § Materials and methods › snRNA-seq analysis of human LC ↔ 02_meta_integration.Rmd, lines 134–191 · score 0.76 · C1QB, pan neuronal, Broad cell, EGFR, GJA1, MBP
  16. [16] § Materials and methods › snRNA-seq analysis of human LC ↔ 01_basak_snRNAseq.Rmd, lines 65–85 · score 0.72 · FindClusters, FindNeighbors, k.param, PCA, variable, resolutions
  17. [17] § Materials and methods › snRNA-seq analysis of human LC ↔ 03_basak_visium.Rmd, lines 20–47 · score 0.69 · filtered feature bc, percent.mt, nFeature_RNA, nCount_RNA, matrices, UMI
  18. [18] § Materials and methods › snRNA-seq analysis of human LC ↔ R/qc_plots_by_sample.R, lines 77–118 · score 0.67 · Gaussian mixture, nFeature_RNA, nCount_RNA, log2, thresholds, QC
  19. [19] § Materials and methods › Visium spatial transcriptomics analysis of human LC ↔ 03_basak_visium.Rmd, lines 20–47 · score 0.66 · Load10X_Spatial, filtered feature, QC metrics, periphery, nCount_RNA, cropping
  20. [20] § Materials and methods › Neuronal subtype analysis in the integrated snRNA-seq meta-dataset ↔ 02_meta_integration.Rmd, lines 98–132 · score 0.66 · FindNeighbors, k.param, PCA, variable, resolutions, layers
  21. [21] § Results › Visium spatial transcriptomics of the human LC ↔ 03_basak_visium.Rmd, lines 115–121 · score 0.66 · Upper Caudal, Lower Caudal, Upper Rostral, Lower Rostral, cropping, Visium
  22. [22] § Materials and methods › snRNA-seq meta-analysis of human LC datasets ↔ 02_meta_integration.Rmd, lines 77–95 · score 0.62 · pontine reticular formation, PB, PN, pons, parabrachial, Siletti
  23. [23] § Materials and methods › snRNA-seq meta-analysis of human LC datasets ↔ figures_main.Rmd, lines 168–221 · score 0.61 · pan neuronal, SLC6A2, STMN2, SYT1, ependymal, vascular
  24. [24] § Materials and methods › Integration with published Weber LC Visium data and spatial cluster annotation ↔ 02_meta_integration.Rmd, lines 98–132 · score 0.61 · FindNeighbors, k.param, PCA, biological, resolutions, layers
  25. [25] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ 02_meta_integration.Rmd, lines 227–277 · score 0.58 · discriminative gene pair, transcriptionally distinct, ligands, GPCRs, curated, cluster
  26. [26] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ 02_meta_integration.Rmd, lines 134–191 · score 0.55 · QC metrics, Siletti, NE neurons, ependymal, vascular, OPCs
  27. [27] § Results › Single-nucleus transcriptomics and meta-analysis of the human LC ↔ 02_meta_integration.Rmd, lines 279–333 · score 0.51 · neuron subtypes, SLC6A2, MET, Siletti, Weber, Basak

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 Markdown · 487 lines · 16 KB · MIT · 8 matches

  1. ---
  2. title: "02 — snRNA-seq Meta-integration: Three-dataset RPCA, Neuronal Subtypes, and DE"
  3. ---
  4. This script integrates the Basak snRNA-seq data with the published Weber et al.
  5. (2024) and Siletti et al. (2023) LC/pons datasets, annotates the integrated
  6. object, performs neuron-level subtype analysis, and runs differential expression
  7. between the two dominant DBH+ NE neuron subtypes.
  8. Inputs:
  9. - `output/01_basak/basak_snRNA_seurat.rds`
  10. - `data/external/Weber/weber_snRNA_seurat.rds`
  11. - `data/external/Siletti/Pons_PnRF_PB_seurat.rds`
  12. Outputs (Supplementary Table 2 documents nuclei counts per dataset):
  13. - `output/02_meta/meta_snRNA_allcells_seurat.rds` (46,417 nuclei)
  14. - `output/02_meta/meta_snRNA_neurons_seurat.rds` (33,375 neuronal nuclei)
  15. - `output/02_meta/DE/markers_MAST.csv`
  16. ```{r setup}
  17. library(Seurat)
  18. library(SeuratWrappers)
  19. library(dplyr)
  20. library(ggplot2)
  21. library(ggrepel)
  22. dir.create("output/02_meta/DE", recursive = TRUE, showWarnings = FALSE)
  23. options(future.globals.maxSize = 40 * 1024^3) # 40 GB for large integrations
  24. ```
  25. # 1. Prepare datasets for integration
  26. ## 1.1 Basak
  27. ```{r basak-prep}
  28. basak <- readRDS("output/01_basak/basak_snRNA_seurat.rds") # 2,071 nuclei
  29. basak <- RenameCells(basak, add.cell.id = "basak")
  30. basak$Dataset <- "Basak"
  31. basak$Sample <- basak$Section
  32. basak$Donor <- "Donor_1"
  33. basak$orig.ident <- basak$Section
  34. [email hidden] <- [email hidden] %>%
  35. dplyr::select(Dataset, orig.ident, Donor, Sample,
  36. nCount_RNA, nFeature_RNA, percent.mt,
  37. SectionLevel, CellType, CellType_AllCells)
  38. ```
  39. ## 1.2 Weber et al. 2024
  40. The Weber dataset is available from the original publication.
  41. See `data/README.md` for the expected file path.
  42. ```{r weber-prep}
  43. weber <- readRDS("data/external/Weber/weber_snRNA_seurat.rds") # 20,191 nuclei
  44. weber <- DietSeurat(weber, assay = "RNA")
  45. weber@assays$RNA$scale.data <- NULL
  46. weber@assays$RNA$data <- NULL
  47. weber$Dataset <- "Weber"
  48. weber$Donor <- weber$orig.ident
  49. weber$nCount_RNA <- weber$nCount_originalexp
  50. weber$nFeature_RNA <- weber$nFeature_originalexp
  51. weber[["percent.mt"]] <- PercentageFeatureSet(weber, pattern = "^MT-")
  52. [email hidden] <- [email hidden] %>%
  53. dplyr::select(Dataset, orig.ident, Donor, Sample,
  54. nCount_RNA, nFeature_RNA, percent.mt,
  55. label_merged, supervised_NE, unsupervised_NE)
  56. ```
  57. ## 1.3 Siletti et al. 2023
  58. Only the parabrachial / pontine reticular formation section (PnRF_PB) containing
  59. DBH+ NE neurons is used. See `data/README.md` for the expected file path.
  60. ```{r siletti-prep}
  61. siletti <- readRDS("data/external/Siletti/Pons_PnRF_PB_seurat.rds") # 24,155 nuclei
  62. siletti$Dataset <- "Siletti"
  63. siletti$Sample <- as.character(siletti$sample_id)
  64. siletti$Donor <- as.character(siletti$donor_id)
  65. siletti[["percent.mt"]] <- PercentageFeatureSet(siletti, pattern = "^MT-")
  66. [email hidden] <- [email hidden] %>%
  67. dplyr::select(Dataset, orig.ident, Donor, Sample,
  68. nCount_RNA, nFeature_RNA, percent.mt,
  69. supercluster_term, cluster_id, subcluster_id,
  70. dissection, tissue, sex, development_stage)
  71. ```
  72. # 2. Three-dataset RPCA integration (all cell types)
  73. Four integration methods were evaluated (RPCA, CCA, Harmony, FastMNN);
  74. RPCA produced the best mixing of datasets while preserving biological structure
  75. and was used for all analyses.
  76. ```{r integrate-allcells}
  77. seurat_meta <- merge(basak, y = c(weber, siletti)) # 46,417 nuclei
  78. rm(basak, weber, siletti)
  79. seurat_meta[["RNA"]] <- JoinLayers(seurat_meta[["RNA"]])
  80. seurat_meta <- DietSeurat(seurat_meta, assays = "RNA")
  81. seurat_meta@assays$RNA$scale.data <- NULL
  82. seurat_meta[["RNA"]] <- split(seurat_meta[["RNA"]],
  83. f = seurat_meta$Sample)
  84. seurat_meta <- NormalizeData(seurat_meta, verbose = FALSE)
  85. seurat_meta <- FindVariableFeatures(seurat_meta, verbose = FALSE)
  86. seurat_meta <- ScaleData(seurat_meta, verbose = FALSE)
  87. seurat_meta <- RunPCA(seurat_meta, verbose = FALSE)
  88. seurat_meta <- IntegrateLayers(seurat_meta, method = RPCAIntegration,
  89. new.reduction = "integrated.rpca",
  90. verbose = FALSE, k.weight = 100)
  91. seurat_meta <- FindNeighbors(seurat_meta, reduction = "integrated.rpca",
  92. dims = 1:30, k.param = 20, verbose = FALSE)
  93. seurat_meta <- FindClusters(seurat_meta,
  94. resolution = seq(0.1, 2.0, by = 0.1),
  95. verbose = FALSE)
  96. seurat_meta <- RunUMAP(seurat_meta, reduction = "integrated.rpca",
  97. dims = 1:30, reduction.name = "umap.rpca",
  98. verbose = FALSE)
  99. seurat_meta[["RNA"]] <- JoinLayers(seurat_meta[["RNA"]])
  100. ```
  101. ## 2.1 Annotate broad cell types
  102. Annotation at res 0.6 based on canonical marker expression.
  103. NE neurons: DBH, TH, SLC6A2; pan-neuronal: STMN2, SYT1;
  104. oligodendrocytes: MAG, MBP, MOG, PLP1; OPCs: PDGFRA, EGFR;
  105. astrocytes: GFAP, GJA1, AQP4; ependymal: FOXJ1, CCDC153, CAPS;
  106. microglia: C1QB, AIF1; vascular: ACTA2, TAGLN, COL1A1.
  107. ```{r annotate-allcells}
  108. Idents(seurat_meta) <- seurat_meta$RNA_snn_res.0.6
  109. seurat_meta <- RenameIdents(seurat_meta,
  110. "21" = "Neurons_NE",
  111. "24" = "Neurons",
  112. "0" = "Neurons", "1" = "Neurons", "2" = "Neurons",
  113. "4" = "Neurons", "7" = "Neurons", "8" = "Neurons",
  114. "10" = "Neurons", "11" = "Neurons", "12" = "Neurons",
  115. "14" = "Neurons", "15" = "Neurons", "16" = "Neurons",
  116. "18" = "Neurons", "19" = "Neurons", "20" = "Neurons",
  117. "23" = "Neurons", "26" = "Neurons", "27" = "Neurons",
  118. "28" = "Neurons", "29" = "Neurons",
  119. "3" = "Oligo", "5" = "Oligo", "9" = "Oligo",
  120. "13" = "OPCs",
  121. "6" = "Astro",
  122. "17" = "Microglia",
  123. "25" = "Ependymo",
  124. "22" = "Vascular"
  125. )
  126. seurat_meta$CellType_Integrated <- Idents(seurat_meta)
  127. table(seurat_meta$CellType_Integrated, seurat_meta$Dataset, useNA = "ifany")
  128. # Expected (Supplementary Table 2):
  129. # Neurons_NE : Basak=346, Weber=306, Siletti=113
  130. # Neurons : Basak=1012, Weber=16201, Siletti=15397
  131. seurat_meta@assays$RNA$scale.data.1 <- NULL
  132. seurat_meta@assays$RNA$scale.data <- NULL
  133. [email hidden] <- [email hidden] %>%
  134. dplyr::select(
  135. # Core identity
  136. Dataset, orig.ident, Donor, Sample,
  137. # Final annotation
  138. RNA_snn_res.0.6, CellType_Integrated,
  139. # QC metrics
  140. nCount_RNA, nFeature_RNA, percent.mt,
  141. # Basak-specific
  142. SectionLevel,
  143. # Weber-specific (useful for cross-dataset comparison)
  144. label_merged, supervised_NE, unsupervised_NE,
  145. # Siletti-specific
  146. supercluster_term, dissection
  147. )
  148. saveRDS(seurat_meta, file = "output/02_meta/meta_snRNA_allcells_seurat.rds")
  149. rm(seurat_meta)
  150. ```
  151. # 3. Neuron-only integration and subtype annotation
  152. ```{r neurons-subset}
  153. seurat_meta <- readRDS("output/02_meta/meta_snRNA_allcells_seurat.rds")
  154. neurons <- subset(seurat_meta,
  155. idents = c("Neurons_NE", "Neurons")) # 33,375 nuclei
  156. rm(seurat_meta)
  157. neurons <- DietSeurat(neurons, assays = "RNA")
  158. ```
  159. ```{r neurons-integrate}
  160. neurons[["RNA"]] <- split(neurons[["RNA"]], f = neurons$Sample)
  161. neurons <- NormalizeData(neurons, verbose = FALSE)
  162. neurons <- FindVariableFeatures(neurons, verbose = FALSE)
  163. neurons <- ScaleData(neurons, verbose = FALSE)
  164. neurons <- RunPCA(neurons, verbose = FALSE)
  165. neurons <- IntegrateLayers(neurons, method = RPCAIntegration,
  166. new.reduction = "integrated.rpca",
  167. verbose = FALSE, k.weight = 60)
  168. neurons <- FindNeighbors(neurons, reduction = "integrated.rpca",
  169. dims = 1:30, k.param = 10, verbose = FALSE)
  170. neurons <- FindClusters(neurons,
  171. resolution = seq(0.1, 1.5, by = 0.1),
  172. verbose = FALSE)
  173. neurons <- RunUMAP(neurons, reduction = "integrated.rpca",
  174. dims = 1:30, reduction.name = "umap.rpca",
  175. verbose = FALSE)
  176. neurons[["RNA"]] <- JoinLayers(neurons[["RNA"]])
  177. ```
  178. ## 3.1 Identify cluster markers using curated GPCR/ligand gene list
  179. Cluster labels are derived by selecting the top-2 discriminative genes from the
  180. IUPHAR curated list per cluster, concatenated into a gene-pair name.
  181. ```{r neurons-markers}
  182. Idents(neurons) <- neurons$RNA_snn_res.1.5
  183. length(levels(neurons)) # 68 transcriptionally distinct clusters
  184. # Load IUPHAR GPCR/ligand gene list
  185. gpcr_df <- read.csv("resources/IUPHAR/GtP_to_HGNC_mapping.csv", skip = 1)
  186. gene_vector <- unique(gpcr_df$HGNC.Symbol)
  187. # Cluster markers restricted to curated gene list
  188. marker_genes <- FindAllMarkers(
  189. object = neurons,
  190. features = intersect(gene_vector, rownames(neurons)),
  191. verbose = FALSE
  192. )
  193. write.csv(marker_genes,
  194. file = "output/02_meta/DEGs_neurons_res1.5_curated.csv")
  195. # Select top 2 discriminative genes per cluster (high FC, low background)
  196. markers_filtered <- marker_genes %>%
  197. dplyr::filter(avg_log2FC > 0.5 & pct.1 > 0.1 &
  198. pct.2 < 0.05 & p_val_adj < 0.05) %>%
  199. group_by(cluster) %>%
  200. slice_head(n = 2) %>%
  201. ungroup() %>%
  202. mutate(cluster = factor(cluster, levels = levels(neurons))) %>%
  203. arrange(cluster)
  204. # Relax criteria for clusters with no marker meeting strict filters
  205. missing_clusters <- setdiff(levels(neurons),
  206. unique(markers_filtered$cluster))
  207. if (length(missing_clusters) > 0) {
  208. missing_markers <- marker_genes %>%
  209. dplyr::filter(cluster %in% missing_clusters,
  210. avg_log2FC > 0.5 & pct.1 > 0.05 &
  211. pct.2 < 0.2 & p_val_adj < 0.05) %>%
  212. group_by(cluster) %>%
  213. slice_head(n = 2) %>%
  214. ungroup() %>%
  215. mutate(cluster = factor(cluster, levels = levels(neurons))) %>%
  216. arrange(cluster)
  217. }
  218. marker_df <- rbind(markers_filtered, missing_markers) %>%
  219. mutate(cluster = factor(cluster, levels = levels(neurons)))
  220. ```
  221. ## 3.2 Build cluster annotation labels
  222. ```{r neurons-annotate}
  223. cluster_annotations <- marker_df %>%
  224. group_by(cluster) %>%
  225. summarise(Annotation = paste(gene, collapse = "_"), .groups = "drop") %>%
  226. mutate(row_id = row_number()) %>%
  227. arrange(Annotation, row_id) %>%
  228. group_by(Annotation) %>%
  229. mutate(
  230. Annotation_unique = ifelse(
  231. row_number() == 1,
  232. Annotation,
  233. paste0(Annotation, "_", row_number())
  234. )
  235. ) %>%
  236. ungroup() %>%
  237. arrange(row_id) %>%
  238. select(-row_id)
  239. write.csv(cluster_annotations,
  240. file = "output/02_meta/cluster_annotations_neurons.csv")
  241. # Transfer annotations to metadata
  242. seurat_meta_df <- as.data.frame([email hidden]) %>%
  243. dplyr::select(RNA_snn_res.1.5)
  244. meta_df <- seurat_meta_df %>%
  245. tibble::rownames_to_column("row_id") %>%
  246. mutate(Cluster_Join = as.character(RNA_snn_res.1.5)) %>%
  247. left_join(cluster_annotations, by = c("Cluster_Join" = "cluster")) %>%
  248. rename(CellType = Annotation_unique) %>%
  249. select(-Cluster_Join) %>%
  250. tibble::column_to_rownames("row_id") %>%
  251. dplyr::select(CellType)
  252. neurons <- AddMetaData(neurons, metadata = meta_df,
  253. col.name = "Neuron_Subtype")
  254. # Prioritise DBH subtypes at the top of the level ordering
  255. dbh_clusters <- c("SLC6A2_DBH", "DBH_SLC6A2", "SLC6A2_MET")
  256. cluster_levels <- c(dbh_clusters,
  257. setdiff(sort(unique(neurons$Neuron_Subtype)),
  258. dbh_clusters))
  259. neurons$Neuron_Subtype <- factor(neurons$Neuron_Subtype,
  260. levels = cluster_levels)
  261. Idents(neurons) <- neurons$Neuron_Subtype
  262. table(neurons$Neuron_Subtype[neurons$Neuron_Subtype %in% dbh_clusters],
  263. neurons$Dataset[neurons$Neuron_Subtype %in% dbh_clusters],
  264. useNA = "ifany")
  265. # SLC6A2/DBH: Basak=256, Weber=285, Siletti=65
  266. # DBH/SLC6A2: Basak=112, Weber=177, Siletti=5
  267. # SLC6A2/MET: Basak=3, Weber=43, Siletti=43
  268. ```
  269. ```{r neurons-save}
  270. [email hidden] <- [email hidden] %>%
  271. dplyr::select(
  272. # Core identity
  273. Dataset, orig.ident, Donor, Sample,
  274. # Annotations
  275. Neuron_Subtype, CellType_Integrated,
  276. # QC metrics
  277. nCount_RNA, nFeature_RNA, percent.mt,
  278. # Basak-specific
  279. SectionLevel,
  280. # Weber-specific (useful for cross-dataset comparison)
  281. label_merged, supervised_NE, unsupervised_NE,
  282. # Siletti-specific
  283. supercluster_term, dissection
  284. )
  285. saveRDS(neurons, file = "output/02_meta/meta_snRNA_neurons_seurat.rds")
  286. rm(neurons)
  287. ```
  288. # 4. Differential expression: SLC6A2_DBH vs DBH_SLC6A2 (MAST)
  289. MAST single-cell DE comparing the two most abundant DBH+ NE neuron subtypes,
  290. adjusting for donor effect, library size, and mitochondrial read fraction.
  291. ## 4.1 Data preparation
  292. ```{r de-prep}
  293. library(MAST)
  294. neurons <- readRDS("output/02_meta/meta_snRNA_neurons_seurat.rds")
  295. Idents(neurons) <- neurons$Neuron_Subtype
  296. dbh_subset <- subset(neurons,
  297. idents = c("SLC6A2_DBH", "DBH_SLC6A2")) # 900 cells
  298. rm(neurons)
  299. # Remove donors with < 20 cells in either subtype (statistical stability)
  300. dbh_subset$Donor <- factor(dbh_subset$Donor)
  301. dbh_subset$Neuron_Subtype <- droplevels(dbh_subset$Neuron_Subtype)
  302. meta_df <- [email hidden] %>%
  303. tibble::rownames_to_column("cell_id") %>%
  304. group_by(Neuron_Subtype, Donor) %>%
  305. mutate(n_cells = n()) %>%
  306. ungroup()
  307. cells_to_keep <- meta_df %>%
  308. filter(n_cells >= 20) %>%
  309. pull(cell_id)
  310. dbh_filtered <- subset(dbh_subset, cells = cells_to_keep) # 890 cells
  311. rm(dbh_subset)
  312. table(dbh_filtered$Neuron_Subtype, dbh_filtered$Donor, useNA = "ifany")
  313. # SLC6A2_DBH: Br2701=157, Br8079=124, Donor_1=256, H18.30.002=41, H19.30.001=24
  314. # DBH_SLC6A2: Br2701=80, Br8079=96, Donor_1=112
  315. ```
  316. ## 4.2 MAST
  317. ```{r mast}
  318. Idents(dbh_filtered) <- dbh_filtered$Neuron_Subtype
  319. log2FC_limit <- 2
  320. markers_mast <- FindMarkers(
  321. object = dbh_filtered,
  322. ident.1 = "SLC6A2_DBH",
  323. ident.2 = "DBH_SLC6A2",
  324. test.use = "MAST",
  325. logfc.threshold = 0.1,
  326. min.pct = 0.05,
  327. only.pos = FALSE,
  328. latent.vars = c("nCount_RNA", "percent.mt", "Donor")
  329. )
  330. write.csv(markers_mast,
  331. file = "output/02_meta/DE/markers_MAST.csv")
  332. # Construct volcano plot dataframe (used in figures code)
  333. markers_filtered <- markers_mast %>%
  334. as.data.frame() %>%
  335. tibble::rownames_to_column("gene") %>%
  336. mutate(
  337. neg_log10_p = -log10(p_val_adj),
  338. sig = case_when(
  339. p_val_adj < 0.05 & avg_log2FC > log2FC_limit ~ "Up_in_SLC6A2_DBH",
  340. p_val_adj < 0.05 & avg_log2FC < -log2FC_limit ~ "Up_in_DBH_SLC6A2",
  341. TRUE ~ "Not_significant"
  342. )
  343. ) %>%
  344. dplyr::filter(sig %in% c("Up_in_SLC6A2_DBH", "Up_in_DBH_SLC6A2"))
  345. write.csv(markers_filtered,
  346. file = "output/02_meta/DE/markers_MAST_filtered.csv")
  347. table(markers_filtered$sig) # Up_in_DBH_SLC6A2 = 20, Up_in_SLC6A2_DBH = 5
  348. rm(dbh_filtered)
  349. ```
  350. > HTR2C, SNTG1 : Up_in_DBH_SLC6A2
  351. # 5. FindAllMarkers: DBH subtype markers (used in Fig 1f heatmap)
  352. Seurat FindAllMarkers identifies genes with specificity for each DBH subtype
  353. (including SLC6A2_MET). Genes from this analysis supplement the literature-
  354. curated gene set displayed in the heatmap of Fig 1f.
  355. ```{r findallmarkers}
  356. mito_ribo_genes <- readRDS("resources/gene_lists/mito_ribo_genes.rds")
  357. neurons <- readRDS("output/02_meta/meta_snRNA_neurons_seurat.rds")
  358. Idents(neurons) <- neurons$Neuron_Subtype
  359. dbh_subset <- subset(neurons,
  360. idents = c("SLC6A2_DBH", "DBH_SLC6A2", "SLC6A2_MET")) # 989 cells
  361. rm(neurons)
  362. # Remove uninformative gene classes
  363. gene_vector <- setdiff(rownames(dbh_subset), mito_ribo_genes)
  364. gene_vector <- setdiff(gene_vector,
  365. grep("^ENSG", gene_vector, value = TRUE))
  366. gene_vector <- setdiff(gene_vector,
  367. grep("^LINC", gene_vector, value = TRUE))
  368. all_markers <- FindAllMarkers(
  369. object = dbh_subset,
  370. features = gene_vector,
  371. logfc.threshold = 0.5,
  372. min.pct = 0.05,
  373. verbose = FALSE
  374. )
  375. write.csv(all_markers,
  376. file = "output/02_meta/DE/markers_FindAllMarkers_DBH.csv")
  377. # Filtered marker set used in Fig 1f
  378. markers_filtered <- all_markers %>%
  379. dplyr::filter(avg_log2FC > 0.5 & pct.1 > 0.2 &
  380. pct.2 < 0.2 & p_val_adj < 0.05) %>%
  381. mutate(cluster = factor(cluster,
  382. levels = c("SLC6A2_DBH", "DBH_SLC6A2", "SLC6A2_MET"))) %>%
  383. arrange(cluster)
  384. write.csv(markers_filtered,
  385. file = "output/02_meta/DE/markers_FindAllMarkers_DBH_filtered.csv")
  386. rm(dbh_subset, all_markers, markers_filtered)
  387. ```
  388. > CHRNA3 : Up in SLC6A2_DBH
  389. > LEPR, BDNF, TMC3, INVS : Up in SLC6A2_MET

02_meta_integration.Rmd at commit a0838e9, under MIT · at the source

Overview

Authors: Alisha Basak1,2, Fahrünisa Meryem Betül Erol1,2, Maria Caterina De Rosa1,2, Zhangji Dong2,3, Victor Ogbolu4, Hannah J. Glover1,2, Rick Rausch1,2, Gunnar Hargus5, Jordi Creus-Muncunill6, Heather Buchanan5, Yu Bai6, Qi Su6, Betty Chang6, Christina Adler6, Delaney Flaherty5,7, Benjamin Ciener5,7, Harrison Xiao5,7, Hasini Reddy5,7, Pascaline Aime-Wilson6, Christiane Reitz8
and 6 other authorsMark W. Sleeman6, Judith Y. Altarejos6, Rudolph L. Leibel1,2, Liang Oscar Qiang4, Andrew F. Teich5,7, Claudia A. Doege2,5
  1. Department of Pediatrics, Division of Molecular Genetics, Columbia University Irving Medical Center,New York, NY USA
  2. Naomi Berrie Diabetes Center, Columbia University Irving Medical Center,New York, NY USA
  3. Key Laboratory of Neuroregeneration of Jiangsu and Ministry of Education, Co-Innovation Center of Neuroregeneration, Nantong University,Nantong, 226001 Jiangsu China
  4. Department of Neurobiology and Anatomy, Drexel University College of Medicine,Philadelphia, PA USA
  5. Department of Pathology and Cell Biology, Columbia University Irving Medical Center,New York, NY USA
  6. Regeneron Genetics Center, Regeneron Pharmaceuticals Inc.,Tarrytown, NY 10591 USA
  7. Taub Institute, Columbia University Irving Medical Center,New York, NY USA
  8. Department of Neurology, Columbia University Irving Medical Center,New York, NY USA
Institutions: Columbia University Irving Medical Center (United States); Nantong University (China); Drexel University (United States); Regeneron (United States) (United States)
Journal: Acta neuropathologica communications, volume 14, issue 1, article 96
Dates: received 26 August 2025; accepted 23 March 2026; published online 4 April 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1186/s40478-026-02287-x · PMID 41935248 · PMCID PMC13097939 · OpenAlex W7149404857
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality), human (organism), mouse (organism), Alzheimer's / dementia (population), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, fMRI & imaging
Keywords: Locus coeruleus, Melanocortin pathway, Alzheimer’s disease, Food intake, Obesity, Energy balance
MeSH: Locus Coeruleus*, Melanocortins*, Neurons*, Signal Transduction*, Adaptor Proteins, Signal Transducing, Alzheimer Disease, Animals, Female, Humans, Male, Mice, Mice, Inbred C57BL, Mice, Transgenic, Receptor Activity-Modifying Proteins (* major topic)
Topic: Regulation of Appetite and Obesity (Endocrine and Autonomic Systems, Neuroscience), according to OpenAlex
Funding: Please see manuscript
Citations: not cited yet (Europe PMC); 145 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repository

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

fmbetul/LC-melanocortin-analysis

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: a0838e9ac6d49db720a1daa218fae7a478e9bbab, 9 April 2026
Languages: R (9)
Size: 20 files, 9 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file, 6 notebooks
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: ggplot2 (7 files), Seurat (7 files), tidyverse (7 files), patchwork (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
11 files

Code availability statement

The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1186/s40478-026-02287-x.

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;
  • 9 scripts, each with its path and the digest of its content;
  • 27 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.

Availability statements

The paper has a data availability statement and a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing them here; in short, from what the harvester recognized in them:

  • no repository, dataset or request procedure was recognized in them

Read them in the paper: doi.org/10.1186/s40478-026-02287-x.

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, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 26 authors, 6 keywords, 14 MeSH terms, 1 funder, 143 references.

Cite

This paper

Basak, A., Erol, F. M. B., De Rosa, M. C., Dong, Z., Ogbolu, V., Glover, H. J., Rausch, R., Hargus, G., Creus-Muncunill, J., Buchanan, H., Bai, Y., Su, Q., Chang, B., Adler, C., Flaherty, D., Ciener, B., Xiao, H., Reddy, H., Aime-Wilson, P., . . . Doege, C. A. (2026). Cellular signatures of melanocortin pathway genes across the locus coeruleus. Acta neuropathologica communications, 14(1), 96. https://doi.org/10.1186/s40478-026-02287-x

BibTeX

@article{basak2026cellular,
author = {Basak, Alisha and Erol, Fahrünisa Meryem Betül and De Rosa, Maria Caterina and Dong, Zhangji and Ogbolu, Victor and Glover, Hannah J. and Rausch, Rick and Hargus, Gunnar and Creus-Muncunill, Jordi and Buchanan, Heather and Bai, Yu and Su, Qi and Chang, Betty and Adler, Christina and Flaherty, Delaney and Ciener, Benjamin and Xiao, Harrison and Reddy, Hasini and Aime-Wilson, Pascaline and Reitz, Christiane and Sleeman, Mark W. and Altarejos, Judith Y. and Leibel, Rudolph L. and Qiang, Liang Oscar and Teich, Andrew F. and Doege, Claudia A.},
title = {{Cellular signatures of melanocortin pathway genes across the locus coeruleus}},
journal = {Acta neuropathologica communications},
year = {2026},
month = apr,
volume = {14},
number = {1},
pages = {96},
publisher = {BMC},
issn = {2051-5960},
doi = {10.1186/s40478-026-02287-x},
url = {https://doi.org/10.1186/s40478-026-02287-x},
pmid = {41935248},
pmcid = {PMC13097939}
}

RIS

TY - JOUR
AU - Basak, Alisha
AU - Erol, Fahrünisa Meryem Betül
AU - De Rosa, Maria Caterina
AU - Dong, Zhangji
AU - Ogbolu, Victor
AU - Glover, Hannah J.
AU - Rausch, Rick
AU - Hargus, Gunnar
AU - Creus-Muncunill, Jordi
AU - Buchanan, Heather
AU - Bai, Yu
AU - Su, Qi
AU - Chang, Betty
AU - Adler, Christina
AU - Flaherty, Delaney
AU - Ciener, Benjamin
AU - Xiao, Harrison
AU - Reddy, Hasini
AU - Aime-Wilson, Pascaline
AU - Reitz, Christiane
AU - Sleeman, Mark W.
AU - Altarejos, Judith Y.
AU - Leibel, Rudolph L.
AU - Qiang, Liang Oscar
AU - Teich, Andrew F.
AU - Doege, Claudia A.
TI - Cellular signatures of melanocortin pathway genes across the locus coeruleus
T2 - Acta neuropathologica communications
J2 - Acta Neuropathol Commun
PY - 2026
DA - 2026/04/04
VL - 14
IS - 1
SP - 96
SN - 2051-5960
PB - BMC
DO - 10.1186/s40478-026-02287-x
UR - https://doi.org/10.1186/s40478-026-02287-x
LA - en
ER -

CSL-JSON

{
"id": "10.1186/s40478-026-02287-x",
"type": "article-journal",
"title": "Cellular signatures of melanocortin pathway genes across the locus coeruleus",
"container-title": "Acta neuropathologica communications",
"author": [
{
"family": "Basak",
"given": "Alisha"
},
{
"family": "Erol",
"given": "Fahrünisa Meryem Betül"
},
{
"family": "De Rosa",
"given": "Maria Caterina"
},
{
"family": "Dong",
"given": "Zhangji"
},
{
"family": "Ogbolu",
"given": "Victor"
},
{
"family": "Glover",
"given": "Hannah J."
},
{
"family": "Rausch",
"given": "Rick"
},
{
"family": "Hargus",
"given": "Gunnar"
},
{
"family": "Creus-Muncunill",
"given": "Jordi"
},
{
"family": "Buchanan",
"given": "Heather"
},
{
"family": "Bai",
"given": "Yu"
},
{
"family": "Su",
"given": "Qi"
},
{
"family": "Chang",
"given": "Betty"
},
{
"family": "Adler",
"given": "Christina"
},
{
"family": "Flaherty",
"given": "Delaney"
},
{
"family": "Ciener",
"given": "Benjamin"
},
{
"family": "Xiao",
"given": "Harrison"
},
{
"family": "Reddy",
"given": "Hasini"
},
{
"family": "Aime-Wilson",
"given": "Pascaline"
},
{
"family": "Reitz",
"given": "Christiane"
},
{
"family": "Sleeman",
"given": "Mark W."
},
{
"family": "Altarejos",
"given": "Judith Y."
},
{
"family": "Leibel",
"given": "Rudolph L."
},
{
"family": "Qiang",
"given": "Liang Oscar"
},
{
"family": "Teich",
"given": "Andrew F."
},
{
"family": "Doege",
"given": "Claudia A."
}
],
"container-title-short": "Acta Neuropathol Commun",
"volume": "14",
"issue": "1",
"page": "96",
"DOI": "10.1186/s40478-026-02287-x",
"PMID": "41935248",
"PMCID": "PMC13097939",
"ISSN": "2051-5960",
"publisher": "BMC",
"URL": "https://doi.org/10.1186/s40478-026-02287-x",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
4
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1016/j.neurobiolaging.2026.04.007 [code]
The TREM2 R47H variant is associated with liver-plasma-brain axis dyshomeostasis in the 5xFAD mouse model of Alzheimer's disease.
Journal: Neurobiology of aging
In common: tidyverse, Alzheimer's / dementia, genetics / omics, mouse, 1 other category, 5 references
[2] doi:10.1016/j.stemcr.2026.102958 [code]
Scalable hypothalamic neuron differentiation from human pluripotent stem cells suitable for modeling metabolic disorders.
Journal: Stem cell reports
In common: genetics / omics, cellular / molecular, 3 references, author Claudia A. Doege
[3] doi:10.1038/s41586-026-10629-x [code]
Whole-genome duplication shaped cell-type evolution in the vertebrate brain.
Journal: Nature
In common: Seurat, patchwork, ggplot2, 1 other tool, genetics / omics, mouse, cellular / molecular, 2 references
[4] doi:10.1038/s41467-026-75650-0 [code]
Reduced melanocortin tone modulates feeding during pregnancy in mice.
Journal: Nature communications
In common: Seurat, patchwork, ggplot2, 1 other tool, genetics / omics, mouse, 2 references
[5] doi:10.1038/s44318-026-00818-9 [code]
FAM134B-mediated ER-phagy degrades APP and suppresses Alzheimer's disease pathology.
Journal: The EMBO journal
In common: Seurat, patchwork, ggplot2, 1 other tool, Alzheimer's / dementia, mouse, cellular / molecular, 1 reference
[6] doi:10.1002/alz.71823 [code]
Cellular transcriptomic signatures underpinning the heterogeneity of depression in Alzheimer's disease.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: Seurat, patchwork, ggplot2, 1 other tool, Alzheimer's / dementia, genetics / omics, cellular / molecular, 1 reference
[7] doi:10.1371/journal.pone.0355165 [code]
Pupillary dynamics during hands-off L2 driving and transitions of control under high cognitive load.
Journal: PloS one
In common: patchwork, ggplot2, tidyverse, 3 references
[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: Seurat, patchwork, ggplot2, 1 other tool, genetics / omics, cellular / molecular, 2 references
[9] doi:10.1186/s12974-026-03848-6 [code]
Iba1 deficiency impairs microglial synaptic remodeling and neuronal survival after axonal injury.
Journal: Journal of neuroinflammation
In common: Seurat, patchwork, ggplot2, 1 other tool, genetics / omics, mouse, cellular / molecular, 1 reference
[10] doi:10.1038/s41386-026-02399-x [code]
Regulation of the decision threshold by the locus coeruleus.
Journal: Neuropsychopharmacology : official publication of the American College of Neuropsychopharmacology
In common: tidyverse, mouse, 4 references

Contribute

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

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

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.