Mercurial > repos > sblanck > smagexp
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