Compute coverage of intervals.

bed_coverage(x, y, ...)

Arguments

x

tbl_interval()

y

tbl_interval()

...

extra arguments (not used)

Value

tbl_interval() with the following additional columns:

  • .ints number of x intersections

  • .cov per-base coverage of x intervals

  • .len total length of y intervals covered by x intervals

  • .frac .len scaled by the number of y intervals

Details

input tbls are grouped by chrom by default, and additional groups can be added using dplyr::group_by(). For example, grouping by strand will constrain analyses to the same strand. To compare opposing strands across two tbls, strands on the y tbl can first be inverted using flip_strands().

Note

Book-ended intervals are included in coverage calculations.

See also

Examples

x <- trbl_interval( ~chrom, ~start, ~end, ~strand, "chr1", 100, 500, '+', "chr2", 200, 400, '+', "chr2", 300, 500, '-', "chr2", 800, 900, '-' ) y <- trbl_interval( ~chrom, ~start, ~end, ~value, ~strand, "chr1", 150, 400, 100, '+', "chr1", 500, 550, 100, '+', "chr2", 230, 430, 200, '-', "chr2", 350, 430, 300, '-' ) bed_coverage(x, y)
#> # A tibble: 4 x 8 #> chrom start end strand .ints .cov .len .frac #> <chr> <dbl> <dbl> <chr> <int> <int> <int> <dbl> #> 1 chr1 100 500 + 2 250 400 0.625 #> 2 chr2 200 400 + 2 170 200 0.85 #> 3 chr2 300 500 - 2 130 200 0.65 #> 4 chr2 800 900 - 0 0 100 0