OSCR

A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan Aurelia coerulea.

Code ↔ Paper

16 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 16 matches
  1. [1] § Materials and methods › Phylogenetic trees ↔ Supplement.RMD, lines 385–395 · score 0.98 · Branchiostoma floridae, Caenorhabditis elegans, Cassiopea xamachana, Exaiptasia diaphana, Homo sapiens, Hydractinia symbiolongicarpus
  2. [2] § Materials and methods › Single-cell analysis ↔ Linketal.Ac.analyse.alldata_REVISED.R, lines 391–473 · score 0.87 · k.param, annoy.metric, FindNeighbors, alldata revised, linketal ac analyse, RunPCA
  3. [3] § Results › Cnidocytes highlight conserved features of cnidogenesis between anthozoans and scyphozoans ↔ Linketal.Ac.generate.figures_REVISED.R, lines 407–493 · score 0.82 · SoxA, gfi1b, SoxC, ZN431, fos, prdm13
  4. [4] § Materials and methods › Single-cell analysis ↔ Linketal.Ac.Nv.OMA_REVISED.R, lines 222–263 · score 0.81 · k.param, annoy.metric, FindNeighbors, UMAP, euclidean, Seurat
  5. [5] § Results › Shared core contractile machinery between smooth and striated muscles indicates a gradual maturation of smooth fibers into the striated phenotype ↔ Linketal.Ac.generate.figures_REVISED.R, lines 540–604 · score 0.80 · myosin light chain, myosin regulatory, protein gene, smooth muscle, kinase, melc
  6. [6] § Materials and methods › Single-cell analysis ↔ Linketal.Ac.Nv.OMA_REVISED.R, lines 1035–1078 · score 0.76 · FindIntegrationAnchors, IntegrateData, NormalizeData, RunPCA, Seurat, variable
  7. [7] § Results › Aurelia neural complement reveals two neuro-secretory classes with similarities to anthozoan neuroglandular populations ↔ Supplement.RMD, lines 335–357 · score 0.76 · atoh8a, atoh8b, atoh8c, atoh8d, neurons, Nematostella
  8. [8] § Results › Principles of muscle contraction and sub functionalization of paralogs ↔ Linketal.Ac.generate.figures_REVISED.R, lines 540–604 · score 0.70 · myosin light chain, smooth muscle, tpm, tropomyosin, MELC, kinase
  9. [9] § Results › Transcription factor family expansions may be related to the generation of novel medusa cell types ↔ Supplement.RMD, lines 335–357 · score 0.67 · atoh8b, atoh8c, atoh8d, neuron, family, Nematostella
  10. [10] § Results › Transcription factor family expansions may be related to the generation of novel medusa cell types ↔ Linketal.Ac.Nv.OMA_REVISED.R, lines 1121–1159 · score 0.64 · otx1c, novel cell, expansion, myc, outer, putative
  11. [11] § Results › Transition to free-swimming medusa is accompanied by increased cell type complement ↔ Supplement.RMD, lines 234–265 · score 0.61 · gastric filaments, ashC, Digestive gland cell, localized, Mucin, chitinase
  12. [12] § Results › Cnidocytes highlight conserved features of cnidogenesis between anthozoans and scyphozoans ↔ Linketal.Ac.Nv.OMA_REVISED.R, lines 412–464 · score 0.60 · GFI1B, SoxC, jun, myc1, nv, OMA
  13. [13] § Results › Single-cell transcriptomic atlas reveals distinct cellular subtypes associated with the formation of medusa in the moon jelly ↔ Supplement.RMD, lines 385–395 · score 0.60 · class n1, class n2, Hydra vulgaris, ins, human, POU4
  14. [14] § Results › Aurelia neural complement reveals two neuro-secretory classes with similarities to anthozoan neuroglandular populations ↔ Linketal.Ac.generate.figures_REVISED.R, lines 495–538 · score 0.54 · ins1a, ashA, pRFa, voltage, embedding, pou4
  15. [15] § Results › Muscle profiles correspond to smooth and striated fiber types ↔ Linketal.Ac.Nv.OMA_REVISED.R, lines 1121–1159 · score 0.53 · otx1a, cPATH, otx2, Striated muscle, gastrodermis, Aurelia
  16. [16] § Results › Transition to free-swimming medusa is accompanied by increased cell type complement ↔ Linketal.Ac.generate.figures_REVISED.R, lines 671–760 · score 0.52 · mucin gland, digestive gland, inner, partition, outer, gastrodermis

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 · 397 lines · 21 KB · no license · 5 matches

  1. ---
  2. title: "Aurelia Atlas | Supplementary Data Figures"
  3. output: html_document
  4. ---
  5. ```{r, setup, include=FALSE}
  6. # Global chunk options
  7. knitr::opts_chunk$set(
  8. warning = FALSE,
  9. message = FALSE,
  10. echo = FALSE,
  11. fig.width = 12
  12. )
  13. setwd("/lisc/data/scratch/molevo/agcole/R/Aurelia_51k/Ac_manuscript_revision_ACOE")
  14. #load libraries:
  15. library(tinytex,quietly = T)
  16. library(Seurat,quietly=T)
  17. library(RColorBrewer,quietly=T)
  18. library(patchwork,quietly=T)
  19. library(ggplot2,quietly=T)
  20. library(pals,quietly=T)
  21. library(readxl,quietly=T)
  22. library(SeuratWrappers,quietly=T)#,lib.loc = '/lisc/data/scratch/molevo/agcole/R/libs/course24/')
  23. library(tidyr,quietly=T)
  24. library(dplyr,quietly = T)
  25. load (file='/lisc/data/scratch/molevo/agcole/R/Aurelia_51k/ac.kostyaPlus/ACOE.genes.RData')
  26. if(!exists('Ac.Alldata'))
  27. load(file='Ac.Alldata.Robj')
  28. if(!exists('data1.subsets'))
  29. load(file='Ac.subsets.RObj')
  30. genes=genes.ac
  31. gene.cp = c('lightgrey', rev(brewer.pal(11 , "Spectral")))
  32. clust.cp.separate = unique (c(cols25(25), glasbey(32), alphabet(26)))
  33. clust.cp.graded = unique(c(stepped3(20), stepped2(20), stepped(20)))
  34. LibCP = c(stepped3(3),stepped(20)[c(13:16)],stepped(20)[c(11,9)],stepped3(20)[c(5,6)],'red',stepped(20)[c(1,2)],stepped2(20)[c(17,18)])
  35. Ac.Alldata$orig.ident=as.factor(Ac.Alldata$orig.ident)
  36. names(LibCP)=levels(as.factor(Ac.Alldata$orig.ident))
  37. LibCP.stages=LibCP[c(1,9,11,16)]
  38. names(LibCP.stages)=c('polyp','strobila','ephyra','medusa')
  39. neur.cp=rev(c('wheat3','burlywood',stepped(8)[7:8],"#ff7f00",stepped3(8)[5:7],'orange','chocolate','darkkhaki',stepped(12)[9:11],"#33a02c",'green3','forestgreen','darkgreen','darkolivegreen',(stepped2(8)[5:8])))
  40. all.clusters.cp=c("skyblue","#1F78C8","darkblue","seagreen3","#FFD700" ,'goldenrod3','goldenrod1','yellow','goldenrod4',"grey",brewer.greys(14)[6:9],"#ff0000",brewer.reds(6)[3:6],neur.cp,"#FB6496",brewer.rdpu(20)[c(6,8,10,14,17,12,18)],'violet',"#6A33C2", brewer.purples(10)[4:10],'black')
  41. names(all.clusters.cp)=levels(SetIdent(Ac.Alldata,value='ID.separate'))
  42. names(neur.cp)=levels(data1.subsets$neural)
  43. ```
  44. **Aurelia Cell Atlas:**
  45. Supplementary materials in support of the conclusions drawn in Link et al. (2026), PLOS Biology.
  46. <br> <br>
  47. **A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan *Aurelia coerulea* **
  48. <br><br>
  49. Oliver Link1, Stefan M. Jahnel2, Kristin Janicek1, Daniel Guerguerian1, Johanna Kraus1, Juan Daniel Montenegro1, Bob Zimmerman1, Brittney Wick3, Konstantin Khalturin4, Alison G. Cole1, and Ulrich Technau1,5
  50. <br> <br> <br>
  51. ### **Figure S1: Life cycle: medusa genes**
  52. ```{r}
  53. print(
  54. VlnPlot(Ac.Alldata,c('nFeature_RNA','nCount_RNA'), group.by = 'lifehistory', cols= LibCP.stages)+
  55. plot_annotation(tag_levels = "A")&ylab('counts'))
  56. metadata<-cbind(Ac.Alldata$nFeature_RNA,Ac.Alldata$nCount_RNA)
  57. colnames(metadata)<-c('nFeature_RNA','nCount_RNA')
  58. #xlsx::write.xlsx(metadata,'S4_raw.xlsx',sheetName='FigS1AB',col.names = T,row.names = T,append=T)
  59. ```
  60. ```{r echo=FALSE}
  61. medusa.specific = read.csv(file='DS1.1a.csv')
  62. g=medusa.specific$gene_short_name
  63. # sort gene.plot according to clusters with dist and hclust to get gene orders:
  64. data1<-ScaleData(Ac.Alldata,features=g,split.by = 'lifehistory',assay='RNA',verbose = F)
  65. m=AverageExpression(data1,slot = 'scale.data',assay='RNA',features=g)
  66. h=hclust(dist(m$RNA),method='ward.D2')
  67. #FigS1B: All medusa genes ----
  68. x=DotPlot(Ac.Alldata,assay='RNA',features=rev(g[h$order]),scale.by='size', dot.min = 0.001,group.by = 'ID.separate', col.min = 0,cols = c('lightgrey','red'))+RotatedAxis() +FontSize(10,5)+ labs(title='Medusa-specific genes',subtitle='all genes')+theme(legend.position = 'bottom',legend.text = (element_text(size=8)),panel.grid = element_line('grey80',linewidth = 0.2))+coord_flip()
  69. specificity.index2= x$data %>%
  70. group_by(id) %>%
  71. filter(pct.exp >0 & avg.exp.scaled >=0)%>%
  72. count(pct.exp >0)
  73. summary.medusa.exp=as.data.frame(levels(Ac.Alldata$ID.separate))
  74. summary.medusa.exp$n = 0L
  75. names(summary.medusa.exp)[1] = 'id'
  76. summary.medusa.exp$n[summary.medusa.exp$id %in% specificity.index2$id]=specificity.index2$n
  77. # xlsx::write.xlsx(summary.medusa.exp$n,'S4_raw.xlsx',sheetName='FigS1C',col.names = T,row.names = T,append=T)
  78. ```
  79. ```{r}
  80. par(mar = c(10, 4.1, 4.1, 2.1))
  81. barplot(summary.medusa.exp$n,
  82. names.arg = summary.medusa.exp$id,
  83. las = 2,
  84. cex.names = 1,
  85. col = all.clusters.cp[summary.medusa.exp$id],
  86. ylim=c(0,500),
  87. ylab='counts')
  88. title("All medusa.genes, detection / cluster")
  89. mtext("C",
  90. side = 3, # top
  91. adj = -0.05, # left align
  92. line = 2,
  93. cex = 1.5,
  94. font = 2)
  95. ```
  96. Figure S1: **A**) Total number of genes (nFeatures_RNA) and **B**) molecules (nCounts_RNA) recovered from all cells captured across life cycle stages **C**) Distribution of medusa-specific genes across all cell types. The set of all medusa-specific genes were considered. For every cluster the gene is counted as expressed if reads are detected and expression value is above the average expression across all identities.
  97. <br> <br> <br> <br>
  98. ### **Figure S2: Life cycle: differentially expressed genes**
  99. ```{r fig.height=24, fig.width=12}
  100. load(file='markers.lifehistory.RObj')
  101. l<-round(length(unique(life.history.markers$gene))/2)
  102. goi=(unique(life.history.markers$gene))
  103. S2A<-DotPlot(SetIdent(Ac.Alldata,value='lifehistory'),assay='RNA',features=rev(goi[1:l]),split.by = 'lifehistory',cols = LibCP.stages,scale.by = 'radius',
  104. col.min = 0,
  105. dot.scale = 5)+DotPlot(SetIdent(Ac.Alldata,value='lifehistory'),assay='RNA',features=rev(goi[c(l+1:length(goi))]),split.by = 'lifehistory',cols = LibCP.stages,scale.by = 'radius',
  106. col.min = 0,
  107. dot.scale = 5)&
  108. RotatedAxis()+FontSize(10,6)&theme(panel.grid = element_line(linewidth = 0.2,colour = 'grey90'),legend.title = element_text(size = 8),legend.text = element_text(size=6),legend.position = 'bottom')&coord_flip()
  109. #xlsx::write.xlsx(S2A@data,'S4_raw.xlsx',sheetName='FigS2A',col.names = T,row.names = T,append=T)
  110. S2A& plot_annotation(tag_levels = list(c("A",'')))
  111. ```
  112. ```{r fig.height=12, fig.width=12}
  113. load(file='lifehistory.topGO.RObj')
  114. S2BE=rbind(topGO.lifehistory[[1]]@data,topGO.lifehistory[[2]]@data,topGO.lifehistory[[3]]@data,topGO.lifehistory[[4]]@data)
  115. #xlsx::write.xlsx(S2BE,'S4_raw.xlsx',sheetName='FigS2B_E',col.names = T,row.names = T,append=T)
  116. topGO.lifehistory[[1]]+topGO.lifehistory[[2]]+topGO.lifehistory[[3]]+topGO.lifehistory[[4]]&
  117. plot_annotation(tag_levels = list(c("B","C","D","E")))&
  118. theme(
  119. plot.tag = element_text(face = "bold")
  120. )
  121. ```
  122. **Fig. S2: Differential gene usage across lifecycle. A**) Dotplot of the set of deferentially expressed genes across life cycle stages. Plot split in two panels for increased legibility. **B:E**) TOP go evaluation of all differentially expressed genes across life cycle stages. See supplementary Data S1.2 for full gene lists.
  123. <br> <br> <br> <br>
  124. ### **Figure S3: Full cell state complement**
  125. ```{r fig.height=8}
  126. DimPlot(Ac.Alldata,cols=all.clusters.cp,group.by = 'ID.separate',split.by = 'lifehistory')&NoAxes() &
  127. theme(legend.position = "bottom")&
  128. plot_annotation(tag_levels = list("A"))
  129. ```
  130. **Fig. S3: Full cell state complement**. UMAP representation of all cluster identities, separated by life cycle stage.
  131. <br> <br> <br> <br>
  132. ### **Figure S4: Digestive Gland**
  133. ```{r fig.height=5}
  134. data1a<-SetIdent(Ac.Alldata,value='ID.separate')
  135. data1<-data1.subsets$gland.dig
  136. ids.cluster.library = as.data.frame(table(Idents(data1), [email hidden]$lifehistory.tissue))
  137. colnames(ids.cluster.library) = c('ID','Stage','CellCount')
  138. #xlsx::write.xlsx(ids.cluster.library,'S4_raw.xlsx',sheetName='FigS4C',col.names = T,row.names = T,append=T)
  139. ids<-c(52:59)
  140. coi=NULL
  141. for (i in 1:length(ids))
  142. coi[[i]]=WhichCells(data1a,idents=levels(data1a)[ids[i]])
  143. names(coi)=levels(data1a)[ids]
  144. p1<-(DimPlot(data1a,cells.highlight=(coi),cols.highlight = rev(clust.cp.separate[1:8]))+NoAxes()+NoLegend()+labs(subtitle = 'Alldata: Digestive cell subset'))+
  145. (DimPlot(data1,cols=clust.cp.separate[1:8],label=T)+NoAxes()+labs(subtitle = 'Digestive cell subtypes'))+
  146. (ggplot(ids.cluster.library, aes(fill=ID, y= (CellCount),
  147. x=Stage)) +
  148. geom_bar(mapping =aes(fill=ID, y= (CellCount),
  149. x=(Stage)),
  150. position="stack", stat="identity", width = 0.75)+
  151. scale_fill_manual(values = c(clust.cp.separate[1:8]))+
  152. theme(axis.text.x = element_text(
  153. size=8, angle=-45,hjust=0,vjust = 0.5))+NoLegend()+labs(subtitle = 'Digestive cell counts / life cycle'))
  154. p3<-DotPlot(data1a,feature=c('ashC.1'),cols=c('grey','red'),col.min = 0)+
  155. RotatedAxis() +theme(legend.position = 'bottom',legend.title = element_text(size=8),legend.text = element_text(size=8),panel.grid = element_line(color='grey90',linewidth = 0.2))+coord_flip()
  156. print(p1 +
  157. plot_annotation(tag_levels = "A")&
  158. theme(
  159. plot.tag = element_text(face = "bold")
  160. ))
  161. ```
  162. ```{r fig.height=4}
  163. #xlsx::write.xlsx(p3@data,'S4_raw.xlsx',sheetName='FigS4D',col.names = T,row.names = T,append=T)
  164. print(p3+
  165. plot_annotation(tag_levels = list("D")))
  166. ```
  167. ```{r fig.height=12}
  168. load(file = 'Ac.AllData.subsets.markers.RObj')
  169. list = NULL
  170. for (c in (1:length(unique((markers$gland.dig$cluster)))))
  171. {
  172. x=markers$gland.dig[as.numeric(markers$gland.dig$cluster)==c,][1:min(10,length(which(as.numeric(markers$gland.dig$cluster)==c))),7]
  173. list=c(list,x)
  174. }
  175. list=unique(list)
  176. list=list[!is.na(list)]
  177. p2<- DotPlot(data1.subsets$gland.dig,'RNA', features = c(list),scale.by='radius' , col.min = 0, split.by = 'lifehistory',cols = LibCP.stages,
  178. dot.min = 0.02)+
  179. RotatedAxis() +FontSize(10,8) +labs(title='Top 10 DEGs / cell sub-type',subtitle = 'adj.p-val <= 0.001')+theme(legend.position = 'bottom',legend.title = element_text(size=8),legend.text = element_text(size=8),panel.grid = element_line(color='grey90',linewidth = 0.1))+coord_flip()
  180. #xlsx::write.xlsx(p2@data,'S4_raw.xlsx',sheetName='FigS4E',col.names = T,row.names = T,append=T)
  181. print(p2 +
  182. plot_annotation(tag_levels = list("E")))
  183. ```
  184. ```{r fig.height = 4}
  185. chitinase <- png::readPNG("Chitinase.png")
  186. pA <- ggplot() + annotation_custom( grid::rasterGrob(chitinase, interpolate = TRUE), xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf ) + theme_void()
  187. pA+ plot_annotation(tag_levels = list("F")) &
  188. theme(
  189. plot.tag = element_text(face = "bold")
  190. )
  191. ```
  192. **Figure S4: Digestive gland population**. **A**) Full dataset UMAP showing position of cluster subset **B**) UMAP distribution of identified clusters. **C**) Bar plot showing distribution of digestive gland cells across life cycle stages and medusa tissue samples as absolute cell numbers. **D**) Gene expression dot plot showing expression profile of *ashC* specifically in identified digestive gland cell subtypes. **E**) Gene expression dot plot showing expression profile of top 10 differentially expressed genes for each cluster, separated by life cycle contribution. Full gene list is available in supplementary data S1.10 **F)** *in situ* hybridization showing localization of chitinase gene expression to the gastric filaments.
  193. <br> <br> <br> <br>
  194. ### **Figure S5: Mucin gland cluster**
  195. ```{r fig.height=5}
  196. data1a<-SetIdent(Ac.Alldata,value='ID.separate')
  197. data1<-data1.subsets$gland.muc
  198. ids.cluster.library = as.data.frame(table(Idents(data1), [email hidden]$lifehistory.tissue))
  199. colnames(ids.cluster.library) = c('ID','Stage','CellCount')
  200. #xlsx::write.xlsx(ids.cluster.library,'S4_raw.xlsx',sheetName='FigS5C',col.names = T,row.names = T,append=T)
  201. ids<-c(15:19)
  202. coi=NULL
  203. for (i in 1:length(ids))
  204. coi[[i]]=WhichCells(data1a,idents=levels(data1a)[ids[i]])
  205. names(coi)=levels(data1a)[ids]
  206. p1<-(DimPlot(data1a,cells.highlight=(coi),cols.highlight = rev(clust.cp.separate[1:5]))+NoAxes()+NoLegend()+labs(subtitle = 'Alldata: Mucin cell subset'))+
  207. (DimPlot(data1,cols=clust.cp.separate[1:8],label=T)+NoAxes()+labs(subtitle = 'Mucin cell subtypes'))+
  208. (ggplot(ids.cluster.library, aes(fill=ID, y= (CellCount),
  209. x=Stage)) +
  210. geom_bar(mapping =aes(fill=ID, y= (CellCount),
  211. x=(Stage)),
  212. position="stack", stat="identity", width = 0.75)+
  213. scale_fill_manual(values = c(clust.cp.separate[1:8]))+
  214. theme(axis.text.x = element_text(#face="bold", color="#993333",
  215. size=8, angle=-45,hjust=0,vjust = 0.5))+NoLegend()+labs(subtitle = 'Mucin cell counts / life cycle') )
  216. p1+
  217. plot_annotation(tag_levels = "A")&
  218. theme(
  219. plot.tag = element_text(face = "bold"))
  220. ```
  221. ```{r fig.height=4}
  222. FS5D<-DotPlot(data1a,feature=c('atoh8a','neuroD','mlp-like'),cols=c('grey','red'),col.min = 0)+
  223. RotatedAxis() +theme(legend.position = 'bottom',legend.title = element_text(size=8),legend.text = element_text(size=8),panel.grid = element_line(color='grey90',linewidth = 0.2))+coord_flip()
  224. #xlsx::write.xlsx(FS5D@data,'S4_raw.xlsx',sheetName='FigS5D',col.names = T,row.names = T,append=T)
  225. FS5D+
  226. plot_annotation(tag_levels = list("D"))
  227. ```
  228. **Figure S5: Mucin gland population**. **A**) Full dataset UMAP showing position of cluster subset **B**) UMAP distribution of identified clusters. **C**) Bar plot showing distribution of mucin gland cells across life cycle stages and medusa tissue samples as absolute cell numbers. **D**) Gene expression dot plot showing expression profile of mucin-like-protein (*mlp-like*) and the bHLH transcription factor *ngn* specifically in identified mucin gland cell subtypes. One paralog of the *atoh8* gene family is also expressed specifically in mucin subtypes *mucin.3* and *mucin.medusa*.
  229. <br> <br> <br> <br>
  230. ## **Figure S6: Myc gene tree**
  231. ```{r}
  232. myc <- png::readPNG("myc.png")
  233. myc.hydra<- png::readPNG("HydraMyc.png")
  234. p6A <- ggplot() +
  235. annotation_custom(
  236. grid::rasterGrob(myc, interpolate = TRUE),
  237. xmin = -Inf, xmax = Inf,
  238. ymin = -Inf, ymax = Inf
  239. ) +
  240. theme_void()
  241. p6B <- ggplot() +
  242. annotation_custom(
  243. grid::rasterGrob(myc.hydra, interpolate = TRUE),
  244. xmin = -Inf, xmax = Inf,
  245. ymin = -Inf, ymax = Inf
  246. ) +
  247. theme_void()
  248. ```
  249. ```{r}
  250. (p6A | p6B) +
  251. plot_annotation(tag_levels = "A")&
  252. theme(
  253. plot.tag = element_text(face = "bold")
  254. )
  255. ```
  256. **Figure S6: Cnidarian expansion of myc-family members. A**) Maximum likelihood tree; *Aurelia* is indicated in blue, *Nematostella* in salmon, other cnidarians in black and bilaterian orthologs in grey. Expression within the two shared cell type states (early and mature) as indicated in Figure 3 are plotted. Internal nodes indicate bootstrap values. Ac: *Aurelia coerulea*; Bf: *Branchiostoma floridae*; Ce: *Caenorhabditis elegans*; Cx: *Cassiopea xamachana*; Ed: *Exaiptasia diaphana*; Hs: *Homo sapiens*; Hv: *Hydra vulgaris*; Hy: *Hydractinia symbiolongicarpus*; Mg: *Magallana gigas*; Nv: *Nematostella vectensis*; Of: *Owenia fusiformis*; Re: *Rhopilema esculentum*; Sm: *Sanderia malayensis*; Sp: *Stylophora pistillata* ; Tc: *Tripedalia cystophora* **B**) Expression of included gene models on the *Hydra vulgaris* dataset (from [*https://research.nhgri.nih.gov/HydraAEP/SingleCellBrowser/*](https://research.nhgri.nih.gov/HydraAEP/SingleCellBrowser/){.uri}). <br> <br> <br> <br>
  257. ### **Figure S7: Neuron GO terms**
  258. ```{r fig.height=24}
  259. load(file='topGO.neurons.RData')
  260. # generate the source data:
  261. FS7<- do.call(cbind, lapply(topGO.IDs, slot, "data"))
  262. #xlsx::write.xlsx(FS7,'S4_raw.xlsx',sheetName='FigS7',col.names = T,row.names = T,append=T)
  263. plots=as.list(topGO.IDs)
  264. # plots = c(extra.element,plots)-#add something else to the empty spot but in first position...
  265. plots <- lapply(plots, function(p)
  266. p + theme(
  267. axis.title = element_blank(),
  268. axis.text = element_text(size = 8)
  269. )
  270. )
  271. combined <- wrap_plots(rev(plots), nrow = 8, ncol = 3)
  272. combined+
  273. plot_annotation(tag_levels = "A")&
  274. theme(
  275. plot.tag = element_text(face = "bold")
  276. )
  277. ```
  278. **Figure S7: Over-represented biological processes in differential gene lists (topGO)**. Each set of up-regulated genes from all neuroglandular subtypes was evaluated for over-represented biological processes with the topGO package. Full gene lists are available in supplementary data S1.8. <br> <br> <br> <br>
  279. ### **Figure S8: ATOH8 family genes**
  280. ```{r fig.width=12, fig.height=14}
  281. atoh8= c('atoh8a','atoh8b','atoh8c','atoh8d')
  282. load(file='nem.neur.Robj')
  283. load('Genes.Nv2.RData')
  284. atoh8.nem=genes[match(c('NV2.6610','NV2.5283','NV2.11608'),genes$geneID),]
  285. rownames(atoh8.nem) = c('atoh8a','atoh8c','atoh8d')
  286. nem.neur.reduced=subset(nem.neur,idents=levels(nem.neur)[c(2:4,6:10,13:21,23,39:46)])
  287. data.ac<-SetIdent(Ac.Alldata,value='ID.separate')
  288. p <-DotPlot(Ac.Alldata,'RNA', features=c(atoh8),scale.by='size' ,dot.min = 0.01, col.min = 0,cols = c('lightgrey','black'))+RotatedAxis()+ labs(title='Aurelia all data',subtitle = 'atoh8-like')+theme(legend.position = 'bottom',legend.text = (element_text(size=8)),panel.grid = element_line(color='grey90',linewidth = 0.2))+coord_flip()
  289. p.a<-DotPlot(data.ac,'RNA', features=c(atoh8),scale.by='size' ,dot.min = 0.01, col.min = 0, idents=levels(data.ac)[c(20:42)],cols = c('lightgrey','steelblue'))+RotatedAxis()+ labs(title='Aurelia all neurons',subtitle = 'atoh8-like')+theme(legend.position = 'bottom',legend.text = (element_text(size=8)),panel.grid = element_line('black',linewidth = 0.1))+coord_flip()
  290. p.n<-DotPlot(nem.neur.reduced,'RNA', features=atoh8.nem$gene_short_name,scale.by='size' ,dot.min = 0.01,group.by = 'IDs', col.min = 0,cols = c('lightgrey','red'))+RotatedAxis() + labs(title='Nematostella all neurons',subtitle = 'atoh8-like')+theme(legend.position = 'bottom',legend.text = (element_text(size=8)),panel.grid = element_line(color='grey90',linewidth = 0.2))+coord_flip()+ scale_x_discrete(labels = rownames(atoh8.nem))
  291. #xlsx::write.xlsx(p@data,'S4_raw.xlsx',sheetName='FigS8A',col.names = T,row.names = T,append=T)
  292. #xlsx::write.xlsx(p.a@data,'S4_raw.xlsx',sheetName='FigS8B',col.names = T,row.names = T,append=T)
  293. #xlsx::write.xlsx(p.n@data,'S4_raw.xlsx',sheetName='FigS8C',col.names = T,row.names = T,append=T)
  294. print(p / p.a / p.n +
  295. plot_annotation(tag_levels = "A"))
  296. ```
  297. ```{r fig.width=12}
  298. p.h<- png::readPNG("hy.neuro.atoh8.png")
  299. pD <- ggplot() +
  300. annotation_custom(
  301. grid::rasterGrob(p.h, interpolate = TRUE),
  302. xmin = -Inf, xmax = Inf,
  303. ymin = -Inf, ymax = Inf
  304. ) +
  305. theme_void()+labs(title = 'Hydra all neurons',subtitle='https://cejuliano.shinyapps.io/HydraAtlas/',)+theme(plot.title = element_text(face = "bold"))
  306. img <- png::readPNG("atoh8.png")
  307. pA <- ggplot() +
  308. annotation_custom(
  309. grid::rasterGrob(img, interpolate = TRUE),
  310. xmin = -Inf, xmax = Inf,
  311. ymin = -Inf, ymax = Inf
  312. ) +
  313. theme_void()
  314. # print(pA+
  315. # plot_annotation(tag_levels = list("E")))
  316. (pD | pA) +
  317. plot_annotation(tag_levels = list(c("D","E")))&
  318. theme(
  319. plot.tag = element_text(face = "bold")
  320. )
  321. ```
  322. **Figure. S8**: Expression of atoh8 family transcription factors. **A**) Expression profiles across all identified cell type families of each member of the atoh8 family. **B:D**) Expression profiles of atoh8 family genes within the neural clusters of *Aurelia* (B), *Nematostella* (C), and *Hydra* (D) highlights both broad expression profiles, as well as cell type specific expression. Expression of included gene models on the *Hydra vulgaris* dataset (from [*https://research.nhgri.nih.gov/HydraAEP/SingleCellBrowser/*](https://research.nhgri.nih.gov/HydraAEP/SingleCellBrowser/){.uri}). G023106 is the hydra *pou4* ortholog indicating class n2-type neurons, and G017257 is the *ins* ortholog, indicating class n1-type neurons. **E**) Gene family tree with *Nematostella* (salmon), *Aurelia* (blue), *Hydra* (blue-green) and human (red) paralogs highlighted. Internal nodes indicate bootstrap values. Ac: *Aurelia coerulea*; Bf: *Branchiostoma floridae*; Ce: *Caenorhabditis elegans*; Cx: *Cassiopea xamachana*; Ed: *Exaiptasia diaphana*; Hs: *Homo sapiens*; Hv: *Hydra vulgaris*; Hy: *Hydractinia symbiolongicarpus*; Mg: *Magallana gigas*; Nv: *Nematostella vectensis*; Of: *Owenia fusiformis*; Re: *Rhopilema esculentum*; Sm: *Sanderia malayensis*; Sp: *Stylophora pistillata* ; Tc: *Tripedalia cystophora* <br> <br> <br> <br>
  323. ### **Figure S9: Muscle Transcription Factors**
  324. ```{r fig.height=4}
  325. load(file='all.idents.markers.RData')
  326. FS9<-DotPlot(Ac.Alldata,features=all.markers.TF.allidents$gene[c(7:12)],cols=c('grey','red'),col.min = 0, dot.min = 0.1,group.by = "ID.separate")+
  327. RotatedAxis() +theme(legend.position = 'bottom',legend.title = element_text(size=8),legend.text = element_text(size=8),panel.grid = element_line(color='grey90',linewidth = 0.2))+coord_flip()
  328. #xlsx::write.xlsx(FS9@data,'S4_raw.xlsx',sheetName='FigS9',col.names = T,row.names = T,append=T)
  329. FS9
  330. ```
  331. **Figure S9:** **Muscle-specific transcription factors.** Dotplot of expression of the top differentially expressed gene models with DNA binding sites specific to the striated muscle subset. Full gene list is available in supplementary Data S1.4b.

Supplement.RMD at commit a474383, no license · at the source

Overview

Authors: Oliver Link1, Stefan M Jahnel2, Kristin Janicek1, Daniel Guerguerian1, Johanna Kraus1, Juan D Montenegro1, Bob Zimmermann1, Brittney Wick3, Konstantin Khalturin4,5, Alison G Cole1, Ulrich Technau1,6
  1. Department of Neurosciences and Developmental Biology, Faculty of Life Sciences, University of Vienna, Vienna, Austria
  2. Institute of Molecular Biotechnology, Vienna, Austria
  3. UCSC Cellbrowser, University of California, Santa Cruz, California, United States of America
  4. Institute of Cellular and Organismic Biology (ICOB), Academia Sinica, Taipei, Taiwan
  5. Marine Genomics Unit, Okinawa Institute of Science and Technology (OIST), Onna, Okinawa, Japan
  6. Research platform Single Cell Regulation of Stem Cells, University of Vienna, Vienna, Austria
Journal: PLoS biology, volume 24, issue 8, article e3003931
Dates: received 15 May 2026; accepted 17 July 2026; published online 14 August 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pbio.3003931 · PMID 42599956 · PMCID PMC13485128 · OpenAlex W7203456711
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality), cellular / molecular (subfield)
Methods: Smoothing, state filtering, decompositions, Machine learning
MeSH: Cnidaria*, Transcriptome*, Animals, Neurons, Phylogeny, Sea Anemones, Single-Cell Analysis, Single-Cell Gene Expression Analysis (* major topic)
Topic: Marine Invertebrate Physiology and Ecology (Paleontology, Earth and Planetary Sciences), according to OpenAlex
Funding: NHGRI NIH HHS (U24 HG002371); NIMH NIH HHS (RF1 MH132662)
Citations: not cited yet (Europe PMC); 95 references in the paper

Abstract

The life cycle of most medusozoan cnidarians is marked by the metagenesis from the asexually reproducing sessile polyp and the sexually reproducing motile medusa. At present, it is unknown to what extent this drastic morphological transformation is accompanied by molecular changes in the cell type composition. Here, we provide a single-cell transcriptome atlas of the cosmopolitan scyphozoan Aurelia coerulea focusing on changes in individual cell states during the transition from polyp to medusa. Notably, this transition is marked by an increase in cell type diversity, including an expansion of neural subtypes and the appearance of striated muscles. We find that two families of neuronal lineages are specified by homologous transcription factors in the sea anemone Nematostella vectensis and A. coerulea, suggesting an origin in the common ancestor of medusozoans and anthozoans about 500 Myr ago. Our analysis suggests that gene duplications might be drivers for the increase of cellular complexity during the evolution of cnidarian neuroglandular lineages and highlights the close relationship of neurons and muscles. One key medusozoan-specific cell type is the striated muscle in the subumbrella. Evaluating muscle types by fiber anatomy and gene expression validation of their individual molecular profiles made it possible for the first time to investigate transcriptome differences between smooth and striated muscles. Although smooth and striated muscles are phenotypically different, both have a similar regulation of the contractile complex, reminiscent to the regulation of smooth muscles in bilaterians. This contrasts with bilaterian striated muscles, where the regulation of muscle contraction involves Ca2+ binding troponins and their interaction with Tropomyosin. These data suggest that smooth muscle contraction regulation is ancestral and the use of troponins in striated muscles only evolved in bilaterians.

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

Repositories

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

technau/AureliaAtlas

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: a474383e5b32e866cae39480e2dd22d96de0250b, 2 July 2026
Languages: R (6)
Size: 7 files, 6 scripts
Software Heritage: not archived
Found in: “Data Availability”
Holds: README, 1 notebook
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: ggplot2 (6 files), Seurat (6 files), tidyverse (6 files), patchwork (5 files), Harmony (3 files), circlize (1 file), pheatmap (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
7 files

Zenodo 21132158

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data Availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: ggplot2 (6 files), Seurat (6 files), tidyverse (6 files), patchwork (5 files), Harmony (3 files), circlize (1 file), pheatmap (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
7 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

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

Data links

Data Availability

Raw sequence data are deposited in the GEO database (https://www.ncbi.nlm.nih.gov/geo/) GSE242144, and the analysed data matrix is available on the UCSC Cell Browser (https://jellyfish-atlas.cells.ucsc.edu/). Scripts for analysing the data and generating the figures in this manuscript can be found on our GitHub page (https://github.com/technau/AureliaAtlas) DOI: https://doi.org/10.5281/zenodo.21132158.

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

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 11 authors, 8 MeSH terms, 2 funders, 91 references.

Cite

This paper

Link, O., Jahnel, S. M., Janicek, K., Guerguerian, D., Kraus, J., Montenegro, J. D., Zimmermann, B., Wick, B., Khalturin, K., Cole, A. G., & Technau, U. (2026). A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan Aurelia coerulea. PLoS biology, 24(8), e3003931. https://doi.org/10.1371/journal.pbio.3003931

BibTeX

@article{link2026single,
author = {Link, Oliver and Jahnel, Stefan M and Janicek, Kristin and Guerguerian, Daniel and Kraus, Johanna and Montenegro, Juan D and Zimmermann, Bob and Wick, Brittney and Khalturin, Konstantin and Cole, Alison G and Technau, Ulrich},
title = {{A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan Aurelia coerulea}},
journal = {PLoS biology},
year = {2026},
month = aug,
volume = {24},
number = {8},
pages = {e3003931},
publisher = {PLOS},
issn = {1544-9173},
doi = {10.1371/journal.pbio.3003931},
url = {https://doi.org/10.1371/journal.pbio.3003931},
pmid = {42599956},
pmcid = {PMC13485128}
}

RIS

TY - JOUR
AU - Link, Oliver
AU - Jahnel, Stefan M
AU - Janicek, Kristin
AU - Guerguerian, Daniel
AU - Kraus, Johanna
AU - Montenegro, Juan D
AU - Zimmermann, Bob
AU - Wick, Brittney
AU - Khalturin, Konstantin
AU - Cole, Alison G
AU - Technau, Ulrich
TI - A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan Aurelia coerulea
T2 - PLoS biology
J2 - PLoS Biol
PY - 2026
DA - 2026/08/14
VL - 24
IS - 8
SP - e3003931
SN - 1544-9173
PB - PLOS
DO - 10.1371/journal.pbio.3003931
UR - https://doi.org/10.1371/journal.pbio.3003931
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pbio.3003931",
"type": "article-journal",
"title": "A single-cell transcriptomic atlas reveals the emergence of medusa-specific cell states in the scyphozoan Aurelia coerulea",
"container-title": "PLoS biology",
"author": [
{
"family": "Link",
"given": "Oliver"
},
{
"family": "Jahnel",
"given": "Stefan M"
},
{
"family": "Janicek",
"given": "Kristin"
},
{
"family": "Guerguerian",
"given": "Daniel"
},
{
"family": "Kraus",
"given": "Johanna"
},
{
"family": "Montenegro",
"given": "Juan D"
},
{
"family": "Zimmermann",
"given": "Bob"
},
{
"family": "Wick",
"given": "Brittney"
},
{
"family": "Khalturin",
"given": "Konstantin"
},
{
"family": "Cole",
"given": "Alison G"
},
{
"family": "Technau",
"given": "Ulrich"
}
],
"container-title-short": "PLoS Biol",
"volume": "24",
"issue": "8",
"page": "e3003931",
"DOI": "10.1371/journal.pbio.3003931",
"PMID": "42599956",
"PMCID": "PMC13485128",
"ISSN": "1544-9173",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pbio.3003931",
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
14
]
]
}
}

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.1371/journal.pbio.3003803 [code]
The anti-neural role of BMP signaling is a consequence of its ancestral function in dorsoventral patterning.
Journal: PLoS biology
In common: Seurat, ggplot2, tidyverse, 12 references, author Juan D Montenegro
[2] doi:10.1093/molbev/msag128 [code]
Single-cell analyses of tissue regeneration in two true jellyfish.
Journal: Molecular biology and evolution
In common: genetics / omics, cellular / molecular, 15 references
[3] doi:10.1038/s41586-026-10629-x [code]
Whole-genome duplication shaped cell-type evolution in the vertebrate brain.
Journal: Nature
In common: Harmony, circlize, pheatmap, 4 other tools, genetics / omics, cellular / molecular, 3 references
[4] doi:10.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: Harmony, circlize, pheatmap, 4 other tools, genetics / omics, cellular / molecular, 2 references
[5] doi:10.1016/j.celrep.2026.117500 [code]
Spatio-molecular gene expression reflects dorsal anterior cingulate cortex structure and function in the human brain.
Journal: Cell reports
In common: Harmony, circlize, pheatmap, 4 other tools, genetics / omics, cellular / molecular, 2 references
[6] doi:10.1038/s41593-026-02367-0 [code]
A reproducible three-dimensional model of human brain tissue to investigate physiological and disease-associated microglia phenotypes.
Journal: Nature neuroscience
In common: Harmony, circlize, pheatmap, 4 other tools, cellular / molecular, 2 references
[7] doi:10.1038/s41467-026-75225-z [code]
A single-cell atlas of alternative wing development in two hemipteran species.
Journal: Nature communications
In common: Harmony, circlize, pheatmap, 3 other tools, 3 references
[8] doi:10.1038/s41597-026-07185-4 [code]
A multi-center cross-platform single-cell multimodal atlas of the mouse cerebral cortex.
Journal: Scientific data
In common: Harmony, circlize, Seurat, 3 other tools, genetics / omics, 3 references
[9] 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 aging
In common: Harmony, circlize, pheatmap, 4 other tools, 2 references
[10] doi:10.1038/s41380-026-03629-w [code]
Maternal fasting during early gestation induces epigenetic alterations and schizophrenia-related phenotypes.
Journal: Molecular psychiatry
In common: Harmony, circlize, pheatmap, 4 other tools, genetics / omics, 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.

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.