OSCR

Molecular Disambiguation of Heart Rate Control by the Nucleus Ambiguus.

Code ↔ Paper

5 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 5 matches
  1. [1] § Materials and Methods › Single-nuclei RNA-sequencing ↔ Reference_Query_Mapping .Rmd, lines 184 to 223 · score 0.66 · log normalization, FindVariableFeatures, Seurat, mapping, PCA, resolution · Report a mismatch
  2. [2] § Materials and Methods › Single-nuclei RNA-sequencing ↔ Reference_Query_Mapping .Rmd, lines 184 to 223 · score 0.65 · FindAllMarkers, Slc17a6, Seurat, threshold, PCA, resolution · Report a mismatch
  3. [3] § Materials and Methods › Single-nuclei RNA-sequencing ↔ namb_data_analysis_Jalil_Maira.Rmd, lines 262 to 289 · score 0.61 · FindAllMarkers, BuildClusterTree, log2, threshold, relatedness, PCA · Report a mismatch
  4. [4] § Results › Molecular classification of nAmb neurons in the adult mouse ↔ Batch_elimination_noFemale.Rmd, lines 180 to 206 · score 0.55 · Slc32a1, Slc17a6, Slc18a3, batches, Isl1, clusters · Report a mismatch
  5. [5] § Results › Molecular classification of nAmb neurons in the adult mouse ↔ Reference_Query_Mapping .Rmd, lines 86 to 111 · score 0.54 · ACP neurons, ACV neurons, Bche, Calb1, Npy2r, heart · Report a mismatch

Paper

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

The paper is loaded when this pane is shown.

The authors' code

