「单细胞转录组系列」使用scCATCH进行聚类结果自动化注释

摘自:xuzhougeng

https://www.jianshu.com/p/cf7a7341b0b6

目前该软件只支持Mouse和Human,不支持其他物种,因此不是这两个物种的小伙伴可以不用看了。

scCATCH全称是single cell Cluster-based Annotation Toolkit for Cellular Heterogeneity,是一个用于实现单细胞转录组聚类结果进行注释的工具。软件核心函数是和scCATCH,findmarkergenes则是辅助用于寻找标记。

目前该软件托管在GitHub上,因此需要使用devtools::install_github()进行安装,或者直接从GitHub上下载代码使用install.packages()进行安装。我在测试这个R包发现它直接使用as.data.frame转换Seurat的稀疏矩阵,而R在转换非常大的稀疏矩阵时会报错,因此我fork了一份代码,并做了相应的修改,希望原作者能够合并我的PR。目前原作者已经修复了该问题

# 原版devtools::install_github("ZJUFanLab/scCATCH")# 修改版本#devtools::install_github("xuzhougeng/scCATCH")

我们下载10X genomics官网上的一份数据,地址为http://cf.10xgenomics.com/samples/cell-exp/3.0.2/5k_pbmc_v3/5k_pbmc_v3_filtered_feature_bc_matrix.h5

然后以https://satijalab.org/seurat/v3.1/pbmc3k_tutorial.html的步骤进行数据预处理

library(Seurat)library(scCATCH)h5_file <- "F:/5k_pbmc_v3_filtered_feature_bc_matrix.h5"# Load the PBMC dataset#pbmc.data <- Read10X(data.dir = "../data/pbmc3k/filtered_gene_bc_matrices/hg19/")pbmc.data <- Read10X_h5(h5_file)# Initialize the Seurat object with the raw (non-normalized data).pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)pbmcpbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)pbmc <- subset(pbmc, subset = nFeature_RNA > 500 & nFeature_RNA < 5000 & percent.mt < 20)pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)all.genes <- rownames(pbmc)pbmc <- ScaleData(pbmc, features = all.genes)pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))ElbowPlot(pbmc)pbmc <- FindNeighbors(pbmc, dims = 1:10)pbmc <- FindClusters(pbmc, resolution = 0.2)pbmc <- RunUMAP(pbmc, dims = 1:10)DimPlot(pbmc, label = TRUE)

以UMAP对聚类结果进行可视化展示

reslution=0.2

接下来,使用findmarkergenes寻找每个cluster的差异基因。这一步的运行时间比较长,因为每个cluster都需要和其他的所有cluster按个比较,然后确定出当前cluster的特异基因。

clu_markers <- findmarkergenes(pbmc,                               species = "Human",                               cluster = 'All',                               match_CellMatch = FALSE,                               cancer = NULL,                               tissue = NULL,                               cell_min_pct = 0.25,                               logfc = 0.25,                               pvalue = 0.05)

最终得到的clu_markers是一个list,包括一个新的表达量矩阵(基于NCBI最新的Gene Symbols,并移除重复和不匹配的基因) 以及一个包括每个cluster的所有潜在标记基因。

之后使用scCATCH根据标记基因对聚类进行注释

clu_ann <- scCATCH(clu_markers$clu_markers,                   species = "Human",                   cancer = NULL,                   tissue = "Blood")

输出的clu_ann能用来修改原来的注释信息,代码如下

new.cluster.ids <- clu_ann$cell_typenames(new.cluster.ids) <- clu_ann$clusterpbmc <- RenameIdents(pbmc, new.cluster.ids)DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()

注释结果如下

注释结果

根据Seurat的教程,这个注释可能有一些问题,比如说T细胞,NK细胞没有正确注释。

注释

我觉得这可能是我选择的组织不对,所以我重新以"Blood", "Bone marrow"两个数据集进行注释

clu_ann <- scCATCH(clu_markers$clu_markers,                   species = "Human",                   cancer = NULL,                   tissue = c("Blood", "Bone marrow"))

虽然结果还是有一些问题,但是和预期结果比较接近了。

注释结果2

scCATCH文章里提到它的注释准确度其实非常高的,因此我这一次找到了文章里的测试脚本https://github.com/ZJUFanLab/scCATCH_performance_comparison/blob/master/scCATCH/scCATCH.R

根据脚本设置了参数,也就是选择'Blood','Peripheral blood','Bone marrow'作为组织类型

clu_ann <- scCATCH(clu_markers$clu_markers,                   species = "Human",                   cancer = NULL,                   tissue =  c('Blood','Peripheral blood','Bone marrow'))

这一次大部分的细胞都被正确注释

注释结果3

因此想要用好这个软件,需要非常注意组织类型的选择。如果你发现注释和预期不符,你可能没有漏了一些组织。

更多和scCATCH有关的参数阅读,请移步https://github.com/ZJUFanLab/scCATCH

