Есть ли способ инвертировать подмножества и находить дополнения к множеству при сравнении объектов GRanges? Некоторые примеры того, что я хотел бы сделать:
Допустим, у меня есть геном, представленный объектом GRanges:
> genome1 <- GRanges(seqnames = c("chr1", "chr2", "chr3", "chr4", "chr5"), IRanges(start = rep(1,5), end = c(2500, 2000, 1500, 1000, 500)))
> genome1
GRanges object with 5 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 1-2500 *
[2] chr2 1-2000 *
[3] chr3 1-1500 *
[4] chr4 1-1000 *
[5] chr5 1-500 *
-------
И у меня есть подмножество генома:
> set1 <- GRanges(seqnames = c("chr1", "chr2", "chr3", "chr4"), IRanges(start = c(1, 1000, 1, 1), end = c(2500, 2000, 1000, 1000)))
> set1
GRanges object with 4 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 1-2500 *
[2] chr2 1000-2000 *
[3] chr3 1-1000 *
[4] chr4 1-1000 *
-------
Как я могу извлечь дополнение set1 в genome1? В частности, я ищу:
GRanges object with 3 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr2 1001-2000 *
[2] chr3 1001-1500 *
[3] chr5 1-500 *
-------
Я пробовал использовать subsetByOverlaps (set1, genome1, invert = TRUE), но безрезультатно.
Кроме того, что, если у меня есть два пересекающихся набора, но один из них не содержится в другом? Например, если я определяю:
> set2 <- GRanges(seqnames = c("chr2", "chr3", "chr4", "chr5"), IRanges(start = rep(1,4), end = c(2000, 1500, 1000, 500)))
> set2
GRanges object with 4 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr2 1-2000 *
[2] chr3 1-1500 *
[3] chr4 1-1000 *
[4] chr5 1-500 *
-------
Как я могу получить наборы set1-set2 и set2-set1? т.е. set1-set2 будет:
GRanges object with 1 range and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 1-2500 *
-------
Я читал и пробовал использовать методы finOverlaps в пакете GenomicRanges, но ничего не нашел с этим решением.