Previous changeset 1:da716e2937f2 (2016-02-22) Next changeset 3:3b44991a8e05 (2016-04-25) |
Commit message:
planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 83b80dcd96b379518c2e4ace992affc889d32ca6 |
modified:
README.rst abims_xcms_retcor.xml repository_dependencies.xml test-data/xset.group.RData tool_dependencies.xml |
added:
lib.r macros.xml planemo_test.sh test-data/sacuri_dir_root.zip xcms.r |
removed:
planemo.sh test-data/sacuri.zip test-data/xset.group.retcor.BPCs_corrected.pdf test-data/xset.group.retcor.RData test-data/xset.group.retcor.Rplots.pdf test-data/xset.group.retcor.TICs_corrected.pdf |
b |
diff -r da716e2937f2 -r 54cc3edfe35c README.rst --- a/README.rst Mon Feb 22 16:38:15 2016 -0500 +++ b/README.rst Fri Apr 08 10:39:32 2016 -0400 |
b |
@@ -2,6 +2,11 @@ Changelog/News -------------- +**Version 2.0.6 - 04/04/2016** + +- TEST: refactoring to pass planemo test using conda dependencies + + **Version 2.0.5 - 10/02/2016** - BUGFIX: better management of errors. Datasets remained green although the process failed @@ -19,3 +24,14 @@ - IMPROVEMENT: parameter labels have changed to facilitate their reading. + +Test Status +----------- + +Planemo test using conda: passed + +Planemo test using source env.sh: passed + +Planemo shed_test : passed + + |
b |
diff -r da716e2937f2 -r 54cc3edfe35c abims_xcms_retcor.xml --- a/abims_xcms_retcor.xml Mon Feb 22 16:38:15 2016 -0500 +++ b/abims_xcms_retcor.xml Fri Apr 08 10:39:32 2016 -0400 |
[ |
@@ -1,20 +1,16 @@ -<tool id="abims_xcms_retcor" name="xcms.retcor" version="2.0.5"> +<tool id="abims_xcms_retcor" name="xcms.retcor" version="2.0.6"> <description>Retention Time Correction using retcor function from xcms R package </description> - <requirements> - <requirement type="package" version="3.1.2">R</requirement> - <requirement type="binary">Rscript</requirement> - <requirement type="package" version="1.44.0">xcms</requirement> - <requirement type="package" version="2.2.0">xcms_w4m_script</requirement> - </requirements> + <macros> + <import>macros.xml</import> + </macros> - <stdio> - <exit_code range="1:" level="fatal" /> - </stdio> + <expand macro="requirements"/> + <expand macro="stdio"/> <command><![CDATA[ - xcms.r + @COMMAND_XCMS_SCRIPT@ image $image xfunction retcor @@ -36,15 +32,10 @@ plottype $methods.options.plottype #end if #end if - ###if $zip_file: - ## zipfile $zip_file - ###end if - ; - return=\$?; - mv log.txt $log; - cat $log; - sh -c "exit \$return" - + #if $zip_file: + zipfile $zip_file + #end if + @COMMAND_LOG_EXIT@ ]]></command> <inputs> @@ -64,6 +55,7 @@ </param> <param name="extra" type="integer" value="1" label="Number of extra peaks to allow in retention time correction correction groups" help="[extra]" /> <param name="missing" type="integer" value="1" label="Number of missing samples to allow in retention time correction groups" help="[missing]" /> + <conditional name="options"> <param name="option" type="select" label="Advanced options"> <option value="show">show</option> @@ -82,14 +74,15 @@ <option value="deviation">deviation</option> <option value="mdevden">mdevden</option> </param> + </when> <when value="hide"> </when> </conditional> </when> </conditional> - <!-- To pass planemo test --> - <!--<param name="zip_file" type="hidden_data" format="no_unzip.zip" label="Zip file" />--> + <!-- To pass planemo test --> + <param name="zip_file" type="data" format="no_unzip.zip,zip" label="Zip file" help="Use only if you get a message which say that your original zip file have been deleted on the server." /> </inputs> <outputs> @@ -108,25 +101,21 @@ <tests> <test> <param name="image" value="xset.group.RData"/> - <param name="methods.method" value="peakgroups"/> - <param name="methods.smooth" value="loess"/> - <param name="methods.extra" value="1"/> - <param name="methods.missing" value="1"/> - <param name="methods.options.option" value="show"/> - <param name="methods.options.span" value="0.2"/> - <param name="methods.options.family" value="gaussian"/> - <param name="methods.options.plottype" value="deviation"/> - <param name="zip_file" value="sacuri.zip"/> - <!--<output name="xsetRData" file="xset.group.retcor.RData" />--> - <!--<output name="rplotsPdf" file="xset.group.retcor.Rplots.pdf" />--> - <!--<output name="ticsCorPdf" file="xset.group.retcor.TICs_corrected.pdf" />--> - <!--<output name="bpcsCorPdf" file="xset.group.retcor.BPCs_corrected.pdf" />--> + <param name="methods|method" value="peakgroups"/> + <param name="methods|smooth" value="loess"/> + <param name="methods|extra" value="1"/> + <param name="methods|missing" value="1"/> + <param name="methods|options|option" value="show"/> + <param name="methods|options|span" value="0.2"/> + <param name="methods|options|family" value="gaussian"/> + <param name="methods|options|plottype" value="deviation"/> + <param name="zip_file" value="sacuri_dir_root.zip" ftype="zip" /> <output name="log"> <assert_contents> - <has_text text="object with 9 samples" /> - <has_text text="Time range: 0.7-1139.9 seconds (0-19 minutes)" /> - <has_text text="Mass range: 50.0019-999.9863 m/z" /> - <has_text text="Peaks: 135846 (about 15094 per sample)" /> + <has_text text="object with 4 samples" /> + <has_text text="Time range: 0.2-1140.1 seconds (0-19 minutes)" /> + <has_text text="Mass range: 50.0021-999.9863 m/z" /> + <has_text text="Peaks: 59359 (about 14840 per sample)" /> <has_text text="Peak Groups: 0" /> <has_text text="Sample classes: bio, blank" /> </assert_contents> @@ -135,21 +124,8 @@ </tests> <help><![CDATA[ - -.. class:: infomark - -**Authors** Colin A. Smith csmith@scripps.edu, Ralf Tautenhahn rtautenh@gmail.com, Steffen Neumann sneumann@ipb-halle.de, Paul Benton hpaul.benton08@imperial.ac.uk and Christopher Conley cjconley@ucdavis.edu - -.. class:: infomark - -**Galaxy integration** ABiMS TEAM - UPMC/CNRS - Station biologique de Roscoff and Yann Guitton yann.guitton@univ-nantes.fr - part of Workflow4Metabolomics.org [W4M] - - | Contact support@workflow4metabolomics.org for any questions or concerns about the Galaxy implementation of this tool. - - - ---------------------------------------------------- +@HELP_AUTHORS@ =========== Xcms.retcor @@ -297,6 +273,11 @@ Changelog/News -------------- +**Version 2.0.6 - 04/04/2016** + +- TEST: refactoring to pass planemo test using conda dependencies + + **Version 2.0.5 - 10/02/2016** - BUGFIX: better management of errors. Datasets remained green although the process failed @@ -317,9 +298,7 @@ ]]></help> - <citations> - <citation type="doi">10.1021/ac051437y</citation> - <citation type="doi">10.1093/bioinformatics/btu813</citation> - </citations> + + <expand macro="citation" /> </tool> |
b |
diff -r da716e2937f2 -r 54cc3edfe35c lib.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib.r Fri Apr 08 10:39:32 2016 -0400 |
[ |
b'@@ -0,0 +1,400 @@\n+# lib.r version="2.0.1"\n+#Authors ABiMS TEAM\n+#Lib.r for Galaxy Workflow4Metabo\n+#version 2.2\n+#Based on lib.r 2.1\n+#Modifications made by Guitton Yann \n+#correct bug in Base Peak Chromatogram (BPC) option, not only TIC when scanrange used in xcmsSet\n+#Note if scanrange is used a warning is prompted in R console but do not stop PDF generation\n+\n+\n+\n+\n+#@author Y. Guitton\n+getBPC <- function(file,rtcor=NULL, ...) {\n+ object <- xcmsRaw(file)\n+ sel <- profRange(object, ...)\n+ cbind(if (is.null(rtcor)) object@scantime[sel$scanidx] else rtcor ,xcms:::colMax(object@env$profile[sel$massidx,sel$scanidx,drop=FALSE]))\n+ #plotChrom(xcmsRaw(file), base=T)\n+}\n+\n+#@author Y. Guitton\n+getBPCs <- function (xcmsSet=NULL, pdfname="BPCs.pdf",rt=c("raw","corrected"), scanrange=NULL) {\n+ cat("Creating BIC pdf...\\n")\n+\n+ if (is.null(xcmsSet)) {\n+ cat("Enter an xcmsSet \\n")\n+ stop()\n+ } else {\n+ files <- filepaths(xcmsSet)\n+ }\n+\n+ class<-as.vector(levels(xcmsSet@phenoData[,1])) #sometime phenoData have more than 1 column use first as class\n+\n+ classnames<-vector("list",length(class))\n+ for (i in 1:length(class)){\n+ classnames[[i]]<-which( xcmsSet@phenoData[,1]==class[i])\n+ }\n+\n+ N <- dim(phenoData(xcmsSet))[1]\n+\n+ TIC <- vector("list",N)\n+\n+\n+ for (j in 1:N) {\n+\n+ TIC[[j]] <- getBPC(files[j])\n+ #good for raw \n+ # seems strange for corrected\n+ #errors if scanrange used in xcmsSetgeneration\n+ if (!is.null(xcmsSet) && rt == "corrected")\n+ rtcor <- xcmsSet@rt$corrected[[j]] else\n+ rtcor <- NULL\n+ \n+ TIC[[j]] <- getBPC(files[j],rtcor=rtcor)\n+ # TIC[[j]][,1]<-rtcor\n+ }\n+\n+\n+\n+ pdf(pdfname,w=16,h=10)\n+ cols <- rainbow(N)\n+ lty = 1:N\n+ pch = 1:N\n+ #search for max x and max y in BPCs\n+ xlim = range(sapply(TIC, function(x) range(x[,1])))\n+ ylim = range(sapply(TIC, function(x) range(x[,2])))\n+ ylim = c(-ylim[2], ylim[2])\n+\n+\n+ ##plot start\n+ \n+ if (length(class)>2){\n+ for (k in 1:(length(class)-1)){\n+ for (l in (k+1):length(class)){\n+ #print(paste(class[k],"vs",class[l],sep=" ")) \n+ plot(0, 0, type="n", xlim = xlim/60, ylim = ylim, main = paste("Base Peak Chromatograms \\n","BPCs_",class[k]," vs ",class[l], sep=""), xlab = "Retention Time (min)", ylab = "BPC")\n+ colvect<-NULL\n+ for (j in 1:length(classnames[[k]])) {\n+ tic <- TIC[[classnames[[k]][j]]]\n+ # points(tic[,1]/60, tic[,2], col = cols[i], pch = pch[i], type="l")\n+ points(tic[,1]/60, tic[,2], col = cols[classnames[[k]][j]], pch = pch[classnames[[k]][j]], type="l")\n+ colvect<-append(colvect,cols[classnames[[k]][j]])\n+ }\n+ for (j in 1:length(classnames[[l]])) {\n+ # i=class2names[j]\n+ tic <- TIC[[classnames[[l]][j]]]\n+ points(tic[,1]/60, -tic[,2], col = cols[classnames[[l]][j]], pch = pch[classnames[[l]][j]], type="l")\n+ colvect<-append(colvect,cols[classnames[[l]][j]])\n+ }\n+ legend("topright",paste(basename(files[c(classnames[[k]],classnames[[l]])])), col = colvect, lty = lty, pch = pch)\n+ }\n+ }\n+ }#end if length >2\n+\n+ if (length(class)==2){\n+ k=1\n+ l=2\n+ colvect<-NULL\n+ plot(0, 0, type="n", xlim = xlim/60, ylim = ylim, main = paste("Base Peak Chromatograms \\n","BPCs_",class[k],"vs",class[l], sep=""), xlab = "Retention Time (min)", ylab = "BPC")\n+\n+ for (j in 1:length(classnames[[k]])) {\n+\n+ tic <- TIC[[classnames[[k]][j]]]\n+ # points(tic[,1]/60, tic[,2], col = cols[i], pch = pch[i], type="l")\n+ points(tic[,1]/60, tic[,2], col = cols[classnames[[k]][j]], pch = pch[classnames[[k]][j]], type="l")\n+ colvect<-append(colvect,cols[classnames[[k]][j]])\n+ }\n+ for (j in 1:length(classnames[[l]])) {\n+ # i=class2names[j]\n+ tic <- TIC[[classnames[[l]][j]]]\n+ points(tic[,1]/60, -tic[,2], col = cols[classnames[[l]][j]], pch = pch[classnames[[l]][j]], type="l")\n+ colvect<-append(colvect,cols[classnames[[l]][j]])\n+ }\n+ legen'..b'}\n+\n+\n+##\n+## This function check if xcms will found all the files\n+##\n+#@author Gildas Le Corguille lecorguille@sb-roscoff.fr ABiMS TEAM\n+checkFilesCompatibilityWithXcms <- function(directory) {\n+ cat("Checking files filenames compatibilities with xmcs...\\n")\n+ # WHAT XCMS WILL FIND\n+ filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]")\n+ filepattern <- paste(paste("\\\\.", filepattern, "$", sep = ""),collapse = "|")\n+ info <- file.info(directory)\n+ listed <- list.files(directory[info$isdir], pattern = filepattern,recursive = TRUE, full.names = TRUE)\n+ files <- c(directory[!info$isdir], listed)\n+ files_abs <- file.path(getwd(), files)\n+ exists <- file.exists(files_abs)\n+ files[exists] <- files_abs[exists]\n+ files[exists] <- sub("//","/",files[exists])\n+\n+ # WHAT IS ON THE FILESYSTEM\n+ filesystem_filepaths=system(paste("find $PWD/",directory," -not -name \'\\\\.*\' -not -path \'*conda-env*\' -type f -name \\"*\\"", sep=""), intern=T)\n+ filesystem_filepaths=filesystem_filepaths[grep(filepattern, filesystem_filepaths, perl=T)]\n+\n+ # COMPARISON\n+ if (!is.na(table(filesystem_filepaths %in% files)["FALSE"])) { \n+ write("\\n\\nERROR: List of the files which will not be imported by xcmsSet",stderr())\n+ write(filesystem_filepaths[!(filesystem_filepaths %in% files)],stderr())\n+ stop("\\n\\nERROR: One or more of your files will not be import by xcmsSet. It may due to bad characters in their filenames.")\n+\n+ }\n+}\n+\n+\n+\n+##\n+## This function check if XML contains special caracters. It also checks integrity and completness.\n+##\n+#@author Misharl Monsoor misharl.monsoor@sb-roscoff.fr ABiMS TEAM\n+checkXmlStructure <- function (directory) {\n+ cat("Checking XML structure...\\n")\n+\n+ cmd=paste("IFS=$\'\\n\'; for xml in $(find",directory,"-not -name \'\\\\.*\' -not -path \'*conda-env*\' -type f -iname \'*.*ml*\'); do if [ $(xmllint --nonet --noout \\"$xml\\" 2> /dev/null; echo $?) -gt 0 ]; then echo $xml;fi; done;")\n+ capture=system(cmd,intern=TRUE)\n+\n+ if (length(capture)>0){\n+ #message=paste("The following mzXML or mzML file is incorrect, please check these files first:",capture)\n+ write("\\n\\nERROR: The following mzXML or mzML file(s) are incorrect, please check these files first:", stderr())\n+ write(capture, stderr())\n+ stop("ERROR: xcmsSet cannot continue with incorrect mzXML or mzML files")\n+ }\n+ \n+}\n+\n+\n+##\n+## This function check if XML contain special characters\n+##\n+#@author Misharl Monsoor misharl.monsoor@sb-roscoff.fr ABiMS TEAM\n+deleteXmlBadCharacters<- function (directory) {\n+ cat("Checking Non ASCII characters in the XML...\\n")\n+\n+ processed=F\n+ l=system( paste("find",directory, "-not -name \'\\\\.*\' -not -path \'*conda-env*\' -type f -iname \'*.*ml*\'"),intern=TRUE) \n+ for (i in l){\n+ cmd=paste("LC_ALL=C grep \'[^ -~]\' \\"",i,"\\"",sep="")\n+ capture=suppressWarnings(system(cmd,intern=TRUE))\n+ if (length(capture)>0){\n+ cmd=paste("perl -i -pe \'s/[^[:ascii:]]//g;\'",i)\n+ print( paste("WARNING: Non ASCII characters have been removed from the ",i,"file") )\n+ c=system(cmd,intern=TRUE)\n+ capture=""\n+ processed=T \n+ }\n+ }\n+ if (processed) cat("\\n\\n")\n+ return(processed)\n+}\n+\n+\n+## \n+## This function will compute MD5 checksum to check the data integrity\n+##\n+#@author Gildas Le Corguille lecorguille@sb-roscoff.fr\n+getMd5sum <- function (directory) {\n+ cat("Compute md5 checksum...\\n")\n+ # WHAT XCMS WILL FIND\n+ filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]")\n+ filepattern <- paste(paste("\\\\.", filepattern, "$", sep = ""),collapse = "|")\n+ info <- file.info(directory)\n+ listed <- list.files(directory[info$isdir], pattern = filepattern,recursive = TRUE, full.names = TRUE)\n+ files <- c(directory[!info$isdir], listed)\n+ exists <- file.exists(files)\n+ files <- files[exists]\n+\n+ library(tools)\n+\n+ #cat("\\n\\n")\n+\n+ return(as.matrix(md5sum(files)))\n+}\n+\n' |
b |
diff -r da716e2937f2 -r 54cc3edfe35c macros.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Fri Apr 08 10:39:32 2016 -0400 |
[ |
@@ -0,0 +1,51 @@ +<?xml version="1.0"?> +<macros> + <xml name="requirements"> + <requirements> + <requirement type="package" version="3.1.2">R</requirement> + <requirement type="package" version="0.4_1">r-snow</requirement> + <requirement type="package" version="1.44.0">bioconductor-xcms</requirement> + <requirement type="package" version="1.1_4">r-batch</requirement> + </requirements> + </xml> + <xml name="stdio"> + <stdio> + <exit_code range="1" level="fatal" /> + </stdio> + </xml> + + <token name="@COMMAND_XCMS_SCRIPT@"> + LANG=C Rscript $__tool_directory__/xcms.r + </token> + + <token name="@COMMAND_LOG_EXIT@"> + ; + return=\$?; + mv log.txt $log; + cat $log; + sh -c "exit \$return" + </token> + + <token name="@HELP_AUTHORS@"> +.. class:: infomark + +**Authors** Colin A. Smith csmith@scripps.edu, Ralf Tautenhahn rtautenh@gmail.com, Steffen Neumann sneumann@ipb-halle.de, Paul Benton hpaul.benton08@imperial.ac.uk and Christopher Conley cjconley@ucdavis.edu + +.. class:: infomark + +**Galaxy integration** ABiMS TEAM - UPMC/CNRS - Station biologique de Roscoff and Yann Guitton yann.guitton@oniris-nantes.fr - part of Workflow4Metabolomics.org [W4M] + + | Contact support@workflow4metabolomics.org for any questions or concerns about the Galaxy implementation of this tool. + +--------------------------------------------------- + + </token> + + + <xml name="citation"> + <citations> + <citation type="doi">10.1021/ac051437y</citation> + <citation type="doi">10.1093/bioinformatics/btu813</citation> + </citations> + </xml> +</macros> |
b |
diff -r da716e2937f2 -r 54cc3edfe35c planemo.sh --- a/planemo.sh Mon Feb 22 16:38:15 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
@@ -1,1 +0,0 @@ -planemo shed_init -f --name=xcms_retcor --owner=lecorguille --description="[W4M][GC-MS] XCMS R Package - Preprocessing - Correct retention time from different samples" --homepage_url="http://workflow4metabolomics.org" --long_description="Part of the W4M project: http://workflow4metabolomics.org\n\nXCMS: http://www.bioconductor.org/packages/release/bioc/html/xcms.html\n\nRetention Time Correction using retcor function from xcms R package\n\nBEWARE: this tool don't come with its script. You will need to install the dedicated package_xcms_w4m_script too" --category="Metabolomics" |
b |
diff -r da716e2937f2 -r 54cc3edfe35c planemo_test.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo_test.sh Fri Apr 08 10:39:32 2016 -0400 |
[ |
@@ -0,0 +1,19 @@ +planemo conda_init +planemo conda_install . +planemo test --install_galaxy --conda_dependency_resolution --galaxy_branch "dev" + +#All 1 test(s) executed passed. +#abims_xcms_retcor[0]: passed + + +source /w/galaxy/dev/shed_tools_tool_dependency_dir/R/3.1.2/iuc/package_r_3_1_2/1ca39eb16186/env.sh +source /w/galaxy/dev/shed_tools_tool_dependency_dir/bioconductor-xcms/1.44.0/lecorguille/package_bioconductor_xcms_1_44_0/0c38f7d43e08/env.sh +planemo test --install_galaxy --galaxy_branch "dev" + +#All 1 test(s) executed passed. +#abims_xcms_retcor[0]: passed + + +planemo shed_test --install_galaxy --galaxy_branch "dev" -t testtoolshed +#All 1 test(s) executed passed. +#testtoolshed.g2.bx.psu.edu/repos/lecorguille/xcms_retcor/abims_xcms_retcor/2.0.6[0]: passed \ No newline at end of file |
b |
diff -r da716e2937f2 -r 54cc3edfe35c repository_dependencies.xml --- a/repository_dependencies.xml Mon Feb 22 16:38:15 2016 -0500 +++ b/repository_dependencies.xml Fri Apr 08 10:39:32 2016 -0400 |
b |
@@ -1,5 +1,5 @@ <?xml version="1.0"?> <repositories> <repository changeset_revision="7800ba9a4c1e" name="no_unzip_datatype" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> - <repository changeset_revision="d64562a4ebb3" name="rdata_xcms_datatypes" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> + <repository changeset_revision="d64562a4ebb3" name="rdata_xcms_datatypes" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> </repositories> |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/sacuri.zip |
b |
Binary file test-data/sacuri.zip has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/sacuri_dir_root.zip |
b |
Binary file test-data/sacuri_dir_root.zip has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/xset.group.RData |
b |
Binary file test-data/xset.group.RData has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/xset.group.retcor.BPCs_corrected.pdf |
b |
Binary file test-data/xset.group.retcor.BPCs_corrected.pdf has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/xset.group.retcor.RData |
b |
Binary file test-data/xset.group.retcor.RData has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/xset.group.retcor.Rplots.pdf |
b |
Binary file test-data/xset.group.retcor.Rplots.pdf has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c test-data/xset.group.retcor.TICs_corrected.pdf |
b |
Binary file test-data/xset.group.retcor.TICs_corrected.pdf has changed |
b |
diff -r da716e2937f2 -r 54cc3edfe35c tool_dependencies.xml --- a/tool_dependencies.xml Mon Feb 22 16:38:15 2016 -0500 +++ b/tool_dependencies.xml Fri Apr 08 10:39:32 2016 -0400 |
b |
@@ -1,12 +1,9 @@ <?xml version="1.0"?> <tool_dependency> <package name="R" version="3.1.2"> - <repository changeset_revision="c987143177d4" name="package_r_3_1_2" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" /> + <repository changeset_revision="4d2fd1413b56" name="package_r_3_1_2" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" /> </package> - <package name="xcms" version="1.44.0"> - <repository changeset_revision="4443617bdd85" name="package_r_xcms_1_44_0" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> - </package> - <package name="xcms_w4m_script" version="2.2.0"> - <repository changeset_revision="115cf2b43a3c" name="package_xcms_w4m_script_2_2_0" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> + <package name="bioconductor-xcms" version="1.44.0"> + <repository changeset_revision="58ebb405a3d6" name="package_bioconductor_xcms_1_44_0" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" /> </package> </tool_dependency> |
b |
diff -r da716e2937f2 -r 54cc3edfe35c xcms.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xcms.r Fri Apr 08 10:39:32 2016 -0400 |
[ |
@@ -0,0 +1,246 @@ +#!/usr/bin/env Rscript +# xcms.r version="2.2.0" +#Authors ABIMS TEAM +#BPC Addition from Y.guitton + + +# ----- LOG FILE ----- +log_file=file("log.txt", open = "wt") +sink(log_file) +sink(log_file, type = "output") + + +# ----- PACKAGE ----- +cat("\tPACKAGE INFO\n") +#pkgs=c("xcms","batch") +pkgs=c("parallel","BiocGenerics", "Biobase", "Rcpp", "mzR", "xcms","snow","batch") +for(pkg in pkgs) { + suppressPackageStartupMessages( stopifnot( library(pkg, quietly=TRUE, logical.return=TRUE, character.only=TRUE))) + cat(pkg,"\t",as.character(packageVersion(pkg)),"\n",sep="") +} +source_local <- function(fname){ argv <- commandArgs(trailingOnly = FALSE); base_dir <- dirname(substring(argv[grep("--file=", argv)], 8)); source(paste(base_dir, fname, sep="/")) } +cat("\n\n"); + + + + + +# ----- ARGUMENTS ----- +cat("\tARGUMENTS INFO\n") +listArguments = parseCommandArgs(evaluate=FALSE) #interpretation of arguments given in command line as an R list of objects +write.table(as.matrix(listArguments), col.names=F, quote=F, sep='\t') + +cat("\n\n"); + + +# ----- ARGUMENTS PROCESSING ----- +cat("\tINFILE PROCESSING INFO\n") + +#image is an .RData file necessary to use xset variable given by previous tools +if (!is.null(listArguments[["image"]])){ + load(listArguments[["image"]]); listArguments[["image"]]=NULL +} + +#Import the different functions +source_local("lib.r") + +cat("\n\n") + +#Import the different functions + +# ----- PROCESSING INFILE ----- +cat("\tARGUMENTS PROCESSING INFO\n") + +# Save arguments to generate a report +if (!exists("listOFlistArguments")) listOFlistArguments=list() +listOFlistArguments[[paste(format(Sys.time(), "%y%m%d-%H:%M:%S_"),listArguments[["xfunction"]],sep="")]] = listArguments + + +#saving the commun parameters +thefunction = listArguments[["xfunction"]]; listArguments[["xfunction"]]=NULL #delete from the list of arguments + +xsetRdataOutput = paste(thefunction,"RData",sep=".") +if (!is.null(listArguments[["xsetRdataOutput"]])){ + xsetRdataOutput = listArguments[["xsetRdataOutput"]]; listArguments[["xsetRdataOutput"]]=NULL +} + +rplotspdf = "Rplots.pdf" +if (!is.null(listArguments[["rplotspdf"]])){ + rplotspdf = listArguments[["rplotspdf"]]; listArguments[["rplotspdf"]]=NULL +} + +sampleMetadataOutput = "sampleMetadata.tsv" +if (!is.null(listArguments[["sampleMetadataOutput"]])){ + sampleMetadataOutput = listArguments[["sampleMetadataOutput"]]; listArguments[["sampleMetadataOutput"]]=NULL +} + + + + +if (thefunction %in% c("xcmsSet","retcor")) { + ticspdf = listArguments[["ticspdf"]]; listArguments[["ticspdf"]]=NULL + bicspdf = listArguments[["bicspdf"]]; listArguments[["bicspdf"]]=NULL +} + +#necessary to unzip .zip file uploaded to Galaxy +#thanks to .zip file it's possible to upload many file as the same time conserving the tree hierarchy of directories + + +if (!is.null(listArguments[["zipfile"]])){ + zipfile= listArguments[["zipfile"]]; listArguments[["zipfile"]]=NULL +} + +if (!is.null(listArguments[["library"]])){ + directory=listArguments[["library"]]; listArguments[["library"]]=NULL + if(!file.exists(directory)){ + error_message=paste("Cannot access the directory:",directory,". Please verify if the directory exists or not.") + print(error_message) + stop(error_message) + } +} + +# We unzip automatically the chromatograms from the zip files. +if (thefunction %in% c("xcmsSet","retcor","fillPeaks")) { + if(exists("zipfile") && (zipfile!="")) { + if(!file.exists(zipfile)){ + error_message=paste("Cannot access the Zip file:",zipfile,". Please, contact your administrator ... if you have one!") + print(error_message) + stop(error_message) + } + + #list all file in the zip file + #zip_files=unzip(zipfile,list=T)[,"Name"] + + + #unzip + suppressWarnings(unzip(zipfile, unzip="unzip")) + + #get the directory name + filesInZip=unzip(zipfile, list=T); + directories=unique(unlist(lapply(strsplit(filesInZip$Name,"/"), function(x) x[1]))); + directories=directories[!(directories %in% c("__MACOSX")) & file.info(directories)$isdir] + directory = "." + if (length(directories) == 1) directory = directories + + cat("files_root_directory\t",directory,"\n") + + # + md5sumList=list("origin"=getMd5sum(directory)) + + # Check and fix if there are non ASCII characters. If so, they will be removed from the *mzXML mzML files. + # Remove because can create issue with some clean files + #@TODO: fix me + #if (deleteXmlBadCharacters(directory)) { + # md5sumList=list("removalBadCharacters"=getMd5sum(directory)) + #} + + } +} + +#addition of the directory to the list of arguments in the first position +if (thefunction == "xcmsSet") { + checkXmlStructure(directory) + checkFilesCompatibilityWithXcms(directory) + listArguments=append(directory, listArguments) +} + + +#addition of xset object to the list of arguments in the first position +if (exists("xset")){ + listArguments=append(list(xset), listArguments) +} + +cat("\n\n") + + + + + + +# ----- MAIN PROCESSING INFO ----- +cat("\tMAIN PROCESSING INFO\n") + + +#Verification of a group step before doing the fillpeaks job. + +if (thefunction == "fillPeaks") { + res=try(is.null(groupnames(xset))) + if (class(res) == "try-error"){ + error<-geterrmessage() + write(error, stderr()) + stop("You must always do a group step after a retcor. Otherwise it won't work for the fillpeaks step") + } + +} + +#change the default display settings +#dev.new(file="Rplots.pdf", width=16, height=12) +pdf(file=rplotspdf, width=16, height=12) +if (thefunction == "group") { + par(mfrow=c(2,2)) +} +#else if (thefunction == "retcor") { +#try to change the legend display +# par(xpd=NA) +# par(xpd=T, mar=par()$mar+c(0,0,0,4)) +#} + + +#execution of the function "thefunction" with the parameters given in "listArguments" +xset = do.call(thefunction, listArguments) + + +cat("\n\n") + +dev.off() #dev.new(file="Rplots.pdf", width=16, height=12) + +if (thefunction == "xcmsSet") { + + #transform the files absolute pathways into relative pathways + xset@filepaths<-sub(paste(getwd(),"/",sep="") ,"", xset@filepaths) + + if(exists("zipfile") && (zipfile!="")) { + + #Modify the samples names (erase the path) + for(i in 1:length(sampnames(xset))){ + + sample_name=unlist(strsplit(sampnames(xset)[i], "/")) + sample_name=sample_name[length(sample_name)] + sample_name= unlist(strsplit(sample_name,"[.]"))[1] + sampnames(xset)[i]=sample_name + + } + + } + +} + +# -- TIC -- +if (thefunction == "xcmsSet") { + sampleNamesList = getSampleMetadata(xcmsSet=xset, sampleMetadataOutput=sampleMetadataOutput) + getTICs(xcmsSet=xset, pdfname=ticspdf,rt="raw") + getBPCs(xcmsSet=xset,rt="raw",pdfname=bicspdf) +} else if (thefunction == "retcor") { + getTICs(xcmsSet=xset, pdfname=ticspdf,rt="corrected") + getBPCs(xcmsSet=xset,rt="corrected",pdfname=bicspdf) +} + +cat("\n\n") + + +# ----- EXPORT ----- + +cat("\tXSET OBJECT INFO\n") +print(xset) +#delete the parameters to avoid the passage to the next tool in .RData image + + +#saving R data in .Rdata file to save the variables used in the present tool +objects2save = c("xset","zipfile","listOFlistArguments","md5sumList","sampleNamesList") +save(list=objects2save[objects2save %in% ls()], file=xsetRdataOutput) + +cat("\n\n") + + +cat("\tDONE\n") + |