【发布时间】:2018-08-27 00:00:21
【问题描述】:
我在 R 中有几个床文件作为 data.frame 对象。现在我想按元素找到两个精益床文件之间的重叠。
为了澄清我的问题,我需要在第一个床文件中逐行进行测试(已经在数据框对象中),因此仅将数据框的一行作为查询,然后将其提供给间隔树,其中保存第二床文件的间隔树(但需要先强制 Granges 对象)。
我的数据看起来像:
idx chrom start End name score p-value
1 chr1 32727 32817 MACS_peak_1 8.69 1.150748e-11
2 chr1 52489 52552 MACS_peak_2 4.26 2.347418e-11
3 chr1 65527 65590 MACS_peak_3 4.19 2.386635e-11
4 chr1 65773 65904 MACS_peak_4 2.02 4.950495e-11
5 chr1 66001 66117 MACS_peak_5 5.66 1.766784e-11
6 chr1 115700 115769 MACS_peak_6 10.30 9.708738e-12
7 chr1 136389 136452 MACS_peak_7 4.26 2.347418e-11
8 chr1 235352 235415 MACS_peak_8 4.26 2.347418e-11
9 chr1 235636 235700 MACS_peak_9 5.66 1.766784e-11
10 chr1 432895 432958 MACS_peak_10 4.26 2.347418e-11
f1 <- function(bed.1, bed.2){
query<- GRanges()
subject = bed.2
for(i in 1: length(bed.1)){
query<-bed.1[i]
o <- GenomicRanges::findOverlaps(query, subject, minoverlap = 2L, algorithm="intervaltree")
hitfrom_<-query[queryHits(o)]
hitTo_<-subject[subjectHits(o)]
pint <-pintersect(hitfrom_, hitTo_)
return(pint)
}
}
这是我的代码,如何在 bed.1 中迭代一组 GRanges 对象并调用 findOverlap() 函数来查找重叠的 GRanges 的位置。这段代码没有给我想要的结果。有人帮我吗??谢谢
【问题讨论】:
-
你能提供一个你的 2 个“data.frame”的例子吗?
-
您是否有理由尝试在 R 中执行所有这些操作? bedtools 旨在查找床文件之间的重叠。
-
@heathobrien:我知道这个过程是由 bedtools 完成的。我想要做的是在 R 环境中实现相同的东西。有没有最简单的方法在 R 中进行这种分析???
-
@heathobrien:示例床文件,我已附在原始线程中。
-
我猜你正在从“IRanges”包中寻找类似
find[or count]Overlaps(IRanges(df1$start, df1$End), IRanges(df2$start, df2$End))的东西?
标签: r bioinformatics genome