Previous changeset 9:e4e0254a3c0a (2017-11-29) Next changeset 11:063b2f99c266 (2018-09-19) |
Commit message:
planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 9f72e947d9c241d11221cad561f3525d27231857 |
modified:
README.rst abims_xcms_retcor.xml lib.r macros.xml static/images/xcms_retcor_workflow.png test-data/faahKO-single-class.xset.group.RData test-data/faahKO.xset.group.RData |
added:
lib-xcms3.x.x.r macros_xcms.xml xcms_retcor.r |
removed:
xcms.r |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd README.rst --- a/README.rst Wed Nov 29 09:46:41 2017 -0500 +++ b/README.rst Tue Sep 18 16:12:29 2018 -0400 |
b |
@@ -2,26 +2,42 @@ Changelog/News -------------- +**Version 3.0.0.0 - 08/03/2018** + +- UPGRADE: upgrade the xcms version from 1.46.0 to 3.0.0. So refactoring of a lot of underlying codes and methods. Some parameters may have been renamed. + +- NEW: a bunch of new options: Obiwarp.(centerSample, response, distFun, gapInit, gapExtend, factorDiag, factorGap, localAlignment, initPenalty) + +- IMPROVEMENT: the advanced options are now in sections. It will allow you to access to all the parameters and to know their default values. + +- CHANGE: removing of the TIC and BPC plots. You can new use the dedicated tool "xcms plot chromatogram" + + **Version 2.1.1 - 29/11/2017** - BUGFIX: To avoid issues with accented letter in the parentFile tag of the mzXML files, we changed a hidden mechanim to LC_ALL=C + **Version 2.1.0 - 03/02/2017** - IMPROVEMENT: xcms.retcor can deal with merged individual data + **Version 2.0.8 - 22/12/2016** - BUGFIX: when having only one group (i.e. one folder of raw data) the BPC and TIC pdf files do not contain any graph + **Version 2.0.7 - 06/07/2016** - UPGRADE: upgrate the xcms version from 1.44.0 to 1.46.0 + **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 |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd abims_xcms_retcor.xml --- a/abims_xcms_retcor.xml Wed Nov 29 09:46:41 2017 -0500 +++ b/abims_xcms_retcor.xml Tue Sep 18 16:12:29 2018 -0400 |
[ |
b'@@ -1,36 +1,41 @@\n-<tool id="abims_xcms_retcor" name="xcms.retcor" version="2.1.1">\n+<tool id="abims_xcms_retcor" name="xcms adjustRtime (retcor)" version="@WRAPPER_VERSION@.0">\n \n- <description>Retention Time Correction using retcor function from xcms R package </description>\n+ <description>Retention Time Correction</description>\n \n <macros>\n <import>macros.xml</import>\n+ <import>macros_xcms.xml</import>\n </macros>\n \n <expand macro="requirements"/>\n <expand macro="stdio"/>\n \n <command><![CDATA[\n- @COMMAND_XCMS_SCRIPT@\n+ @COMMAND_RSCRIPT@/xcms_retcor.r\n image \'$image\'\n- xfunction retcor\n-\n- xsetRdataOutput \'$xsetRData\'\n- ticspdf \'$ticsCorPdf\'\n- bicspdf \'$bpcsCorPdf\'\n- rplotspdf \'$rplotsPdf\'\n \n method $methods.method\n- #if $methods.method == "obiwarp":\n- profStep $methods.profStep\n+ #if $methods.method == "PeakGroups":\n+ minFraction $methods.minFraction\n+ extraPeaks $methods.extraPeaks\n+ smooth $methods.smooth_cond.smooth\n+ ## PeakGroupsSmoothLoess Advanced\n+ span $methods.smooth_cond.PeakGroupsSmoothLoessAdv.span\n+ family $methods.smooth_cond.PeakGroupsSmoothLoessAdv.family\n #else\n- smooth $methods.smooth\n- extra $methods.extra\n- missing $methods.missing\n- #if $methods.options.option == "show":\n- span $methods.options.span\n- family $methods.options.family\n- plottype $methods.options.plottype\n+ binSize $methods.binSize\n+ ## Advanced\n+ #if $methods.ObiwarpAdv.centerSample != "":\n+ centerSample $methods.ObiwarpAdv.centerSample\n #end if\n+ response $methods.ObiwarpAdv.response\n+ distFun $methods.ObiwarpAdv.distFunCond.distFun\n+ gapInit $methods.ObiwarpAdv.distFunCond.gapInit\n+ gapExtend $methods.ObiwarpAdv.distFunCond.gapExtend\n+ factorDiag $methods.ObiwarpAdv.factorDiag\n+ factorGap $methods.ObiwarpAdv.factorGap\n+ localAlignment $methods.ObiwarpAdv.localAlignmentCond.localAlignment\n+ initPenalty $methods.ObiwarpAdv.localAlignmentCond.initPenalty\n #end if\n \n @COMMAND_FILE_LOAD@\n@@ -39,46 +44,81 @@\n ]]></command>\n \n <inputs>\n- <param name="image" type="data" format="rdata.xcms.raw,rdata.xcms.group,rdata" label="xset RData file" help="output file from another function xcms (xcmsSet, retcor etc.)" />\n+ <param name="image" type="data" format="rdata.xcms.findchrompeaks,rdata.xcms.group,rdata" label="@INPUT_IMAGE_LABEL@" help="@INPUT_IMAGE_HELP@ from: findChromPeaks, groupChromPeaks" />\n <conditional name="methods">\n- <param name="method" type="select" label="Method to use for retention time correction" help="[method] See the help section below" >\n- <option value="obiwarp" >obiwarp</option>\n- <option value="peakgroups" selected="true">peakgroups</option>\n+ <param name="method" type="select" label="Method to use for retention time correction" help="See the help section below" >\n+ <option value="PeakGroups" selected="true">PeakGroups - retention time correction based on aligment of features (peak groups) present in most/all samples.</option>\n+ <option value="Obiwarp">Obiwarp - alignment based on the complete mz-rt data.</option>\n </param>\n- <when value="obiwarp">\n- <param name="profStep" type="float" value="1" label="Step size (in m/z)" help="[profStep] to use for profile generation from the raw data files" />\n+ <when value="PeakGroups">\n+ <param argument="minFraction" type="float" value="0.9" min="0" max="1" label="Minimum required fraction of samples in which peaks for the peak group were identified" help="(previous'..b'arp.sourceforge.net but supports alignment of multiple samples by aligning each against a _center_ sample. The alignment is performed directly on the \xe2\x80\x98profile-matrix\xe2\x80\x99 and can hence be performed independently of the peak detection or peak grouping.\n+ | See the Obiwarp_manual_\n \n- | Calculate retention time deviations for each sample using the obiwarp code at "http://obi-warp.sourceforge.net/". This function is able to align multiple samples by a center-star strategy. Ordered Bijective Interpolated Warping (OBI-Warp) aligns matrices along a single axis using Dynamic Time Warping (DTW) and a one-to-one (bijective) interpolated warp function. OBI-Warp harnesses the non-linear, comprehensive alignment power of DTW and builds on the discrete, non-bijective output of DTW to give natural interpolants that can be used across multiple datasets.\n- | For the original publication see :**Chromatographic Alignment of ESI-LC-MS Proteomics Data Sets by Ordered Bijective Interpo-lated Warping John T. Prince and, Edward M. Marcotte Analytical Chemistry 2006 78 (17), 6140-6152.**\n+.. _PeakGroups_manual: https://rdrr.io/bioc/xcms/man/adjustRtime-peakGroups.html#heading-2\n+.. _Obiwarp_manual: https://rdrr.io/bioc/xcms/man/adjustRtime-obiwarp.html\n \n+@HELP_XCMS_MANUAL@\n \n ------------\n Output files\n ------------\n \n-xset.group.retcor.TICs_corrected.pdf\n-\n- | "Total Ion Chromatograms" graph in pdf format,corrected after a retcor step.\n-\n-xset.group.retcor.BPCs_corrected.pdf\n-\n- | "Total Io"Base Peak Chromatograms" graph in pdf format,corrected after a retcor step\n-\n-xset.group.retcor.RData: rdata.xcms.retcor format\n-\n- | Rdata file that will be necessary in the **xcms.group** step of the workflow.\n-\n-\n-------\n-\n-.. class:: infomark\n-\n-The output file is an xset.retcor.RData file. You can continue your analysis using it in **xcms.fillPeaks** tool.\n-\n-\n----------------------------------------------------\n-\n----------------\n-Working example\n----------------\n+xset.groupChromPeaks.adjustRtime.RData: rdata.xcms.retcor format\n \n-Input files\n------------\n-\n- | RData file -> **xset.group.RData**\n-\n-Parameters\n-----------\n-\n- | Method: -> **peakgroups**\n- | smooth: -> **loess**\n- | extra: -> **1**\n- | missing -> **1**\n- | Advanced options: -> **show**\n- | span -> **0.2**\n- | family -> **gaussian**\n- | plottype -> **deviation**\n-\n-\n-Output files\n-------------\n-\n- | **1) xset.group.retcor.RData: RData file**\n-\n- | **2) Example of an xset.group.retcor.TICs_corrected pdf file**\n-\n-.. image:: xcms_retcor.png\n+ | Rdata file that will be necessary in the **xcms.groupChromPeaks** step of the workflow.\n \n \n ---------------------------------------------------\n@@ -319,22 +306,37 @@\n Changelog/News\n --------------\n \n+**Version 3.0.0.0 - 08/03/2018**\n+\n+- UPGRADE: upgrade the xcms version from 1.46.0 to 3.0.0. So refactoring of a lot of underlying codes and methods. Some parameters may have been renamed.\n+\n+- NEW: a bunch of new options: Obiwarp.(centerSample, response, distFun, gapInit, gapExtend, factorDiag, factorGap, localAlignment, initPenalty)\n+\n+- IMPROVEMENT: the advanced options are now in sections. It will allow you to access to all the parameters and to know their default values.\n+\n+- CHANGE: removing of the TIC and BPC plots. You can now use the dedicated tool "xcms plot chromatogram"\n+\n+\n **Version 2.1.1 - 29/11/2017**\n \n - BUGFIX: To avoid issues with accented letter in the parentFile tag of the mzXML files, we changed a hidden mechanim to LC_ALL=C\n \n+\n **Version 2.1.0 - 03/02/2017**\n \n - IMPROVEMENT: xcms.retcor can deal with merged individual data\n \n+\n **Version 2.0.8 - 22/12/2016**\n \n - BUGFIX: when having only one group (i.e. one folder of raw data) the BPC and TIC pdf files do not contain any graph\n \n+\n **Version 2.0.7 - 06/07/2016**\n \n - UPGRADE: upgrate the xcms version from 1.44.0 to 1.46.0\n \n+\n **Version 2.0.6 - 04/04/2016**\n \n - TEST: refactoring to pass planemo test using conda dependencies\n' |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd lib-xcms3.x.x.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-xcms3.x.x.r Tue Sep 18 16:12:29 2018 -0400 |
[ |
@@ -0,0 +1,152 @@ + + +#@TODO: remove this function as soon as we can use xcms 3.x.x from Bioconductor 3.7 +# https://github.com/sneumann/xcms/issues/250 +groupnamesW4M <- function(xdata, mzdec = 0, rtdec = 0) { + mzfmt <- paste("%.", mzdec, "f", sep = "") + rtfmt <- paste("%.", rtdec, "f", sep = "") + + gnames <- paste("M", sprintf(mzfmt, featureDefinitions(xdata)[,"mzmed"]), "T", + sprintf(rtfmt, featureDefinitions(xdata)[,"rtmed"]), sep = "") + + if (any(dup <- duplicated(gnames))) + for (dupname in unique(gnames[dup])) { + dupidx <- which(gnames == dupname) + gnames[dupidx] <- paste(gnames[dupidx], seq(along = dupidx), sep = "_") + } + + return (gnames) +} + +#@TODO: remove this function as soon as we can use xcms 3.x.x from Bioconductor 3.7 +# https://github.com/sneumann/xcms/issues/247 +.concatenate_XCMSnExp <- function(...) { + x <- list(...) + if (length(x) == 0) + return(NULL) + if (length(x) == 1) + return(x[[1]]) + ## Check that all are XCMSnExp objects. + if (!all(unlist(lapply(x, function(z) is(z, "XCMSnExp"))))) + stop("All passed objects should be 'XCMSnExp' objects") + new_x <- as(.concatenate_OnDiskMSnExp(...), "XCMSnExp") + ## If any of the XCMSnExp has alignment results or detected features drop + ## them! + x <- lapply(x, function(z) { + if (hasAdjustedRtime(z)) { + z <- dropAdjustedRtime(z) + warning("Adjusted retention times found, had to drop them.") + } + if (hasFeatures(z)) { + z <- dropFeatureDefinitions(z) + warning("Feature definitions found, had to drop them.") + } + z + }) + ## Combine peaks + fls <- lapply(x, fileNames) + startidx <- cumsum(lengths(fls)) + pks <- lapply(x, chromPeaks) + procH <- lapply(x, processHistory) + for (i in 2:length(fls)) { + pks[[i]][, "sample"] <- pks[[i]][, "sample"] + startidx[i - 1] + procH[[i]] <- lapply(procH[[i]], function(z) { + z@fileIndex <- as.integer(z@fileIndex + startidx[i - 1]) + z + }) + } + pks <- do.call(rbind, pks) + new_x@.processHistory <- unlist(procH) + chromPeaks(new_x) <- pks + if (validObject(new_x)) + new_x +} + +#@TODO: remove this function as soon as we can use xcms 3.x.x from Bioconductor 3.7 +# https://github.com/sneumann/xcms/issues/247 +.concatenate_OnDiskMSnExp <- function(...) { + x <- list(...) + if (length(x) == 0) + return(NULL) + if (length(x) == 1) + return(x[[1]]) + ## Check that all are XCMSnExp objects. + if (!all(unlist(lapply(x, function(z) is(z, "OnDiskMSnExp"))))) + stop("All passed objects should be 'OnDiskMSnExp' objects") + ## Check processingQueue + procQ <- lapply(x, function(z) z@spectraProcessingQueue) + new_procQ <- procQ[[1]] + is_ok <- unlist(lapply(procQ, function(z) + !is.character(all.equal(new_procQ, z)) + )) + if (any(!is_ok)) { + warning("Processing queues from the submitted objects differ! ", + "Dropping the processing queue.") + new_procQ <- list() + } + ## processingData + fls <- lapply(x, function(z) z@processingData@files) + startidx <- cumsum(lengths(fls)) + ## featureData + featd <- lapply(x, fData) + ## Have to update the file index and the spectrum names. + for (i in 2:length(featd)) { + featd[[i]]$fileIdx <- featd[[i]]$fileIdx + startidx[i - 1] + rownames(featd[[i]]) <- MSnbase:::formatFileSpectrumNames( + fileIds = featd[[i]]$fileIdx, + spectrumIds = featd[[i]]$spIdx, + nSpectra = nrow(featd[[i]]), + nFiles = length(unlist(fls)) + ) + } + featd <- do.call(rbind, featd) + featd$spectrum <- 1:nrow(featd) + ## experimentData + expdata <- lapply(x, function(z) { + ed <- z@experimentData + data.frame(instrumentManufacturer = ed@instrumentManufacturer, + instrumentModel = ed@instrumentModel, + ionSource = ed@ionSource, + analyser = ed@analyser, + detectorType = ed@detectorType, + stringsAsFactors = FALSE) + }) + expdata <- do.call(rbind, expdata) + expdata <- new("MIAPE", + instrumentManufacturer = expdata$instrumentManufacturer, + instrumentModel = expdata$instrumentModel, + ionSource = expdata$ionSource, + analyser = expdata$analyser, + detectorType = expdata$detectorType) + + ## protocolData + protodata <- lapply(x, function(z) z@protocolData) + if (any(unlist(lapply(protodata, nrow)) > 0)) + warning("Found non-empty protocol data, but merging protocol data is", + " currently not supported. Skipped.") + ## phenoData + pdata <- do.call(rbind, lapply(x, pData)) + res <- new( + "OnDiskMSnExp", + phenoData = new("NAnnotatedDataFrame", data = pdata), + featureData = new("AnnotatedDataFrame", featd), + processingData = new("MSnProcess", + processing = paste0("Concatenated [", date(), "]"), + files = unlist(fls), smoothed = NA), + experimentData = expdata, + spectraProcessingQueue = new_procQ) + if (validObject(res)) + res +} + +#@TODO: remove this function as soon as we can use xcms 3.x.x from Bioconductor 3.7 +# https://github.com/sneumann/xcms/issues/247 +c.XCMSnExp <- function(...) { + .concatenate_XCMSnExp(...) +} + +#@TODO: remove this function as soon as we can use xcms 3.x.x from Bioconductor 3.7 +# https://github.com/sneumann/xcms/issues/247 +c.MSnbase <- function(...) { + .concatenate_OnDiskMSnExp(...) +} |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd lib.r --- a/lib.r Wed Nov 29 09:46:41 2017 -0500 +++ b/lib.r Tue Sep 18 16:12:29 2018 -0400 |
[ |
b'@@ -1,319 +1,269 @@\n-#Authors ABiMS TEAM\n-#Lib.r for Galaxy Workflow4Metabolomics xcms tools\n-#\n-#version 2.4: lecorguille\n-# add getPeaklistW4M\n-#version 2.3: yguitton\n-# correction for empty PDF when only 1 class\n-#version 2.2\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-#version 2.1: yguitton\n-# Modifications made by Guitton Yann\n+#@authors ABiMS TEAM, Y. Guitton\n+# lib.r for Galaxy Workflow4Metabolomics xcms tools\n+\n+#@author G. Le Corguille\n+# solve an issue with batch if arguments are logical TRUE/FALSE\n+parseCommandArgs <- function(...) {\n+ args <- batch::parseCommandArgs(...)\n+ for (key in names(args)) {\n+ if (args[key] %in% c("TRUE","FALSE"))\n+ args[key] = as.logical(args[key])\n+ }\n+ return(args)\n+}\n \n+#@author G. Le Corguille\n+# This function will\n+# - load the packages\n+# - display the sessionInfo\n+loadAndDisplayPackages <- function(pkgs) {\n+ for(pkg in pkgs) suppressPackageStartupMessages( stopifnot( library(pkg, quietly=TRUE, logical.return=TRUE, character.only=TRUE)))\n+\n+ sessioninfo = sessionInfo()\n+ cat(sessioninfo$R.version$version.string,"\\n")\n+ cat("Main packages:\\n")\n+ for (pkg in names(sessioninfo$otherPkgs)) { cat(paste(pkg,packageVersion(pkg)),"\\t") }; cat("\\n")\n+ cat("Other loaded packages:\\n")\n+ for (pkg in names(sessioninfo$loadedOnly)) { cat(paste(pkg,packageVersion(pkg)),"\\t") }; cat("\\n")\n+}\n+\n+#@author G. Le Corguille\n+# This function merge several chromBPI or chromTIC into one.\n+mergeChrom <- function(chrom_merged, chrom) {\n+ if (is.null(chrom_merged)) return(NULL)\n+ chrom_merged@.Data <- cbind(chrom_merged@.Data, chrom@.Data)\n+ return(chrom_merged)\n+}\n \n #@author G. Le Corguille\n-#This function convert if it is required the Retention Time in minutes\n+# This function merge several xdata into one.\n+mergeXData <- function(args) {\n+ chromTIC <- NULL\n+ chromBPI <- NULL\n+ chromTIC_adjusted <- NULL\n+ chromBPI_adjusted <- NULL\n+ for(image in args$images) {\n+\n+ load(image)\n+ # Handle infiles\n+ if (!exists("singlefile")) singlefile <- NULL\n+ if (!exists("zipfile")) zipfile <- NULL\n+ rawFilePath <- getRawfilePathFromArguments(singlefile, zipfile, args)\n+ zipfile <- rawFilePath$zipfile\n+ singlefile <- rawFilePath$singlefile\n+ retrieveRawfileInTheWorkingDirectory(singlefile, zipfile)\n+\n+ if (exists("raw_data")) xdata <- raw_data\n+ if (!exists("xdata")) stop("\\n\\nERROR: The RData doesn\'t contain any object called \'xdata\'. This RData should have been created by an old version of XMCS 2.*")\n+\n+ cat(sampleNamesList$sampleNamesOrigin,"\\n")\n+\n+ if (!exists("xdata_merged")) {\n+ xdata_merged <- xdata\n+ singlefile_merged <- singlefile\n+ md5sumList_merged <- md5sumList\n+ sampleNamesList_merged <- sampleNamesList\n+ chromTIC_merged <- chromTIC\n+ chromBPI_merged <- chromBPI\n+ chromTIC_adjusted_merged <- chromTIC_adjusted\n+ chromBPI_adjusted_merged <- chromBPI_adjusted\n+ } else {\n+ if (is(xdata, "XCMSnExp")) xdata_merged <- c(xdata_merged,xdata)\n+ else if (is(xdata, "OnDiskMSnExp")) xdata_merged <- .concatenate_OnDiskMSnExp(xdata_merged,xdata)\n+ else stop("\\n\\nERROR: The RData either a OnDiskMSnExp object called raw_data or a XCMSnExp object called xdata")\n+\n+ singlefile_merged <- c(singlefile_merged,singlefile)\n+ md5sumList_merged$origin <- rbind(md5sumList_merged$origin,md5sumList$origin)\n+ sampleNamesList_merged$sampleNamesOrigin <- c(sampleNamesList_merged$sampleNamesOrigin,sampleNamesList$sampleNamesOrigin)\n+ sampleNamesList_merged$sampleNamesMakeNames <- c(sampleNamesList_merged$sampleNamesMakeNames,sampleNamesList$sampleNamesMakeNam'..b'ile[[singlefile_sampleName]] = singlefile_galaxyPath\n- }\n- }\n- for (argument in c("zipfile","zipfilePositive","zipfileNegative","singlefile_galaxyPath","singlefile_sampleName","singlefile_galaxyPathPositive","singlefile_sampleNamePositive","singlefile_galaxyPathNegative","singlefile_sampleNameNegative")) {\n- listArguments[[argument]]=NULL\n- }\n- return(list(zipfile=zipfile, singlefile=singlefile, listArguments=listArguments))\n+ }\n+ return(list(zipfile=zipfile, singlefile=singlefile))\n }\n \n-\n # This function retrieve the raw file in the working directory\n # - if zipfile: unzip the file with its directory tree\n # - if singlefiles: set symlink with the good filename\n+#@author Gildas Le Corguille lecorguille@sb-roscoff.fr\n retrieveRawfileInTheWorkingDirectory <- function(singlefile, zipfile) {\n if(!is.null(singlefile) && (length("singlefile")>0)) {\n for (singlefile_sampleName in names(singlefile)) {\n- singlefile_galaxyPath = singlefile[[singlefile_sampleName]]\n+ singlefile_galaxyPath <- singlefile[[singlefile_sampleName]]\n if(!file.exists(singlefile_galaxyPath)){\n- error_message=paste("Cannot access the sample:",singlefile_sampleName,"located:",singlefile_galaxyPath,". Please, contact your administrator ... if you have one!")\n+ error_message <- paste("Cannot access the sample:",singlefile_sampleName,"located:",singlefile_galaxyPath,". Please, contact your administrator ... if you have one!")\n print(error_message); stop(error_message)\n }\n \n- file.symlink(singlefile_galaxyPath,singlefile_sampleName)\n+ if (!suppressWarnings( try (file.link(singlefile_galaxyPath, singlefile_sampleName), silent=T)))\n+ file.copy(singlefile_galaxyPath, singlefile_sampleName)\n+\n }\n- directory = "."\n+ directory <- "."\n \n }\n- if(!is.null(zipfile) && (zipfile!="")) {\n+ if(!is.null(zipfile) && (zipfile != "")) {\n if(!file.exists(zipfile)){\n- error_message=paste("Cannot access the Zip file:",zipfile,". Please, contact your administrator ... if you have one!")\n+ error_message <- paste("Cannot access the Zip file:",zipfile,". Please, contact your administrator ... if you have one!")\n print(error_message)\n stop(error_message)\n }\n \n #list all file in the zip file\n- #zip_files=unzip(zipfile,list=T)[,"Name"]\n+ #zip_files <- unzip(zipfile,list=T)[,"Name"]\n \n #unzip\n suppressWarnings(unzip(zipfile, unzip="unzip"))\n \n #get the directory name\n- filesInZip=unzip(zipfile, list=T);\n- directories=unique(unlist(lapply(strsplit(filesInZip$Name,"/"), function(x) x[1])));\n- directories=directories[!(directories %in% c("__MACOSX")) & file.info(directories)$isdir]\n- directory = "."\n- if (length(directories) == 1) directory = directories\n+ suppressWarnings(filesInZip <- unzip(zipfile, list=T))\n+ directories <- unique(unlist(lapply(strsplit(filesInZip$Name,"/"), function(x) x[1])))\n+ directories <- directories[!(directories %in% c("__MACOSX")) & file.info(directories)$isdir]\n+ directory <- "."\n+ if (length(directories) == 1) directory <- directories\n \n cat("files_root_directory\\t",directory,"\\n")\n \n }\n return (directory)\n }\n+\n+\n+# This function retrieve a xset like object\n+#@author Gildas Le Corguille lecorguille@sb-roscoff.fr\n+getxcmsSetObject <- function(xobject) {\n+ # XCMS 1.x\n+ if (class(xobject) == "xcmsSet")\n+ return (xobject)\n+ # XCMS 3.x\n+ if (class(xobject) == "XCMSnExp") {\n+ # Get the legacy xcmsSet object\n+ suppressWarnings(xset <- as(xobject, \'xcmsSet\'))\n+ if (!is.null(xset@phenoData$sample_group))\n+ sampclass(xset) <- xset@phenoData$sample_group\n+ else\n+ sampclass(xset) <- "."\n+ return (xset)\n+ }\n+}\n' |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd macros.xml --- a/macros.xml Wed Nov 29 09:46:41 2017 -0500 +++ b/macros.xml Tue Sep 18 16:12:29 2018 -0400 |
[ |
@@ -1,141 +1,52 @@ <?xml version="1.0"?> <macros> - <xml name="requirements"> - <requirements> - <requirement type="package" version="0.4_1">r-snow</requirement> - <requirement type="package" version="1.46.0">bioconductor-xcms</requirement> - <requirement type="package" version="1.1_4">r-batch</requirement> - </requirements> - </xml> - <xml name="requirements_light"> - <requirements> - <requirement type="package" version="1.46.0">bioconductor-xcms</requirement> - </requirements> - </xml> <xml name="stdio"> <stdio> <exit_code range="1" level="fatal" /> </stdio> </xml> - <token name="@COMMAND_XCMS_SCRIPT@"> - LC_ALL=C Rscript $__tool_directory__/xcms.r - </token> + <!-- COMMAND --> + <token name="@COMMAND_RSCRIPT@">LC_ALL=C Rscript $__tool_directory__/</token> <token name="@COMMAND_LOG_EXIT@"> ; return=\$?; - mv log.txt '$log'; - cat '$log'; + cat 'log.txt'; sh -c "exit \$return" </token> - <!-- zipfile load for planemo test --> - - <token name="@COMMAND_FILE_LOAD@"> - #if $file_load_section.file_load_conditional.file_load_select == "yes": - #if $file_load_section.file_load_conditional.input[0].is_of_type("mzxml") or $file_load_section.file_load_conditional.input[0].is_of_type("mzml") or $file_load_section.file_load_conditional.input[0].is_of_type("mzdata") or $file_load_section.file_load_conditional.input[0].is_of_type("netcdf"): - #set singlefile_galaxyPath = ','.join( [ str( $single_file ) for $single_file in $file_load_section.file_load_conditional.input ] ) - #set singlefile_sampleName = ','.join( [ str( $single_file.name ) for $single_file in $file_load_section.file_load_conditional.input ] ) - - singlefile_galaxyPath '$singlefile_galaxyPath' singlefile_sampleName '$singlefile_sampleName' - #else - zipfile '$file_load_section.file_load_conditional.input' - #end if - #end if - </token> - - <xml name="input_file_load"> - <section name="file_load_section" title="Resubmit your raw dataset or your zip file"> - <conditional name="file_load_conditional"> - <param name="file_load_select" type="select" label="Resubmit your dataset or your zip file" help="Use only if you get a message which say that your original dataset or zip file have been deleted on the server." > - <option value="no" >no need</option> - <option value="yes" >yes</option> - </param> - <when value="no"> - </when> - <when value="yes"> - <param name="input" type="data" format="mzxml,mzml,mzdata,netcdf,no_unzip.zip,zip" multiple="true" label="File(s) from your history containing your chromatograms" help="Single file mode for the format: mzxml, mzml, mzdata and netcdf. Zip file mode for the format: no_unzip.zip, zip. See the help section below." /> - </when> - </conditional> - </section> + <!-- INPUT_VALIDATORS --> + <xml name="input_validator_range_integer"> + <validator type="regex" message="The format is 'min,max'" >[0-9]+ *, *[0-9]+</validator> </xml> - <xml name="test_file_load_zip"> - <section name="file_load_section"> - <conditional name="file_load_conditional"> - <param name="file_load_select" value="yes" /> - <param name="input" value="faahKO_reduce.zip" ftype="zip" /> - </conditional> - </section> + <xml name="input_validator_range_float"> + <validator type="regex" message="The format is 'min,max'" >[0-9]+\.?[0-9]* *, *[0-9]+\.?[0-9]*</validator> </xml> - <xml name="test_file_load_single"> - <section name="file_load_section"> - <conditional name="file_load_conditional"> - <param name="file_load_select" value="yes" /> - <param name="input" value="wt15.CDF,ko16.CDF,ko15.CDF,wt16.CDF" ftype="netcdf" /> - </conditional> - </section> + <xml name="input_validator_list_integer"> + <validator type="regex" message="The format is '1,2,4,6'" >[0-9, ]+</validator> </xml> - <token name="@COMMAND_PEAKLIST@"> - #if $peaklist.peaklistBool - variableMetadataOutput '$variableMetadata' - dataMatrixOutput '$dataMatrix' - convertRTMinute $peaklist.convertRTMinute - numDigitsMZ $peaklist.numDigitsMZ - numDigitsRT $peaklist.numDigitsRT - intval $peaklist.intval - #end if - </token> + + <token name="@INPUT_IMAGE_LABEL@">RData file</token> + <token name="@INPUT_IMAGE_HELP@">It contains a xcms3::XCMSnExp object (named xdata)</token> - <xml name="input_peaklist"> - <conditional name="peaklist"> - <param name="peaklistBool" type="boolean" label="Get a Peak List" /> - <when value="true"> - <param name="convertRTMinute" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Convert retention time (seconds) into minutes" help="Convert the columns rtmed, rtmin and rtmax into minutes"/> - <param name="numDigitsMZ" type="integer" value="4" label="Number of decimal places for mass values reported in ions' identifiers." help="A minimum of 4 decimal places is recommended. Useful to avoid duplicates within identifiers" /> - <param name="numDigitsRT" type="integer" value="0" label="Number of decimal places for retention time values reported in ions' identifiers." help="Useful to avoid duplicates within identifiers" /> - <param name="intval" type="select" label="Reported intensity values" help="[intval] See the help section below"> - <option value="into" selected="true">into</option> - <option value="maxo">maxo</option> - <option value="intb">intb</option> - </param> - </when> - <when value="false" /> - </conditional> - </xml> - <xml name="output_peaklist" token_function=""> - <data name="variableMetadata" format="tabular" label="${image.name[:-6]}.@FUNCTION@.variableMetadata.tsv"> - <filter>(peaklist['peaklistBool'])</filter> - </data> - <data name="dataMatrix" format="tabular" label="${image.name[:-6]}.@FUNCTION@.dataMatrix.tsv" > - <filter>(peaklist['peaklistBool'])</filter> - </data> - </xml> - - <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 + <!-- MISC --> + <token name="@HELP_AUTHORS_WRAPPERS@"> .. 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] +**Galaxy integration** ABiMS TEAM - SU/CNRS - Station biologique de Roscoff and Yann Guitton - LABERCA +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> + <xml name="citation_w4m"> <citation type="doi">10.1093/bioinformatics/btu813</citation> - </citations> </xml> </macros> |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd macros_xcms.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros_xcms.xml Tue Sep 18 16:12:29 2018 -0400 |
[ |
b'@@ -0,0 +1,244 @@\n+<?xml version="1.0"?>\n+<macros>\n+\n+ <token name="@WRAPPER_VERSION@">3.0.0</token>\n+ <xml name="requirements">\n+ <requirements>\n+ <requirement type="package" version="@WRAPPER_VERSION@">bioconductor-xcms</requirement>\n+ <requirement type="package" version="1.1_4">r-batch</requirement>\n+ <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement>\n+ <requirement type="package" version="6.0">unzip</requirement>\n+ <yield />\n+ </requirements>\n+ </xml>\n+\n+ <!-- FILE_LOAD for planemo test -->\n+ <token name="@COMMAND_FILE_LOAD@">\n+ #if $file_load_section.file_load_conditional.file_load_select == "yes":\n+ #if $file_load_section.file_load_conditional.input[0].is_of_type("mzxml") or $file_load_section.file_load_conditional.input[0].is_of_type("mzml") or $file_load_section.file_load_conditional.input[0].is_of_type("mzdata") or $file_load_section.file_load_conditional.input[0].is_of_type("netcdf"):\n+ #set singlefile_galaxyPath = \'|\'.join( [ str( $single_file ) for $single_file in $file_load_section.file_load_conditional.input ] )\n+ #set singlefile_sampleName = \'|\'.join( [ str( $single_file.name ) for $single_file in $file_load_section.file_load_conditional.input ] )\n+\n+ singlefile_galaxyPath \'$singlefile_galaxyPath\' singlefile_sampleName \'$singlefile_sampleName\'\n+ #else\n+ zipfile \'$file_load_section.file_load_conditional.input\'\n+ #end if\n+ #end if\n+ </token>\n+\n+ <xml name="input_file_load">\n+ <section name="file_load_section" title="Resubmit your raw dataset or your zip file">\n+ <conditional name="file_load_conditional">\n+ <param name="file_load_select" type="select" label="Resubmit your dataset or your zip file" help="Use only if you get a message saying that your original dataset or zip file have been deleted on the server." >\n+ <option value="no" >no need</option>\n+ <option value="yes" >yes</option>\n+ </param>\n+ <when value="no">\n+ </when>\n+ <when value="yes">\n+ <param name="input" type="data" format="mzxml,mzml,mzdata,netcdf,no_unzip.zip,zip" multiple="true" label="File(s) from your history containing your chromatograms" help="Single file mode for the format: mzxml, mzml, mzdata and netcdf. Zip file mode for the format: no_unzip.zip, zip. See the help section below." />\n+ </when>\n+ </conditional>\n+ </section>\n+ </xml>\n+\n+ <xml name="test_file_load_zip">\n+ <section name="file_load_section">\n+ <conditional name="file_load_conditional">\n+ <param name="file_load_select" value="yes" />\n+ <param name="input" value="faahKO_reduce.zip" ftype="zip" />\n+ </conditional>\n+ </section>\n+ </xml>\n+\n+ <xml name="test_file_load_zip_sacuri">\n+ <section name="file_load_section">\n+ <conditional name="file_load_conditional">\n+ <param name="file_load_select" value="yes" />\n+ <param name="input" value="sacuri_dir_root.zip" ftype="zip" />\n+ </conditional>\n+ </section>\n+ </xml>\n+\n+ <xml name="test_file_load_single">\n+ <section name="file_load_section">\n+ <conditional name="file_load_conditional">\n+ <param name="file_load_select" value="yes" />\n+ <param name="input" value="wt15.CDF,ko16.CDF,ko15.CDF,wt16.CDF" ftype="netcdf" />\n+ </conditional>\n+ </section>\n+ </xml>\n+\n+ <xml name="test_file_load_single_ko15">\n+ <section name="file_load_section">\n+ <conditional name="file_load_conditional">\n+ <param name="file_load_select" value="yes" />\n+ <param name="input" value="ko15.CDF" ftype="netcdf" />\n+'..b'the m/z value at the peak apex and the m/z values left and right of it</option>\n+ <option value="meanApex3">mean of the m/z value of the peak apex and the m/z values left and right of it</option>\n+ </param>\n+ <param argument="integrate" type="select" label="Integration method" >\n+ <option value="1">peak limits are found through descent on the mexican hat filtered data (more robust, but less exact)</option>\n+ <option value="2">peak limits based on real data (more accurate but prone to noise)</option>\n+ </param>\n+ <param argument="mzdiff" type="float" value="-0.001" label="Minimum difference in m/z for peaks with overlapping retention times" help="can be negative to allow overlap" />\n+ <param argument="fitgauss" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="fitgauss" help="whether or not a Gaussian should be fitted to each peak" />\n+ <param argument="noise" type="integer" value="0" label="Noise filter" help="allowing to set a minimum intensity required for centroids to be considered in the first analysis step (centroids with intensity lower than \xe2\x80\x98noise\xe2\x80\x99 are omitted from ROI detection)." />\n+ <param argument="verboseColumns" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="verbose Columns" help="whether additional peak meta data columns should be returned" />\n+ </xml>\n+\n+ <token name="@COMMAND_CENTWAVEADVROI@">\n+ #if $sectionROI.roiList:\n+ roiList \'$sectionROI.roiList\'\n+ firstBaselineCheck $sectionROI.firstBaselineCheck\n+ #if $sectionROI.roiScales != "":\n+ roiScales "c($sectionROI.roiScales)"\n+ #end if\n+ #end if\n+ </token>\n+\n+ <xml name="input_centwaveAdvROI" token_optional="true">\n+ <param argument="roiList" type="data" format="tabular" optional="@OPTIONAL@" label="List of regions-of-interest (ROI) representing detected mass traces" help="If ROIs are submitted the first analysis step is omitted and chromatographic peak detection is performed on the submitted ROIs. Each ROI is expected to have the following elements specified: \xe2\x80\x98scmin\xe2\x80\x99 (start scan index), \xe2\x80\x98scmax\xe2\x80\x99 (end scan index), \xe2\x80\x98mzmin\xe2\x80\x99 (minimum m/z), \xe2\x80\x98mzmax\xe2\x80\x99 (maximum m/z), \xe2\x80\x98length\xe2\x80\x99 (number of scans), \xe2\x80\x98intensity\xe2\x80\x99 (summed intensity)." />\n+ <param argument="firstBaselineCheck" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Is continuous data within regions of interest is checked to be above the first baseline." />\n+ <param argument="roiScales" type="text" value="" optional="true" label="Numeric vector defining the scale for each region of interest in \xe2\x80\x98roiList\xe2\x80\x99" help="Length equal to \xe2\x80\x98roiList\xe2\x80\x99 - Should be used for the centWave-wavelets (format 0.9,1,0.2)">\n+ <expand macro="input_validator_range_float"/>\n+ </param>\n+ </xml>\n+\n+ <!-- MISC -->\n+ <token name="@HELP_AUTHORS@">\n+.. class:: infomark\n+\n+**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\n+\n+@HELP_AUTHORS_WRAPPERS@\n+\n+---------------------------------------------------\n+\n+ </token>\n+\n+ <token name="@HELP_XCMS_MANUAL@">\n+\n+For details and explanations concerning all the parameters and workflow of xcms_ package, see its manual_ and this example_\n+\n+.. _xcms: https://bioconductor.org/packages/release/bioc/html/xcms.html\n+.. _manual: http://www.bioconductor.org/packages/release/bioc/manuals/xcms/man/xcms.pdf\n+.. _example: https://bioconductor.org/packages/release/bioc/vignettes/xcms/inst/doc/xcms.html\n+\n+ </token>\n+\n+ <xml name="citation">\n+ <citations>\n+ <citation type="doi">10.1021/ac051437y</citation>\n+ <expand macro="citation_w4m"/>\n+ </citations>\n+ </xml>\n+</macros>\n' |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd static/images/xcms_retcor_workflow.png |
b |
Binary file static/images/xcms_retcor_workflow.png has changed |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd test-data/faahKO-single-class.xset.group.RData |
b |
Binary file test-data/faahKO-single-class.xset.group.RData has changed |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd test-data/faahKO.xset.group.RData |
b |
Binary file test-data/faahKO.xset.group.RData has changed |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd xcms.r --- a/xcms.r Wed Nov 29 09:46:41 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
@@ -1,229 +0,0 @@ -#!/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 -} - -#saving the specific parameters -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 -} -variableMetadataOutput = "variableMetadata.tsv" -if (!is.null(listArguments[["variableMetadataOutput"]])){ - variableMetadataOutput = listArguments[["variableMetadataOutput"]]; listArguments[["variableMetadataOutput"]]=NULL -} -dataMatrixOutput = "dataMatrix.tsv" -if (!is.null(listArguments[["dataMatrixOutput"]])){ - dataMatrixOutput = listArguments[["dataMatrixOutput"]]; listArguments[["dataMatrixOutput"]]=NULL -} -if (!is.null(listArguments[["convertRTMinute"]])){ - convertRTMinute = listArguments[["convertRTMinute"]]; listArguments[["convertRTMinute"]]=NULL -} -if (!is.null(listArguments[["numDigitsMZ"]])){ - numDigitsMZ = listArguments[["numDigitsMZ"]]; listArguments[["numDigitsMZ"]]=NULL -} -if (!is.null(listArguments[["numDigitsRT"]])){ - numDigitsRT = listArguments[["numDigitsRT"]]; listArguments[["numDigitsRT"]]=NULL -} -if (!is.null(listArguments[["intval"]])){ - intval = listArguments[["intval"]]; listArguments[["intval"]]=NULL -} - -if (thefunction %in% c("xcmsSet","retcor")) { - ticspdf = listArguments[["ticspdf"]]; listArguments[["ticspdf"]]=NULL - bicspdf = listArguments[["bicspdf"]]; listArguments[["bicspdf"]]=NULL -} - - -if (thefunction %in% c("xcmsSet","retcor","fillPeaks")) { - if (!exists("singlefile")) singlefile=NULL - if (!exists("zipfile")) zipfile=NULL - rawFilePath = getRawfilePathFromArguments(singlefile, zipfile, listArguments) - zipfile = rawFilePath$zipfile - singlefile = rawFilePath$singlefile - listArguments = rawFilePath$listArguments - directory = retrieveRawfileInTheWorkingDirectory(singlefile, zipfile) - md5sumList=list("origin"=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" - -cat("\t\tCOMPUTE\n") -xset = do.call(thefunction, listArguments) - -# check if there are no peaks -if (nrow(peaks(xset)) == 0) { - stop("No peaks were detected. You should review your settings") -} - - -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") && !is.null(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") { - cat("\t\tGET TIC GRAPH\n") - sampleNamesList = getSampleMetadata(xcmsSet=xset, sampleMetadataOutput=sampleMetadataOutput) - getTICs(xcmsSet=xset, pdfname=ticspdf,rt="raw") - getBPCs(xcmsSet=xset,rt="raw",pdfname=bicspdf) -} else if (thefunction == "retcor") { - cat("\t\tGET TIC GRAPH\n") - getTICs(xcmsSet=xset, pdfname=ticspdf,rt="corrected") - getBPCs(xcmsSet=xset,rt="corrected",pdfname=bicspdf) -} - -if ((thefunction == "group" || thefunction == "fillPeaks") && exists("intval")) { - getPeaklistW4M(xset,intval,convertRTMinute,numDigitsMZ,numDigitsRT,variableMetadataOutput,dataMatrixOutput) -} - - -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","singlefile","listOFlistArguments","md5sumList","sampleNamesList") -save(list=objects2save[objects2save %in% ls()], file=xsetRdataOutput) - -cat("\n\n") - - -cat("\tDONE\n") |
b |
diff -r e4e0254a3c0a -r 8828cba9aedd xcms_retcor.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xcms_retcor.r Tue Sep 18 16:12:29 2018 -0400 |
[ |
@@ -0,0 +1,102 @@ +#!/usr/bin/env Rscript + +# ----- LOG FILE ----- +log_file=file("log.txt", open = "wt") +sink(log_file) +sink(log_file, type = "output") + + +# ----- PACKAGE ----- +cat("\tSESSION INFO\n") + +#Import the different functions +source_local <- function(fname){ argv <- commandArgs(trailingOnly=FALSE); base_dir <- dirname(substring(argv[grep("--file=", argv)], 8)); source(paste(base_dir, fname, sep="/")) } +source_local("lib.r") +source_local("lib-xcms3.x.x.r") + +pkgs <- c("xcms","batch","RColorBrewer") +loadAndDisplayPackages(pkgs) +cat("\n\n"); + + +# ----- ARGUMENTS ----- +cat("\tARGUMENTS INFO\n") +args = parseCommandArgs(evaluate=FALSE) #interpretation of arguments given in command line as an R list of objects +write.table(as.matrix(args), col.names=F, quote=F, sep='\t') + +cat("\n\n") + +# ----- PROCESSING INFILE ----- +cat("\tARGUMENTS PROCESSING INFO\n") + +#saving the specific parameters +method <- args$method + +cat("\n\n") + + +# ----- ARGUMENTS PROCESSING ----- +cat("\tINFILE PROCESSING INFO\n") + +#image is an .RData file necessary to use xset variable given by previous tools +load(args$image); args$image=NULL +if (!exists("xdata")) stop("\n\nERROR: The RData doesn't contain any object called 'xdata'. This RData should have been created by an old version of XMCS 2.*") + +# Handle infiles +if (!exists("singlefile")) singlefile <- NULL +if (!exists("zipfile")) zipfile <- NULL +rawFilePath <- getRawfilePathFromArguments(singlefile, zipfile, args) +zipfile <- rawFilePath$zipfile +singlefile <- rawFilePath$singlefile +directory <- retrieveRawfileInTheWorkingDirectory(singlefile, zipfile) + +cat("\n\n") + + +# ----- MAIN PROCESSING INFO ----- +cat("\tMAIN PROCESSING INFO\n") + + +cat("\t\tCOMPUTE\n") + +cat("\t\t\tAlignment/Retention Time correction\n") +# clear the arguement list to remove unexpected key/value as singlefile_galaxyPath or method ... +args <- args[names(args) %in% slotNames(do.call(paste0(method,"Param"), list()))] + +adjustRtimeParam <- do.call(paste0(method,"Param"), args) +print(adjustRtimeParam) +xdata <- adjustRtime(xdata, param=adjustRtimeParam) + +cat("\t\t\tCompute and Store TIC and BPI\n") +chromTIC_adjusted = chromatogram(xdata, aggregationFun = "sum") +chromBPI_adjusted = chromatogram(xdata, aggregationFun = "max") + +cat("\n\n") + + +# -- TIC -- +cat("\t\tDRAW GRAPHICS\n") +getPlotAdjustedRtime(xdata) + +cat("\n\n") + +# ----- EXPORT ----- + +cat("\tXCMSnExp OBJECT INFO\n") +print(xdata) +cat("\n\n") + +cat("\txcmsSet OBJECT INFO\n") +# Get the legacy xcmsSet object +xset <- getxcmsSetObject(xdata) +print(xset) +cat("\n\n") + +#saving R data in .Rdata file to save the variables used in the present tool +objects2save = c("xdata","zipfile","singlefile","md5sumList","sampleNamesList", "chromTIC", "chromBPI", "chromTIC_adjusted", "chromBPI_adjusted") +save(list=objects2save[objects2save %in% ls()], file="retcor.RData") + +cat("\n\n") + + +cat("\tDONE\n") |