【发布时间】:2016-04-20 11:15:00
【问题描述】:
给定两个 GenomicRanges,例如:
library(GenomicRanges)
gr1 <-
makeGRangesFromDataFrame(
data.frame(
chr = c("1","1","2","2"),
start = c(10,50,10,50),
end = c(20,60,20,60)
)
)
gr2 <-
makeGRangesFromDataFrame(
data.frame(
chr = c("2","2","3","3"),
start = c(15,40,10,50),
end = c(25,55,20,60)
)
)
我需要找到重叠段的重叠大小(宽度)。在我的情况下,这将是 5(对于 gr1[3] 和 gr21)和 5(对于 gr[4] 和 gr2[2])。在命中类上使用ranges() 给出here 的解决方案不适合GenomicRanges 类(似乎):
mm <- findOverlaps(gr1,gr2)
ranges(mm,gr1,gr2)
.local(x, ...) 中的错误: “查询”必须是长度等于查询数的范围
有人希望GenomicRanges::subsetByOverlaps() 有一个参数,可以从字面上切分并返回重叠部分。
更新(见下文):解决方案在包本身中,GenomicRanges::intersect(),所以:
width(intersect(gr1, gr2))
【问题讨论】:
-
这 - stackoverflow.com/a/33272941/496803 - 以及随后链接的答案有帮助吗?
标签: r overlap bioconductor