Learn R Programming

valr (version 0.5.0)

bed_closest: Identify closest intervals.

Description

Identify closest intervals.

Usage

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

Arguments

overlap

report overlapping intervals

suffix

colname suffixes in output

Value

tbl_interval() with additional columns:

  • .dist distance to closest interval. Negative distances denote upstream intervals.

  • .overlap overlap with closest interval

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().

See Also

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

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

Examples

Run this code
# NOT RUN {
x <- trbl_interval(
  ~chrom, ~start, ~end,
  'chr1', 100,    125
)

y <- trbl_interval(
  ~chrom, ~start, ~end,
  'chr1', 25,     50,
  'chr1', 140,    175
)

bed_glyph(bed_closest(x, y))

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

y <- trbl_interval(
  ~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 <- trbl_interval(
  ~chrom, ~start, ~end, ~name, ~score, ~strand,
  "chr1", 10,	   20,   "a",   1,      "-"
)

y <- trbl_interval(
  ~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

# }

Run the code above in your browser using DataLab