"trimParams.MBparams.MBdataDE" <- function(x,data,pars=c(1),de.num=4,nde.num=de.num,contrasts=NULL) { isCompat <- compatObjects(x,data) if((x@m < 1) || !all(pars %in% 1:x@m)) stop("pars out of range") if(!is.numeric(de.num) || (as.integer(de.num) != de.num) || !length(de.num) || (de.num < 0)) stop("de.num must be an integer >= 0") if(!is.numeric(nde.num) || (as.integer(nde.num) != nde.num) || !length(nde.num) || (nde.num < 0)) stop("nde.num must be an integer >= 0") if(is.null(contrasts)) fit <- eBayes(lmFit(data@M,weights=data@W,design=data@design),proportion=data@prop) else fit <- eBayes(contrasts.fit(lmFit(data@M,weights=data@W,design=data@design),contrasts),proportion=data@prop) for(i in pars) { sim <- as.matrix(x@Sim[[i]]) sim <- t(apply(sim,1,function(row) { de.rank <- rank(-1*fit$lods[row > 0]); nde.rank <- rank(fit$lods[row > 0]); row[row > 0][!(de.rank %in% (min(de.num,1):de.num)) & !(nde.rank %in% (min(nde.num,1):nde.num))] <- 0; row })) x@Sim[[i]] <- as.matrix.csr(sim) rm(sim) gc(FALSE) } return(x) }