该软件包的目的是从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)以寻找重要区域。
算法进行如下:
signantregions = getsignantregions (delta ase, regionOfInterest, viewpointRegion, smallBinSize, bigBinSize, numPermutations, pValue)
然后绘图使用哪些
图书馆(deltaCaptureC)significantRegionsPlot =plotSignificantRegions(significantRegionssignificanceType,plotTitle)
结果如下:
我们已经给出了一个使用getDeltaSE()的例子,将miniSE转换为miniDeltaSE。这是一个多步骤的过程,首先将miniSE的列归一化,然后对每个处理的值求平均值,最后取它们的差值。对于规范化,我们依赖于DESeq2::estimateSizeFactorsForMatrix()。
图书馆(SummarizedExperiment)图书馆(deltaCaptureC)se =miniSE数=化验(se) [[“计数”]]sizeFactors =DESeq2::estimateSizeFactorsForMatrix(计数)colData(se)$sizeFactors =sizeFactors化验(se) [[“normalizedCounts”]] =计数为(我在seq_len(ncol(化验(se) [[“normalizedCounts”]]))){化验(se) [[“normalizedCounts”]][我]=化验(se) [[“normalizedCounts”]][我]/colData(se)$sizeFactors[我]}
根据您的应用程序,您可能希望使用自己的归一化方法。
delta summary experiment是两个处理的平均表达式之间的差值。
图书馆(SummarizedExperiment)图书馆(deltaCaptureC)meanNormalizedCountsSE =getMeanNormalizedCountsSE(miniSE)meanCounts =分析(meanNormalizedCountsSE)δ=矩阵(meanCounts [,1]-meanCounts (,2),ncol =1)colData =data.frame(δ=sprintf(“%s - %s”,as.character(colData(meanNormalizedCountsSE)$治疗(1]),as.character(colData(meanNormalizedCountsSE)$治疗(2))),stringsAsFactors =假)deltaSE =SummarizedExperiment(分析=列表(δ=δ),colData =colData)rowRanges(deltaSE) =rowRanges(meanNormalizedCountsSE)
装箱
Binning是速率限制步骤,可以从一个小的summary实验的Binning到一个小的bin集合中看到:
图书馆(deltaCaptureC)打印(长度(smallSetOfSmallBins))#> [1]打印(长度(smallerDeltaSE))#> [1] 401发出滴答声::抽搐(把箱子装进小箱子)binnedSummarizedExperiment =binSummarizedExperiment(smallSetOfSmallBins smallerDeltaSE)发出滴答声::toc()#>分成小箱子:69.32秒
该算法依赖于小箱子的排列,并将结果排列的数据重新组合到大箱子中,以便与归类到相同大箱子中的实际数据进行比较。放入较小的箱子只发生一次,而重新放入较大的箱子则是在每次排列中进行的。因此,我们要求较大的容器大小是较小容器大小的整数倍,这样重定向速度要快得多。