R/ranges-overlap-groups.R

Defines functions group_by_overlaps.GenomicRanges group_by_overlaps.IntegerRanges group_by_overlaps

Documented in group_by_overlaps group_by_overlaps.GenomicRanges group_by_overlaps.IntegerRanges

#' @rdname ranges-overlaps
#' @importFrom rlang syms
#' @export
group_by_overlaps <- function(x, y, maxgap, minoverlap) { UseMethod("group_by_overlaps") }

#' @rdname ranges-overlaps
#' @export
group_by_overlaps.IntegerRanges <- function(x, y, maxgap = -1L, minoverlap = 0L) {
  hits <- make_hits(x, y, findOverlaps, maxgap = maxgap, minoverlap = minoverlap)
  left <- expand_by_hits(x, y, c(".query", ".subject"), hits)
  mcols(left)$query <- queryHits(hits)
  group_by(left, !!!rlang::syms("query"))
}

#' @rdname ranges-overlaps
#' @export
group_by_overlaps.GenomicRanges <- function(x, y, maxgap = -1L, minoverlap = 0L) {
  hits <- make_hits(x, y, findOverlaps, 
                    maxgap = maxgap, 
                    minoverlap = minoverlap,
                    ignore.strand = TRUE)
  left <- expand_by_hits(x, y, c(".query", ".subject"), hits)
  mcols(left)$query <- queryHits(hits)
  group_by(left, !!!rlang::syms("query"))
}

# TODO add in more variants here?

Try the plyranges package in your browser

Any scripts or data that you put into this service are public.

plyranges documentation built on Nov. 8, 2020, 7:36 p.m.