不知道你的单细胞分多少群合适,clustree帮助你
我们以 seurat 官方教程为例:
rm(list = ls())
library(Seurat)
# devtools::install_github('satijalab/seurat-data')
library(SeuratData)
library(ggplot2)
library(patchwork)
library(dplyr)
load(file = 'basic.sce.pbmc.Rdata')
DimPlot(pbmc, reduction = 'umap',
label = TRUE, pt.size = 0.5) + NoLegend()
sce=pbmc
如果你不知道 basic.sce.pbmc.Rdata 这个文件如何得到的,麻烦自己去跑一下 可视化单细胞亚群的标记基因的5个方法,自己 save(pbmc,file = 'basic.sce.pbmc.Rdata') ,我们后面的教程都是依赖于这个 文件哦!
这个官方例子里面,我们是直接使用了 resolution = 0.5 这样的方式 :
pbmc <- FindNeighbors(pbmc, dims = 1:10)
pbmc <- FindClusters(pbmc, resolution = 0.5)
实际上这个 resolution 是可以多次调试的,比如:
# 参考:https://mp.weixin.qq.com/s/WRhMC3Ojy1GWYfLS_4vSeA
#先执行不同resolution 下的分群
library(Seurat)
library(clustree)
sce <- FindClusters(
object = sce,
resolution = c(seq(.1,1.6,.2))
)
clustree(sce@meta.data, prefix = "RNA_snn_res.")
colnames(sce@meta.data)
如下所示,可以看到不同的resolution ,分群的变化情况:
我们是直接使用的 resolution = 0.5 ,仅仅是其中的一个可能性!
而且根据动态分群的树,很容易看出来,对应3这个亚群对应的b细胞来说,无论怎么样调整参数,它都很难细分亚群了,同样的还有7这个亚群对应DC,和8这个亚群对应的Platelet也是很难再细分啦。
但是T细胞和monocyte还有进一步细分的可能性!
这些可视化代码如下:
p1=DimPlot(sce, reduction = 'umap', group.by = 'RNA_snn_res.0.5',
label = TRUE, pt.size = 0.5) + NoLegend()
p2=DimPlot(pbmc, reduction = 'umap',# group.by = 'seurat_clusters',
label = TRUE, pt.size = 0.5) + NoLegend()
library(patchwork)
p1+p2
p1=DimPlot(sce, reduction = 'umap', group.by = 'RNA_snn_res.0.5',
label = TRUE, pt.size = 0.5) + NoLegend()
p2=DimPlot(sce, reduction = 'umap',group.by = 'RNA_snn_res.1.5',
label = TRUE, pt.size = 0.5) + NoLegend()
library(patchwork)
p1+p2
有分群的可能性,并不代表你一定要进行细分亚群,如果你分群后无法进行准确的生物学描述,那样细分亚群的意义就不大!
比如前面的CD4的T细胞亚群细分:
load(file = 'sce.cd4.subset.Rdata')
#先执行不同resolution 下的分群
library(Seurat)
library(clustree)
sce <- FindClusters(
object = sce,
resolution = c(seq(.1,1.6,.2))
)
clustree(sce@meta.data, prefix = "RNA_snn_res.")
这样的细分亚群就相互交织:
意义并不是很大