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