changeset 8:7f74250a083d draft

planemo upload
author sblanck
date Wed, 10 May 2017 04:12:26 -0400
parents f3c021bdc000
children 328f4031e5d3
files AffyQCnormalization.R AffyQCnormalization.xml GEOQuery.xml ImportDataFromMatrix.R ImportDataFromMatrix.xml MetaMA.xml MetaRNAseq.xml
diffstat 7 files changed, 157 insertions(+), 98 deletions(-) [+]
line wrap: on
line diff
--- a/AffyQCnormalization.R	Wed Apr 12 03:47:05 2017 -0400
+++ b/AffyQCnormalization.R	Wed May 10 04:12:26 2017 -0400
@@ -1,29 +1,60 @@
-library(Biobase)
-library(GEOquery)
-library(GEOmetadb)
-library(limma)
-library(jsonlite)
-library(affy)
-library(affyPLM)
-library(dplyr)
+#!/usr/bin/env Rscript
+# setup R error handling to go to stderr
+options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
+
+# we need that to not crash galaxy with an UTF8 error on German LC settings.
+loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+library("optparse")
+
+##### Read options
+option_list=list(
+		make_option("--input",type="character",default="NULL",help="rdata object containing eset object"),
+		make_option("--normalization",type="character",default=NULL,help="normalization method"),
+		make_option("--nbresult",type="character",default=NULL,help="number of result displayed results"),
+		make_option("--rdataoutput",type="character",default="NULL",help="output rdata object containing eset object"),
+		make_option("--htmloutput",type="character",default=NULL,help="Output html report"),
+		make_option("--htmloutputpath",type="character",default="NULL",help="Path of output html report"),
+		make_option("--htmltemplate",type="character",default=NULL,help="html template)")
+);
 
-cargs<-commandArgs()
-cargs<-cargs[(which(cargs=="--args")+1):length(cargs)]
-nbargs=length(cargs)
+opt_parser = OptionParser(option_list=option_list);
+opt = parse_args(opt_parser);
+
+if(is.null(opt$input)){
+	print_help(opt_parser)
+	stop("input required.", call.=FALSE)
+}
+
+#loading libraries
+
+suppressPackageStartupMessages(require(Biobase))
+suppressPackageStartupMessages(require(GEOquery))
+suppressPackageStartupMessages(require(GEOmetadb))
+suppressPackageStartupMessages(require(limma))
+suppressPackageStartupMessages(require(jsonlite))
+suppressPackageStartupMessages(require(affy))
+suppressPackageStartupMessages(library(affyPLM))
+suppressPackageStartupMessages(require(dplyr))
+
+listInput <- trimws( unlist( strsplit(trimws(opt$input), ",") ) )
+
 celList=vector()
 celFileNameList=vector()
-for (i in seq(1,nbargs-7,2))
+
+for (i in 1:length(listInput))
 {
-	celList=c(celList,cargs[[i]])
-	celFileNameList=c(celFileNameList,cargs[[i+1]])
+	inputFileInfo <- unlist( strsplit( listInput[i], ';' ) )
+	celList=c(celList,inputFileInfo[1])
+	celFileNameList=c(celFileNameList,inputFileInfo[2])
 }
 
 
-normalization=cargs[[nbargs-6]]
-result_export_eset=cargs[[nbargs-5]]
-result=cargs[[nbargs-4]]
-result.path=cargs[[nbargs-3]]
-result.template=cargs[[nbargs-2]]
+normalization=opt$normalization
+result_export_eset=opt$rdataoutput
+result=opt$htmloutput
+result.path=opt$htmloutputpath
+result.template=opt$htmltemplate
 
 dir.create(result.path, showWarnings = TRUE, recursive = TRUE)
 for(i in 1:length(celList))
@@ -92,19 +123,6 @@
 dev.off()
 htmlfile=gsub(x=htmlfile,pattern = "###PLOTMANORM###",replacement = plotMAnorm, fixed = TRUE)
 file.copy(plotMAnorm,result.path)
