1

我正在尝试使用 IRange 将一组范围分组为唯一的集合。我希望至少有 100 个重叠。这是行不通的。谁能帮我吗?我怀疑这与reduce()工作方式有关,但我似乎无法找出解决方案。

例子:

start.vec<-c(2021,2378,2718,2275)
end.vec<-c(2374,2737,3408,3408)
ir<-IRanges(start.vec,end.vec)
grouped<-subjectHits(findOverlaps(ir,reduce(ir),minoverlap=100))
4

1 回答 1

0

不是 100% 确定你在找什么,但如果我

> hits = findOverlaps(ir, minoverlap=100L)

我得到一个对象,它告诉我哪些查询与哪些主题重叠,其中查询和主题实际上是相同的范围

> hits
Hits of length 10
queryLength: 4
subjectLength: 4
   queryHits subjectHits 
    <integer>   <integer> 
 1          1           1 
 2          1           4 
 3          2           2 
 4          2           4 
 5          3           3 
 6          3           4 
 7          4           1 
 8          4           2 
 9          4           3 
 10         4           4 

我可以得到一个集合列表

> split(subjectHits(hits), queryHits(hits))
$`1`
[1] 1 4

$`2`
[1] 2 4

$`3`
[1] 3 4

$`4`
[1] 1 2 3 4

你可以排除自我命中

> hits1 = hits[queryHits(hits) != subjectHits(hits)]

Bioconductor 邮件列表是提出这些问题的好资源

于 2013-03-26T17:18:34.547 回答