具有一定条件的findoverlap区域

时间:2013-08-13 04:31:00

标签: r

我尝试使用findOverlap来解决这个问题,但我只找到没有条件的重叠区域,所以如果我有一些条件来选择数据。我该怎么办?

我们假设我有两个数据框,如下所示

dataframe a

Sample, start, stop, event, probe, length, length/probe, region
CNV1234,  2000,  3000,  CN gain,  23,  235, 9, intron
CNV1534,  1200,  1800,  CN loss,  60,  600  10, exon

dataframe b

Sample, start, stop, event, probe, length, length/probe, region
CNV234,  2500,  3500,  CN gain,  23,  235, 9, exon 
CNV34,  1200,  1800,  CN loss,  60,  600  10, intron

我有两个问题

首先,我想找到这两个数据帧之间的重叠,CNV有超过50%的长度重叠,这个重叠在内含子区域

其次,我想知道重叠区域的长度。

我希望我的结果有一个像这样的数据框

Sample, start, stop, event, probe, length, length/probe, region, overlap, length of overlap
CNV1234,  2000,  3000,  CN gain,  23,  235, 9, intron, CNV234, 500

1 个答案:

答案 0 :(得分:1)

这是您的数据

a <- read.csv(textConnection(
    "Sample, start, stop, event, probe, length, length/probe, region
     CNV1234,  2000,  3000,  CN gain,  23,  235, 9, intron
     CNV1534,  1200,  1800,  CN loss,  60,  600  10, exon"))

b <- read.csv(textConnection(
    "Sample, start, stop, event, probe, length, length/probe, region
     CNV234,  2500,  3500,  CN gain,  23,  235, 9, exon 
     CNV34,  1200,  1800,  CN loss,  60,  600  10, intron"))

加载GenomicRanges包(我假设您的数据实际上来自多条染色体,并且您希望在所有染色体上执行此操作;&#34; A&#34;是染色体名称)

library(GenomicRanges)
gr1 <- with(a, GRanges("A", IRanges(start, stop - 1L),
                       Sample=Sample, event=event))
gr2 <- with(b, GRanges("A", IRanges(start, stop - 1L, names=Sample),
                       Region=Sample))

注意GRanges如何表示范围(从1开始,包括开始和结束坐标)。找到这些对象之间的所有重叠(您可以使用min.overlaps排除某些重叠,例如,那些短于最小宽度的1/2)

h <- findOverlaps(gr1, gr2)

目前尚不清楚&#34; 50%&#34;宽度是 - 宽度? B' - 所以我计算所有重叠的宽度,然后保留那些宽度大于&#34;&#34;

的宽度的1/2的宽度。
wd <- width(pintersect(gr1[queryHits(h)], gr2[subjectHits(h)]))
ok <- wd > width(gr1[queryHits(h)]) / 2
h <- h[ok]

最后,我通过选择满足重叠标准的查询并添加元数据列(mcols)和重叠区域的重叠宽度来组合结果

result <- gr1[queryHits(h)]
mcols(result) <- cbind(mcols(result), mcols(gr2[subjectHits(h)]))
result$`width of overlap` <- wd[ok]

结果可能被强制回到as.data.frame(result)的数据框,或者您的下游分析可能会自然地使用GRanges基础设施完成?

最好在Bioconductor Bioconductor上询问有关mailing list包的问题(无需订阅)。可能有更有效的方法来实现这一目标,该邮件列表上的人员将提供这些解决方案。