-#write.table(tolower(c(condition1Name,condition2Name)),quote = FALSE,col.names = FALSE, row.names=FALSE,file=result_export_conditions)
-#saveConditions=c(condition1Name,condition2Name)
 save(eset,file=result_export_eset)
 write(htmlfile,result)
 
-#l=list()
-#for(i in 1:length(esets))
-#{
-#	l[[paste("study",i,sep="")]]<-res[[i]]
-#}
-#l[["Meta"]]=res[[length(res)-1]]
-#showVenn(res,file.path(temp.files.path,"venn.png"))
-#writeLines(c("<h2>Venn diagram</h2>"),file.conn)
-#writeLines(c("<img src='venn.png'><br/><br/>"),file.conn)
-#writeLines(c("</body></html>"),file.conn)
-#close(file.conn)
\ No newline at end of file
--- a/AffyQCnormalization.xml	Wed Apr 12 03:47:05 2017 -0400
+++ b/AffyQCnormalization.xml	Wed May 10 04:12:26 2017 -0400
@@ -1,22 +1,27 @@
 <tool id="QCnormalization" name="QCnormalization" version="0.1.0">
 	<description>Quality control and normalization of affymetrix expression data</description>
-	<requirements>
+	<stdio>
+        <exit_code range="1:" />
+        
+		<regex match="Warning"
+           source="both"
+           level="warning"
+		/>
+     </stdio>
+    <requirements>
 	  <!--container type="docker">sblanck/smat</container-->
 	  <requirement type="package" version="0.1.0">r-smagexp</requirement>
 	</requirements>
-	<command interpreter="python">
+	<command>
 		<![CDATA[
-		stderr_wrapper.py Rscript 
+		Rscript 
 		${__tool_directory__}/AffyQCnormalization.R
-		   	#for $input in $inputs
-                "${input}"
-			    "${input.name}"
-     		#end for
-			"${normalization}"
-			$result_export_eset
-       		$result_html
-			$result_html.files_path
-		/${__tool_directory__}/AffyQCnormalization_tpl.html
+	    	--input "#for $input in $inputs# $input;$input.name, #end for#"
+            --normalization ${normalization}
+			--rdataoutput $result_export_eset
+       		--htmloutput $result_html
+			--htmloutputpath $result_html.files_path
+		    --htmltemplate ${__tool_directory__}/AffyQCnormalization_tpl.html
 		]]>
 		</command>
 	
--- a/GEOQuery.xml	Wed Apr 12 03:47:05 2017 -0400
+++ b/GEOQuery.xml	Wed May 10 04:12:26 2017 -0400
@@ -3,10 +3,10 @@
 	<stdio>
         <exit_code range="1:" />
     </stdio>
-	<requirements>
-	  	<!--container type="docker">sblanck/smagexp</container-->
+	<!--requirements>
+	  	<!container type="docker">sblanck/smagexp</container>
 		<requirement type="package" version="0.1.0">r-smagexp</requirement>
