Nothing
#' dea_pipeline
#'
#' The `PipelineDefinition` for bulk RNAseq differential expression analysis
#' (DEA).
#'
#' @return A `PipelineDefinition` object to be used with `runPipeline`.
#'
#' @export
#' @examples
#' pip <- dea_pipeline()
#' pip
dea_pipeline <- function(){
# description for each step
desc <- list(
filtering=
paste("Takes a SE object, passes it through the function `filt` (with param",
" `minCount`), and outputs a filtered SE object."),
sva=
paste("Takes a SE object, passes it through the function `sva.method`, and",
"returns a SE object."),
dea=
paste("Takes a SE object, passes it through the function `dea.method`, and",
"returns a DEA data.frame.")
)
# functions list
f <- list(
filtering=function(x, filt, minCount=10) get(filt)(x, minCount=minCount),
sva=function(x, sva.method, k=1){
get(sva.method)(x, k=k)
},
dea=function(x, dea.method){
mm <- pipeComp:::.getMM(x)
x2 <- pipeComp:::.homogenizeDEA(get(dea.method)(x,mm))
metadata(x2)$truth <- metadata(x)$truth
metadata(x2)$mm <- mm
x2
}
)
agg <- eva <- lapply(f, FUN=function(x) NULL)
eva$dea <- evaluateDEA
agg$dea <- function(res){
res <- defaultStepAggregation(res)
lapply( res, FUN=function(x){
x$sva.method <- gsub("^sva\\.","",x$sva.method)
x$dea.method <- gsub("^dea\\.","",x$dea.method)
x
})
}
# default arguments
def <- list(minCount=10, k=1)
# initiation function
initf <- function(x){
if(is.character(x) && length(x)==1) x <- readRDS(x)
metadata(x)$truth <- rowData(x)[,c("expected.beta","isDE")]
cn <- grep("^SV[[:digit:]]+$", colnames(colData(x)), invert=TRUE)
colData(x) <- colData(x)[,cn,drop=FALSE]
x
}
PipelineDefinition(functions=f, descriptions=desc, evaluation=eva,
aggregation=agg, initiation=initf,
defaultArguments=def, verbose=FALSE)
}
#' @importFrom S4Vectors DataFrame
.homogenizeDEA <- function(x, g=NULL){
colnames(x)[which(colnames(x) %in% c("FDR","padj","adj.P.Val"))] <- "FDR"
colnames(x)[which(colnames(x) %in% c("P.Value","pvalue","PValue"))] <- "PValue"
colnames(x)[which(colnames(x) %in% c("log2FoldChange","logFC"))] <- "logFC"
if(is.null(g)) g <- row.names(x)
x <- x[g,c("logFC","PValue","FDR")]
row.names(x) <- g
if(!is(x,"DataFrame")) x <- DataFrame(x)
x
}
#' @importFrom stats model.matrix
.getMM <- function(se){
v <- c( grep("^SV[[:digit:]]+$", colnames(colData(se)), value=TRUE),
"condition" )
f <- as.formula(paste0("~",paste(v,collapse="+")))
model.matrix(f, data=as.data.frame(colData(se)))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.