单细胞降维图celltype框选一直是可视化中很多人喜爱的,之前我们也介绍过一些。都或多或少有些不理想,不如AI来的直接,不过最近看到一个优秀的包---mascarade,圈选的效果挺好。所以学习以下,很简单,但是使用挺灵活,支持UMAP和TSNE:
github:https://github.com/alserglab/mascarade/blob/main/README.md
官方教程链接:https://rpubs.com/asergushichev/mascarade-tutorial
首先安装包,并熟悉流程:
#安装包
remotes::install_github("alserglab/mascarade")
library(mascarade)
library(ggplot2)
library(data.table)
library(Seurat)
#load data
#我们首先熟悉以下流程
uterus <- readRDS("D:/KS项目/公众号文章/RNA速率分析/uterus.rds")
#mascarade包做celltype框线,首先需要计算generateMask。
#得到的是一个dataframe,其实就是框选轮廓位置
#其他参数先默认,需要两个关键数据,一个是UMAP坐标dataframe,一个是celltype注释
dims <- Embeddings(uterus, reduction = 'tsne')
cluster <- uterus$celltype
maskTable <- generateMask(dims=dims,clusters=cluster)
#然后ggplot作图,geom_path添加轮廓,其他就是ggplot主题修饰了
data <- data.table(dims, cluster= cluster)
ggplot(data, aes(x=tSNE_1, y=tSNE_2)) +
geom_point(aes(color=cluster)) +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()

UMAP测试:提取坐标、计算generateMask,参数需要按照自己实际数据调整。
emb <- Embeddings(obj,reduction = 'umap') %>% #提取坐标数据
as.data.frame() %>%
mutate(celltype=obj@meta.data$celltype)
maskTable <- generateMask(dims=emb[,1:2],
clusters=emb$celltype,
smoothSigma = 0.015,
minDensity = 0.1,
gridSize = 200,
type = 'partition')
#plot-虚线
ggplot(emb, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=celltype)) +
geom_path(data=maskTable, aes(group=group),
linetype=6,size=1) + #调整框选线类型及粗细
coord_fixed() +
theme_classic()

#实线
ggplot(emb, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=celltype)) +
geom_path(data=maskTable, aes(group=group),
linetype=1,size=1) + #调整框选线类型及粗细
coord_fixed() +
theme_classic()

#只框选某种cellpe
ggplot(emb, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=celltype)) +
geom_path(data=maskTable[cluster=='Fibroblasts'], aes(group=group),
linetype=1,size=1) + #调整框选线类型及粗细
coord_fixed() +
theme_classic()

计算了框选位置,直接在Dimplot后作图也可以:
#其实Dimplot+geom_path就可以实现,没必要非按照ggplot提取坐标作图
DimPlot(obj, label = F, pt.size = 1)&
geom_path(data=maskTable, aes(x=UMAP_1, y=UMAP_2,group=group),
linetype=1,size=1)&
scale_color_manual(values = alpha(c("#edc951","#eb6841","#4f372d","#00a0b0",
"#7A989A", "#849271", "#CF9546", "#C67052", "#C1AE8D"),0.5))

FeaturePlot做基因表达量,框选需要的celltype!效果不错。
#plot表达某个基因的celltpe
p = FeaturePlot(obj, features = c("KRT5",'THY1',"CD3D",
"MITF","VWF","FLT4",
"TPM1","KIT","CD14"), ncol = 3)
celltypes <- c("Keratinocytes","Fibroblasts","T cells",
"Melanocytes", "Endothlial","Lymphatic",
"Muscle","Mast cells",'Myeloid')
for (i in seq_along(p)) {
p[[i]] <- p[[i]]&geom_path(data=maskTable[cluster==celltypes[i]],
aes(x=UMAP_1, y=UMAP_2,group=group),
linetype=1,size=1)&
theme(legend.key.width=unit(0.2,"cm"))&
scale_color_gradientn(colours = c('#FFF7F3', '#FDE0DD', '#FCC5C0', '#FA9FB5', '#F768A1',
'#DD3497', '#AE017E', '#7A0177', '#49006A'),
guide = guide_colorbar(frame.colour = "black",
ticks.colour = NA))
}
#return
p

image.png
觉得我们分享有些用的,点个赞再走呗!