三角洲Capure-C

迈克尔·夏皮罗

2022-04-26

deltaCaptureC

简介

该软件包的目的是从3C数据中检测染色质构象的中尺度变化。典型的3C数据可能如下所示:

空空的 开始 结束 EScells_1
chr2 13505797 13506141 2
chr2 13506144 13506556 2
chr2 13654334 13655871 14
... ... ... ...
chr2 105656443 105656693 241
chr2 105656696 105659412 263
chr2 105659415 105660479 126
chr2 105662321 105663389 275
chr2 105663392 105663974 615
... ... ... ...
chr2 173656857 173657083 2
chr2 173694707 173695349 2
chr2 173698231 173698911 4

所示片段为限制性内切酶消化片段。计数显示了实验捕捉到的相互作用的数量捕捉到的相互作用之间的每一个这些片段和波帕视点。该视点位于105661048 -105661864区域,在该视点附近我们可以看到更多的消化片段捕获。像r3Cseq这样的包试图确定每个片段捕获数量的p值。为了做到这一点,它将“背景”交互水平作为与视点距离的函数来估计。将每个片段的计数与背景水平进行比较,可以估计每个片段的显著性。

这种方法只使用有限的位置信息。虽然它在估计背景水平时考虑了与视点的距离,但忽略了单个片段的接近性。但假设我们有10个连续的片段,每个片段的计数都仅略高于背景。没有一个单独具有统计学意义,但它们的共同位置可能会使这个群体非常重要。我们将利用这一观察来寻找治疗或细胞类型之间计数的统计学显著变化。

考虑两种不同细胞类型的两个重复的相同视点的3C数据。

空空的 开始 结束 EScells_1 EScells_2 Neu_1 Neu_2
chr2 6226506 6226673 0 2 0 0
chr2 6235906 6237082 0 0 0 1
chr2 6270043 6270850 1 0 0 0
... ... ... ... ... ... ...
chr2 105656443 105656693 241 120 184 82
chr2 105656696 105659412 263 215 365 225
chr2 105659415 105660479 126 182 220 160
chr2 105662321 105663389 275 90 171 133
chr2 105663392 105663974 615 166 327 301
... ... ... ... ... ... ...
chr2 179455636 179455885 0 0 0 1
chr2 179473020 179473517 0 0 0 3.
chr2 179473520 179473584 0 0 0 3.

我们希望发现两种细胞类型之间的相互作用水平在统计上有显著变化的区域。

平均归一化计数差值:

第一个任务是规范化每个单元格类型的值。这将使我们能够找到每种细胞类型中每个消化片段的平均计数,从而找到两种细胞类型的平均归一化计数的差异。归一化依赖于估计a大小的因素对于每个复制。这里我们依赖于DESeq2::estimateSizeFactorsForMatrix()。欲了解更多细节,请参阅DESeq2小插图或Love, M.I, Huber, W., Anders, S.使用DESeq2基因组生物学15(12):550(2014)对RNA-seq数据的折叠变化和分散的调节估计。

我们已经包括了一个微型版本的总结实验miniSE,以演示提取delta平均归一化值miniDeltaSE的过程。

{r} library(deltaCaptureC) miniDeltaSE = getDeltaSE(miniSE)

实际的delta ase来自一个summarizeexperiment,表示这四个重复的完整数据集,随后被修剪到染色体2上围绕我们感兴趣的区域的区域。在存入1kb大小的bin后,它看起来像这样:

我们的接口在getsignantregions()函数的调用中执行分箱操作。然后挖掘增量数据(这里是deltaSE)以寻找重要区域。

该算法

算法进行如下:

  1. 数据被打包为smallBinSize(这里是1kb),并修剪为感兴趣地区.此处感兴趣的区域是视点中点的上游和下游500kb。
  2. 现在我们将该数据重新存入bigBinSize(这里是10kb)。这个值应该是smallBinSize的整数倍。
  3. 在视点附近,交互计数数据最高。因此,我们将观点地区
    • 在视点区域,我们计算不平衡的数据,即,在视点左边的箱子和在视点右边的箱子的和之间的差的绝对值。
    • 在我们定义的视点区域之外运行为容器的最大连续序列,其中增量值不改变符号。我们在每次运行中计算箱子的总数。我们称之为运行总数
  4. 我们现在对小容器增量数据进行随机排列。
    • 在视点区域内,这些排列尊重到视点的距离。因此,对于距离视点k的每一个距离,距离k的两个箱子要么交换,要么不交换。
    • 我们在非视点箱上执行任意排列。
  5. 对于每个排列,我们将结果的打乱数据重新放入大的容器大小,然后计算不平衡度并运行该排列的总数。
  6. 对于每一个排列,我们记录不平衡和运行总数的最大值和最小值。在所有的排列中
    • 不平衡值的分布
    • 最大运行总数的分布
    • 最小运行总数的分布
  7. 然后,通过比较原始数据中的不平衡性和运行总数与这些分布来评估原始(未排序)数据的显著性。

调用算法并绘制结果

signantregions = getsignantregions (delta ase, regionOfInterest, viewpointRegion, smallBinSize, bigBinSize, numPermutations, pValue)

然后绘图使用哪些

结果如下:

在引擎盖下

装箱

Binning是速率限制步骤,可以从一个小的summary实验的Binning到一个小的bin集合中看到:

该算法依赖于小箱子的排列,并将结果排列的数据重新组合到大箱子中,以便与归类到相同大箱子中的实际数据进行比较。放入较小的箱子只发生一次,而重新放入较大的箱子则是在每次排列中进行的。因此,我们要求较大的容器大小是较小容器大小的整数倍,这样重定向速度要快得多。