使用降维分析图展示marker基因
大部分单细胞分析,以及seurat
package这个包给出的示例,也都是某一marker基因在降维分析之后得到位置的表现。例如下图
单细胞分析的一点小技巧
那如果只是展示某一类细胞在降维分析图中的位置,如何操作
虽然降维分析,并对细胞进行族群分析,直接呈现出来的就是各个细胞的状态和位置,但是主要是还不够明显,不能一下子展现出个人的研究重点细胞族群。所以这个技巧还是有一定的作用
使用降维分析图展示单个细胞群
准备数据
要将需要分析的数据保存为rds
格式,方便读取。
按照
Rdata
格式进行保存,也是完全可以的,但是为了方便后续读入,并进行重命名,rds
格式值得推荐
# all cell type
rm(list = ls())
scobj = readRDS(file = "output/Seurat_single_sample_scobj.rds")
metadata <- scobj@meta.data
其中scobj
是读入的单细胞数据,经过转换成seurat处理的对象,并进行了细胞族群注释。具体前期分群和注释参阅
单细胞分析(一)——seurat包单个样本处理
单细胞分析(二)——细胞注释(SingleR自动注释)
展示单个细胞群
rm(list = ls())
scobj = readRDS(file = "output/Seurat_single_sample_scobj.rds")
# 单个单个细胞群 --------------------
metadata <- scobj@meta.data
FeaturePlot(scobj, features = 'percent.mt')
# 以CD14+ MONO 为例
scobj@meta.data$cd14_mono <- ifelse(metadata$celltype == "CD14+ Mono", 1, 0)
FeaturePlot(scobj, features = "cd14_mono")
构建适合FeaturePlot函数的矩阵
展示所有的细胞
design <- model.matrix(~0 + metadata$celltype)
design <- as.data.frame(design)
colnames(design) <- levels(metadata$celltype)
scobj@meta.data = cbind(scobj@meta.data, design)
metadata <- scobj@meta.data
FeaturePlot(scobj, features = levels(metadata$celltype), cols = c("lightgrey","red"))
还可以选定展示的细胞
FeaturePlot(scobj, features = c('CD8+ T', 'B cell'), cols = c("lightgrey","#00ff00"))
#可以改变展示位置的颜色
上面的构建矩阵信息的方法使用的是model.matrix
这个函数,非常有用的一个函数,也是一种批量化的思维模式。
保证颜色和单个图一致
上面的是保证了单独展示,如何使得和混合的颜色显示颜色一致
这是将族群进行展示
DimPlot(scobj, label = T) + NoLegend()
可以按照这样的思路去处理
得到相对应的矩阵信息
scobj = readRDS(file = './output/Seurat_single_sample_scobj.rds')
DimPlot(scobj, label = T)
metadata = scobj@meta.data
design = model.matrix(~0 + metadata$celltype)
design = as.data.frame(design)
colnames(design) = levels(metadata$celltype)
scobj@meta.data <- cbind(scobj@meta.data, design)
进行上色
library(scCustomize)
# Save as variable to global environment
polychrome_pal <- DiscretePalette_scCustomize(num_colors = 9, palette = "varibow", shuffle_pal = T)
polychrome_pal
dput(polychrome_pal)
# Call within another function
# 上色
DimPlot_scCustom(seurat_object = scobj, colors_use = DiscretePalette_scCustomize(num_colors = 9, palette = "polychrome"))
DimPlot(scobj, label = T, cols = polychrome_pal)
FeaturePlot(scobj, features = levels(metadata$celltype))
FeaturePlot(scobj, features = c('CD8+ T'), cols = c("lightgrey", dput(polychrome_pal)[3]) ) + NoLegend()
这个时候,就得到的了和总的族群图对应的某一类细胞突出展示
批量产出每一个细胞图
# 批量操作
plotlist <- list()
for (i in 1:9) {
print(i)
features = levels(metadata$celltype)
plotlist[[i]] = FeaturePlot(scobj, features = features[i], cols = c("lightgrey", dput(polychrome_pal)[i])) +NoLegend()
}
plotlist[[8]]
library(patchwork)
wrap_plots(plotlist)
技巧性的内容,提高以下自己驾驭代码的能力。
参考文章
Customized Color Palettes & Themes
Seurat - Guided Clustering Tutorial
果子学生信