【问题标题】:Finding overlapping regions of chromosome with GRanges使用 Granges 查找染色体的重叠区域
【发布时间】:2014-01-01 20:53:37
【问题描述】:

我有一个来自一系列患者的基因组区域范围列表。

> head(dotoo)
GRanges with 6 ranges and 3 metadata columns:
    seqnames                 ranges strand |       Id       CN Histology
       <Rle>              <IRanges>  <Rle> | <factor> <factor>  <factor>
[1]        3 [167946693, 168005541]      * |        9        3        MD
[2]        3 [189907623, 189954633]      * |        9        3        MD
[3]        6 [132274121, 132384438]      * |        9        3        MD
[4]       11 [ 67685096,  70138399]      * |        9        4        MD
[5]       12 [ 53859037,  53927595]      * |        9        3        MD
[6]       15 [ 19830049,  20089383]      * |        9        1        MD

当我使用

绘制基因组畸变图时

autoplot(dotoo, aes(fill=as.factor(Id), color=as.factor(Id)))

我看到很多重叠区域,请看图片

如何找出至少 3 位患者之间哪些区域重叠,并且共享了@98​​7654324@?

基本上,如果您查看图片,我如何找到“堆叠”过来的区域,以及仅共享的部分?有办法吗?

【问题讨论】:

  • 你试过findOverlaps()吗?
  • 我有,但这不是我需要的。

标签: r bioinformatics overlap bioconductor genetics


【解决方案1】:

获取“不相交”区域的列表(也许这不是您想要的?其他选项是 reduce 和根本没有这一步的原始 dotoo 对象)

d = disjoint(dotoo)

找到原始区域和每个不相交区域之间的重叠

olap = findOverlaps(query=dotoo, subject=d)

根据主题和CN将索引拆分为重叠

splt = split(seq_along(olap), list(subjectHits(olap), dotoo$CN[queryHits(olap)]))

将这些过滤到满足您条件的那些

filt = Filter(function(x) length(x) >= 3, splt)

filt 现在是olap 的索引列表。您可以创建一个具有重叠元素的 GRangesList

idx = unlist(filt)
grp = rep(seq_along(filt), sapply(filt, length))
splitAsList(dotoo[queryHits(olap)[idx]], grp)

询问有关 Bioconductor mailing list 上的 Bioconductor 软件包的问题(无需订阅)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2020-06-16
    • 2015-06-21
    相关资源
    最近更新 更多