-	</requirements>
+	</requirements-->
 	<command>
 		<![CDATA[ 
 			Rscript --vanilla
--- a/ImportDataFromMatrix.R	Wed Apr 12 03:47:05 2017 -0400
+++ b/ImportDataFromMatrix.R	Wed May 10 04:12:26 2017 -0400
@@ -1,38 +1,78 @@
-library(Biobase)
-library(GEOquery)
-library(GEOmetadb)
-library(limma)
-library(jsonlite)
-library(affy)
-library(dplyr)
-library(affyPLM)
+#!/usr/bin/env Rscript
+# setup R error handling to go to stderr
+options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
+
+# we need that to not crash galaxy with an UTF8 error on German LC settings.
+loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+library("optparse")
+
+##### Read options
+option_list=list(
+		make_option("--input",type="character",default="NULL",help="rdata object containing eset object"),
+		make_option("--conditions",type="character",default=NULL,help="Text file summarizing conditions of the experiment (required)"),
+		make_option("--normalization",type="character",default=NULL,help="log2 transformation"),
+		make_option("--annotations",type="character",default="NULL",help="rdata object containing eset object"),
+		make_option("--rdataoutput",type="character",default="NULL",help="output rdata object containing eset object"),
+		make_option("--htmloutput",type="character",default=NULL,help="Output html report"),
+		make_option("--htmloutputpath",type="character",default="NULL",help="Path of output html report"),
+		make_option("--htmltemplate",type="character",default="NULL",help="html template)")
+
+
+);
+
+
+opt_parser = OptionParser(option_list=option_list);
+opt = parse_args(opt_parser);
 
-cargs<-commandArgs()
-cargs<-cargs[(which(cargs=="--args")+1):length(cargs)]
-nbargs=length(cargs)
+if(is.null(opt$input)){
+	print_help(opt_parser)
+	stop("input required.", call.=FALSE)
+}
+
+if(is.null(opt$conditions)){
+	print_help(opt_parser)
+	stop("conditions input required.", call.=FALSE)
+}
+
+
+#loading libraries
+suppressPackageStartupMessages(require(GEOquery))
 
-dataFile=cargs[[nbargs-9]]
-normalization=cargs[[nbargs-8]]
-conditionsFile=cargs[[nbargs-7]]
-annotation=cargs[[nbargs-6]]
-result_export_eset=cargs[[nbargs-5]]
-result=cargs[[nbargs-4]]
-result.path=cargs[[nbargs-3]]
-result.template=cargs[[nbargs-2]]
+suppressPackageStartupMessages(require(Biobase))
+suppressPackageStartupMessages(require(GEOquery))
+suppressPackageStartupMessages(require(GEOmetadb))
+suppressPackageStartupMessages(require(limma))
+suppressPackageStartupMessages(require(jsonlite))
+suppressPackageStartupMessages(require(affy))
+suppressPackageStartupMessages(require(dplyr))
+suppressPackageStartupMessages(require(affyPLM))
+
+dataFile=opt$input
+normalization=opt$normalization
+conditionsFile=opt$conditions
+annotation=opt$annotations
+result_export_eset=opt$rdataoutput
+result=opt$htmloutput
+result.path=opt$htmloutputpath
+result.template=opt$htmltemplate
 
 dir.create(result.path, showWarnings = TRUE, recursive = FALSE)
 
-data=as.matrix(read.table(file = dataFile))
+data=as.matrix(read.table(file = dataFile,row.names=1,header=TRUE))
 conditions=read.table(file=conditionsFile,sep = "\t",row.names=1)
 htmlfile=readChar(result.template, file.info(result.template)$size)
 
 colnames(conditions)=c("source_name_ch1","description")
 phenodata<-new("AnnotatedDataFrame",data=conditions)
 
+head(data)
+conditions
+
 eset=ExpressionSet(assayData=data,phenoData=phenodata,annotation=annotation)
 
 if (normalization == "quantile") {
-	eset <- normalize.ExpressionSet.quantiles(eset, transfn="log")
+	eset <- normalize.ExpressionSet.quantiles(eset, transfn="log2")
 } else if (normalization == "log2") {
 	exprs(eset) = log2(exprs(eset)) 
 } 
@@ -49,7 +89,7 @@
 nblines=length(colnames(data))%/%3 + as.numeric((length(colnames(data))%%3)!=0) 
 png(plotMAnorm,width=800,height =300*nblines )
 par(mfrow=c(nblines,3))
-#for (i in 1:length(colnames(data))){
+##for (i in 1:length(colnames(data))){
 	MAplot(eset)
 #}
 
--- a/ImportDataFromMatrix.xml	Wed Apr 12 03:47:05 2017 -0400
+++ b/ImportDataFromMatrix.xml	Wed May 10 04:12:26 2017 -0400
@@ -4,18 +4,18 @@
 	  	<!--container type="docker">sblanck/smagexp</container-->
 		<requirement type="package" version="0.1.0">r-smagexp</requirement>		
 	</requirements>
-	<command interpreter="python">
+	<command>
 		<![CDATA[ 
-		stderr_wrapper.py Rscript 
+		Rscript --vanilla 
 		${__tool_directory__}/ImportDataFromMatrix.R
-		    $input
-			$normalization
-			$conditions
-			$annotations
-			$result_export_eset
-       		$result_html
-			$result_html.files_path
-		${__tool_directory__}/ImportDataFromMatrix_tpl.html
+		    --input $input
+			--normalization $normalization
+			--conditions $conditions
+			--annotations $annotations
+			--rdataoutput $result_export_eset
+       		--htmloutput $result_html
+			--htmloutputpath $result_html.files_path
+			--htmltemplate ${__tool_directory__}/ImportDataFromMatrix_tpl.html
 		]]>		
 		</command>
 		
@@ -49,6 +49,7 @@
 Header of input tabular text file
 ::
 
+
 ""	"GSM80460"	"GSM80461"	"GSM80462"	"GSM80463"	"GSM80464"
 "1007_s_at"	-0.0513991525066443	0.306845500314283	0.0854246562526777	-0.142417044615852	0.0854246562526777
 "1053_at"	-0.187707155126729	-0.488026018218199	-0.282789700980404	0.160920188181103	0.989865622866287
@@ -62,7 +63,6 @@
 The .cond file should look like this 
 ::
 
- Sample ID 	Condition			Description
  GSM80460	series of 16 tumors	GSM80460 OSCE-2T SERIES OF 16 TUMORS
  GSM80461	series of 16 tumors	GSM80461 OSCE-4T Series of 16 Tumors
  GSM80462	series of 16 tumors	GSM80462 OSCE-6T Series of 16 Tumors
--- a/MetaMA.xml	Wed Apr 12 03:47:05 2017 -0400
+++ b/MetaMA.xml	Wed May 10 04:12:26 2017 -0400
@@ -1,28 +1,24 @@
 <tool id="metaMA" name="Microarray data meta-analysis" version="0.1.0">
 	<description>Perform meta-analysis thanks to metaMA.</description>
 	<requirements>
-	  <!--container type="docker">sblanck/smagexp</container-->
-          <requirement type="package" version="0.1.0">r-smagexp</requirement>
+	  <!--container type="docker">sblanck/smat</container-->
+	  <requirement type="package" version="0.1.0">r-smagexp</requirement>
 	</requirements>
-	<command interpreter="python">
+	<command>
 		<![CDATA[ 
-		stderr_wrapper.py Rscript 
+		Rscript 
 		${__tool_directory__}/MetaMA.R
-		#for $currentInput in $inputList
-        	"${currentInput.rdataset}"
-		 #end for
-       		$result_html 
-			$result_html.extra_files_path
-		${__tool_directory__}/MetaMa_tpl.html
+		--input $input
+       	--htmloutput $result_html 
+		--htmloutputpath $result_html.extra_files_path
+		--htmltemplate ${__tool_directory__}/MetaMa_tpl.html
 		]]>
 	</command>
 	
 	<inputs>
-		<repeat name="inputList" title="Datasets">
-			<param name="rdataset" type="data" format="rdata" label="RData" help="RData to be used"/>
-		</repeat>
+		<param format="rdata" name="input" multiple="true" type="data" optional="false" label="rdata files" help="rdata files containing the results of the analysis to be used in the meta-analysis"/>
 	</inputs>
-	
+		
 	<outputs>
 		<data format="html" name="result_html" label="Meta-analysis results"/>
 	</outputs>
--- a/MetaRNAseq.xml	Wed Apr 12 03:47:05 2017 -0400
+++ b/MetaRNAseq.xml	Wed May 10 04:12:26 2017 -0400
@@ -1,9 +1,9 @@
 <tool id="metarnaseq" name="RNA-seq data meta-analysis">
 	<description>perform meta-analysis thanks to metaRNAseq</description>
-	<requirements>
-	  	<!--container type="docker">sblanck/smagexp</container-->
-		<requirement type="package" version="0.1.0">r-smagexp</requirement>
-	</requirements>
+	<!--requirements>
+	  <container type="docker">sblanck/smat</container>
+	  <requirement type="package" version="0.1.0">r-smagexp</requirement>
+	</requirements-->
 	<command interpreter="python">
 		<![CDATA[ 	
 		stderr_wrapper.py Rscript