"calc.all.pms" <- function(ont="BP",organism="yeast") { if(!(ont %in% c("BP","MF","CC"))) stop("Invalid ontology (must be one of 'BP','MF', or 'CC')") if(!(organism %in% c("yeast","human","mouse","rat"))) stop("Invalid organism (must be one of 'yeast','human','mouse', or 'rat')") MAT.name <- paste("go",ont,"aMAT",sep="") if(is.null(tryCatch(data(list=MAT.name,package="mBison"),warning=function(w) NULL)) && !exists(MAT.name) && is.null(tryCatch(load(paste(MAT.name,".RData",sep="")),error=function(e) NULL))) stop("Accessibility matrix ",MAT.name," not found") expr <- paste("goAmat <- ",MAT.name,sep="") eval(parse(text=expr)) ooc.name <- paste("go",ont,"ooc.",organism,sep="") if(is.null(tryCatch(data(list=ooc.name,package="mBison"),warning=function(w) NULL)) && !exists(ooc.name) && is.null(tryCatch(load(paste(ooc.name,".RData",sep="")),error=function(e) NULL))) stop("Object-ontology complex ",ooc.name," not found") expr <- paste("goOOC <- ",ooc.name,sep="") eval(parse(text=expr)) pc.name <- paste("go",ont,"pc.",organism,sep="") if(is.null(tryCatch(data(list=pc.name,package="mBison"),warning=function(w) NULL)) && !exists(pc.name) && is.null(tryCatch(load(paste(pc.name,".RData",sep="")),error=function(e) NULL))) stop("Concept probability list ",pc.name," not found") expr <- paste("goPC <- ",pc.name,sep="") eval(parse(text=expr)) go.names <- nodes(DAG(rDAG(ontology(goOOC)))) goPMS <- matrix(1,length(go.names),length(go.names)) if(length(go.names)==0) return(goPMS) cat("Starting PMS calculations (may take a WHILE)...\n") ncomps <- length(go.names)*(length(go.names)-1)/2 n <- 0 cat(paste("Progress (out of ",ncomps," comparisons):\n",sep="")) for(i in 1:length(go.names)) { for(j in i:length(go.names)) { if(go.names[i]==go.names[j]) goPMS[i,j] <- goPC[[go.names[i]]] else if(any(c(go.names[i],go.names[j]) %in% c("GO:0008150","GO:0005575","GO:0003674"))) goPMS[i,j] <- 1 else goPMS[i,j] <- pms(go.names[i],go.names[j],goOOC,acc=goAmat,pc=goPC) n <- n+1 if((n %% 5)==0) { cat(paste(n," ",sep="")) if((n %% 200)==0) cat("\n") } } } tPMS <- t(goPMS) goPMS[lower.tri(goPMS)] <- tPMS[lower.tri(tPMS)] rownames(goPMS) <- colnames(goPMS) <- go.names return(goPMS) }