【发布时间】:2016-09-16 06:40:11
【问题描述】:
我正在探索使用 data.table 来计算基因组区间,以替代 GenomicRanges。
我有以下问题: 对于像这样的(非常大的)BED 文件:
data.table(chr=c("chr1", "chr1", "chr1", "chr2", "chr2", "chr3"),
start=c(8, 10, 20, 7, 10, 30),
end=c(9, 12, 25, 13, 12, 40),
strand=c("+", "+", "-", "+", "-", "+"),
score=c(1.2, 3.2, 0.5, 6.0, 1.0, 9.0))
看起来像:
chr start end strand score
1: chr1 8 9 + 1.2
2: chr1 10 12 + 3.2
3: chr1 20 25 - 0.5
4: chr2 7 13 + 6.0
5: chr2 10 12 - 1.0
6: chr3 30 40 + 9.0
我想合并附近的特征/范围:对位于同一染色体和链上且在 X 距离内的特征进行分组,并对它们的分数进行一些计算。对于上面的示例,将合并前两个特征并将它们的分数相加:
chr start end strand score
1: chr1 8 12 + 4.4
2: chr1 20 25 - 0.5
3: chr2 7 13 + 6.0
4: chr2 10 12 - 1.0
5: chr3 30 40 + 9.0
假设没有任何输入特征重叠,有没有使用 data.table 的简单方法?
这个问题可以通过使用 GenomicRanges 中的覆盖、切片和减少功能来解决,但我对 data.table 解决方案特别感兴趣。
【问题讨论】:
标签: r data.table