R Markdown · 312 lines · 14 KB · CC-BY-4.0 · 3 matches

  1. ---
  2. author: "Maira Jalil"
  3. date: "5/4/2023"
  4. output: html_document
  5. editor_options:
  6. chunk_output_type: console
  7. ---
  8. #Load libraries
  9. ```{r}
  10. #can't remember if you need all of these libraries for this particular figure, but these are the ones included in my script
  11. library(amap)
  12. library(FactoMineR)
  13. library(scatterD3)
  14. library(gplots)
  15. library(ggplot2)
  16. library(cowplot)
  17. library(ClassDiscovery)
  18. library(pheatmap)
  19. library(dplyr)
  20. library(Seurat)
  21. library(pheatmap)
  22. library(Matrix)
  23. library(latticeExtra)
  24. library(tools)
  25. library(matrixStats)
  26. ```
  27. #Load Jalil et al dataset
  28. ```{r}
  29. #load data
  30. namb_all.int <-readRDS("~/Desktop/Lab/Projects/Namb data/Sequencing/nAmb_Jalil.rds")
  31. DimPlot(namb_all.int, reduction = "umap", label = TRUE, pt.size = 1) + NoLegend()
  32. ```
  33. #Load Veerakumar dataset
  34. ```{r}
  35. # perform label transfer
  36. Karasnow.data = read.csv(file = "~/Desktop/Lab/Projects/Namb data/Sequencing/Karasnow data/GSE198709_AMB_raw_counts.csv.gz", header = TRUE, row.names = 1)
  37. #specify the gene names are the rownames
  38. gene_List <- rownames(Karasnow.data)
  39. Karasnow1 <- CreateSeuratObject(counts = Karasnow.data, project = "Namb", min.cells = 3, min.features = 200)
  40. #this resembles our snucseq data
  41. VlnPlot(Karasnow1, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3, pt.size = 0.001)
  42. length(WhichCells(Karasnow1))
  43. plot1 <- FeatureScatter(Karasnow1, feature1 = "nCount_RNA", feature2 = "percent.mt")
  44. plot2 <- FeatureScatter(Karasnow1, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
  45. plot1+plot2
  46. ###Now choosing the dataset
  47. Karasnow1 <- subset(Karasnow1, subset = nFeature_RNA > 100)
  48. #Data Normalization
  49. Karasnow1 <- NormalizeData(Karasnow1)
  50. ##### Find and visualize highly variable genes
  51. Karasnow1 <- FindVariableFeatures(Karasnow1, selection.method = "vst", nfeatures = 2000)
  52. # Identify the 10 most highly variable genes
  53. top10 <- head(VariableFeatures(Karasnow1), 10)
  54. # plot variable features with and without labels
  55. plot1 <- VariableFeaturePlot(Karasnow1)
  56. plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
  57. LabelPoints(plot = plot1, points = top10, repel = TRUE, xnudge = 0, ynudge = 0)
  58. all.genes <- rownames(Karasnow1)
  59. Karasnow1 <- ScaleData(Karasnow1, features = all.genes)
  60. Karasnow1 <- RunPCA(Karasnow1, features = VariableFeatures(object = Karasnow1))
  61. # Examine and visualize PCA results a few different ways
  62. print(Karasnow1[["pca"]], dims = 1:5, nfeatures = 5)
  63. VizDimLoadings(Karasnow1, dims = 1:2, reduction = "pca")
  64. DimPlot(Karasnow1, reduction = "pca")
  65. DimHeatmap(Karasnow1, dims = 1, cells = 203, balanced = TRUE)
  66. DimHeatmap(Karasnow1, dims = 1:12, cells = 203, balanced = TRUE)
  67. ElbowPlot(Karasnow1)
  68. ```
  69. ```{r}
  70. ##Perform clustering
  71. x <- 12
  72. Karasnow1 <- FindNeighbors(Karasnow1, dims = 1:x)
  73. Karasnow1 <- FindClusters(Karasnow1, resolution = 0.7)
  74. head(Idents(Karasnow1), 5)
  75. length(WhichCells(Karasnow1))
  76. ##### Visualize clustering
  77. Karasnow1 <- RunUMAP(Karasnow1, dims = 1:x)
  78. ##### Reorder clusters by relatedness
  79. Karasnow1=BuildClusterTree(Karasnow1,reorder=TRUE, reorder.numeric = TRUE)
  80. PlotClusterTree(Karasnow1)
  81. DimPlot(Karasnow1, reduction = "umap", label = T, pt.size= 2)
  82. Karasnow1.markers <- FindAllMarkers(Karasnow1, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
  83. ```
  84. ```{r}
  85. #Acp neurons cluster 3
  86. #not use dotplot because scaling that data will lead to misleading results
  87. markers.plot <- c("Trhr", "Sema3d", "Pappa2", "Mc4r", "Calb1", "Gabre")
  88. VlnPlot (object = Karasnow1, features= markers.plot, stack = T, sort = F, flip = TRUE)
  89. #ACV neurons cluster1
  90. markers.plot <- c("Hoxa5", "Ghsr", "Bche", "Htr3b", "Sstr2", "P2ry1")
  91. VlnPlot (object = Karasnow1, features= markers.plot, stack = T, sort = F, flip = TRUE)
  92. #heart markers
  93. markers.plot <- c("Celf6", "Kcna5", "Tbx3", "Dgkb", "Npy2r")
  94. DotPlot (object = Karasnow1, features= markers.plot)
  95. VlnPlot (object = Karasnow1, features= markers.plot, stack = T, sort = F, flip = TRUE)
  96. #larynx cluster cluster 2
  97. markers.plot <- c("Calca", "Pnoc", "Uts2", "Lhx4", "Dlk1")
  98. VlnPlot (object = Karasnow1, features= markers.plot, stack = T, sort = F, flip = TRUE)
  99. #all namb marker
  100. markers.plot <- c("Slc18a3", "Isl1")
  101. VlnPlot (object = Karasnow1, features= markers.plot)
  102. VlnPlot(Karasnow1, features = c("Vipr2", "Adcyap1", "Crhr2"))
  103. #cluster 2
  104. VlnPlot(Karasnow1, features = c("Calca", "Dlk1"))
  105. #cluster1
  106. VlnPlot(Karasnow1, features = c("Ghsr", "Bche", "Htr3b", "Npy2r"))
  107. #cluster 3
  108. VlnPlot(Karasnow1, features = c("Trhr", "Sema3d", "Pappa2", "Pcdh18"))
  109. ```
  110. ```{r}
  111. new.cluster.ids_numeric <- c("01","02","03")
  112. names(new.cluster.ids_numeric) <- levels(Karasnow1)
  113. Karasnow1 <- RenameIdents(Karasnow1, new.cluster.ids_numeric)
  114. Karasnow1$annotationsnumeric=Idents(Karasnow1)
  115. new.cluster.ids <- c("n01.ACV","n02.larynx","n03.ACP")
  116. names(new.cluster.ids) <- levels(Karasnow1)
  117. Karasnow1 <- RenameIdents(Karasnow1, new.cluster.ids)
  118. Karasnow1$annotationsnumeric=Idents(Karasnow1)
  119. Karasnow1$annotations=Idents(Karasnow1)
  120. DimPlot(Karasnow1, reduction = "umap", label = TRUE, pt.size = 2) + NoLegend()
  121. ```
  122. ```{r}
  123. PlotClusterTree(Karasnow1)
  124. VlnPlot(Karasnow1, features=c("Adcyap1", "Crhr2", "Uts2", "Vipr2", "Calca"), pt.size=0.1)
  125. markers.plot <- c("Adcyap1", "Calca")
  126. VlnPlot (object = Karasnow1, features= markers.plot, stack = T, sort = F, flip = TRUE)
  127. #remotes::install_github("satijalab/seurat", ref = "release/4.0.0")
  128. DefaultAssay(namb_all.int)<- "integrated"
  129. DefaultAssay(Karasnow1)<- "RNA"
  130. anchors <- FindTransferAnchors(
  131. reference = namb_all.int,
  132. query = Karasnow1,reference.assay = "integrated",
  133. query.assay = "RNA", dims = 1:50)
  134. predictions_Veerakumar <- TransferData(anchorset = anchors, refdata = namb_all.int$annotationsnumeric, dims = 1:30)
  135. #query dataset goes here
  136. Karasnow1 <- AddMetaData(Karasnow1, metadata = predictions_Veerakumar)
  137. ```
  138. #Create Figure:
  139. ```{r}
  140. pids = as.integer(as.matrix(Karasnow1$predicted.id))
  141. ones = as.integer(pids==1)
  142. Karasnow1$ones = ones
  143. twos = as.integer(pids==2)
  144. Karasnow1$twos = twos
  145. threes = as.integer(pids==3)
  146. Karasnow1$threes = threes
  147. fours = as.integer(pids==4)
  148. Karasnow1$fours = fours
  149. fives = as.integer(pids==5)
  150. Karasnow1$fives = fives
  151. sixes = as.integer(pids==6)
  152. Karasnow1$sixes = sixes
  153. ```
  154. ```{r}
  155. ct_factor = factor(Karasnow1$tree.ident)
  156. ct_factor = factor(ct_factor,levels(ct_factor)[rev(c(6,5,4,3,2,1))])
  157. Karasnow1$tree.ident <- ct_factor
  158. #mapping on the UMAP
  159. library(Seurat)
  160. library(SeuratDisk)
  161. library(ggplot2)
  162. library(patchwork)
  163. Karasnow1 <- MapQuery(
  164. anchorset = anchors,
  165. query = Karasnow1,
  166. reference = namb_all.int,
  167. refdata = list(
  168. Karasnow1 = "Karasnow",
  169. namb_all.int = "namb"
  170. ),
  171. reference.reduction = "spca",
  172. reduction.model = "wnn.umap"
  173. )
  174. markers.plot <- c("ones","twos","threes","fours","fives","sixes")
  175. VlnPlot(Karasnow1,features=c("ones","twos","threes","fours","fives","sixes"),group.by="tree.ident", stack = F)
  176. DotPlot(Karasnow1,features=c("ones","twos","threes","fours","fives","sixes"),group.by="tree.ident", scale=F) + scale_colour_gradient2(low = "#00FFFF", mid = "#FFFFFF", high = "#FF00FF")
  177. DotPlot(Karasnow1,features=c("ones","twos","threes","fours","fives","sixes"),group.by="tree.ident",scale.by="size") + scale_colour_gradient2(low = "#00FFFF", mid = "#FFFFFF", high = "#FF00FF")
  178. ```
  179. #Load Coverdell dataset
  180. ```{r}
  181. #load snucseq data
  182. ChatNamb.data=read.table(file = "~/Desktop/Lab/Projects/Namb data/Sequencing/ChatNAmb_dge.tsv", header = TRUE, row.names = 1)
  183. ChatNAmb <- CreateSeuratObject(counts = ChatNamb.data, min.cells = 3, min.features = 2000, project = "ChatNAmb")
  184. ChatNAmb <- NormalizeData(object = ChatNAmb, normalization.method = "LogNormalize")
  185. # Visualize QC metrics as a violin plot
  186. VlnPlot(ChatNAmb, features = c("nFeature_RNA", "nCount_RNA"), ncol = 3)
  187. # Identify the 10 most highly variable genes
  188. top10 <- head(VariableFeatures(ChatNAmb), 10)
  189. # plot variable features with and without labels
  190. ChatNAmb <- FindVariableFeatures(ChatNAmb, selection.method = "vst", nfeatures = 2000)
  191. plot1 <- VariableFeaturePlot(ChatNAmb)
  192. plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
  193. CombinePlots(plots = list(plot1, plot2))
  194. all.genes <- rownames(ChatNAmb)
  195. ChatNAmb <- ScaleData(ChatNAmb, features = all.genes)
  196. ChatNAmb <- RunPCA(ChatNAmb, features = VariableFeatures(object = ChatNAmb))
  197. # Examine and visualize PCA results a few different ways
  198. print(ChatNAmb[["pca"]], dims = 1:5, nfeatures = 5)
  199. VizDimLoadings(ChatNAmb, dims = 1:2, reduction = "pca")
  200. DimPlot(ChatNAmb, reduction = "pca")
  201. DimHeatmap(ChatNAmb, dims = 1, cells = 500, balanced = TRUE)
  202. DimHeatmap(ChatNAmb, dims = 1:15, cells = 500, balanced = TRUE)
  203. ElbowPlot(ChatNAmb)
  204. ChatNAmb <- FindNeighbors(ChatNAmb, dims = 1:8)
  205. ChatNAmb <- FindClusters(ChatNAmb, resolution = 0.5)
  206. head(Idents(ChatNAmb), 5)
  207. ChatNAmb <- RunUMAP(ChatNAmb, dims = 1:10)
  208. DimPlot(ChatNAmb, reduction = "umap")
  209. ChatNAmb.markers <- FindAllMarkers(ChatNAmb, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
  210. ChatNAmb.markers %>% group_by(cluster) %>% top_n(n = 2, wt = avg_logFC)
  211. # you can plot raw counts as well
  212. VlnPlot(ChatNAmb, features = c("Vipr2","Slc17a6" , "Crhr2", "Slc6a5", "Adcyap1"), slot = "counts", log = TRUE)
  213. VlnPlot(ChatNAmb, features = c("Vipr2", "Tbx3", "Crhr2", "Col1a2", "Adcyap1", "Calca", "Sox5", "Uts2", "Chat", "Phox2b", "Nos1", "Htr3a", "Npy2r", "Trhr", "Kcnj14", "Edn1", "Edn3", "Oprm1"), slot = "counts")
  214. VlnPlot(ChatNAmb, features = c("Vipr2", "Tbx3"), slot = "counts", log = TRUE)
  215. FeaturePlot(ChatNAmb, features = c("Vipr2", "Tbx3", "Crhr2", "Col1a2", "Adcyap1", "Calca", "Sox5", "Uts2", "Chat", "Phox2b", "Nos1", "Htr3a", "Npy2r", "Trhr", "Kcnj14", "Edn1", "Edn3", "Oprm1"))
  216. top10 <- ChatNAmb.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
  217. DoHeatmap(ChatNAmb, features = top10$gene) + NoLegend()
  218. ```
  219. #Chatnamb neurons
  220. ```{r}
  221. VlnPlot(ChatNAmb, features = c("Vipr2","Slc17a6" , "Crhr2", "Slc6a5", "Adcyap1"), slot = "counts", log = TRUE)
  222. new.cluster.ids <- c("n01.Vipr2","n02.Slc17a6/Chat","n03.Crhr2","n04.Slc6a5/Chat","n05.Adcyap1")
  223. names(new.cluster.ids) <- levels(ChatNAmb)
  224. ChatNAmb <- RenameIdents(ChatNAmb, new.cluster.ids)
  225. DimPlot(ChatNAmb, reduction = "umap", label = TRUE, pt.size = 2) + NoLegend()
  226. Idents(ChatNamb)=ChatNAmb$celltype
  227. # subset relevant cell types from snucseq data data object
  228. Chat_Nambonly_SeuratObject = subset(ChatNAmb,idents=c("n01.Vipr2","n03.Crhr2","n05.Adcyap1"))
  229. Chat_Nambonly_SeuratObject <- NormalizeData(Chat_Nambonly_SeuratObject, normalization.method = "LogNormalize", scale.factor = 10000)
  230. Chat_Nambonly_SeuratObject <- FindVariableFeatures(Chat_Nambonly_SeuratObject, selection.method = "vst", nfeatures = 2000)
  231. top10 <- head(VariableFeatures(Chat_Nambonly_SeuratObject), 10)
  232. # plot variable features with and without labels
  233. plot1 <- VariableFeaturePlot(Chat_Nambonly_SeuratObject)
  234. plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
  235. LabelPoints(plot = plot1, points = top10, repel = TRUE, xnudge = 0, ynudge = 0)
  236. Chat_Nambonly_SeuratObject <- ScaleData(Chat_Nambonly_SeuratObject, features = gene_List)
  237. Chat_Nambonly_SeuratObject <- RunPCA(Chat_Nambonly_SeuratObject, features = VariableFeatures(object = Chat_Nambonly_SeuratObject))
  238. # Examine and visualize PCA results a few different ways
  239. print(Chat_Nambonly_SeuratObject[["pca"]], dims = 1:5, nfeatures = 5)
  240. VizDimLoadings(Chat_Nambonly_SeuratObject, dims = 1:2, reduction = "pca")
  241. DimPlot(Chat_Nambonly_SeuratObject, reduction = "pca")
  242. DimHeatmap(Chat_Nambonly_SeuratObject, dims = 1, cells = 400, balanced = TRUE)
  243. DimHeatmap(Chat_Nambonly_SeuratObject, dims = 1:12, cells = 400, balanced = TRUE)
  244. ElbowPlot(Chat_Nambonly_SeuratObject)
  245. ```
  246. ```{r}
  247. x <- 10
  248. Chat_Nambonly_SeuratObject <- FindNeighbors(Chat_Nambonly_SeuratObject, dims = 1:x)
  249. Chat_Nambonly_SeuratObject <- FindClusters(Chat_Nambonly_SeuratObject, resolution = 0.25)
  250. head(Idents(Chat_Nambonly_SeuratObject), 5)
  251. length(WhichCells(Chat_Nambonly_SeuratObject))
  252. ##### Visualize clustering
  253. Chat_Nambonly_SeuratObject <- RunUMAP(Chat_Nambonly_SeuratObject, dims = 1:x)
  254. ##### Reorder clusters by relatedness
  255. Chat_Nambonly_SeuratObject=BuildClusterTree(Chat_Nambonly_SeuratObject,reorder=TRUE, reorder.numeric = TRUE)
  256. PlotClusterTree(Chat_Nambonly_SeuratObject)
  257. DimPlot(Chat_Nambonly_SeuratObject, reduction = "umap", label = T)
  258. VlnPlot(Chat_Nambonly_SeuratObject, features = c("Vipr2", "Crhr2","Adcyap1"), slot = "counts", log = TRUE)
  259. ```
  260. # perform label transfer
  261. ```{r}
  262. DefaultAssay(namb_all.int)<- "integrated"
  263. DefaultAssay(Chat_Nambonly_SeuratObject)<- "RNA"
  264. anchors_namb <- FindTransferAnchors(reference = namb_all.int, query = Chat_Nambonly_SeuratObject,dims = 1:30)
  265. predictions <- TransferData(anchorset = anchors_namb, refdata = namb_all.int$annotationsnumeric, dims = 1:30)
  266. Chat_Nambonly_SeuratObject <- AddMetaData(Chat_Nambonly_SeuratObject, metadata = predictions)
  267. ```
  268. ```{r}
  269. DotPlot(Chat_Nambonly_SeuratObject, features = c("Vipr2", "Adcyap1", "Crhr2"))
  270. new.cluster.ids <- c("n01.Vipr2","n02.Crhr2","n03.Adcyap1")
  271. names(new.cluster.ids) <- levels(Chat_Nambonly_SeuratObject)
  272. Chat_Nambonly_SeuratObject <- RenameIdents(Chat_Nambonly_SeuratObject, new.cluster.ids)
  273. DimPlot(Chat_Nambonly_SeuratObject, reduction = "umap", label = TRUE, pt.size = 2) + NoLegend()
  274. Chat_Nambonly_SeuratObject$annotations=Idents(Chat_Nambonly_SeuratObject)
  275. new.cluster.ids_numeric <- c("01","02","03")
  276. names(new.cluster.ids_numeric) <- levels(Chat_Nambonly_SeuratObject)
  277. Chat_Nambonly_SeuratObject <- RenameIdents(Chat_Nambonly_SeuratObject, new.cluster.ids_numeric)
  278. Chat_Nambonly_SeuratObject$annotationsnumeric=Idents(Chat_Nambonly_SeuratObject)
  279. DimPlot(Chat_Nambonly_SeuratObject, reduction = "umap", label = TRUE, pt.size = 2) + NoLegend()
  280. DotPlot(Chat_Nambonly_SeuratObject, features = c("Vipr2", "Adcyap1", "Crhr2"))
  281. ```
  282. #Create Figure:
  283. ```{r}
  284. pids = as.integer(as.matrix(Chat_Nambonly_SeuratObject$predicted.id))
  285. ones = as.integer(pids==1)
  286. Chat_Nambonly_SeuratObject$ones = ones
  287. twos = as.integer(pids==2)
  288. Chat_Nambonly_SeuratObject$twos = twos
  289. threes = as.integer(pids==3)
  290. Chat_Nambonly_SeuratObject$threes = threes
  291. fours = as.integer(pids==4)
  292. Chat_Nambonly_SeuratObject$fours = fours
  293. fives = as.integer(pids==5)
  294. Chat_Nambonly_SeuratObject$fives = fives
  295. sixes = as.integer(pids==6)
  296. Chat_Nambonly_SeuratObject$sixes = sixes
  297. ```
  298. ```{r}
  299. ct_factor1_chat = factor(Chat_Nambonly_SeuratObject$tree.ident)
  300. ct_factor1_chat = factor(ct_factor1_chat,levels(ct_factor1_chat)[rev(c(6,5,4,3,2,1))])
  301. Chat_Nambonly_SeuratObject$tree.ident <- ct_factor1_chat
  302. DotPlot(Chat_Nambonly_SeuratObject,features=c("ones","twos","threes","fours","fives","sixes"),group.by="tree.ident",scale.by="size") + scale_colour_gradient2(low = "#00FFFF", mid = "#FFFFFF", high = "#FF00FF")
  303. ```

