| assay-functions {RaggedExperiment} | R Documentation |
These methods transform assay() from the
default (i.e., sparseAssay()) representation to various
forms of more dense representation. compactAssay()
collapses identical ranges across samples into a single
row. disjoinAssay() creates disjoint (non-overlapping)
regions, simplifies values within each sample in a
user-specified manner, and returns a matrix of disjoint regions
x samples.
This method transforms assay() from the default
(i.e., sparseAssay()) representation to a reduced
representation summarizing each original range overlapping
ranges in query. Reduction in each cell can be tailored
to indivdual needs using the simplifyReduce functional argument.
sparseAssay(x, i = 1, withDimnames = TRUE, background = NA_integer_) compactAssay(x, i = 1, withDimnames = TRUE, background = NA_integer_) disjoinAssay( x, simplifyDisjoin, i = 1, withDimnames = TRUE, background = NA_integer_ ) qreduceAssay( x, query, simplifyReduce, i = 1, withDimnames = TRUE, background = NA_integer_ )
x |
A |
i |
integer(1) or character(1) name of assay to be transformed. |
withDimnames |
logical(1) include dimnames on the returned
matrix. When there are no explict rownames, these are
manufactured with |
background |
A value (default NA) for the returned matrix after
|
simplifyDisjoin |
A
a
original: |-----------|
b
|----------|
a a, b b
disjoint: |----|------|---|
values <- IntegerList(a, c(a, b), b)
simplifyDisjoin(values)
|
query |
|
simplifyReduce |
A
|
sparseAssay(): A matrix() with dimensions
dim(x). Elements contain the assay value for the ith
range and jth sample.
compactAssay(): Samples with identical range are placed
in the same row. Non-disjoint ranges are NOT collapsed.
disjoinAssay(): A matrix with number of rows equal
to number of disjoint ranges across all samples. Elements of
the matrix are summarized by applying simplifyDisjoin() to
assay values of overlapping ranges
qreduceAssay(): A matrix() with dimensions
length(query) x ncol(x). Elements contain assay
values for the ith query range and jth sample, summarized
according to the function simplifyReduce.
re4 <- RaggedExperiment(GRangesList(
GRanges(c(A = "chr1:1-10:-", B = "chr1:8-14:-", C = "chr2:15-18:+"),
score = 3:5),
GRanges(c(D = "chr1:1-10:-", E = "chr2:11-18:+"), score = 1:2)
), colData = DataFrame(id = 1:2))
query <- GRanges(c("chr1:1-14:-", "chr2:11-18:+"))
weightedmean <- function(scores, ranges, qranges)
{
## weighted average score per query range
## the weight corresponds to the size of the overlap of each
## overlapping subject range with the corresponding query range
isects <- pintersect(ranges, qranges)
sum(scores * width(isects)) / sum(width(isects))
}
qreduceAssay(re4, query, weightedmean)
## Not run:
## Extended example: non-silent mutations, summarized by genic
## region
suppressPackageStartupMessages({
library(TxDb.Hsapiens.UCSC.hg19.knownGene)
library(org.Hs.eg.db)
library(GenomeInfoDb)
library(MultiAssayExperiment)
library(curatedTCGAData)
library(TCGAutils)
})
## TCGA MultiAssayExperiment with RaggedExperiment data
mae <- curatedTCGAData("ACC", c("RNASeq2GeneNorm", "CNASNP", "Mutation"),
dry.run = FALSE)
## genomic coordinates
gn <- genes(TxDb.Hsapiens.UCSC.hg19.knownGene)
gn <- keepStandardChromosomes(granges(gn), pruning.mode="coarse")
seqlevelsStyle(gn) <- "NCBI"
gn <- unstrand(gn)
## reduce mutations, marking any genomic range with non-silent
## mutation as FALSE
nonsilent <- function(scores, ranges, qranges)
any(scores != "Silent")
mre <- mae[["ACC_Mutation-20160128"]]
genome(mre) <- translateBuild(genome(re))
mutations <- qreduceAssay(mre, gn, nonsilent, "Variant_Classification")
## reduce copy number
re <- mae[["ACC_CNASNP-20160128"]]
class(re)
## [1] "RaggedExperiment"
genome(re) <- "hg19"
cn <- qreduceAssay(re, gn, weightedmean, "Segment_Mean")
## ALTERNATIVE
##
## TCGAutils helper function to convert RaggedExperiment objects to
## RangedSummarizedExperiment based on annotated gene ranges
mae[[1L]] <- re
mae[[2L]] <- mre
qreduceTCGA(mae)
## End(Not run)