R に data.frame オブジェクトとしていくつかのベッド ファイルがあります。ここで、要素ごとにリーン 2 ベッド ファイル間のオーバーラップを見つけたいと考えています。
私の質問を明確にするために、最初のベッドファイル(すでにデータフレームオブジェクトにある)で行ごとにテストを行う必要があるため、データフレームの1行のみをクエリとして取得し、それを間隔ツリーが保持する間隔ツリーに渡します2 番目のベッド ファイル (ただし、最初に 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 の場所を見つける方法です。このコードでは、私が望む結果が得られません。誰か私を助けて?? ありがとうございました