【发布时间】:2017-02-22 19:10:46
【问题描述】:
我正在处理 RNA seq 数据并尝试按基因型绘制平均覆盖率概况,类似于此处所做的
每个基因型的 RNA seq 覆盖率(来源:pickrell 等人,Nature,2010)
为了绘制这个图,我有来自 100 个人的重要文件,其中包含来自 RNA-seq 数据(在特定区域中)的覆盖信息,并且我在 R 中读取这些信息,作为 GenomicRanges 对象。
这给了我 GRanges 对象,例如在以下玩具示例中获得的对象:
gr1=GRanges(seqname=1,range=IRanges(start=c(1,5,10,15,30,55), end=c(4,9,14,29,39,60)))
gr1$cov=c(3,1,8,6,2,10)
gr2=GRanges(seqname=1,range=IRanges(start=c(3,20,24), end=c(7,23,26)))
gr2$cov=c(3,5,3)
start=unique(sort(c(ranges(gr1)@start,ranges(gr2)@start)))
gr1
GRanges object with 6 ranges and 1 metadata column:
seqnames ranges strand | cov
<Rle> <IRanges> <Rle> | <numeric>
1 [ 1, 4] * | 3
1 [ 5, 9] * | 1
1 [10, 14] * | 8
1 [15, 29] * | 6
1 [30, 39] * | 2
1 [55, 60] * | 10
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
gr2
GRanges object with 3 ranges and 1 metadata column:
seqnames ranges strand | cov
<Rle> <IRanges> <Rle> | <numeric>
1 [ 3, 7] * | 3
1 [20, 23] * | 5
1 [24, 26] * | 3
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
问题是我每个人都有这些(gr1 和 gr2 将是 2 个不同的人),我想将它们结合起来创建一个基因组范围对象,该对象为我提供了每个人在每个位置的总覆盖率,1和 2 如下所示:
gr3
GRanges object with 6 ranges and 1 metadata column:
seqnames ranges strand | cov
<Rle> <IRanges> <Rle> | <numeric>
1 [ 1, 2] * | 3
1 [ 3, 4] * | 6 (=3+3)
1 [ 5, 7] * | 4 (=1+3)
1 [ 8, 9] * | 1
1 [10, 14] * | 8
1 [15, 19] * | 6
1 [20, 23] * | 11 (=6+5)
1 [24, 26] * | 9 (=6+3)
1 [27, 29] * | 6
1 [30, 39] * | 2
1 [55, 60] * | 10
有谁知道一个简单的方法来做到这一点?还是我注定要失败?
感谢您的回答。
PS: 我的数据没有搁浅,但如果你有它来处理搁浅的数据,那就更好了。
PPS:理想情况下,我还希望能够进行乘法运算,或应用具有两个参数 x 和 y 的任何函数,而不是简单地添加覆盖范围。
【问题讨论】:
标签: r