Reference_Query_Mapping .Rmd, under CC-BY-4.0 · at the source

Overview

Authors: Maira Jalil1, Mary Katherine MacMillan2, Tatiana C. Coverdell3, Veronica A. Gutierrez1, Maisie E. Crook1, Travis J. Heinrichs1, Ashlyn Dever1, Katie Shouse Cox1, Daniel S. Stornetta3, Yoko B. Wang4,5, Dana C. Schwalbe1, Adriana Singh1, Lane VanderVoort1, Carie R. Boychuk4,5, Stephen B. G. Abbott2,3, John N. Campbell1,2
  1. Department of Biology, University of Virginia, Charlottesville, Virginia 22904
  2. Neuroscience Graduate Program, University of Virginia, Charlottesville, Virginia 22903
  3. Department of Pharmacology, University of Virginia, Charlottesville, Virginia 22903
  4. Dalton Cardiovascular Research Center, University of Missouri, Columbia, Missouri 65211
  5. Department of Pathobiology and Integrative Biomedical Sciences, College of Veterinary Medicine, University of Missouri, Columbia, Missouri, 65211
Institutions: University of Virginia (United States); Missouri College (United States); University of Missouri (United States)
Dates: received 5 March 2026; accepted 8 September 2026; published online 21 October 2026; in print 21 October 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1523/jneurosci.0398-26.2026 · PMID 42736025 · PMCID PMC13689988 · OpenAlex W7212851585
Open access: hybrid, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: genetics / omics (modality), mouse (organism), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, Evoked potentials
Keywords: cardiovagal neurons, diving reflex, heart rate regulation, nucleus ambiguus, parasympathetic nervous system, single-cell RNA-sequencing, vagus nerve
MeSH: Heart Rate*, Medulla Oblongata*, Neurons*, Animals, Female, Male, Mice, Mice, Inbred C57BL, Receptors, Neuropeptide Y, Vagus Nerve (* major topic)
Journal subjects: Systems/Circuits
Topic: Heart Rate Variability and Autonomic Control (Cardiology and Cardiovascular Medicine, Medicine), according to OpenAlex
Funding: HHS | NIH | National Heart, Lung, and Blood Institute (NHLBI) (HL148004, HL158187, HL153916); American Diabetes Association (1-18-INI-14); UV | Office of Vice President for Research, University of Virginia (VPR) (3 Cavaliers award); UVA (iPRIME fellowship); HHS | NIH | National Institute of Diabetes and Digestive and Kidney Diseases (NIDDK) (DK147947)
Citations: cited by 2 papers (Europe PMC); 83 references in the paper
Research resources: AddGene plasmid #28306 RRID:Addgene_28306, the Genome Analysis and Technology Core RRID:SCR_018883

