SCCAF 单细胞聚类评估框架
分享是一种态度
文章信息
文献标题:Putative cell type discovery from single-cell gene expression data
发表时间:2020.05.18
发表杂志:Nature Methods(IF=30.822)
原文链接:https://www.nature.com/articles/s41592-020-0825-9
摘要
本文作者提出了单细胞聚类评估框架(Single-Cell Clustering Assessment Framework, SCCAF),用于从单细胞 RNA 测序(scRNA-seq)数据中自动鉴别可能存在的细胞类型。通过迭代地对给定的细胞集合应用机器学习方法,该方法能同时鉴定不同的细胞亚群及其特征基因,这些差异表达的特征基因能有效区分目标亚群和其他细胞。作者以经过专业注释的公共数据集为评估基准,发现 SCCAF 能精确地自动识别出 ground truth 的细胞分群模式。
引言
单细胞测序的主要用途之一是识别样本中包含的细胞类型,也即目前常用的诸如 Seurat 和 Scanpy 等分析流程,基于(无)监督聚类完成细胞分群,并结合已知的 marker 基因进行分群注释。然而,这一分析过程常常伴随以下问题:
对一个新的数据集来说,其实际包含的细胞类型数量是未知的。尽管有工具可用于评估数据中可能的聚类数量(SC3)或基于数据空间距离进行聚类合并(DendroSplit),它们都无法保障聚类结果反映的是真实生物学规律; 面对大样本数据集,纯手动注释耗时费力; 尽管有多种基于参考数据集的自动化注释工具(SingleR、CHETAH、ACTINN、scClassify 等),它们通常难以发现新的细胞类型。
基于上述问题,作者提出了一种基于 python 的自动化方法——SCCAF,用以辅助发现新的、尚未被注释的细胞类型。
SCCAF 原理:基于自映射(Self-projection)的方式
对给定的 scRNA-seq 表达矩阵,SCCAF 包含以下步骤:
初步聚类:基于(高可变)基因或主成分空间,利用诸如 k-means、louvain、leiden 等聚类算法,得到实际聚类(actual clusters)的结果。 自映射:将每个聚类的细胞随机分割成训练集和测试集,训练一个分类器作用于测试集,得到预测聚类(predicted clusters)。对于给定的聚类,理想的分类器应该能恰好准确地从测试集中识别出来自相同聚类的细胞。如果发生了“过度聚类”(over-clustering),分类器就无法将这些衍生出的聚类区分开。如果发生“聚类不足”(under-clustering),由于该结果代表了混合的细胞类型,分类器的表现也应该变差。 混淆矩阵:评估 predicted clusters 和 actual clusters 的一致性可以得到混淆矩阵(confusion matrix)。如上图 j,聚类 B 的自映射一致性很好,而 A、C 均互相存在错误分类的情况。 混淆矩阵归一化:计算错误分类和正确分类的细胞比例来归一化不同大小的聚类。 混淆矩阵离散化:基于整个数据中的最大混淆率 聚类合并:假设发生了 over-clustering,离散化的混淆矩阵可以代表聚类联结图(cluster connection graph),直观理解就是聚类之间的相似性,相连的聚类被合并。 迭代上述过程,整体的自映射准确度将逐渐提高,直到达到阈值。 关于分类器:默认使用 logistic regression 模型,其他包括支持向量机(support vector machine)、决策树(decision tree)、随机森林(random forest)和贝叶斯模型(Gaussian naive Bayes)
上图是 SCCAF 用于模拟数据集的情况,非常直观地表示了 SCCAF 的计算流程。
SCCAF 应用于真实数据
作者首先利用已经发表的公共数据测试 SCCAF 的性能。从图 a 可以看到,如果采用常规的聚类分群,调高分辨率能发现一些占比较小的细胞类型,但会使得占比大的亚群被过度聚类;减小分辨率,尽管准确区分了占比大的亚群,却无法找出占比小的亚群。而 SCCAF 通过迭代地自映射和聚类合并,成功解决了上述问题。
接下来,作者评估了迭代次数对分群准确性的影响。随着迭代次数增加,准确性的增加呈现类似菌落生长的 S 型曲线。当达到趋近于 100% 的准确度时,继续增加迭代次数将面临过度合并聚类的风险,准确性反而会下降。
最后,作者将 SCCAF 应用于小鼠造血干细胞的数据集,鉴定出红细胞发育过程中的不同细胞状态及其转录动态变化。一系列真实数据的测试说明,SCCAF 不但在诸如胰腺、神经系统等异质性离散的样本中效果拔群,在造血、分化等异质性呈连续特征的数据集中的表现也不错。
在使用上,SCCAF 基于 AnnData 对象,可以无缝衔接到 Scanpy。目前,源码已上传至 github:https://github.com/SCCAF/sccaf,作者另外提供了多个示例教程:https://github.com/SCCAF/sccaf_example。SCCAF 还作为 Human Cell Atlas(https://humancellatlas.usegalaxy.eu/) 的 Galaxy 在线工具之一。
总结
之所以选这篇文章,当然是因为我最近在体验它的工具啦!效果确实不是吹的,按照教程的步骤,在初始聚类时选一个较高的分辨率(比如 leiden 算法下选 1.5),尽量把罕见细胞亚群给分出来,再借助 SCCAF 强大的聚类合并功能,很容易就能得到恰当的细胞分群结果了。去年 2 月发表在 Science 上的人类胸腺细胞图谱文章【A cell atlas of human thymic development defines T cell repertoire formation(http://dx.doi.org/10.1126/science.aay3224)】中的分析思想也是用无监督聚类结合 logistic regression 分类器得到更准确的细胞分群(两篇文章的通讯作者都是 Sarah A. Teichmann……)。
以前,单细胞测序的分析流程通常是先找大聚类,再取子集做亚聚类。面对占比较小的细胞类型时,也曾有先过度聚类,再手动合并的做法,我自己就这么干过。然而,现在的单细胞文章动不动就给你几十万、上百万细胞,即使这样,还是会发现某些类型的细胞只捕获了几十个,要是还像原先那样,不但步骤繁琐,而且那分群图还看得人眼花。SCCAF 相当于把这些中间步骤自动化了,确实是很大的便利。
当然,任何方法和工具都要经历时间的考验,每年新开发的生信工具那么多,大浪淘沙剩下的来来去去都是那几个。此外,工具类文章做测试时,总是偏爱那么几个代表性数据集(PBMC、CBMC、胰腺、神经系统等),但人体在时间和空间的维度上都具有相当的动态复杂性,同样的方法,用于不同课题、不同设计产生的单细胞数据,效果的差别可能超出我们的想象。一个典型的例子就是数据整合,自从 2018 年 Seurat 团队提出 CCA 整合分析以来,直到今天,单细胞数据整合工具仍然在野蛮生长之中。SCCAF 也不例外,相信这种为大样本单细胞分析提供的便利,会使其在未来接受各种奇葩数据的检验,也许哪天它也会在某个新工具文章中作为衬托红花的绿叶……
最后,我大致看了作者在 github 上的源码,中间有一个随机抽样划分训练集和测试集的步骤,作者似乎没有加随机数种子:
这就使得同一套数据集每次分析时都会产生略微不同的训练集和测试集。根据 SCCAF 的算法原理,我大致猜测它可能会影响某些复杂情况下自映射得到的混淆矩阵,进而影响最后的聚类合并结果。由于时间有限,我还没评估过这个小缺陷对数据分析可重复性的影响到底有多少。个人认为,它至少应该加上随机种子参数,给用户一个重复分析的机会,这一点 Seurat 就做得相当好,几乎每一个常用分析函数都设置了随机种子。
如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程
看完记得顺手点个“在看”哦!
长按扫码可关注