use*_*480 4 intersection r range overlap
我有三张不同基因组间隔的表.这是一个例子:
> a
chr interval.start interval.end names
1 chr1 5 10 a
2 chr1 6 10 b
3 chr2 7 10 c
4 chr3 8 10 d
> b
chr interval.start interval.end names
1 chr1 6 15 e
2 chr1 7 15 f
3 chr1 8 15 g
> c
chr interval.start interval.end names
1 chr1 7 12 h
2 chr1 8 12 i
3 chr5 9 12 j
4 chr10 10 12 k
5 chr20 11 12 l
Run Code Online (Sandbox Code Playgroud)
我试图在将信息转换为GRanges后找到所有表之间的公共间隔.基本上我想做像交叉(c,intersect(a,b))之类的东西.但是,因为我正在使用基因组坐标,所以我必须使用GRanges和GenomicRanges包,我不熟悉.
我可以做findOverlaps(gr,gr1)或findOverlaps(gr1,gr2),但是有一种简单的方法可以像findOverlaps(gr,gr1,gr2)一样重叠多个GRanges吗?
任何帮助,将不胜感激.如果在别处问过这个问题,我会提前道歉.
谢谢
您可以使用subsetByOverlaps一对比较的结果对其中一个进行子集,然后使用该子集与第三个集进行比较.
Sub1 <- subsetByOverlaps(gr,gr1)
Sub2 <- subsetByOverlaps(sub1,gr2)
Run Code Online (Sandbox Code Playgroud)
或直接
Reduce(subsetByOverlaps, list(gr, gr1, gr2))
Run Code Online (Sandbox Code Playgroud)
导致GRanges对象的子集在所有3个GRanges对象中重叠
根据您想要的重叠类型以及具有最大范围的重叠类型,您应该考虑将哪个用作查询以及哪个主题.