在基因开始或结束的 200kb 范围内通过重叠将范围划分为子集

GRanges to subset by overlap within 200kb of start or end of a gene

我有两个 GRanges 数据,我想通过重叠对它们进行子集化,这样重叠也可以出现在基因开始或结束的 200kb 以内。

我正在使用以下命令 subsetByOverlaps(gr2, gr1, type = "equal", maxgap = 200000)

使用 type = "equal" 和 maxgap= 200000 得到我想要的结果,我想知道这是否是回答我问题的正确方法。

我不确定我是否完全理解 maxgap 的用法,因此希望得到您的帮助或任何建议,以获得理想的结果。

提前致谢

最好的, S

我认为正确的做法是subsetByOverlaps(gr2, gr1, type = "any", maxgap = 200000)

来自 findOverlaps 文档: “‘maxgap’参数具有特殊含义 重叠类型。对于“开始”、“结束”和“等于”,它指定 开始、结束或两者的最大差异, 分别。对于“范围内”,它是最大数量 主题可能比查询更宽。如果设置了“maxgap” 到 -1(默认值),它在内部被 0 替换。"

事实上,让我们考虑如下两个 IRanges 对象:

library(IRanges)

d1 <- IRanges(start = c(1,    2100, 5000, 8000), width = c(100, 300, 400, 600))
d2 <- IRanges(start = c(1000, 2000, 4000, 9000), width = c(300, 200, 400, 100))

d1
##> IRanges object with 4 ranges and 0 metadata columns:
##>           start       end     width
##>       <integer> <integer> <integer>
##>   [1]         1       100       100
##>   [2]      2100      2399       300
##>   [3]      5000      5399       400
##>   [4]      8000      8599       600
d2
##> IRanges object with 4 ranges and 0 metadata columns:
##>          start       end     width
##>      <integer> <integer> <integer>
##>  [1]      1000      1299       300
##>  [2]      2000      2199       200
##>  [3]      4000      4399       400
##>  [4]      9000      9099       100

如果我们在间隙内寻找间隔之间的交点,type 设置为“等于”或“任意”:

findOverlapPairs(d1,d2, maxgap = 650, type = "equal")
##>  > Pairs object with 1 pair and 0 metadata columns:
##>           first    second
##>       <IRanges> <IRanges>
##>   [1] 2100-2399 2000-2199


findOverlapPairs(d1,d2, maxgap = 650, type = "any")

##> > Pairs object with 3 pairs and 0 metadata columns:
##>          first    second
##>      <IRanges> <IRanges>
##>  [1] 2100-2399 2000-2199
##>  [2] 5000-5399 4000-4399
##>  [3] 8000-8599 9000-9099

我们可以看到使用“等于”我们错过了一些匹配项。