引用信息:

Shao et al., scCATCH:Automatic Annotation on Cell Types of Clusters from Single-Cell RNA Sequencing Data, iScience, Volume 23, Issue 3, 27 March 2020. doi: 10.1016/j.isci.2020.100882. PMID:32062421

(0)

相关推荐

  • Seurat新版教程:New data visualization methods in v3.0

    导读 本文介绍了新版Seurat在数据可视化方面的新功能.主要是进一步加强与ggplot2语法的兼容性,支持交互操作. 正文 seurat visualization (https://satijal ...

  • 大样本量多分组表达量矩阵分析你难道没想到单细胞吗

    前面我们演示了:泛癌分析时候的大样本量多分组建议选择tSNE而不是PCA,整合全部的33种癌症的仅仅是蛋白质编码基因的表达量矩阵,进行降维聚类分群可以看到并不是严格的各个癌症泾渭分明. 其中很明显乳腺 ...

  • 这也能画?

    有意思的图片 其实就是一个单细胞的降维聚类分群,特殊之处在于它出现了一个能被人类想象力丰富起来的造型,所以就有了左边他们全体实验室自己摆pose并且着装不同颜色衣服的模拟. 非常的形象,理论上这样的单 ...

  • 单细胞转录组数据处理之细胞亚群注释

    前面我们一起学习到了单细胞转录组数据的降维聚类分群,基本上跑的都是标准代码,里面很多细节参数是需要自己慢慢摸索的.保证单细胞转录组表达矩阵质量ok啦,而且需要去除了各种混杂因素. 因为参数需要自己摸索 ...

  • 小鼠的13个不同组织器官的超10万个细胞才85个亚群(单细胞ATAC路在何方)

    最近在有粉丝求助,他的scATAC-seq数据的分析,使用 scATAC pro 这个软件得到 cluster 里面的细胞类型好少. 其实scATAC-pro 软件呢于2020年4月发表,在一个综合性 ...

  • 人人都能学会的单细胞聚类分群注释

    作为生物信息学教学队伍的财务一名,我旁观了大量代码实战技巧,也勉强是学会了一下R语言,恰好看到朋友圈单细胞比较火爆,而且群主的CNS图表复现超级容易理解,我也跟着学习了一下,目录如下: CNS图表复现 ...

  • ML之K-means:基于(完整的)手写数字图片识别数据集利用K-means算法实现图片聚类

    ML之K-means:基于(完整的)手写数字图片识别数据集利用K-means算法实现图片聚类 输出结果 设计思路 核心代码 metrics.adjusted_rand_score(y_test, y_ ...

  • Seurat4.0系列教程7:数据可视化方法

    我们将使用之前从 2,700个 PBMC 教程中计算的 Seurat 对象在 演示可视化技术.您可以从这里[1]下载此数据集 SeuratData::InstallData("pbmc3k& ...

  • 单细胞文献学习

    考虑到咱们生信技能树粉丝对单细胞数据挖掘的需求,我开通了一个专栏<100个单细胞转录组数据降维聚类分群图表复现>,也亲自示范了几个,不过自己带娃,读博,时间精力有限,所以把剩余的90多个任 ...

  • NC单细胞文章复现(三):Clustering

    我们上次基于各种marker对1189个细胞进行分类,然而,仅基于marker对细胞进行分类可能是不精确的,特别是考虑到scRNA-seq数据的high dropout rate  .因此,在进行t- ...

  • Seurat包的findmarkers函数只能根据划分好的亚群进行差异分析吗

    结业考核20题:https://mp.weixin.qq.com/s/lpoHhZqi-_ASUaIfpnX96w 课程配套资料文档在:https://docs.qq.com/doc/DT2NwV0F ...

  • 多模式数据联合分析

    加载数据 能够同时检测来自同一细胞的多种数据类型,称为多模式分析,代表了单细胞基因组学的一个新的和令人兴奋的前沿.例如CITE-seq能够同时检测来自同一细胞的转录组和细胞表面蛋白质.其他令人兴奋的技 ...

  • 单细胞工具箱|Seurat官网标准流程

    学习单细胞转录组肯定先来一遍Seurat官网的标准流程. 数据来源于Peripheral Blood Mononuclear Cells (PBMC),共2700个单细胞, Illumina Next ...

  • 单细胞亚群合并与提取(2021公开课配套笔记)

    新课发布在B站了,马上有热心的粉丝看完后写了配套笔记: 下面是粉丝linbo的笔记投稿 前言 视频地址:https://www.bilibili.com/video/BV19Q4y1R7cu 一般来讲 ...

  • CNS图表复现12—检查原文的细胞亚群的标记基因

    前言 前面的教程里面,我们首先根据 CNS图表复现08-肿瘤单细胞数据第一次分群通用规则进行了初步分群,如下所示: immune (CD45+,PTPRC), epithelial/cancer (E ...