Mercurial > repos > vmarcon > pcafactominer
diff pcaFactoMineR_galaxy.R @ 0:7acfb3bdad66 draft default tip
planemo upload commit a2411926bebc2ca3bb31215899a9f18a67e59556
author | vmarcon |
---|---|
date | Thu, 18 Jan 2018 07:57:36 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pcaFactoMineR_galaxy.R Thu Jan 18 07:57:36 2018 -0500 @@ -0,0 +1,137 @@ +#!/usr/local/bioinfo/bin/Rscript --vanilla --slave --no-site-file + +################################################################################################ +# pcaFactoMineR_galaxy # +# # +# Author : Sandrine Laguerre / Marie Tremblay-Franco / Jean-Francois Martin # +# User : Galaxy # +# Original data : -- # +# Starting date : 24-03-2015 # +# Version 1 : 20-05-2015 # +# Version 2 : 24-02-2016 # +# # +# # +# Input files : dataMatrix.txt # +# Output files : graph_output.pdf ; # +# # +################################################################################################ + +##------------------------------ +## Options +##------------------------------ +strAsFacL <- options()$stringsAsFactors +options(stringsAsFactors = FALSE) + +##------------------------------ +## Libraries laoding +##------------------------------ +# For parseCommandArgs function +library(batch) +library(pcaMethods) +library(FactoMineR) + +# R script call +source_local <- function(fname) +{ + argv <- commandArgs(trailingOnly = FALSE) + base_dir <- dirname(substring(argv[grep("--file=", argv)], 8)) + source(paste(base_dir, fname, sep="/")) +} + +#Import the different functions used for PCA + source_local("pcaFactoMineR_functions.R") + +##------------------------------ +## Constants +##------------------------------ +topEnvC <- environment() +flagC <- "\n" + + +##------------------------------ +## Lecture parametres +##------------------------------ +argLs <- parseCommandArgs(evaluate=FALSE) + +log_file <- argLs[["logOut"]] + # Inputs + # Matrice donnees +data <- read.table(argLs[["datafile"]],header=TRUE,sep="\t",dec=".",check.names = FALSE) +rownames(data) <- data[,1] + + # Facteur biologique +hb=0 +if(argLs[["factor"]] != "None") +{ + metadatasample <- read.table(argLs[["samplemetadata"]],header=TRUE,sep="\t",dec=".",check.names = FALSE) + rownames(metadatasample) <- metadatasample[,1] +# Test si le facteur choisi est bien dans le samplemetadata + if (any(argLs[["factor"]] %in% colnames(metadatasample)) ==FALSE) + { + #log_error(simpleCondition("Factor is not in samplemetadata.")) + cat("<HTML><HEAD><TITLE>PCA FactoMineR report</TITLE></HEAD><BODY>\n",file=log_file,append=F,sep="") + cat("⚠ An error occurred while trying to read your factor table.\n<BR>",file=log_file,append=T,sep="") + cat("Please check that:\n<BR>",file=log_file,append=T,sep="") + cat("<UL>\n",file=log_file,append=T,sep="") + cat(" <LI> you wrote the name of the column of the factor matrix corresponding to the qualitative variable </LI>\n",file=log_file,append=T,sep="") + cat(" <LI> you wrote the column name correctly (it is case sensitive)</LI>\n",file=log_file,append=T,sep="") + cat("</UL>\n",file=log_file,append=T,sep="") + cat("</BODY></HTML>\n",file=log_file,append=T,sep="") + q(save="no",status=1) + } +# On cree une dataframe avec l’id des samples (1ere colonne de metadatasample+ le facteur choisi +# qui est en colonne “colfactor” + colfactor <- which(argLs[["factor"]] == colnames(metadatasample)) + facteur <- data.frame(metadatasample[,1], metadatasample[[colfactor]]) + facteur[[2]] <- as.factor(facteur[[2]]) + hb=1 +} + + # Appel de la fonction +eigenplot=0 +contribplot=0 +scoreplot=0 +loadingplot=0 +variable_in_line=0 + +if (argLs[["plotev"]]=="yes") +{ + eigenplot=1 +} + +if (argLs[["plotcontrib"]]=="yes") +{ + contribplot=1 +} + + +if (argLs[["plotindiv"]]=="yes") +{ + scoreplot=1 +} + + +if (argLs[["plotvar"]]=="yes") +{ + loadingplot=1 +} + +if (argLs[["varinline"]]=="yes") +{ + variable_in_line=1 +} + + + + + + # Outputs +nomGraphe <- argLs[["outgraphpdf"]] +res.pca <- pca.main(ids=data,bioFact=facteur,ncp=argLs[["npc"]],hb=hb, + minContribution=c(argLs[["contribh"]],argLs[["contribv"]]),mainTitle=argLs[["title"]], + textSize=argLs[["tc"]],principalPlane=c(argLs[["pch"]],argLs[["pcv"]]),eigenplot=eigenplot, + contribplot=contribplot,scoreplot=scoreplot,loadingplot=loadingplot, + nomGraphe=argLs[["outgraphpdf"]],variable_in_line=variable_in_line,log_file=log_file) + + +################################# fin ##############################################