Abstract

The nucleus ambiguus (nAmb) provides parasympathetic control of cardiorespiratory functions as well as motor control of the upper airways and esophagus. A subset of nAmb neurons innervates the heart through the vagus nerve to control cardiac function at rest and during key autonomic reflexes such as the mammalian diving reflex. Yet, how these cardiovagal nAmb neurons differ from other nAmb neurons in the adult brain remains unclear. We therefore classified adult male and female mouse nAmb neurons molecularly, anatomically, and functionally. First, our integrated analysis of single-nucleus RNA-sequencing data predicted multiple molecular subtypes of nAmb neurons. Mapping the axon projections of one nAmb neuron subtype, Npy2r-expressing nAmb neurons, showed that they innervate cardiac ganglia but not the upper airways or esophagus. Chemogenetically stimulating Npy2r + nAmb neurons robustly decreased heart rate through peripheral muscarinic acetylcholine receptors. Finally, voluntary underwater diving decreases heart rate and activates Npy2r + nAmb neurons, consistent with a cardiovagal function for this nAmb subtype. These results together reveal the molecular organization of nAmb neurons and its control of the heart rate.

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

Zenodo 22864368

License: CC-BY-4.0
State: the link answers, verified on 24 October 2026
Evidence: files inventoried
Languages: R (5)
Size: 9 files, 5 scripts
Software Heritage: not checked
Found in: “Data Availability”
Holds: 5 notebooks
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (5 files), cowplot (4 files), ggplot2 (4 files), patchwork (4 files), Seurat (4 files), pheatmap (2 files)
Availability: 1 check, the latest on 24 October 2026: the link answers (HTTP 200)
  • 24 October 2026: the link answers (HTTP 200)
