【问题标题】:R overlap multiple GRanges with findOverlaps()R用findOverlaps()重叠多个GRanges
【发布时间】:2014-04-28 02:12:24
【问题描述】:

我有三个具有不同基因组间隔的表。这是一个例子:

> 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

在将信息转换为 Granges 后,我试图找出所有表格之间的共同间隔。本质上我想做一些类似 intersect(c,intersect(a,b)) 的事情。但是,因为我使用的是基因组坐标,所以我必须使用我不熟悉的 GRanges 和 GenomicRanges 包来执行此操作。

我可以做 findOverlaps(gr, gr1) 或 findOverlaps(gr1, gr2),但是有没有像 findOverlaps(gr, gr1, gr2) 一样简单地同时重叠多个 GRanges 的方法?

任何帮助将不胜感激。如果这个问题在别处被问到,我提前道歉。

谢谢

【问题讨论】:

    标签: r intersection overlap range


    【解决方案1】:

    您可以使用一个成对比较的 subsetByOverlaps 结果对其中一个进行子集化,然后使用该子集与第三组进行比较。

    Sub1 <- subsetByOverlaps(gr,gr1)
    Sub2 <- subsetByOverlaps(sub1,gr2)
    

    或者直接

    Reduce(subsetByOverlaps, list(gr, gr1, gr2))
    

    导致 GRanges 对象的子集在所有 3 个 GRanges 对象中重叠

    根据您想要的重叠类型和最大范围,您应该考虑使用哪个作为查询以及哪个主题。

    【讨论】:

      【解决方案2】:

      以下工作可用于获取所有范围之间的确切相交。

      Reduce(intersect, list(gr, gr1, gr2))
      

      在:

      Reduce(subsetByOverlaps, list(gr, gr1, gr2))
      

      subsetByOverlaps 将第一个 granges 对象作为查询(括号中的第一个对象,此处为 gr),并返回查询(gr)中与主题(gr1,gr2)中的至少一个元素重叠的坐标。所以要找到公共区间(相交区域),intersect 是一个合适的函数。

      【讨论】:

        猜你喜欢
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多