Disjoin then aggregate a Ranges object

disjoin_ranges(.data, ...)

disjoin_ranges_directed(.data, ...)

Arguments

.data

a Ranges object to disjoin

...

Name-value pairs of summary functions.

Value

a Ranges object that is now disjoint (no bases overlap).

Examples

df <- data.frame(start = 1:10, width = 5,  seqnames = "seq1",
strand = sample(c("+", "-", "*"), 10, replace = TRUE), gc = runif(10))
rng <- as_granges(df)
rng %>% disjoin_ranges()
#> GRanges object with 14 ranges and 0 metadata columns:
#>        seqnames    ranges strand
#>           <Rle> <IRanges>  <Rle>
#>    [1]     seq1         1      *
#>    [2]     seq1         2      *
#>    [3]     seq1         3      *
#>    [4]     seq1         4      *
#>    [5]     seq1         5      *
#>    ...      ...       ...    ...
#>   [10]     seq1        10      *
#>   [11]     seq1        11      *
#>   [12]     seq1        12      *
#>   [13]     seq1        13      *
#>   [14]     seq1        14      *
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
rng %>% disjoin_ranges(gc = mean(gc))
#> GRanges object with 14 ranges and 1 metadata column:
#>        seqnames    ranges strand |        gc
#>           <Rle> <IRanges>  <Rle> | <numeric>
#>    [1]     seq1         1      * |  0.926389
#>    [2]     seq1         2      * |  0.532395
#>    [3]     seq1         3      * |  0.411328
#>    [4]     seq1         4      * |  0.460153
#>    [5]     seq1         5      * |  0.531298
#>    ...      ...       ...    ... .       ...
#>   [10]     seq1        10      * |  0.632732
#>   [11]     seq1        11      * |  0.580070
#>   [12]     seq1        12      * |  0.510734
#>   [13]     seq1        13      * |  0.756590
#>   [14]     seq1        14      * |  0.815093
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
rng %>% disjoin_ranges_directed(gc = mean(gc))
#> GRanges object with 16 ranges and 1 metadata column:
#>        seqnames    ranges strand |        gc
#>           <Rle> <IRanges>  <Rle> | <numeric>
#>    [1]     seq1      8-12      + | 0.0190209
#>    [2]     seq1       1-2      - | 0.9263888
#>    [3]     seq1       3-5      - | 0.5477917
#>    [4]     seq1         6      - | 0.1691946
#>    [5]     seq1         7      - | 0.4786359
#>    ...      ...       ...    ... .       ...
#>   [12]     seq1         6      * |  0.601072
#>   [13]     seq1       7-8      * |  0.755295
#>   [14]     seq1         9      * |  0.785782
#>   [15]     seq1        10      * |  0.770734
#>   [16]     seq1     11-13      * |  0.698087
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths