suppressPackageStartupMessages({ library(Seurat) library(stringr) library(sctransform) library(future) require(scales) library(RColorBrewer) library("readxl") library(dplyr) library(dendextend) }) ### figure 1 + figure supplements # import all_nuclei dataset. sobj <- readRDS("/path/to/dir/allnuc.rds") # Seurat hierarchical clustering on the pseudobulk averages of different clusters Idents(sobj) <- "SCT_snn_res.0.1" sobj <- BuildClusterTree(sobj) t1 <- Tool(sobj, slot = "BuildClusterTree") ape::plot.phylo(t1, main = "AllCells hvg1000 SCT_snn_res.0.1", type = "phylogram", use.edge.length = TRUE, show.tip.label = TRUE, show.node.label = TRUE, edge.color = "black", edge.width = 1, edge.lty = 1, font = 3, cex = par("cex"), srt = 45, no.margin = FALSE, root.edge = TRUE, underscore = TRUE, direction = "downwards", tip.color = "black", plot = TRUE, align.tip.label=TRUE) # turn tree (class=phylo) into a dendrogram object to use with dendextend package dend <- as.dendrogram(t1) # high resolution dendrogram dpi=300 tiff(file = "/path/to/dir/dend_name.tiff", units="cm", width=5, height=25, res=300) dend %>% set("leaves_pch", 15) %>% set("leaves_cex", 3) %>% set("labels_cex", 0.5) %>% set("leaves_col", c("5"="#08519C", "23"="#253494", "25"="#00441B", "2"="#74C476", "11"="#C7E9C0", "26"="#081D58", "16"="#B15928", "9"="#006D2C", "17"="#A1D99B", "6"="#6BAED6", "20"="#9ECAE1", "13"="#E31A1C", "7" = "#E7D4E8", "10"="#C2A5CF", "1"="#762A83", "4"="#9970AB", "8"="#FD8D3C", "19"="#BD0026", "21"="#800026", "15"="#525252", "24"="#E7298A", "3"="#FDD0A2", "18"="#969696", "14"="#993404", "12"="#41AB5D", "22"="#FC4E2A")) %>% plot(horiz=TRUE) dev.off() # plot high res UMAP dpi=300 tiff(file = "/path/to/dir/plot_name.tiff", units="cm", width=25, height=25, res=300) DimPlot(ac, group.by = "LouvainRes.0.1", cols = c("1"="#762A83", "2"="#74C476", "3"="#FDD0A2", "4"="#9970AB", "5"="#08519C", "6"="#6BAED6", "7" = "#E7D4E8", "8"="#FD8D3C","9"="#006D2C", "10"="#C2A5CF", "11"="#C7E9C0", "12"="#41AB5D", "13"="#E31A1C", "14"="#993404", "15"="#525252", "16"="#B15928", "17"="#A1D99B", "18"="#969696", "19"="#BD0026", "20"="#9ECAE1", "21"="#800026", "22"="#FC4E2A", "23"="#253494", "24"="#E7298A", "25"="#00441B", "26"="#081D58"), order = c("19", "24", "25"), label = T, label.size = 8, repel = T) + coord_fixed() + theme(text = element_text(size = 8, face = "bold"), legend.text=element_text(size = 12, face = 'bold')) dev.off() # high res dotplot 300 dpi # re-order object active levels (clusters) according to the tree leaf nodes. my.levels <- t1$tip.label sobj$SCT_snn_res.0.1 <- factor(x = sobj$SCT_snn_res.0.1 , levels = my.levels) # import selected markers: markers <- read_excel("/path/to/dir/Dot_plot_markers_Figxx.xlsx", col_names = T) markers <- unique(pull(markers , Genes)) tiff(file = "/path/to/dir/plot_name.tiff", units="cm", width=60, height=20, res=300) DotPlot(sobj, assay = "RNA", features = markers, group.by = "LouvainRes.0.1") + theme(axis.text.x = element_text(size = 15, face = "bold", angle = 45, hjust = 1, vjust = 1), axis.text.y = element_text(size = 15, face = "bold")) dev.off() sessionInfo()