Basic Information
英文标题: Consensus prediction of cell type labels in single-cell data with popV
中文标题:使用 popV 在单细胞数据中进行细胞类型标签的共识预测
文章作者:Can Ergen | Nir Yosef
文章链接:https://www.nature.com/articles/s41588-024-01993-3
Abstract
Para_01
已经提出了多种方法将细胞类型标签从注释的参考图谱转移到未注释的查询数据集中。
现有的细胞类型标签转移方法缺乏对结果注释的适当不确定性估计,限制了可解释性和实用性。
为了解决这个问题,我们提出了一种流行投票(popV)方法,这是一种基于本体的投票方案的预测模型集合。
PopV 实现了准确的细胞类型标记,并提供了不确定性分数。
在多个案例研究中,popV 能够自信地注释大多数细胞,同时突出显示通过标签转移难以注释的细胞群体。
这一步额外的帮助减少了手动检查的负担,手动检查通常是注释过程中的必要组成部分,并使人们能够专注于注释中最棘手的部分,从而简化整个注释过程。
Main
Para_01
细胞类型注释是分析单细胞 RNA 测序(scRNA-seq)数据的关键任务。
注释的质量直接影响下游分析,如细胞类型组成的比较以及基于每种细胞类型的分析。
手动注释非常耗时,并且需要特定生物背景和测序技术领域的知识。
因此,随着 scRNA-seq 成为越来越标准的实验室技术,自动生成注释的需求日益增长。
我们在此提出使用一系列细胞类型预测模型,不仅提供自动注释,还提供经过良好校准的不确定性度量。
Para_02
在一个特定的数据集中,没有细胞类型注释的金标准真相。
生物学是复杂的,当细胞状态连续变化时,细胞类型之间的界限是不精确的,甚至人类专家也可能对特定细胞的确切表型存在分歧。
因此,注释方法必须突出显示需要专家知识输入的不确定区域。
细胞状态的连续性,以及测序过程中的随机性,加上手动注释数据集的人的领域知识,可能导致即使在同一数据集中,细胞的注释具体程度也各不相同。
在多个数据集中,如新细胞亚型的识别或标记基因的重新定义等因素,导致细胞类型识别的差异。
然而,细胞类型粒度的差异、实验特定的干扰因素和技术依赖的基因表达稀疏性导致没有明确的‘最佳方法’用于自动注释。
基于这些因素,我们建议自动细胞类型注释流程必须突出显示可能需要人工审查的不确定区域,平衡预测的具体性和准确性,并且易于访问和使用。
Para_03
为了应对这些挑战,我们开发了流行投票(popV),这是一种灵活且可扩展的自动细胞类型注释框架,可以接收来自单细胞 RNA 测序实验的未注释查询数据集,从已注释的参考数据集中转移标签,并生成带有预测分数的预测,该分数表示预测的信心。
我们认为,如果注释不准确,各种预测方法将在其预测上存在分歧;而如果预测的细胞类型是正确的,则它们倾向于达成一致。
我们将这种方法命名为 popV,因为与其依赖单一分类器的预测,popV 采用共识方法,结合了八种自动化注释方法的预测。
popV 还通过在细胞本体论中汇总结果来考虑不同粒度级别的注释,这是一个由专家策划的细胞类型层次结构的正式化,具有标准化的词汇表。
Para_04
PopV 可作为易于安装的开源 Python 包使用,并设计为一个灵活的框架,以便将来纳入细胞类型分类方法。
我们提供了一个笔记本,允许预测新数据集,并基于 Tabula Sapiens 数据集提供了 20 种不同器官的预训练模型。
Results
Overview of popV
popV 概述
Para_01
PopV 采用专家共识的方法来完成细胞类型自动注释的任务。
输入包括一个未标注的查询数据集和一个已标注的参考数据集(图1a)。
这两个数据集都预期包含原始计数数据,并证明 popV 可应用于唯一分子标识符以及非唯一分子标识符技术的数据。
然后,PopV 运行以下八种不同的注释方法:随机森林(RF)、支持向量机(SVM)、scANVI、OnClass、Celltypist 和 k-最近邻(kNN),在使用三种单细胞协调方法——scVI、BBKNN 和 Scanorama 进行批次校正后运行(图1)。
选择这八个预测算法是因为它们被证明具有良好的预测准确性或良好的协调性能。
这些方法包括仅基于标记数据训练的监督方法(RF、SVM、OnClass、Celltypist 和 kNN),在训练过程中不考虑标签信息的应用无监督协调方法(BBKNN、Scanorama 和 scVI)以及使用标记和未标记数据训练的半监督方法(scANVI)。
然而,我们强调,popV 提供了一个直观的应用程序接口(API),用于快速纳入额外的注释方法。
我们在方法部分通过添加新分类器(使用 Harmony 进行批次校正后的 kNN)的代码片段展示了这一能力。
Fig. 1: Framework of popV for automatic cell type annotation.
PopV 接受一个未注释的查询数据集和一个已注释的参考数据集作为输入。
每个专家算法对查询数据集进行预测,以产生细胞类型注释。
可以通过对这些方法的一致性进行评分来量化相应标签转移的确定性。
工作流程生成一个样本报告,为用户提供关于已注释标签的见解。
Para_02
在分别应用每种方法后,popV 开始汇总由此产生的预测,以实现两个目的(扩展数据图 1)。
第一个目的是为每个查询细胞指定一个单一的‘共识’注释。
我们使用简单的多数投票程序来估计共识注释,计算支持每个注释标签的算法数量。
在这个过程中,所有算法都有一次‘投票’,除了 OnClass,它获得了多次投票。
原因是 OnClass 是我们方法集合中唯一能够预测参考数据集中不存在的细胞类型的方法。
它是通过一个两步过程实现的——首先从参考数据集中的标签集合中选择一个注释,然后将其传播以识别细胞本体中可能更精细的标签(即使这个标签在参考数据集中缺失)。
为了考虑这些‘样本外’细胞类型的注释,我们将从本体根节点到 OnClass 预测标签路径上的每个标签视为一个预测标签(扩展数据图 1)。
然后我们进行多数投票,OnClass 在不同层次上有多个‘投票’。
我们尝试使用简单的多数投票,使用 OnClass 第一阶段的‘样本内’注释,并且不沿细胞本体传播。
在我们的大多数分析中,我们发现我们的第一种策略优于简单策略(补充图 1)。
Para_03
popV 包含的许多算法的一个潜在有用的特性是它们具有‘算法内在’的预测确定性估计。
然而,我们发现不同方法的确定性校准不同,这使得这种方法徒劳无功,因为它会对估计确定性较高的分类器的预测给予更多权重。
Para_04
计算共识得分后,popV 生成一个样本报告,该报告包括预测摘要以及查询和参考数据集的综合视图。
对于后者,它显示了用于联合可视化参考和查询数据集的四种执行数据集成方法的均匀流形近似和投影(UMAP)(图1),以及一个条形图,比较参考和查询数据集中细胞类型的频率,以突出各种细胞类型的差异丰度。
报告中的一组摘要是共识预测与每种独立方法之间的混淆矩阵,以表明任何特定方法中哪些细胞类型被误认为是另一种细胞类型。
报告还包括按细胞类型显示的共识得分(即,同意的方法数——从1到8),以突出哪些细胞类型总体上难以预测。
为了补充这种‘算法外在’的确定性估计,我们还输出了每种方法的内在不确定性(即,分类器得分)(这些得分在方法部分定义)。
我们强调,内在不确定性和外在不确定性是量化一组细胞注释工具性能的两个互补测量指标。
Para_05
为了允许对新的查询数据集进行快速标注,我们提供了涵盖 Tabula Sapiens 中所有 20 个器官的预训练模型。
除了 Scanorama 和 BBKNN 外,所有方法都可以进行预训练,因为这两种方法计算了参考数据集和查询数据集的联合嵌入,使得预训练不可行。
对于 scVI 和 scANVI,我们提供了参考数据集的预训练嵌入,并使用 scArches 将查询数据集映射到该嵌入中。
PopV 提供了三种不同的细胞类型预测模式:在重新训练模式下,所有分类器从头开始训练,这在 Google Colab 会话中对 100k 细胞需要一个小时;在推理模式下,适用的情况下使用为参考数据集预先训练的模型,这需要 30 分钟来处理 100k 细胞;在快速模式下,仅使用预训练模型,并且仅预测查询数据集中的细胞类型,这需要 5 分钟来处理 100k 查询细胞。
PopV 是一个开源的 Python 项目,包括一个带有免费计算资源的在线 Google Colab 笔记本。
代码库通过简单的 API 支持添加新的参考数据集(除 Tabula Sapiens 外),并且可以从相同的笔记本环境中调用。
我们建议在任何新添加的参考数据集中,注释应与细胞本体保持一致,无论是通过匹配本体中的术语还是将新术语分层分配给本体中的现有术语。
为此,我们提供了脚本,以便在 popV(用于运行 OnClass 和计算我们的共识得分)处理之前,向细胞本体添加自定义细胞类型标签。
PopV prediction score discriminates high- and low-quality annotations
PopV预测得分区分高质量和低质量注释
Para_01
我们使用人类肺细胞图谱作为查询数据集,Tabula Sapiens 的肺组织作为参考数据集,评估了使用 popV 进行细胞类型注释的性能。
它包含各种免疫细胞、上皮细胞、内皮细胞和间质细胞,因此非常适合研究具有多样化标签的组织。
为了使两个数据集中的标签可比,我们将肺细胞图谱的标签转换为细胞本体论中的相应术语(补充图 2)。
Para_02
我们将 PopV 的预测与肺细胞图谱中的手动注释进行可视化对比,发现预测与原始注释之间有很强的一致性,查询细胞和参考细胞之间也有良好的整合(图2a)。
我们决定在这里使用 scANVI 整合,因为它在 scIB 度量中表现出最高的性能,这些度量用于测量数据整合和生物学保守性(扩展数据图2a)。
为了评估我们预测的质量,我们根据细胞本体树计算准确性术语(方法)。
正如其名称所示,精确匹配意味着预测的细胞类型与手动注释完全相同。
此外,直观地讲,将一种细胞类型预测为另一种相似细胞类型的预测算法比将细胞预测为不相关类型的表现更好。
父级匹配、子级匹配和同级匹配考虑了这一点,并衡量预测的细胞类型是否是相对于真实标注的父级、子级或同级在细胞本体树中的位置。
如果一个细胞类型的标签仅存在于查询集中而不在参考数据集中,这一度量尤其有用。
总体而言,PopV 对大多数细胞类型实现了高精度(图2b和扩展数据图2c)。
除了 scANVI 和 OnClass,所有方法在这个数据集中的表现相当。
此外,我们将 PopV 的性能与 Seurat 提供的标签转移进行了比较,Seurat 是另一种流行的细胞类型注释转移工具,发现 Seurat 的表现不如 PopV 使用的大多数方法。
我们还包括了一步之后的 OnClass 预测(OnClass_seen),其中 OnClass 仅预测参考数据集中存在的细胞类型,发现这与表现良好的注释工具类似,因此 OnClass 在此的较低性能仅是由于对未见细胞类型的预测。
总体而言,PopV 在精确匹配的数量上表现最佳,并且在没有匹配的细胞数量上与单个方法相当,突出了 PopV 预测比任何单一方法更准确。
为了更好地了解预测,我们在报告中显示 PopV 的条形图,突出查询和参考数据集中细胞类型的丰度以及预测准确性(扩展数据图2),并使用河流图显示细胞类型的混淆情况(补充图3)。
Fig. 2: PopV prediction on LCA and TS lung as reference is accurate and interpretable.
a, 经过 scANVI 整合后的 TS 参考细胞、LCA 查询细胞(用真实标签标记)和 LCA 查询细胞(用预测标签标记)的 UMAP 嵌入。
b, 各种方法在查询细胞上计算的本体准确性(方法部分)。
d, 共识得分为 4 或更低(低共识)的突出显示细胞。
e, 在 LCA 中放大的内皮细胞视图,显示了 popV 预测的标签和真实标签。放大的图片旋转了 90° 以便于所有标签的可读性。肺泡毛细血管内皮细胞 2 是毛细血管气细胞的细胞本体术语。LCA 在毛细血管气细胞和毛细血管内皮细胞之间注释了额外的细胞类型。TS,人类细胞图谱;LCA,肺细胞图谱。
Para_03
在检查 popV 预测分数时,我们发现预测的准确性与预测分数高度相关(图 2c)。
对于 6 分及以上的分数,我们发现超过 90% 的注释与真实情况完全匹配。
对于 8 分的情况,即所有方法之间完全一致的情况下,98% 的预测是完全匹配的。
对于 3 分及以下的分数,预测的准确性低于 50%,这表明 popV 共识分数是一个有价值的指标,可以反映分类的准确性,并指向需要进一步(和手动)审查的细胞群体。
Para_04
在考虑被分配低共识得分的细胞时,我们发现了三种可能解释不同方法之间不一致的原因(图2d)。
首先是某些具有不同标签的细胞亚群之间的区别不明确。
这通常发生在细胞状态连续变化的情况下,在转录组空间中没有明确的决策边界。
在这种情况下,由不同算法确定的边界可能会有所不同(因为它们依赖于不同的目标或技术),导致一致性较低。
然而,正是这些情况值得更密切(通常是手动)检查,并在必要时分配多个可选标签。
例如,我们在各种肺内皮细胞中发现了几个低共识得分的区域(图2e)。
大多数低共识得分的内皮细胞出现在毛细血管内皮细胞和肺泡毛细血管2型内皮细胞之间。
在这个区域,不同的算法对正确的边界存在分歧,但所有算法都预测这些细胞具有其中一个标签。
我们发现肺泡毛细血管2型内皮细胞表达EDNRB和HPGD,而毛细血管内皮细胞表达FCN3和IL7R。
两种细胞类型之间的细胞在这两个标记物上都是双阳性的,但它们不显示任何特定的标志基因。
因此,我们认为用毛细血管内皮细胞或肺泡毛细血管2型内皮细胞来描述这些细胞都不恰当,它们的表型介于这两种细胞类型之间。
因此,这是一个需要人工审查以确定这些细胞正确标签的区域。
事实上,在Lung Cell Atlas的原始注释中——这些注释未提供给popV——这些细胞被标注为毛细血管中间体1和2。
因此,这个例子表明,低共识得分可以帮助识别需要精确定义标签的区域,可能扩展参考图谱中的词汇量。
Para_05
在这个案例研究中,共识得分较低的第二个原因是查询数据集中包含参考图谱中不存在的细胞子集。
例如,虽然我们用作查询的肺细胞图谱包括最初标记为支气管血管2的一组内皮细胞,但这一子集(及其相应标签)似乎在我们的参考图谱中缺失。
实际上,当检查这些细胞的标志基因时,它们在PLVAP中的表达较高,而在静脉内皮标志基因ACKR1中的表达较低(补充图4),这可以解释为毛细血管内皮细胞(两种标志物均为阴性)和肺微血管内皮细胞(两种标志物均为阳性)之间的中间阶段。
这种标志基因表达的组合在Tabula Sapiens中未观察到,因此标记了一种不在参考数据集中存在的细胞类型。
Para_06
我们发现低共识的第三个可能原因是参考注释的不准确性。
例如,我们发现了一组 T 细胞具有较低的共识得分(扩展数据图 3)。
该组查询数据集中的所有细胞最初被(肺细胞图谱的作者)标记为效应 CD4+ αβ T 细胞,而来自 Tabula Sapiens 参考数据的类似细胞则被标记为 CD4 和 CD8 T 细胞的混合体。
因此,popV 中的大多数算法将这个低共识组标记为具有不同决策边界的 CD4 和 CD8 T 细胞的混合体。
手动跟进这一低分组后,我们检查了标志基因 CD8A,并发现了一个明确的决策边界,该边界区分了 CD4+(辅助性)和 CD8+(细胞毒性)亚群,这与(隐藏的)查询注释一致。
尽管有这种明确的划分,我们还是发现许多 CD8− 细胞在参考图谱中标记为 CD8+ T 细胞。
这个细胞组的低共识得分有助于识别参考数据集中标注错误的细胞,我们强调手动审查可以清理这些错误标签。
Para_07
其启发式方法是,包括具有不同偏差的方法可以让我们检测不确定的预测。
我们通过将 PopV 与八种不同核函数和成本参数的 SVM 算法之间的多数投票进行比较,研究了不同分类器是否必要。
我们发现 PopV 的共识评分比这种简化算法更能与准确性相关(扩展数据图 4a、b、d)。
事实上,我们在 PopV 底层的预测器中发现了更高的细胞类型标签预测多样性,并且没有发现任何一对预测器的汉明相似度超过 0.9(扩展数据图 4c)。
虽然 PopV 突出了标注不同 T 细胞亚群的问题,但 SVM 后的多数投票显示对预测为自然杀伤(NK)细胞的细胞具有高度不确定性。
然而,对于这些细胞,我们发现了与这些细胞是 NK 细胞一致的标志基因表达,这突显了 PopV 的准确预测。
综上所述,使用多样化的算法使 PopV 能够突出错误预测标签的细胞类型,而仅基于 SVM 预测器的更简化算法则无法提供一个校准的分类器。
Para_08
我们在这里证明了共识得分可以突出需要人工审查的区域,并且可以在这些区域使用标记基因表达进行重新注释。
这导致了在参考数据集中未发现的细胞类型的新划分,特定查询细胞类型的检测以及错误分配的参考细胞类型标签的更正。
PopV provides useful label transfer in case of drastic differences in cellular composition
PopV 在细胞组成存在显著差异的情况下提供了有用的标签转移
Para_01
在强调了 popV 能够检测特定查询细胞,并且共识得分能够突出显示这些细胞后,我们研究了当查询和参考数据集非常不同时,是否也能实现这一点。
为此,我们使用 Tabula Sapiens 作为参考数据集,研究了胸腺细胞的注释,以及另一项研究,该研究分析了不同年龄组(胎儿、儿童、青少年和成年)的胸腺作为查询(补充图 5)。
特别是,胸腺随着年龄的增长而退化,我们在这里使用的成人胸腺并不能准确代表年轻个体的胸腺结构和功能。
特别是,我们预计参考样本将无法充分代表发育中的 T 细胞群体,而在我们的查询数据中,这一群体非常普遍。
Para_02
UMAP 嵌入的两个协调数据集清楚地突出了参考数据集中表示的查询细胞子集,而正如 Tabula Sapiens 项目中供体年龄所预期的那样,胸腺细胞和发育中的 T 细胞的隔室在参考数据集中几乎不存在(图 3a 和补充图 6)。
确实,在参考数据集表示良好的区域中,我们发现了一致性得分和准确性都很高,而查询特定细胞类型的一致性得分较低(图 3b、c)。
我们发现,来自成人胸腺的查询细胞与参考数据集中的细胞相似,预测准确性很高(图 3d 和补充图 7)。
令人放心的是,popV 为大多数在成人中缺失的隔室中的细胞分配了低一致性得分,将其标记为需要手动注释(图 3e 和扩展数据图 5),而对于从成人胸腺分离的细胞,我们在所有算法中总体上发现了非常高的准确性和 popV 在准确性方面优于单一方法的一致性得分(图 3f 和补充图 8)。
我们发现底层算法的内部确定性与准确性关联不佳,并且这些算法的精确召回曲线下的面积低于 popV(扩展数据图 6 和补充图 9)。
Fig. 3: PopV identifies thymocytes as query-specific cell types and yields highly interpretable consensus scores.
a,使用 scANVI 集成参考细胞(TS)和查询细胞(不同年龄组的胸腺细胞)后的 UMAP 嵌入,由 popV 预测和原始注释标记。
b,UMAP 图上的 popV 预测得分覆盖图。对于胸腺细胞,预测得分较低,而对于大多数其他细胞类型,预测得分较高。
c,popV 预测的准确性突出了发育中的胸腺细胞的低准确性。
d,查询中成人胸腺细胞的 popV 预测准确性除 CD8 T 细胞外均很高。
e,左,PopV 准确性和共识得分在所有胸腺细胞中高度相关,对于共识得分为 7 和 8 的预测具有高准确性。右,所有方法对胎儿细胞的准确性均较低。
f,左,当子集为来自成年供体的细胞时,PopV 准确性和共识得分也高度相关。右,当子集为成年细胞时,PopV 显示出最高的准确性;大多数方法显示出类似的高准确性。
Para_03
我们确定了两种在 Tabula Sapiens 中代表性不足的细胞群体,与查询数据集相比,它们是皮质胸腺上皮细胞(也与退化有关)和浆细胞样树突状细胞。
与之前的例子类似,我们发现与皮质上皮细胞相关的共识得分确实较低,不同的算法将这些细胞归类为多种注释,包括成纤维细胞和髓质上皮细胞(补充图 10)。
在这种情况下,使用 PSMB11 这一皮质胸腺上皮细胞的已知标记物,可以相对容易地手动分配正确的非参考标签,该标记物在 Tabula Sapiens 参考中未表达于任何细胞类型。
Para_04
对于浆细胞样树突状细胞,除 Scanorama + kNN 外的所有算法预测这些细胞是 B 细胞或浆细胞。
Scanorama + kNN 预测这些细胞是树突状细胞。
即使是能够预测参考数据集中不存在的细胞的 OnClass,也将这些细胞预测为抗体分泌细胞或 B 系淋巴细胞,没有一个细胞被正确预测为浆细胞样树突状细胞。
然而,这些查询细胞表达了高水平的 CLEC4C 和 IL3RA,因此被正确标记为浆细胞样树突状细胞。
由于三分之二的浆细胞样树突状细胞得分在 5 或更低,手动识别这些细胞是可能的,用户可以使用这些标志基因自信地识别那些错误标注的细胞。
Para_05
唯一具有高共识得分但低准确率的细胞部分是被 popV 标记为内皮细胞的一组细胞,而查询数据集的原始(隐藏)注释中被标注为淋巴细胞。
然而,这些细胞表达 CAVIN2 和 TFPI,这与内皮细胞的注释非常吻合。
因此,这表明查询数据集中存在错误注释,而 popV 的预测是正确的。
Para_06
总体而言,这表明共识得分产生了一个可解释的预测准确性指标,并且有助于处理查询数据集和参考数据集之间不一致的情况。
Para_07
随着大型整合工作的出现,创建不同测序技术之间的共识细胞类型标签变得非常重要。
我们通过将标签从肺细胞图谱(图2)转移到两个肺数据集中应用了popV,一个使用Drop-seq技术测序,另一个使用核测序技术。
我们发现两种数据集的标签转移都非常准确(扩展数据图7)。
popV共识得分再次提供了一个比底层算法的内在确定性度量与准确性更好的相关性指标(补充图11-14)。
因此,它允许在这些更具挑战性的情况下检测出需要人工审查的细胞。
Para_08
PopV 依赖于使用细胞本体来聚合整个本体的投票。
对于某些参考数据集,细胞未根据现有的细胞本体进行注释。
在这种情况下,我们禁用了需要本体的 OnClass(补充说明和扩展数据图 8)。
此外,该数据集使我们能够研究不同细胞类型粒度对细胞类型预测的影响。
预测得分表明高粒度注释的转移信心较低,因此在这一非常精细的水平上进行注释需要更多的手动审查。
Para_09
最后,我们进行了消融研究,以测试是否可以在保持准确和易于解释的结果的同时从 popV 中移除算法(扩展数据图 9)。
在删除了八个算法中的三个后,我们发现测试案例中的准确性保持稳定。
因此,我们得出结论,算法的数量对于突出显示低置信度预测是至关重要的。
Discussion
Para_01
我们开发了popV,这是一种用于细胞类型注释的集成方法,旨在为细胞类型注释任务提供可解释的确定性量化。
我们在本文中展示了,在使用不同测序技术、不同的细胞类型分辨率以及参考和查询数据集的不同重叠度的各种场景下,popV能够产生与实际细胞类型转移准确性高度相关的置信度评分。
我们证明了预测得分可以识别出特定于查询数据集的细胞类型(如中颞回(MTG)特异性神经元)、在参考数据集中错误注释的细胞类型(如Tabula Sapiens中的CD4 T细胞亚群)或在查询数据集中错误注释的细胞类型(如胸腺中的淋巴管内皮细胞),以及虽然存在于两个数据集中但在参考数据集中未被注释的细胞类型(如Tabula Sapiens中的肺中间毛细血管内皮细胞)。
Para_02
PopV 被实现为一个易于安装的开源 Python 工具。
代码库的设计使得添加额外的细胞类型分类算法变得简单,从而允许研究人员规避选择单一算法的风险(即避免‘一刀切’的问题)。
我们期望未来将开发出更多的注释工具,并且 PopV 可以用作处理这些工具中的各种偏差以及帮助量化自动预测确定性的工具。
例如,根据用户请求,我们加入了 Harmony + kNN,这在初始发布时并未包含,因此在整个手稿中未使用,作为分类模型,并发现 PopV 的灵活框架在实现新预测器方面非常直接。
Para_03
我们在手稿中展示了总体上popV在准确性方面与单一最佳方法表现相当。
然而,popV的目标不是提高单个预测器的细胞类型注释准确性,而是产生一个易于解释且校准良好的确定性度量。
实际上,我们发现算法内在的确定性往往与细胞类型注释的准确性相关性较差。
虽然单个方法提供的校准与popV相似,但没有其他方法在所有案例研究中表现出类似的性能。
这也反映在最近的一项研究中,该研究强调了传统工具用于细胞类型转移的低校准性。
相反,我们证明了popV共识得分与准确性高度相关,并有助于识别需要人工干预的情况。
未来开发细胞类型注释工具的重点将放在提供更好的内部确定性测量上。
将这些算法纳入popV将为标签转移提供更加可解释的结果,例如,在多个算法具有较低内部确定性但对最可能的标签达成一致的情况下。
标签转移能够使不同数据集之间的细胞类型注释和谐统一,并简化数据分析。
然而,我们建议通过检查典型标志基因的表达来验证转移的标签,因为细胞类型标签转移可能会失败。
例如,在胸腺数据集中,对于相应的细胞类型未包含在参考数据集中的浆细胞样树突状细胞,这些细胞被错误地注释为B细胞。
Para_04
我们在 popV 中包含了八种不同的算法,并以一种允许轻松纳入新算法的方式开发了 popV。
我们进行了消融研究,发现移除算法导致共识得分更难以解释,并使区分低置信度预测变得更加困难。
未来,这些指标将使我们能够审查,包括增加新的算法或移除现有的算法。
在本文案例研究和其他数据集的应用中,我们发现当八个预测器中有七个或八个给出的评分时,准确率超过95%,而我们建议对共识评分为六个或更低的预测进行人工审查。
我们强调,popV 的良好校准依赖于一组多样化的预测器。
这些预测器有不同的偏差(基于 kNN 分类器的集成方法与基因表达空间中的监督分类器)。
PopV 是一个灵活的框架,可以轻松扩展到新的分类器。
为了让 popV 成为社区的宝贵资源,我们提供了包含最终版 Tabula Sapiens 发表的每个组织的预训练模型的 Google Colab 笔记本。
Methods
Para_01
PopV 是一个可以通过 Python 包索引获得的 Python 包。
关于 PopV 的更多详细信息、源代码和模型教程可在 https://github.com/YosefLab/popV 获取。
所有软件版本均按我们在可重复性 GitHub 仓库(https://github.com/YosefLab/popv-reproducibility)中的描述使用。
具体来说,使用了 PopV (v0.2.2),AnnData (v0.8.0),BBKNN (v1.5.1),Celltypist (v1.6.0),Harmony-Pytorch (v0.1.7),Onclass (v1.3),Scanorama (v1.7.3),Scanpy (v1.9.3),scikit-learn (v0.24.2) 和 scvi-tools (v1.0.3)。
Datasets
数据集
Tabula Sapiens
智者之表
Para_01
在整个手稿中,Tabula Sapiens 被用作参考数据集。
它从 CELLxGENE(https://cellxgene.cziscience.com/collections/e5f58829-1a66-40b5-a624-9046778e74f5)下载。
表达数据被设置为 h5ad 对象的原始对象,其中包含所有细胞和基因的计数数据。
这产生了 483,152 个细胞和 58,559 个基因。
我们过滤掉了每个组织中少于十个细胞的所有细胞类型,因为 popV 中使用的 kNN 无法预测少于八个样本的细胞(默认使用 15 个最近邻;补充表 1)。
我们确认所有细胞类型都存在于最近版本的细胞本体中,该版本从 https://github.com/obophenotype/cell-ontology/tree/v2023-02-19 下载。
此外,我们验证了 Tabula Sapiens 中的细胞类型注释不依赖于供体。
Tabula Sapiens 是按供体进行注释的,对于早期供体,相同细胞类型的细胞类型标签与后期供体不同。
为了减少这种不一致的影响,我们排除了一些样本(补充表 2)。
此外,我们发现一些 10× 样本之间存在强烈的批次效应。
在联系了原作者后,我们发现 10× 化学是造成这一问题的原因,并创建了一个包含正确检测方法的新元数据列。
更正后的检测方法可以通过 https://doi.org/10.5281/zenodo.7587774 获取。
所有模型都是使用连接的供体和检测方法作为批次协变量,为每种组织单独训练的(补充表 3 和 4)。
Lung Cell Atlas
肺细胞图谱
Para_01
数据从 CELLxGENE(https://cellxgene.cziscience.com/collections/5d445965-6f1a-4b68-ba3a-b8f765155d3a)下载。
我们重新标记了细胞类型,以符合细胞本体(补充表 6)。
此外,我们筛选了用于构建肺细胞图谱的所有血液样本。
我们创建了一个样本 ID 和检测方法的连接列,并使用这个连接的元数据作为 popV 中的查询批次键(补充表 5)。
在整个手稿中,查询数据集标签未用作 scANVI 的输入,因为 popV 的通用应用旨在处理未标记的查询数据集。
肺细胞图谱总共包含 75,071 个细胞,其中 39 种独特的细胞类型被用作原始肺细胞图谱中 59 种独特细胞类型的细胞本体标签。
Brain dataset
脑数据集
Para_01
数据从 CELLxGENE (https://cellxgene.cziscience.com/collections/283d65eb-dd53-496d-adb7-7570c7caa443) 下载。
我们下载了大脑皮层 (Cx)–中央前回 (PrCG)–初级运动皮层-M1C 和 Cx-中颞回 (MTG) 的解剖数据,作为细胞数量最多的两个皮质区域。
该数据集使用原始的细胞类型标签,并分别使用 cluster_id 和 supercluster_term 作为细胞类型的键。
我们移除了标记为 supercluster 术语 splatter 以及 miscellaneous 的细胞,因为这些可能包含手动注释失败的低质量细胞。
对于所有下游指标,我们移除了每个细胞类型标签中少于十个细胞的细胞类型,因为我们发现这些反映了来自不同脑区的核(中等棘突神经元、海马齿状回、海马 CA1–3 和杏仁核兴奋性神经元)。
我们决定不使用符合细胞本体论的标签,因为在原始数据集中所有神经元都被标记为相同的细胞本体论术语神经元,这不能反映这些细胞的异质性。
称为 subcluster_id 的细胞类型标签是最精细的注释级别。
然而,我们在核转录组中发现了这些标签的很少证据,并将它们排除在分析之外。
Thymus dataset
胸腺数据集
Para_01
数据从 https://cellxgene.cziscience.com/collections/de13e3e2-23b6-40ed-a413-e9e12d7d3910 下载,并使用相同的 CELLxGENE 访问链接进行分析。
我们对标记细胞类型,以实现与参考数据集相当的粒度(补充表 9)。
对于子集分析,胎儿样本被过滤到每个包含周数(例如,第 4 周)作为子字符串的发展阶段,而成人样本被过滤到人类早期成年期阶段。
我们在 popV 中使用供体 ID 和检测方法作为 query_batch_key(补充表 8)。
胸腺数据集总共包含 255,901 个细胞,28 种独特的细胞类型用作原始胸腺数据集中 31 种独特细胞类型的细胞本体。
然而,我们决定将所有 CD4+ 以及所有 CD8+ T 细胞汇总为一个共同的细胞类型,以使参考和查询数据集之间的注释粒度可比(补充图 7)。
我们还汇总了查询和参考数据集中的所有 B 细胞,标注为 B 细胞,因为 Tabula Sapiens 中 B 细胞的标签显示了强烈的供体不一致性,并且将所有内皮细胞汇总标注为内皮细胞,以协调细胞类型标签的粒度。
Nucleus sequencing and Drop-seq dataset
核测序和Drop-seq数据集
Para_01
数据从扩展的人类肺细胞图谱(https://cellxgene.cziscience.com/e/9f222629-9e39-47d0-b83f-e08d610c7479.cxg/)下载。
对于核测序,我们选择了研究编号 Sun_2020,而对于 Drop-seq,我们选择了研究编号 Schiller_2020。
我们使用供体编号作为查询批次键,并且没有使用查询标签键。
模型是从头开始训练的,使用了4,000个高度变异基因,这些基因是在参考细胞上计算得出的,在查询和参考数据集分别进行子集选择后,选择了共同的基因。
原始非调和注释中提供的细胞类型被用作基于原始论文中手动标签的真实标签。
我们重新标记了细胞类型,以实现与参考数据集相当的粒度(补充表10和11)。
Model parameters
模型参数
Para_01
我们使用了八种不同的细胞类型注释算法,在下文中,我们将解释这些注释算法的参数以及我们在 popV 中使用的数据预处理流程。
对于 UMAP 嵌入,我们使用了 scanpy 默认参数,除了将 min_dist 设置为 0.3。
对于 kNN 分类器,我们在 sklearn.neighbors.KNeighborsClassifier 中使用均匀权重和 n_neighbors 等于 15。
分类器首先在所有参考细胞标签上进行训练,然后在预测模式下应用于所有查询细胞。
为了提高此分类器的性能,我们使用了一个 sklearn 流水线和 PyNNDescent 进行邻居计算。
可以通过调用 popv.annotate_data 时使用字典 method_kwargs 来更改底层方法的所有默认参数。
Para_02
popV 中的几种算法使用图形处理单元(GPU)来加速训练。我们强烈建议使用带有 GPU 的 popV。本文突出的所有实验均在配备 128 GB 内存、Intel Core i9-12900KF 台式机 CPU 和 NVIDIA 3090 GPU 的工作站上进行。整个手稿中进行的所有案例研究都是在这台工作站上计算的,每组数据的细胞类型预测花费不到一小时。我们已将 popV 应用于大约 200 万个细胞的数据集,耗时不到 12 小时。对于大型数据集,我们建议禁用 Scanorama 上的 kNN,因为它在大量实验批次中扩展性不佳。
Preprocessing
预处理
Para_01
每个数据集都使用 popV 中的 Process_Query 函数进行了预处理。
Process_Query 的输入参数在 popV 文档中有解释。
如果使用预训练模型文件夹,则参考数据集和查询数据集都是相同基因的子集。
默认情况下,参考数据集中的细胞类型标签被随机采样到 300 个标记细胞,以减少底层方法的运行时间。
取查询数据集和参考数据集中基因的交集,并将两个数据集连接起来。
我们移除查询数据集和参考数据集中所有总细胞数少于九个的批次,否则 BBKNN 会失败,且不再进行进一步过滤。
使用 seurat_v3 风格在 scanpy 中计算高变基因,默认选择 4,000 个基因。
对于需要归一化数据的方法,应用 log1p 函数并将结果存储在单独的一层中。
这些主成分用于 Spanorama 和 BBKNN。
设置模型所用的所有键都存储在 anndata 对象的 uns 字段中。
Para_02
[ol]- 1. retrain—it trains all methods from scratch and stores the classifier to reuse them on other datasets. This hugely benefits from a GPU to train the scVI and scANVI algorithms as well as the OnClass algorithm. - 2. inference—it uses pretrained methods to classify query and reference cells; computes a joint UMAP embedding of query and reference cells and by default uses all eight methods; and trains scVI and scANVI models for 20 epochs using scArches query embedding19. - 3. fast—it uses pretrained methods to classify only query cells; computes a UMAP embedding of query cells if enabled; skips Scanorama and BBKNN data integration as those recompute an embedding instead of projecting cells into an existing embedding; and trains scVI and scANVI models for 1 epoch using scArches query embedding.
BBKNN
BBKNN
Para_01
Batch-balanced kNN 是一种数据集成方法。
为了集成数据集,BBKNN 从每个批次中选取最近邻来构建一个平衡的邻域图。
popV 的默认设置以及整个手稿中使用的是 50 个主成分、8 个批次内邻居和角度度量。
我们发现,在我们的用例中,角度度量优于标准欧几里得度量。
我们在 scanpy.external.pp.bbknn 中使用了 BBKNN 的实现。
批次平衡的最近邻被用作 sklearn.neighbors.KNeighborsClassifier 的预计算度量,并作为 UMAP 维度缩减的输入。
Spanorama
全景图
Para_01
然后使用这些相互最近邻在主成分分析空间中整合细胞。
默认情况下,在 popV 和整个手稿中,使用 50 个主成分。
我们使用 scanorama.integrate_scanpy 函数计算查询数据集和参考数据集的新联合嵌入。
这个联合嵌入用于 kNN 分类和 UMAP 嵌入。
scVI
scVI 是一种用于单细胞转录组数据的变分自编码器方法。
Para_01
ScVI 是一个变分自编码器,它将批次键作为潜在变量,并在其潜在空间中提供数据整合。
我们对 scVI 使用以下非默认参数:dropout_rate = 0.05, n_layers = 3, n_latent = 20, gene_likelihood = nb, encode_covariates = True 和 use_layer_norm = both。
这些非标准参数的原因是为了便于使用 scArches 集成查询数据集。
对于训练参数,我们默认使用 scVI,n_epochs_kl_warmup = 20 个周期。
我们计算查询数据和参考数据的联合潜在表示,这个联合嵌入用于 kNN 分类和 UMAP 嵌入。
scANVI
scANVI
Para_01
除了scVI,一个分类器在自编码器训练期间在潜在空间中的位置上进行训练,以将细胞分类为提供的参考细胞类型标签。
我们基于已训练的scVI模型继续训练,以减少总体训练时间。
对于scANVI中的分类器,我们使用n_layers = 3和dropout_rate = 0.1。
我们使用batch_size = 512和n_samples_per_label = 20作为训练参数,以稳定分类器的训练。
随后,使用内置的分类器来预测查询数据集中的细胞类型标签。
RF
射频
Para_01
RF 使用分类树的集合以及随机特征子集来规范化分类树。
我们使用归一化计数(见上文)作为 RF 和 sklearn.ensemble.RandomForestClassifier 的输入。
我们使用非默认参数,如 max_features = 200 和 class_weight = balanced_subsample,因为我们发现这种参数组合性能最佳。
为了训练分类器,使用了如上所述的子采样细胞类型标签,这可以提高预测速度。
SVM
支持向量机
Para_01
我们使用 sklearn.svm.LinearSVC 作为分类器。
我们使用非默认参数 C = 1,max_iter = 5000 和 class_weight = balanced,因为我们发现这种参数组合能够获得最佳性能。
为了训练分类器,我们使用了上述描述的 RF 方法中的子采样细胞类型标签,因为这可以提高预测速度。
为了计算预测概率,我们使用 sklearn.calibration.CalibratedClassifierCV。
Celltypist
细胞类型学家
Para_01
我们使用非默认参数 check_expression = False 和 max_iter = 500 以加快模型训练速度。
在使用 celltypist.annotate 时,除非在快速模式下将其设置为 False,否则我们使用 majority_voting = True。
作为内在概率,我们使用 predictions.probability_matrix 作为多数投票的纯度,而不是初始的逻辑回归概率。
这类似于 Celltypist 教程中使用的概率。
OnClass
OnClass
Para_01
OnClass 首先使用自然语言处理(NLP)对细胞类型名称进行处理,计算细胞本体的嵌入,然后应用随机游走。
然后优化了一个二部神经网络,以允许对参考细胞进行分类。
通过设计,这允许在基于细胞本体术语的低维嵌入中分类未见过的细胞类型。
我们下载了开放生物和生物医学本体铸造厂(OBO)本体文件的版本发布/2023-01-09。
为了允许快速重新训练句子嵌入,我们使用了 sentencetransformer.SentenceTransformer('all-mpnet-base-v2') 作为 NLP 模型。
这是一个比原始 OnClass 发表时更新的 NLP 模型,但允许更快的收敛。