偷偷问一下,关注了吗?
内容获取
1、购买打包合集(《KS科研分享与服务》付费内容打包集合),价格感人,可以加入微信VIP群(答疑交流群,甚至有小伙伴觉得群比代码更好),可以获取建号以来所有内容,群成员专享视频教程,提前更新,其他更多福利!
2、《KS科研分享与服务》公众号有QQ群,进入门槛是20元(完全是为了防止白嫖党,请理解),请考虑清楚。群里有免费推文的注释代码和示例数据(终身拥有),没有付费内容,群成员福利是购买单个付费内容半价!
需要者详情请联系作者(非需要者勿扰,处理太费时间):
单细胞降维图celltype框选一直是可视化中很多人喜爱的,之前我们也介绍过一些(单细胞marker基因表达密度图-(还有一个包装函数)、玩转单细胞(5):单细胞UMAP图只标记特定细胞群、圈定细胞群及坐标轴修改)。都或多或少有些不理想,不如AI来的直接,不过最近看到一个优秀的包---mascarade,圈选的效果挺好。所以学习以下,很简单,但是使用挺灵活,支持UMAP和TSNE:
官方教程链接: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!效果不错。
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))
}
p
关注我们获取精彩内容:
关注不迷路:扫描下面二维码关注公众号!
B站视频号链接:https://space.bilibili.com/471040659?spm_id_from=333.1007.0.0
关注 KS科研分享与服务,
认清正版优质内容和服务!
优质内容持续输出,物超所值!
合作联系:ks_account@163.com