Luecken MD, Theis FJ. Current best practices in single-cell RNA-seq analysis: a tutorial. Mol. Syst. Biol. 2019, 15: e8746.
文章太长分而述之,长版:sc-Review:单细胞RNA-seq数据分析最佳实践
Cluster analysis
将细胞聚类通常是任何单细胞分析的第一个中间结果。簇允许我们推断细胞类型。根据细胞基因表达谱的相似性对细胞进行分组,得到细胞簇。通过距离度量来确定表达谱相似性,通常将降维结果作为输入。相似性评分的一个常见示例是欧几里德距离,该距离在 PC 缩减的表达空间上计算。目前主要有两种方法聚类产生细胞簇:聚类算法和社区检测算法(community detection)。
聚类是一种经典的无监督机器学习方法,直接基于距离矩阵。通过最小化簇内距离或在减少的表达空间中找到致密区域,将细胞分配给 clusers。流行的 k-means 聚类算法通过确定簇中心并将细胞分配到最近的簇中心,迭代优化质心位置,将细胞分为 k 个簇(MacQueen,1967)。这种方法需要输入预期的簇数量,通常是未知的,必须进行启发式校准。k-means 应用于单细胞数据的距离指标各不相同。标准欧氏距离的替代方法包括余弦相似性 (Haghverdi et al,2018)、基于相关性的距离度量 (Kim et al,2018) 或 SIMLR 方法,该方法使用高斯核学习每个数据集的距离度量 (Wang et al,2017)。最近的一项比较表明,当使用 k-均值或作为高斯核的基础时,基于相关的距离可能优于其他距离指标 (Kim et al,2018)。
社区检测方法是图聚类算法(graph-partitioning algorithms),因此依赖于单细胞数据的图表示。这个图的表示是使用 K 最近邻方法(KNN 图)。图中将细胞表示为节点,每个细胞与其 K 个最相似的细胞相连,这些细胞通常使用欧氏距离在 PC 缩减的表达空间上获得。根据数据集的大小,K 通常设置在 5 到 100 个最近的邻居之间。所得图表获取了表达数据的基础拓扑结构 (Wolf et al,2019)。表达空间的密集采样区域表示为图的密集连通区域。使用社区检测方法检测这些密集区。社区检测通常比一般的聚类更快,因为只有相邻的细胞对必须被认为属于同一个集群。这种方法大大减少了可能群的搜索空间。
在首创表型法(PhenoGraph method) (Levine et al,2015) 后,单细胞数据集的标准聚类方法已成为多分辨率模块优化(Newman & Girvan,2004;如Louvain算法(Blondel et al, 2008)实现在单细胞KNN图上。已经成为Scanpy和Seurat单细胞分析平台中默认聚类的方法。已有研究表明,它在单细胞RNA- seq数据聚类方面优于其他聚类方法(Duo ' et al, 2018;(Freytag et al, 2018)。
从概念上讲,Louvain 算法将社区检测为一组单元,它们之间的链接比从单元的总链接数预期的要多。优化的模块功能包含一个解析参数,允许用户确定集群分区的规模。通过子集 KNN 图,也可以只对特定的集群进行子集。这样的子聚类可以允许用户识别细胞类型聚类内的细胞状态 (Wagner et al,2016),但也可能导致仅来自数据噪声的模式。
问题和建议:
•我们建议在单细胞KNN图上通过Louvain社区检测进行聚类。
•聚类不需要在单个分辨率下执行。
特定的cell群是关注数据集中更详细的子结构的有效方法。
Cluster annotation
在基因水平上,通过寻找每个聚类的基因特征对聚类数据进行分析。这些所谓的标记基因(marker genes)表征了该簇,并被用来用一个有意义的生物学标签来注释它,该标签代表细胞簇内细胞的身份。由于任何聚类算法都会产生数据的分区,所以只有成功注释所代表的生物学才能确定所识别的聚类的有效性。
虽然可以假设在单细胞数据中检测到的簇代表细胞类型,但有几个变异轴决定了细胞同一性 (Wagner et al,2016;Clevers et al,2017)。首先,并不总是清楚什么是细胞类型。例如,虽然 T 细胞可能是某些细胞类型的满意标记,但其他细胞可能在数据集中寻找 T 细胞亚型并区分 CD4 和 CD8 T 细胞 (Wagner et al,2016;Clevers et al,2017)。此外,相同细胞类型的细胞在不同状态下可在单独的簇中检测到。由于上述原因,最好使用术语细胞身份(cell identities)而不是细胞类型(cell types)。在分群和注释群之前,用户必须决定哪一级别的注释细节,从而决定哪一级集群的分辨率。
识别和注释簇依赖于使用描述单个细胞身份预期表达谱的外部信息来源。感谢最近和正在进行的努力,如小鼠大脑图谱 (Zeisel et al,2018) 或人类细胞图谱 (Regev et al, 2017),可用的参考数据库越来越多。这些数据库极大地方便了细胞身份注释。在没有相关参考数据库的情况下,可以通过比较数据来源的标记基因与来自文献的标记基因(见 project github 的案例研究)或直接可视化文献来源的标记基因的表达值(图 6B)来注释细胞身份。应该注意的是,后一种方法将用户限制在对来源于表达研究的细胞类型的经典理解,而不是细胞身份。此外,研究表明,常用的细胞表面标志物定义细胞特性的能力有限 (Tabula Muris Consortium et al,2018)。
使用参考数据库信息注释集群有两种方式:使用数据来源的标记基因或使用全基因表达谱。可通过应用两组之间的差异表达 (DE) 检验找到标记基因集:一组中的细胞和数据集中的所有其他细胞(参见差异表达检验)。典型的,我们集中在感兴趣的簇中上调的基因。由于标记基因预期具有较强的差异表达效应,因此通常使用简单的统计检验,如 Wilcoxon 秩和检验或 t 检验,通过基因在这两组之间的表达差异进行排序。将各检验统计量中排名靠前的基因视为标记基因。通过富集试验、Jaccard 指数或其他重叠统计,比较数据集中的标记基因和参考数据集中的标记基因,可对聚类结果进行注释。引用 web 工具,如www.mousebrain.org(Zeisel et al,2018) 或http://dropviz.org/(Saunders et al,2018) 允许用户可视化参考数据集中数据集标记基因的表达,以促进细胞识别注释。
检测标记基因时应注意两个方面。首先,标记基因获得的 P 值基于获得的细胞簇代表实际生物学过程。如果考虑到聚类的不确定性,在统计检验中必须考虑到聚类与标记基因检测的关系。由于聚类和标记基因通常是基于相同的基因表达数据确定的。DE 检验中隐含的无效假设是基因在两组之间具有相同的表达值分布。然而,由于这两组是由标记基因检测中的聚类方法的输出定义的,它们的基因表达谱在设计上存在差异。因此,即使对 splatter 生成的随机数据进行聚类,我们也发现了显著的标记基因 (Zappia et al,2017)(见附录补充文本 S3)。为了在聚类数据中获得一个合适的显著性度量,可以使用置换检验来解释聚类步骤。本试验在附录补充文本 S3 中详细说明。最近的一种差异表达工具也专门解决了这一问题(预印:Zhang et al,2018)。在当前设置下,P 值通常被夸大,这可能导致高估标记基因的数量。然而,基于 P 值的基因排序不受影响。假设聚类有生物学意义,排名靠前的标记基因仍将是最佳标记基因候选。首先,我们可以通过可视化检查预先验证标记基因。我们强调,通过无监督的聚类方法,当通过单个基因的表达确定细胞同一性群集时,可以解释所有其他基因的 P 值。这种单变量的聚类注释方法虽然常见,但不推荐在特殊情况下使用(例如 β 细胞中的胰岛素或红细胞中的血红蛋白)。其次,标记基因在数据集中区分一个簇与其他簇,因此不仅依赖于细胞簇,还依赖于数据集组成。如果数据集组成不能准确代表背景基因表达,检测到的标记基因将偏向于缺失的部分。特别是在计算细胞多样性较低的数据集的标记基因时,必须考虑这方面。
最近,自动集群注释已经可用。通过直接将注释参考簇的基因表达谱与单个细胞进行比较,scmap (Kiselev et al,2018b) 或 Gaett (preprint:Pliner et al,2019) 等工具可以在参考和数据集之间传输注释。因此,这些方法可以同时执行注释和聚类分群,而不需要数据驱动的聚类。由于细胞类型和状态组成在实验条件之间存在差异(Segerstolpe et al,2016;Tanay)基于参考数据的聚类不应取代数据驱动的方法。
聚类、聚类注释、重新或子聚类和重新注释的迭代可能是耗时的。自动集群注释方法极大地加速了这一过程。然而,自动化和手工方法有其优点和局限性,很难推荐一种方法而不是另一种。速度的提高与灵活性的降低是一致的。如上所述,参考图谱将不包含与研究数据集完全相同的细胞标识。因此,不应放弃标记基因计算进行手动注释。特别是对于包含许多集群的大型数据集,目前的最佳实践是两种方法的组合。为了提高处理速度,自动化的细胞识别注释可以用于粗略标记细胞和识别可能的子簇。随后,应对数据集簇计算标记基因,并与来自参考数据集或文献的已知标记基因集进行比较。对于较小的数据集和缺少参考图谱的数据集,手动注释即可。
问题和建议:
•不要使用标记基因p值来作为细胞鉴定的唯一指标,特别是当检测到的标记基因不能帮助注释cell群时,p值可能被夸大,但是P值得排序依然是有意义的。
•请注意,同一细胞识别簇的标记基因在不同数据集之间可能完全由于数据集细胞类型和状态组成而不同。
•如果存在相关的参考图集,我们建议使用自动化的集群注释,并结合基于数据的标记基因的手动注释来注释集群。