系列回顾:
ArchR官网教程学习笔记1:Getting Started with ArchR
ArchR官网教程学习笔记2:基于ArchR推测Doublet
ArchR官网教程学习笔记3:创建ArchRProject
ArchR官网教程学习笔记4:ArchR的降维
ArchR官网教程学习笔记5:ArchR的聚类
ArchR官网教程学习笔记6:单细胞嵌入(Single-cell Embeddings)
ArchR官网教程学习笔记7:ArchR的基因评分和Marker基因
ArchR官网教程学习笔记8:定义与scRNA-seq一致的聚类
这一章都是理论的知识,原理很多,对于我这个没学过统计学的人来说读起来有些吃力。翻译的也比较晦涩,感兴趣的同学可以去官网看英文原版here
因为scATAC-seq数据本质上是二进制的,意味着任何单个的位点要么是可接近的,要么是不可接近的。我们想执行的分析不可能在单个细胞上就能完成。此外,我们想要执行的许多分析都需要重复来获得统计学显著性的测量值。在单细胞数据中,我们通过创建“伪批量重复”(pseudo-bulk replicates)来解决这些问题。伪批量(pseudo-bulk)指的是一组单细胞,其中来自每个单细胞的数据被合并成一个单一的伪样本(pseudo-sample),类似于bulk ATAC-seq实验。ArchR为每个预期的细胞分组生成多个这样的伪批量样本,因此有伪批量重复一词。在这个过程中,潜在的假设是,被组合在一起的单细胞非常相似,所以我们不关心它们之间的区别。这些细胞分组几乎总是来自单个的cluster或cluster的超级组,对应于已知的细胞类型。本章描述了ArchR生成这些伪批量重复的过程。
(一)ArchR如何生成伪批量重复?
为了创建伪批量复制,ArchR使用了分级优先的方法。用户指定(i)所需的最小和最大重复数,(ii)每个重复所需的最少和最多的细胞数,以及(iii)如果特定分组缺少足够的细胞来进行所需的重复数时使用的采样比率。例如,采样率为0.8意味着对于每个重复,可以在不替换的情况下采样细胞总数的80%(这将导致对多个重复进行替换的采样)。在这种情况下,多个重复可能包含一些相同的细胞,但如果你希望从缺少足够细胞的细胞群生成伪批量重复,那么这是必要的牺牲。
我们处理伪批量重复的生成可以用一个决策树来描述,如下所示:
我们在这里用文字概括了这个过程的一些关键事项。首先,用户标识要使用的细胞群,这通常是ArchR里call的clusters。然后,对于每个细胞群,ArchR尝试创建预期的伪批量重复。理想的伪批量重复是由单个样本中足够数量的细胞组成。这保持了样品的多样性和重复之间的生物学variation。这是ArchR努力想要得到的,但实际上在这个过程中有5种可能的结果,在ArchR中按优先级排列如下:
1.足够多的不同样本(至少是最大#重复数)每个都拥有超过最小细胞数的细胞,以感知样本的方式创建伪批量重复,仅将来自相同样本的细胞合并为单个重复。
2.有些样本的细胞数超过了最少细胞数,可以以感知样本的方式创建伪批量重复。剩下的所需要的重复是通过合并那些在感知样本的伪批量重复中没有出现的样本的细胞来创建的。
3.没有一个样本拥有超过创建可识别样本的伪批量重复所需的最小细胞数,但是细胞数比minCells * minReps要多。
4.细胞群内的总细胞数小于最小细胞数乘以最小重复数(minCells * minReps),但大于最小细胞数除以抽样比例。通过在单个重复中不进行替换而在多个重复中进行替换的抽样来创建最小的重复数,同时最小化多个伪批量重复中的细胞数。
5.细胞分组内的总细胞数小于最小细胞数除以抽样比率。这意味着我们必须通过在单个重复中以及在不同的重复中进行抽样和替换来进行复制。这是最坏的情况,用户在使用这些伪批量重复时应该谨慎。这可以在其他各种ArchR函数使用minCells参数来控制。
举个例子,下面是一个示例数据:
我们将参数设置成:minRep = 3, maxRep = 5, minCells = 300, maxCells = 1000, sampleRatio = 0.8
(1)Cluster 1
对于cluster 1,我们有6个样品(超过maxRep设置的参数),每一个样品都超过了minCells的300个细胞。这就是上面提到的第一种情况。我们创建5个伪批量重复:
关于这些重复,需要注意两件事:(i) SampleC被忽略了,因为我们有足够的样本来创建能够识别maxRep样本的伪批量重复,而且SampleC拥有最少的细胞数。(ii)样品D只使用了1000个细胞,因为这是maxCells的值。
(2)Cluster 2
对于Cluster2,我们有3个样本的细胞数都比minCells多,其他的样本没有。这说明了上面的第二种情况,我们将进行以下伪批量重复:
在这个例子中,第四个重复是从三个样品里都取了一些细胞。
(3)Cluster 3
对于Cluster3,我们只有2个样本的细胞数超过minCells的设置,小于所需的minReps。但是,如果我们把剩下的样本中的细胞合并起来,我们就可以有一个额外的重复(多于minCells)。这将给我们提供3个伪批量重复,就是上面所说的第三种情况:
(4)Cluster 4
对于Cluster4,总细胞数为750,小于minCells * minReps(900细胞)。在这种情况下,我们没有足够的细胞来使用minCells来生成minReps,而不进行某种形式的替换采样。然而,总细胞数仍然大于minCells / sampleRatio(375个细胞),这意味着我们只需要在不同的伪批量重复中进行替换采样,而不是在单个重复中进行。这代表了上面第四种情况:
(5)Cluster 5
对于Cluster5,细胞总数为250个,小于minCells * minReps(900个细胞)和minCells / sampleRatio(375个细胞)。这意味着我们必须在每个样本内和不同的重复之间进行替换取样,以制造伪批量重复。这代表了上面第五种最不理想的情况,因此我们在下游分析中使用这些伪批量重复时应该谨慎:
(二)创建伪批量重复
在ArchR中,使用addGroupCoverages()
函数进行伪批量重复。这里的关键参数是groupBy
,它定义了应该为其进行伪批量重复的组。这里,我们使用Clusters2,它是前一章中由scRNA-seq数据定义的细胞类型来标记的clusters:
> projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters2")
通过生成这些伪批量重复,我们现在可以call数据中的peaks了。如前所述,我们不希望在所有细胞的合并集合上call peaks,因此定义这些更详细的细胞群,为call peak提供了理想的起点。