| 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
IRanges-setops, 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))