R/CoGAPS.R
902afe0d
 # run the full algorithm
 CoGAPS <- function(data, unc, GStoGenes,
                  outputDir, outputBase="",
                  sep = "\t", isPercentError=FALSE,
                  numPatterns,
                  MaxAtomsA=2^32, alphaA=0.01,
                  MaxAtomsP=2^32, alphaP=0.01,
                  SAIter=1000000000, iter = 500000000, thin=-1,
                  nPerm=500, verbose=TRUE, plot=FALSE, keepChain=FALSE) {
 
 
   # decompose the data
   matrixDecomp <- GAPS(data=data, unc=unc,
                        outputDir=outputDir, outputBase=outputBase, 
 		       sep=sep, isPercentError=isPercentError,
                        numPatterns=numPatterns, MaxAtomsA=MaxAtomsA, 
 		       alphaA=alphaA, MaxAtomsP=MaxAtomsP,
                        alphaP=alphaP, SAIter=SAIter, iter=iter, thin=thin,
                        verbose=verbose, keepChain=keepChain)
 
   # plot patterns and show heatmap of Anorm
   if (plot) {
     plotGAPS(matrixDecomp$Amean, matrixDecomp$Pmean)
   }
 
   # compute the gene set scores
   GSP <- calcCoGAPSStat(matrixDecomp$Amean, matrixDecomp$Asd, GStoGenes, nPerm)
 
   # output gene set results
   if (outputDir != "") {
      outputGSPBase <- paste(outputDir, outputBase, sep="/")
   } else {
      outputGSPBase <- outputBase
   }
   if (outputBase != "") {
     outputGSPBase <- paste(outputGSPBase, "_", sep="")
   }
   
   UpFile <- paste(outputGSPBase, "GSUpStat.txt", sep="")
   DownFile <- paste(outputGSPBase, "GSDownStat.txt", sep="")
   ActEstFile <- paste(outputGSPBase, "GSActEst.txt", sep="")
 
   write.table(GSP$GSUpreg, file=UpFile, sep=sep)
   write.table(GSP$GSDownreg, file=DownFile, sep=sep)
   write.table(GSP$GSActEst, file=ActEstFile, sep=sep)
 
   return(list(meanChi2=matrixDecomp$meanChi2,
               D=matrixDecomp$D, Sigma=matrixDecomp$Sigma,
               Amean=matrixDecomp$Amean, Asd=matrixDecomp$Asd,
               Pmean=matrixDecomp$Pmean, Psd=matrixDecomp$Psd,
               meanMock=matrixDecomp$meanMock,
               GSUpreg=GSP$GSUpreg, GSDownreg=GSP$GSDownreg, GSActEst=GSP$GSActEst))
   
   
 }