bed_closest: Identify closest intervals.

View source: R/bed_closest.r

bed_closestR Documentation

Identify closest intervals.

Description

Identify closest intervals.

Usage

bed_closest(x, y, overlap = TRUE, suffix = c(".x", ".y"))

Arguments

x

ivl_df

y

ivl_df

overlap

report overlapping intervals

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 additional columns:

  • .overlap amount of overlap with overlapping interval. Non-overlapping or adjacent intervals have an overlap of 0. .overlap will not be included in the output if overlap = FALSE.

  • .dist distance to closest interval. Negative distances denote upstream intervals. Book-ended intervals have a distance of 1.

Note

For each interval in x bed_closest() returns overlapping intervals from y and the closest non-intersecting y interval. Setting overlap = FALSE will report the closest non-intersecting y intervals, ignoring any overlapping y intervals.

See Also

https://bedtools.readthedocs.io/en/latest/content/tools/closest.html

Other multiple set operations: bed_coverage(), bed_intersect(), bed_map(), bed_subtract(), bed_window()

Examples

x <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 100,    125
)

y <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 25,     50,
  "chr1", 140,    175
)

bed_glyph(bed_closest(x, y))

x <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 500,    600,
  "chr2", 5000,   6000
)

y <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 100,    200,
  "chr1", 150,    200,
  "chr1", 550,    580,
  "chr2", 7000,   8500
)

bed_closest(x, y)

bed_closest(x, y, overlap = FALSE)

# Report distance based on strand
x <- tibble::tribble(
  ~chrom, ~start, ~end, ~name, ~score, ~strand,
  "chr1", 10, 20, "a", 1, "-"
)

y <- tibble::tribble(
  ~chrom, ~start, ~end, ~name, ~score, ~strand,
  "chr1", 8, 9, "b", 1, "+",
  "chr1", 21, 22, "b", 1, "-"
)

res <- bed_closest(x, y)

# convert distance based on strand
res$.dist_strand <- ifelse(res$strand.x == "+", res$.dist, -(res$.dist))
res

# report absolute distances
res$.abs_dist <- abs(res$.dist)
res


rnabioco/valr documentation built on Oct. 17, 2023, 11:37 p.m.