私は周りを見回しましたが、これに関して以前に投稿された質問はないようです。いくつかの座標を持つ 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 オブジェクトをまとめて使用する、より迅速で効果的な方法はありますか? ありがとうございました!