"CpermSigMeta.MBparams.MBnetwork.MBdataDE.MBgibbsPars" <- function(params,graph,data,gibbsPars,quiet=FALSE,lib="YEAST",what=c("BP","MF","CC","KEGG"),universe=NULL,num="data",pcut=.05,nperm=100,contrasts=NULL,...) { # Compatibility checks isCompat1 <- compatObjects(params,graph) isCompat2 <- compatObjects(graph,data) isValid <- validObject(gibbsPars) if((num != "data") && (!is.numeric(num) || (as.integer(num) != num) || (num <= 0) || (num > data@N))) stop("Invalid num specification") if(num == "data") num <- floor(data@prop*data@N) what <- match.arg(what) # Run Gibbs sampler on all data if(!quiet) cat("\nRunning gibbs sampler and term finder on all data...\n\n") graph <- calcCPDs(x=graph,data=data,contrasts) graph <- CgibbsSampler(x=graph,params=params,gibbsPars=gibbsPars,quiet=quiet,...) # Perform meta-data Term Finder on orig. data tempTF <- GOKEGGHyperG(data@IDs[which(rank(-1*calcLods(graph)) <= num)],lib=lib,what=what,universe=universe) pval.orig <- tempTF$pvalues[order(names(tempTF$pvalues))] # Save old cpds cpds.old <- graph@Cpds # Run permutation gibbs sampler and meta-data Term Finder pval.rand <- matrix(nrow=length(pval.orig),ncol=nperm) for(i in 1:nperm) { if(!quiet) cat(paste("\nRunning gibbs sampler and term finder on permutation ",i,"...\n\n",sep="")) graph@Cpds <- graph@Cpds[,sample(1:graph@N)] graph <- CgibbsSampler(x=graph,params=params,gibbsPars=gibbsPars,quiet=quiet,...) tempTF <- GOKEGGHyperG(data@IDs[which(rank(-1*calcLods(graph)) <= num)],lib=lib,what=what,universe=universe) pval.rand[,i] <- tempTF$pvalues[order(names(tempTF$pvalues))] graph@Cpds <- cpds.old } # Calculate permutation significance pval.perm <- apply(cbind(pval.orig,pval.rand),1,function(x) sum(x[2:(nperm+1)][!is.na(x[2:(nperm+1)])] <= x[1])/sum(!is.na(x[2:(nperm+1)]))) nsig <- sum(pval.perm <= pcut,na.rm=TRUE) return(nsig) }