setops-methods {GenomicRanges} | R Documentation |
Performs set operations on GRanges/GRangesList/GappedAlignments objects.
## Set operations ## S4 method for signature 'GRanges,GRanges' union(x, y, ignore.strand=FALSE, ...) ## S4 method for signature 'GRanges,GRanges' intersect(x, y, ignore.strand=FALSE, ...) ## S4 method for signature 'GRanges,GRanges' setdiff(x, y, ignore.strand=FALSE, ...) ## Parallel set operations ## S4 method for signature 'GRanges,GRanges' punion(x, y, fill.gap=FALSE, ignore.strand=FALSE, ...) ## S4 method for signature 'GRanges,GRanges' pintersect(x, y, resolve.empty=c("none", "max.start", "start.x"), ignore.strand=FALSE, ...) ## S4 method for signature 'GappedAlignments,GRanges' pintersect(x, y, ...) ## S4 method for signature 'GRanges,GRanges' psetdiff(x, y, ignore.strand=FALSE, ...)
x, y |
For For For For In addition, for the "parallel" operations, |
fill.gap |
Logical indicating whether or not to force a union by using the rule
|
resolve.empty |
One of |
ignore.strand |
For set operations: If set to TRUE, then the strand of For parallel set operations: If set to TRUE, the strand information is
ignored in the computation and the result has the strand information of
|
... |
Further arguments to be passed to or from other methods. |
The pintersect
methods involving GRanges, GRangesList
and/or GappedAlignments objects use the triplet (sequence name, range,
strand) to determine the element by element intersection of features,
where a strand value of "*"
is treated as occurring on both the
"+"
and "-"
strand.
The psetdiff
methods involving GRanges and/or
GRangesList objects use the triplet (sequence name, range,
strand) to determine the element by element set difference of features,
where a strand value of "*"
is treated as occurring on both the
"+"
and "-"
strand.
For union
, intersect
, setdiff
, and pgap
: a
GRanges.
For punion
and pintersect
: when x
or y
is
not a GRanges object, an object of the same class as this
non-GRanges object. Otherwise, a GRanges object.
For psetdiff
: either a GRanges object when both x
and y
are GRanges objects, or a GRangesList object
when y
is a GRangesList object.
P. Aboyoun
setops-methods, GRanges-class, GRangesList-class, GappedAlignments-class, findOverlaps-methods
## --------------------------------------------------------------------- ## A. SET OPERATIONS ## --------------------------------------------------------------------- x <- GRanges("chr1", IRanges(c(2, 9) , c(7, 19)), strand=c("+", "-")) y <- GRanges("chr1", IRanges(5, 10), strand="-") union(x, y) union(x, y, ignore.strand=TRUE) intersect(x, y) intersect(x, y, ignore.strand=TRUE) setdiff(x, y) setdiff(x, y, ignore.strand=TRUE) ## --------------------------------------------------------------------- ## B. PARALLEL SET OPERATIONS ## --------------------------------------------------------------------- ## Not run: punion(x, shift(x, 7)) # will fail ## End(Not run) punion(x, shift(x, 7), fill.gap=TRUE) pintersect(x, shift(x, 6)) ## Not run: pintersect(x, shift(x, 7)) # will fail ## End(Not run) pintersect(x, shift(x, 7), resolve.empty="max.start") psetdiff(x, shift(x, 7)) ## --------------------------------------------------------------------- ## C. MORE EXAMPLES ## --------------------------------------------------------------------- ## GRanges object: gr <- GRanges(seqnames=c("chr2", "chr1", "chr1"), ranges=IRanges(1:3, width = 12), strand=Rle(strand(c("-", "*", "-")))) ## GRangesList object gr1 <- GRanges(seqnames="chr2", ranges=IRanges(3, 6)) gr2 <- GRanges(seqnames=c("chr1", "chr1"), ranges=IRanges(c(7,13), width = 3), strand=c("+", "-")) gr3 <- GRanges(seqnames=c("chr1", "chr2"), ranges=IRanges(c(1, 4), c(3, 9)), strand=c("-", "-")) grlist <- GRangesList(gr1=gr1, gr2=gr2, gr3=gr3) ## Parallel intersection of a GRanges and a GRangesList object pintersect(gr, grlist) pintersect(grlist, gr) ## Parallel intersection of a GappedAlignments and a GRanges object library(Rsamtools) # because file ex1.bam is in this package galn_file <- system.file("extdata", "ex1.bam", package="Rsamtools") galn <- readGappedAlignments(galn_file) pintersect(galn, shift(as(galn, "GRanges"), 6L)) ## Parallel set difference of a GRanges and a GRangesList object psetdiff(gr, grlist) ## Parallel set difference of two GRangesList objects psetdiff(grlist, shift(grlist, 3))