4

私は周りを見回しましたが、これに関して以前に投稿された質問はないようです。いくつかの座標を持つ 2 つの GRanges オブジェクトがあり、一方の間隔を他方から減算したいと考えています。これは、findOverlaps() または intersect() を使用してオーバーラップを見つけることとは異なります。

例えば:

granges.in 

seqnames ranges$start ranges$end

chr01 1100 2000

chr01 2100 3000

chr02 1000 4000

chr03 1500 3500

granges.out

seqnames ranges$start ranges$end

chr01 1000 1200

chr02 2500 3000

chr03 1500 2000

chr03 3000 3500

そして私が欲しい:

granges.ref

seqnames ranges$start ranges$end

chr01 1200 2000

chr01 2100 3000

chr02 1000 2500

chr02 3000 4000

chr03 2000 3000

以下は機能しますが、かなり不器用で、2 つのオブジェクト間で染色体ごとの間隔の数が一致しないため、染色体ごとに実行する必要があります。

setdiff(ranges(genome.ref[seqnames(granges.in) == "chr01"]), ranges(interval[seqnames(granges.out)== "chr01"]))

2 つの GRanges オブジェクトをまとめて使用する、より迅速で効果的な方法はありますか? ありがとうございました!

4

1 に答える 1