RangedData-methods {rtracklayer} | R Documentation |
The rtracklayer
package adds
convenience methods on top of RangedData
and GenomicRanges
to
manipulate data on genomic ranges. For RangedData
the spaces are
now called chromosomes (but could still refer to some other type of sequence).
Similarly the universe refers to the genome.
In the code snippets below,
x
is a RangedData
or GenomicRanges
object.
chrom(x), chrom(x) <- value
: Gets or sets the chromosome
names for x
. The length of value
should equal the
length of x
. This is an alias for
names(x)
.
seqinfo(x)
, seqinfo(x) <- value
: Gets or sets the
sequence information as a
Seqinfo
object. This is
just a wrapper on top of
seqinfo
for ranges(x)
.
score(x)
: Gets the “score” column from the element
metadata of a GenomicRanges
or GRangesList
. Many
track formats have a score column, so this is often used during
export. The IRanges package defines a method for
RangedData
. The ANY
fallback for this method simply
returns NULL
.
GenomicData(ranges, ..., strand = NULL, chrom = NULL,
genome = NULL, asRangedData = TRUE)
: If asRangedData
is
TRUE
, constructs a RangedData
instance with the given
ranges
and variables in ...
(see the
RangedData
constructor).
If asRangedData
is FALSE
, constructs a GRanges
instance with the given ranges
and variables in ...
.
If non-NULL
, the strand
argument specifies the strand
of each range. It should be a character vector or factor of length
equal to that of ranges
. All values should be either -
,
+
, *
or NA
. (The NA
code for strand
is only acceptable when asRangedData
is TRUE
.) To get the
levels for strand
, call levels(strand())
.
chrom
argument is analogous to space
in the
RangedData
and seqnames
in GRanges
constructors.
The genome
argument should be a scalar string and is treated
as the RangedData
universe. See the examples.
If ranges
is not a Ranges
object, this function
calls as(ranges, "RangedData")
and returns the result if
successful. As a special case, the “chrom” column in a
data.frame
-like object is renamed to “space”, for
convenience. Thus, one could pass a data.frame
with columns
“start”, “end” and, optionally, “chrom”.
Michael Lawrence and Patrick Aboyoun
range1 <- IRanges::IRanges(start=c(1,2,3), end=c(5,2,8)) ## just ranges ## ## RangedData instance rd <- GenomicData(range1) ## GRanges instance gr <- GenomicData(range1, asRangedData = FALSE) ## with a genome (universe) ## ## RangedData instance rd <- GenomicData(range1, genome = "hg18") genome(rd) ## "hg18" ## GRanges instance gr <- GenomicData(range1, genome = "hg18", asRangedData = FALSE) genome(gr) ## "hg18" ## with some data ## filter <- c(1L, 0L, 1L) score <- c(10L, 2L, NA) strand <- factor(c("+", NA, "-"), levels = levels(strand())) ## RangedData instance rd <- GenomicData(range1, score, genome = "hg18") rd[["score"]] strand(rd) ## all NA rd <- GenomicData(range1, score, filt = filter, strand = strand) rd[["filt"]] strand(rd) ## equal to 'strand' ## GRanges instance gr <- GenomicData(range1, score, genome = "hg18", asRangedData = FALSE) values(gr)[["score"]] strand(gr) ## all '*' gr <- GenomicData(range1, score, filt = filter, strand = strand, asRangedData = FALSE) values(gr)[["filt"]] strand(gr) ## equal to 'strand' ## multiple chromosomes ## range2 <- IRanges::IRanges(start=c(15,45,20,1), end=c(15,100,80,5)) ranges <- c(range1, range2) score <- c(score, c(0L, 3L, NA, 22L)) chrom <- paste("chr", rep(c(1,2), c(length(range1), length(range2))), sep="") ## RangedData instance rd <- GenomicData(ranges, score, chrom = chrom, genome = "hg18") chrom(rd) # equal to 'chrom' rd[["score"]] # unlists over the chromosomes score(rd) rd[1][["score"]] # equal to score[1:3] ## GRanges instance gr <- GenomicData(ranges, score, chrom = chrom, genome = "hg18", asRangedData = FALSE) chrom(gr) # equal to 'chrom' values(gr)[["score"]] values(gr[chrom(gr) == "chr1"])[["score"]] ## coercion from data.frame ## df <- as.data.frame(rd) GenomicData(df) GenomicData(df, asRangedData = FALSE)