Mercurial > repos > lecorguille > xcms_plot_chromatogram
changeset 10:dbd877060ac3 draft
"planemo upload for repository https://github.com/workflow4metabolomics/xcms commit f1caf2a3bf23cf319a75dd12c86402555dd02617"
author | workflow4metabolomics |
---|---|
date | Wed, 12 Feb 2020 08:30:06 -0500 |
parents | 271c9d5f0d10 |
children | 37d31fd64eb4 |
files | README.rst lib.r macros_xcms.xml test-data/faahKO-single.xset.merged.group.retcor.RData xcms_plot_chromatogram.r xcms_plot_chromatogram.xml |
diffstat | 6 files changed, 77 insertions(+), 158 deletions(-) [+] |
line wrap: on
line diff
--- a/README.rst Mon Jun 03 07:12:50 2019 -0400 +++ b/README.rst Wed Feb 12 08:30:06 2020 -0500 @@ -3,6 +3,10 @@ .. _News: https://bioconductor.org/packages/release/bioc/news/xcms/NEWS +**Version 3.6.1.0 - 03/09/2019** + +- UPGRADE: upgrade the xcms version from 3.4.4 to 3.6.1 (see XCMS News_) + **Version 3.4.4.0 - 08/02/2019** - UPGRADE: upgrade the xcms version from 3.0.0 to 3.4.4 (see XCMS News_)
--- a/lib.r Mon Jun 03 07:12:50 2019 -0400 +++ b/lib.r Wed Feb 12 08:30:06 2020 -0500 @@ -42,16 +42,16 @@ chromBPI <- NULL chromTIC_adjusted <- NULL chromBPI_adjusted <- NULL + md5sumList <- NULL for(image in args$images) { load(image) # Handle infiles if (!exists("singlefile")) singlefile <- NULL if (!exists("zipfile")) zipfile <- NULL - rawFilePath <- getRawfilePathFromArguments(singlefile, zipfile, args) + rawFilePath <- retrieveRawfileInTheWorkingDirectory(singlefile, zipfile, args) zipfile <- rawFilePath$zipfile singlefile <- rawFilePath$singlefile - retrieveRawfileInTheWorkingDirectory(singlefile, zipfile) if (exists("raw_data")) xdata <- raw_data 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.*") @@ -149,7 +149,7 @@ par(mfrow = c(3, 1), mar = c(4, 4, 1, 0.5)) - group_colors <- brewer.pal(3, "Set1")[1:length(unique(xdata$sample_group))] + group_colors <- brewer.pal(length(unique(xdata$sample_group)), "Set1") names(group_colors) <- unique(xdata$sample_group) xlim <- c(min(featureDefinitions(xdata)$rtmin), max(featureDefinitions(xdata)$rtmax)) @@ -170,7 +170,7 @@ pdf(file="raw_vs_adjusted_rt.pdf", width=16, height=12) # Color by group - group_colors <- brewer.pal(3, "Set1")[1:length(unique(xdata$sample_group))] + group_colors <- brewer.pal(length(unique(xdata$sample_group)), "Set1") if (length(group_colors) > 1) { names(group_colors) <- unique(xdata$sample_group) plotAdjustedRtime(xdata, col = group_colors[xdata$sample_group]) @@ -239,15 +239,15 @@ pdf(pdfname, width=16, height=10) # Color by group - group_colors <- brewer.pal(3, "Set1")[1:length(unique(xdata$sample_group))] + group_colors <- brewer.pal(length(unique(xdata$sample_group)), "Set1") if (length(group_colors) > 1) { names(group_colors) <- unique(xdata$sample_group) - plot(chrom, col = group_colors[chrom$sample_group], main=main) + plot(chrom, col = group_colors[as.factor(chrom$sample_group)], main=main, peakType = "none") legend("topright", legend=names(group_colors), col=group_colors, cex=0.8, lty=1) } # Color by sample - plot(chrom, col = rainbow(length(xdata@phenoData@data$sample_name)), main=main) + plot(chrom, col = rainbow(length(xdata@phenoData@data$sample_name)), main=main, peakType = "none") legend("topright", legend=xdata@phenoData@data$sample_name, col=rainbow(length(xdata@phenoData@data$sample_name)), cex=0.8, lty=1) dev.off() @@ -317,142 +317,43 @@ } -# This function check if xcms will found all the files -#@author Gildas Le Corguille lecorguille@sb-roscoff.fr ABiMS TEAM -checkFilesCompatibilityWithXcms <- function(directory) { - cat("Checking files filenames compatibilities with xmcs...\n") - # WHAT XCMS WILL FIND - filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]") - filepattern <- paste(paste("\\.", filepattern, "$", sep=""),collapse="|") - info <- file.info(directory) - listed <- list.files(directory[info$isdir], pattern=filepattern, recursive=TRUE, full.names=TRUE) - files <- c(directory[!info$isdir], listed) - files_abs <- file.path(getwd(), files) - exists <- file.exists(files_abs) - files[exists] <- files_abs[exists] - files[exists] <- sub("//","/",files[exists]) - - # WHAT IS ON THE FILESYSTEM - filesystem_filepaths <- system(paste0("find \"",getwd(),"/",directory,"\" -not -name '\\.*' -not -path '*conda-env*' -type f -name \"*\""), intern=T) - filesystem_filepaths <- filesystem_filepaths[grep(filepattern, filesystem_filepaths, perl=T)] - - # COMPARISON - if (!is.na(table(filesystem_filepaths %in% files)["FALSE"])) { - write("\n\nERROR: List of the files which will not be imported by xcmsSet",stderr()) - write(filesystem_filepaths[!(filesystem_filepaths %in% files)],stderr()) - stop("\n\nERROR: One or more of your files will not be import by xcmsSet. It may due to bad characters in their filenames.") - } -} - - -#This function list the compatible files within the directory as xcms did -#@author Gildas Le Corguille lecorguille@sb-roscoff.fr ABiMS TEAM -getMSFiles <- function (directory) { - filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]") - filepattern <- paste(paste("\\.", filepattern, "$", sep=""),collapse="|") - info <- file.info(directory) - listed <- list.files(directory[info$isdir], pattern=filepattern,recursive=TRUE, full.names=TRUE) - files <- c(directory[!info$isdir], listed) - exists <- file.exists(files) - files <- files[exists] - return(files) -} - -# This function check if XML contains special caracters. It also checks integrity and completness. -#@author Misharl Monsoor misharl.monsoor@sb-roscoff.fr ABiMS TEAM -checkXmlStructure <- function (directory) { - cat("Checking XML structure...\n") - - cmd <- paste0("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;") - capture <- system(cmd, intern=TRUE) - - if (length(capture)>0){ - #message=paste("The following mzXML or mzML file is incorrect, please check these files first:",capture) - write("\n\nERROR: The following mzXML or mzML file(s) are incorrect, please check these files first:", stderr()) - write(capture, stderr()) - stop("ERROR: xcmsSet cannot continue with incorrect mzXML or mzML files") - } - -} - - -# This function check if XML contain special characters -#@author Misharl Monsoor misharl.monsoor@sb-roscoff.fr ABiMS TEAM -deleteXmlBadCharacters<- function (directory) { - cat("Checking Non ASCII characters in the XML...\n") - - processed <- F - l <- system( paste0("find '",directory, "' -not -name '\\.*' -not -path '*conda-env*' -type f -iname '*.*ml*'"), intern=TRUE) - for (i in l){ - cmd <- paste("LC_ALL=C grep '[^ -~]' \"", i, "\"", sep="") - capture <- suppressWarnings(system(cmd, intern=TRUE)) - if (length(capture)>0){ - cmd <- paste("perl -i -pe 's/[^[:ascii:]]//g;'",i) - print( paste("WARNING: Non ASCII characters have been removed from the ",i,"file") ) - c <- system(cmd, intern=TRUE) - capture <- "" - processed <- T - } - } - if (processed) cat("\n\n") - return(processed) -} - - # This function will compute MD5 checksum to check the data integrity #@author Gildas Le Corguille lecorguille@sb-roscoff.fr -getMd5sum <- function (directory) { +getMd5sum <- function (files) { cat("Compute md5 checksum...\n") - # WHAT XCMS WILL FIND - filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]") - filepattern <- paste(paste("\\.", filepattern, "$", sep=""),collapse="|") - info <- file.info(directory) - listed <- list.files(directory[info$isdir], pattern=filepattern, recursive=TRUE, full.names=TRUE) - files <- c(directory[!info$isdir], listed) - exists <- file.exists(files) - files <- files[exists] - library(tools) - - #cat("\n\n") - return(as.matrix(md5sum(files))) } - -# This function get the raw file path from the arguments -#@author Gildas Le Corguille lecorguille@sb-roscoff.fr -getRawfilePathFromArguments <- function(singlefile, zipfile, args, prefix="") { - if (!(prefix %in% c("","Positive","Negative","MS1","MS2"))) stop("prefix must be either '', 'Positive', 'Negative', 'MS1' or 'MS2'") - - if (!is.null(args[[paste0("zipfile",prefix)]])) zipfile <- args[[paste0("zipfile",prefix)]] - - if (!is.null(args[[paste0("singlefile_galaxyPath",prefix)]])) { - singlefile_galaxyPaths <- args[[paste0("singlefile_galaxyPath",prefix)]] - singlefile_sampleNames <- args[[paste0("singlefile_sampleName",prefix)]] - } - if (exists("singlefile_galaxyPaths")){ - singlefile_galaxyPaths <- unlist(strsplit(singlefile_galaxyPaths,"\\|")) - singlefile_sampleNames <- unlist(strsplit(singlefile_sampleNames,"\\|")) - - singlefile <- NULL - for (singlefile_galaxyPath_i in seq(1:length(singlefile_galaxyPaths))) { - singlefile_galaxyPath <- singlefile_galaxyPaths[singlefile_galaxyPath_i] - singlefile_sampleName <- singlefile_sampleNames[singlefile_galaxyPath_i] - # In case, an url is used to import data within Galaxy - singlefile_sampleName <- tail(unlist(strsplit(singlefile_sampleName,"/")), n=1) - singlefile[[singlefile_sampleName]] <- singlefile_galaxyPath - } - } - return(list(zipfile=zipfile, singlefile=singlefile)) -} - # This function retrieve the raw file in the working directory # - if zipfile: unzip the file with its directory tree # - if singlefiles: set symlink with the good filename #@author Gildas Le Corguille lecorguille@sb-roscoff.fr -retrieveRawfileInTheWorkingDirectory <- function(singlefile, zipfile) { +retrieveRawfileInTheWorkingDirectory <- function(singlefile, zipfile, args, prefix="") { + + if (!(prefix %in% c("","Positive","Negative","MS1","MS2"))) stop("prefix must be either '', 'Positive', 'Negative', 'MS1' or 'MS2'") + + # single - if the file are passed in the command arguments -> refresh singlefile + if (!is.null(args[[paste0("singlefile_galaxyPath",prefix)]])) { + singlefile_galaxyPaths <- unlist(strsplit(args[[paste0("singlefile_galaxyPath",prefix)]],"\\|")) + singlefile_sampleNames <- unlist(strsplit(args[[paste0("singlefile_sampleName",prefix)]],"\\|")) + + singlefile <- NULL + for (singlefile_galaxyPath_i in seq(1:length(singlefile_galaxyPaths))) { + singlefile_galaxyPath <- singlefile_galaxyPaths[singlefile_galaxyPath_i] + singlefile_sampleName <- singlefile_sampleNames[singlefile_galaxyPath_i] + # In case, an url is used to import data within Galaxy + singlefile_sampleName <- tail(unlist(strsplit(singlefile_sampleName,"/")), n=1) + singlefile[[singlefile_sampleName]] <- singlefile_galaxyPath + } + } + # zipfile - if the file are passed in the command arguments -> refresh zipfile + if (!is.null(args[[paste0("zipfile",prefix)]])) + zipfile <- args[[paste0("zipfile",prefix)]] + + # single if(!is.null(singlefile) && (length("singlefile")>0)) { + files <- vector() for (singlefile_sampleName in names(singlefile)) { singlefile_galaxyPath <- singlefile[[singlefile_sampleName]] if(!file.exists(singlefile_galaxyPath)){ @@ -462,22 +363,16 @@ if (!suppressWarnings( try (file.link(singlefile_galaxyPath, singlefile_sampleName), silent=T))) file.copy(singlefile_galaxyPath, singlefile_sampleName) - + files <- c(files, singlefile_sampleName) } - directory <- "." - } + # zipfile if(!is.null(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 @@ -489,8 +384,17 @@ cat("files_root_directory\t",directory,"\n") + filepattern <- c("[Cc][Dd][Ff]", "[Nn][Cc]", "([Mm][Zz])?[Xx][Mm][Ll]","[Mm][Zz][Dd][Aa][Tt][Aa]", "[Mm][Zz][Mm][Ll]") + filepattern <- paste(paste("\\.", filepattern, "$", sep=""),collapse="|") + info <- file.info(directory) + listed <- list.files(directory[info$isdir], pattern=filepattern,recursive=TRUE, full.names=TRUE) + files <- c(directory[!info$isdir], listed) + exists <- file.exists(files) + files <- files[exists] + } - return (directory) + return(list(zipfile=zipfile, singlefile=singlefile, files=files)) + }
--- a/macros_xcms.xml Mon Jun 03 07:12:50 2019 -0400 +++ b/macros_xcms.xml Wed Feb 12 08:30:06 2020 -0500 @@ -1,11 +1,11 @@ <?xml version="1.0"?> <macros> - <token name="@WRAPPER_VERSION@">3.4.4</token> + <token name="@TOOL_VERSION@">3.6.1</token> <xml name="requirements"> <requirements> - <requirement type="package" version="@WRAPPER_VERSION@">bioconductor-xcms</requirement> - <requirement type="package" version="1.1_4">r-batch</requirement> + <requirement type="package" version="@TOOL_VERSION@">bioconductor-xcms</requirement> + <requirement type="package" version="1.1_5">r-batch</requirement> <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement> <requirement type="package" version="6.0">unzip</requirement> <yield /> @@ -69,11 +69,11 @@ </section> </xml> - <xml name="test_file_load_single_ko15"> + <xml name="test_file_load_single_file" token_filename=""> <section name="file_load_section"> <conditional name="file_load_conditional"> <param name="file_load_select" value="yes" /> - <param name="input" value="ko15.CDF" ftype="netcdf" /> + <param name="input" value="@FILENAME@.CDF" ftype="netcdf" /> </conditional> </section> </xml> @@ -178,7 +178,7 @@ </token> <xml name="input_centwave"> - <param argument="ppm" type="integer" value="25" label="Max tolerated ppm m/z deviation in consecutive scans in ppm" help="for the initial ROI definition." /> + <param argument="ppm" type="float" value="25" label="Max tolerated ppm m/z deviation in consecutive scans in ppm" help="for the initial ROI definition." /> <param argument="peakwidth" type="text" value="20,50" label="Min,Max peak width in seconds" help="with the expected approximate peak width in chromatographic space."> <expand macro="input_validator_range_float"/> </param> @@ -246,6 +246,17 @@ </token> + <token name="@HELP_XCMS_NEWVERSION_3440@"> +**Version 3.4.4.0 - 08/02/2019** + +- UPGRADE: upgrade the xcms version from 3.0.0 to 3.4.4 (see XCMS News_) + </token> + <token name="@HELP_XCMS_NEWVERSION_3610@"> +**Version 3.6.1+galaxy* - 03/09/2019** + +- UPGRADE: upgrade the xcms version from 3.4.4 to 3.6.1 (see XCMS News_) + </token> + <xml name="citation"> <citations> <citation type="doi">10.1021/ac051437y</citation>
--- a/xcms_plot_chromatogram.r Mon Jun 03 07:12:50 2019 -0400 +++ b/xcms_plot_chromatogram.r Wed Feb 12 08:30:06 2020 -0500 @@ -49,8 +49,8 @@ cat("\t\tDRAW GRAPHICS\n") register(SerialParam()) -if (!is.null(chromTIC) || is.null(chromTIC)) { cat("\t\t\tCompute TIC\n"); chromTIC <- chromatogram(xdata, aggregationFun = "sum") } -if (!is.null(chromBPI) || is.null(chromBPI)) { cat("\t\t\tCompute BPI\n"); chromBPI <- chromatogram(xdata, aggregationFun = "max") } +if (!exists("chromTIC") || is.null(chromTIC)) { cat("\t\t\tCompute TIC\n"); chromTIC <- chromatogram(xdata, aggregationFun = "sum") } +if (!exists("chromBPI") || is.null(chromBPI)) { cat("\t\t\tCompute BPI\n"); chromBPI <- chromatogram(xdata, aggregationFun = "max") } if (!is.null(chromTIC_adjusted)) chromTIC <- chromTIC_adjusted if (!is.null(chromBPI_adjusted)) chromBPI <- chromBPI_adjusted @@ -66,11 +66,12 @@ print(xdata) cat("\n\n") -cat("\txcmsSet OBJECT INFO\n") +# 2020-01-17 - disable because xcms 3.4.4 raises an error with xdata build with xcms 3.6.1 +#cat("\txcmsSet OBJECT INFO\n") # Get the legacy xcmsSet object -xset <- getxcmsSetObject(xdata) -print(xset) -cat("\n\n") +#xset <- getxcmsSetObject(xdata) +#print(xset) +#cat("\n\n") cat("\tDONE\n")
--- a/xcms_plot_chromatogram.xml Mon Jun 03 07:12:50 2019 -0400 +++ b/xcms_plot_chromatogram.xml Wed Feb 12 08:30:06 2020 -0500 @@ -1,11 +1,10 @@ -<tool id="xcms_plot_chromatogram" name="xcms plot chromatogram" version="@WRAPPER_VERSION@.0"> +<tool id="xcms_plot_chromatogram" name="xcms plot chromatogram" version="@TOOL_VERSION@.0"> <description>Plots base peak intensity chromatogram (BPI) and total ion current chromatogram (TIC) from MSnbase or xcms experiment(s)</description> <macros> <import>macros.xml</import> <import>macros_xcms.xml</import> </macros> - <expand macro="requirements"/> <expand macro="stdio"/> @@ -38,8 +37,8 @@ <param name="images" value="faahKO-single.xset.merged.group.retcor.RData" ftype="rdata"/> <expand macro="test_file_load_single"/> <param name="sampleMetadata" value="sampleMetadata.tab" ftype="tabular"/> - <output name="ticsPdf" value="TICs.pdf" ftype="pdf" compare="sim_size" delta="600" /> - <output name="bpisPdf" value="BPIs.pdf" ftype="pdf" compare="sim_size" delta="600" /> + <output name="ticsPdf" value="TICs.pdf" ftype="pdf" compare="sim_size" delta="5000" /> + <output name="bpisPdf" value="BPIs.pdf" ftype="pdf" compare="sim_size" delta="5000" /> </test> <!-- DISABLE FOR TRAVIS <test> @@ -105,9 +104,9 @@ .. _News: https://bioconductor.org/packages/release/bioc/news/xcms/NEWS -**Version 3.4.4.0 - 08/02/2019** +@HELP_XCMS_NEWVERSION_3610@ -- UPGRADE: upgrade the xcms version from 3.0.0 to 3.4.4 (see XCMS News_) +@HELP_XCMS_NEWVERSION_3440@ **Version 3.0.0.0 - 07/03/2018**