Подмножества и дополнения GRanges - PullRequest
0 голосов
/ 06 мая 2020

Есть ли способ инвертировать подмножества и находить дополнения к множеству при сравнении объектов 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, но ничего не нашел с этим решением.

...