不知道你的单细胞分多少群合适,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.")

这样的细分亚群就相互交织:

意义并不是很大


(0)

相关推荐