具有一定条件的findoverlap区域

具有一定条件的findoverlap区域,r,R,我试着用FindVerlap来解决这个问题,但我只找到没有条件的重叠区域,所以如果我有条件选择数据。我该怎么办 假设有两个数据帧,如下所示 数据帧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 数据帧

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

假设有两个数据帧,如下所示

数据帧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
数据帧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
这是你的数据

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"))
结果可以强制返回到一个数据帧,并使用
作为.data.frame(result)
,或者您的下游分析可以通过GRanges基础设施自然完成

最好询问有关Bioconductor上的软件包的问题(无需订阅)。可能有更有效的方法可以做到这一点,邮件列表上的人将提供这些解决方案。

这是您的数据

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"))
结果可以强制返回到一个数据帧,并使用
作为.data.frame(result)
,或者您的下游分析可以通过GRanges基础设施自然完成


最好询问有关Bioconductor上的软件包的问题(无需订阅)。可能有更有效的方法可以做到这一点,邮件列表上的人将提供这些解决方案。

你的回答对我很有帮助。你的回答对我很有帮助。
h <- findOverlaps(gr1, gr2)
wd <- width(pintersect(gr1[queryHits(h)], gr2[subjectHits(h)]))
ok <- wd > width(gr1[queryHits(h)]) / 2
h <- h[ok]
result <- gr1[queryHits(h)]
mcols(result) <- cbind(mcols(result), mcols(gr2[subjectHits(h)]))
result$`width of overlap` <- wd[ok]