5 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;
  • 5 scripts, each with its path and the digest of its content;
  • 5 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

The raw and processed snRNA-seq data and metadata reported in this paper are available at GEO accession number GSE348348. A user-friendly interface for visualizing and exploring the fully processed snRNA-seq data is available at the Broad Institute Single Cell Portal at https://singlecell.broadinstitute.org/single_cell/study/SCP3861/molecular-disambiguation-of-heart-rate-control-by-the-nucleus-ambiguus. The code used for processing, clustering, and visualizing the clustered snRNA-seq data and the clustering data files are available through Zenodo at https://zenodo.org/records/22864368. Any additional information required to reanalyze the data reported in this paper is available from the lead contact upon reasonable request.

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

Recorded: type, language, journal, volume, issue, pages, dates, 16 authors, 7 keywords, 10 MeSH terms, 5 funders, 81 references, 2 RRIDs.

Cite

This paper

Jalil, M., MacMillan, M. K., Coverdell, T. C., Gutierrez, V. A., Crook, M. E., Heinrichs, T. J., Dever, A., Cox, K. S., Stornetta, D. S., Wang, Y. B., Schwalbe, D. C., Singh, A., VanderVoort, L., Boychuk, C. R., Abbott, S. B. G., & Campbell, J. N. (2026). Molecular Disambiguation of Heart Rate Control by the Nucleus Ambiguus. The Journal of neuroscience : the official journal of the Society for Neuroscience, 46(42), e0398262026. https://doi.org/10.1523/jneurosci.0398-26.2026

