| bed_intersect {valr} | R Documentation |
Identify intersecting intervals.
Description
Report intersecting intervals from x and y tbls. Book-ended intervals
have .overlap values of 0 in the output.
Usage
bed_intersect(x, ..., invert = FALSE, suffix = c(".x", ".y"))
Arguments
x |
|
... |
one or more (e.g. a list of) |
invert |
report |
suffix |
colname suffixes in output |
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().
Value
ivl_df with original columns from x and y suffixed with .x
and .y, and a new .overlap column with the extent of overlap for the
intersecting intervals.
If multiple y tbls are supplied, the .source contains variable names
associated with each interval. All original columns from the y are suffixed
with .y in the output.
If ... contains named inputs (i.e a = y, b = z or list(a = y, b = z)),
then .source will contain supplied names (see examples).
See Also
https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html
Other multiple set operations:
bed_closest(),
bed_coverage(),
bed_map(),
bed_subtract(),
bed_window()
Examples
x <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 25, 50,
"chr1", 100, 125
)
y <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 30, 75
)
bed_glyph(bed_intersect(x, y))
bed_glyph(bed_intersect(x, y, invert = TRUE))
x <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 100, 500,
"chr2", 200, 400,
"chr2", 300, 500,
"chr2", 800, 900
)
y <- tibble::tribble(
~chrom, ~start, ~end, ~value,
"chr1", 150, 400, 100,
"chr1", 500, 550, 100,
"chr2", 230, 430, 200,
"chr2", 350, 430, 300
)
bed_intersect(x, y)
bed_intersect(x, y, invert = TRUE)
# start and end of each overlapping interval
res <- bed_intersect(x, y)
dplyr::mutate(res,
start = pmax(start.x, start.y),
end = pmin(end.x, end.y)
)
z <- tibble::tribble(
~chrom, ~start, ~end, ~value,
"chr1", 150, 400, 100,
"chr1", 500, 550, 100,
"chr2", 230, 430, 200,
"chr2", 750, 900, 400
)
bed_intersect(x, y, z)
bed_intersect(x, exons = y, introns = z)
# a list of tbl_intervals can also be passed
bed_intersect(x, list(exons = y, introns = z))