"CpermSigGene.MBparams.MBnetwork.MBgibbsPars" <- function(params,graph,gibbsPars,quiet=FALSE,nperm=100,...) { # Compatibility checks isCompat <- compatObjects(params,graph) isValid <- validObject(gibbsPars) # Run Gibbs sampler on all data if(!quiet) cat("\nRunning gibbs sampler on all data...\n\n") graph <- CgibbsSampler(x=graph,params=params,gibbsPars=gibbsPars,quiet=quiet,...) # Save original MBnetwork graph.old <- graph # Run permutation gibbs sampler lods.rand <- matrix(nrow=graph@N,ncol=nperm) for(i in 1:nperm) { if(!quiet) cat(paste("\nRunning gibbs sampler on permutation ",i,"...\n\n",sep="")) graph@Cpds <- graph@Cpds[,sample(1:graph@N)] graph <- CgibbsSampler(x=graph,params=params,gibbsPars=gibbsPars,quiet=quiet,...) lods.rand[,i] <- calcLods(graph) graph <- graph.old } # Calculate original lod scores lods.orig <- calcLods(graph) # Calculate permutation significance graph@Pvals <- apply(cbind(lods.orig,lods.rand),1,function(x) sum(x[2:(nperm+1)][!is.na(x[2:(nperm+1)])] >= x[1])/sum(!is.na(x[2:(nperm+1)]))) return(graph) }