BibTeX

@article{jalil2026molecular,
author = {Jalil, Maira and MacMillan, Mary Katherine and Coverdell, Tatiana C. and Gutierrez, Veronica A. and Crook, Maisie E. and Heinrichs, Travis J. and Dever, Ashlyn and Cox, Katie Shouse and Stornetta, Daniel S. and Wang, Yoko B. and Schwalbe, Dana C. and Singh, Adriana and VanderVoort, Lane and Boychuk, Carie R. and Abbott, Stephen B. G. and Campbell, John N.},
title = {{Molecular Disambiguation of Heart Rate Control by the Nucleus Ambiguus}},
journal = {The Journal of neuroscience : the official journal of the Society for Neuroscience},
year = {2026},
month = oct,
volume = {46},
number = {42},
pages = {e0398262026},
publisher = {Society for Neuroscience},
issn = {0270-6474},
doi = {10.1523/jneurosci.0398-26.2026},
url = {https://doi.org/10.1523/jneurosci.0398-26.2026},
pmid = {42736025},
pmcid = {PMC13689988}
}

RIS

TY - JOUR
AU - Jalil, Maira
AU - MacMillan, Mary Katherine
AU - Coverdell, Tatiana C.
AU - Gutierrez, Veronica A.
AU - Crook, Maisie E.
AU - Heinrichs, Travis J.
AU - Dever, Ashlyn
AU - Cox, Katie Shouse
AU - Stornetta, Daniel S.
AU - Wang, Yoko B.
AU - Schwalbe, Dana C.
AU - Singh, Adriana
AU - VanderVoort, Lane
AU - Boychuk, Carie R.
AU - Abbott, Stephen B. G.
AU - Campbell, John N.
TI - Molecular Disambiguation of Heart Rate Control by the Nucleus Ambiguus
T2 - The Journal of neuroscience : the official journal of the Society for Neuroscience
J2 - J Neurosci
PY - 2026
DA - 2026/10/21
VL - 46
IS - 42
SP - e0398262026
SN - 0270-6474
PB - Society for Neuroscience
DO - 10.1523/jneurosci.0398-26.2026
UR - https://doi.org/10.1523/jneurosci.0398-26.2026
LA - en
ER -

CSL-JSON

{
"id": "10.1523/jneurosci.0398-26.2026",
"type": "article-journal",
"title": "Molecular Disambiguation of Heart Rate Control by the Nucleus Ambiguus",
"container-title": "The Journal of neuroscience : the official journal of the Society for Neuroscience",
"author": [
{
"family": "Jalil",
"given": "Maira"
},
{
"family": "MacMillan",
"given": "Mary Katherine"
},
{
"family": "Coverdell",
"given": "Tatiana C."
},
{
"family": "Gutierrez",
"given": "Veronica A."
},
{
"family": "Crook",
"given": "Maisie E."
},
{
"family": "Heinrichs",
"given": "Travis J."
},
{
"family": "Dever",
"given": "Ashlyn"
},
{
"family": "Cox",
"given": "Katie Shouse"
},
{
"family": "Stornetta",
"given": "Daniel S."
},
{
"family": "Wang",
"given": "Yoko B."
},
{
"family": "Schwalbe",
"given": "Dana C."
},
{
"family": "Singh",
"given": "Adriana"
},
{
"family": "VanderVoort",
"given": "Lane"
},
{
"family": "Boychuk",
"given": "Carie R."
},
{
"family": "Abbott",
"given": "Stephen B. G."
},
{
"family": "Campbell",
"given": "John N."
}
],
"container-title-short": "J Neurosci",
"volume": "46",
"issue": "42",
"page": "e0398262026",
"DOI": "10.1523/jneurosci.0398-26.2026",
"PMID": "42736025",
"PMCID": "PMC13689988",
"ISSN": "0270-6474",
"publisher": "Society for Neuroscience",
"URL": "https://doi.org/10.1523/jneurosci.0398-26.2026",
"language": "en",
"issued": {
"date-parts": [
[
2026,
10,
21
]
]
}
}

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.2022.110962 [code]
Genetic encoding of an esophageal motor circuit.
Journal: Cell reports
In common: tidyverse, genetics / omics, 19 references, 2 authors
[2] doi:10.1016/j.isci.2024.109137
Dorsal motor vagal neurons can elicit bradycardia and reduce anxiety-like behavior.
Journal: iScience
In common: 9 references, 2 authors
[3] doi:10.1038/s41586-022-04760-8
Molecularly defined circuits for cardiovascular and cardiopulmonary control.
Journal: Nature
In common: genetics / omics, mouse, 7 references
[4] doi:10.1101/2025.05.11.653249 [code]
NodoMap: a spatio-cellular map of the mouse nodose ganglia
Journal: bioRxiv (preprint)
In common: pheatmap, Seurat, patchwork, 3 other tools, genetics / omics, mouse, cellular / molecular, 4 references
[5] doi:10.1016/j.cpblue.2026.100072 [code]
NodoMap: A single-cell and spatial transcriptomic atlas of the mouse nodose ganglion.
Journal: Cell press blue
In common: pheatmap, Seurat, patchwork, 3 other tools, genetics / omics, mouse, 4 references
[6] doi:10.1038/s41586-026-10490-y [code]
Lineage and organ signals sequentially build organ intrinsic nervous systems.
Journal: Nature
In common: Seurat, patchwork, cowplot, 2 other tools, mouse, 4 references
[7] doi:10.1016/j.celrep.2025.116507 [code]
Molecular and functional asymmetry in Cckar-expressing vagal sensory neurons.
Journal: Cell reports
In common: Seurat, patchwork, cowplot, 2 other tools, genetics / omics, mouse, cellular / molecular, 3 references
[8] doi:10.1016/j.isci.2024.110549 [code]
Neuromodulatory co-expression in cardiac vagal motor neurons of the dorsal motor nucleus of the vagus.
Journal: iScience
In common: pheatmap, Seurat, cowplot, 2 other tools, 2 references
[9] doi:10.1016/j.isci.2026.116337 [code]
Multimodal atlas of single neuron metabolic electrophysiological coupling uncovers circadian rewiring.
Journal: iScience
In common: pheatmap, Seurat, patchwork, 2 other tools, genetics / omics, cellular / molecular, 3 references
[10] doi:10.1371/journal.pcbi.1014573 [code]
Cell-type-specific m1A dynamics are associated with microglial phenotypic transition and neuronal metabolic adaptation during spinal cord injury.
Journal: PLoS computational biology
In common: pheatmap, Seurat, patchwork, 3 other tools, genetics / omics, mouse, cellular / molecular, 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.

Add the badge to the code's README

OSCR: the badge of this paper

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

Markdown
<!-- oscr-badge:start -->
[![OSCR](https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026.svg)](https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026.svg
   :target: https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026"><img src="https://openscicode.org/badge/doi/10.1523/jneurosci.0398-26.2026.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

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

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.

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

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

Report a reproduction failure (signed in)

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