changeset 8:198b035d4848 draft

planemo upload commit 301d42e88026afdac618f4ec56fc6cbe19e3e419
author lecorguille
date Fri, 07 Apr 2017 07:42:38 -0400
parents c23aa0cbc550
children a3024f51082d
files CAMERA.r README.rst abims_CAMERA_combinexsAnnos.xml lib.r macros.xml static/images/combinexsannos_workflow.png static/images/combinexsannos_workflow_zoom.png test-data/faahOK.xset.group.retcor.group.fillPeaks.annotate.positive.combinexsAnnos.variableMetadata.tsv tool_dependencies.xml
diffstat 9 files changed, 611 insertions(+), 388 deletions(-) [+]
line wrap: on
line diff
--- a/CAMERA.r	Wed Feb 01 12:24:21 2017 -0500
+++ b/CAMERA.r	Fri Apr 07 07:42:38 2017 -0400
@@ -11,12 +11,12 @@
 #pkgs=c("xcms","batch")
 pkgs=c("parallel","BiocGenerics", "Biobase", "Rcpp", "mzR", "xcms","snow","igraph","CAMERA","multtest","batch")
 for(p in pkgs) {
-  suppressPackageStartupMessages(suppressWarnings(library(p, quietly=TRUE, logical.return=TRUE, character.only=TRUE)))
-  cat(p,"\t",as.character(packageVersion(p)),"\n",sep="")
+    suppressPackageStartupMessages(suppressWarnings(library(p, quietly=TRUE, logical.return=TRUE, character.only=TRUE)))
+    cat(p,"\t",as.character(packageVersion(p)),"\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"); 
+cat("\n\n");
 
 
 
@@ -34,25 +34,25 @@
 
 #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
+    load(listArguments[["image"]]); listArguments[["image"]]=NULL
 }
 
 if (listArguments[["xfunction"]] %in% c("combinexsAnnos")) {
-  load(listArguments[["image_pos"]])
-  xaP=xa
-  listOFlistArgumentsP=listOFlistArguments
-  if (exists("xsAnnotate_object")) xaP=xsAnnotate_object
-  
-  diffrepP=NULL
-  if (exists("diffrep")) diffrepP=diffrep
+    load(listArguments[["image_pos"]])
+    xaP=xa
+    listOFlistArgumentsP=listOFlistArguments
+    if (exists("xsAnnotate_object")) xaP=xsAnnotate_object
+
+    diffrepP=NULL
+    if (exists("diffrep")) diffrepP=diffrep
 
-  load(listArguments[["image_neg"]])
-  xaN=xa
-  listOFlistArgumentsN=listOFlistArguments
-  if (exists("xsAnnotate_object")) xaN=xsAnnotate_object
+    load(listArguments[["image_neg"]])
+    xaN=xa
+    listOFlistArgumentsN=listOFlistArguments
+    if (exists("xsAnnotate_object")) xaN=xsAnnotate_object
 
-  diffrepN=NULL
-  if (exists("diffrep")) diffrepN=diffrep
+    diffrepN=NULL
+    if (exists("diffrep")) diffrepN=diffrep
 }
 
 
@@ -73,67 +73,42 @@
 
 xsetRdataOutput = paste(thefunction,"RData",sep=".")
 if (!is.null(listArguments[["xsetRdataOutput"]])){
-  xsetRdataOutput = listArguments[["xsetRdataOutput"]]; listArguments[["xsetRdataOutput"]]=NULL
+    xsetRdataOutput = listArguments[["xsetRdataOutput"]]; listArguments[["xsetRdataOutput"]]=NULL
 }
 
 rplotspdf = "Rplots.pdf"
 if (!is.null(listArguments[["rplotspdf"]])){
-  rplotspdf = listArguments[["rplotspdf"]]; listArguments[["rplotspdf"]]=NULL
+    rplotspdf = listArguments[["rplotspdf"]]; listArguments[["rplotspdf"]]=NULL
 }
 
 dataMatrixOutput = "dataMatrix.tsv"
 if (!is.null(listArguments[["dataMatrixOutput"]])){
-  dataMatrixOutput = listArguments[["dataMatrixOutput"]]; listArguments[["dataMatrixOutput"]]=NULL
+    dataMatrixOutput = listArguments[["dataMatrixOutput"]]; listArguments[["dataMatrixOutput"]]=NULL
 }
 
 variableMetadataOutput = "variableMetadata.tsv"
 if (!is.null(listArguments[["variableMetadataOutput"]])){
-  variableMetadataOutput = listArguments[["variableMetadataOutput"]]; listArguments[["variableMetadataOutput"]]=NULL
-}
-
-if (!is.null(listArguments[["new_file_path"]])){
-  new_file_path = listArguments[["new_file_path"]]; listArguments[["new_file_path"]]=NULL
+    variableMetadataOutput = listArguments[["variableMetadataOutput"]]; listArguments[["variableMetadataOutput"]]=NULL
 }
 
 #Import the different functions
 source_local("lib.r")
 
-#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
-}
-
 # We unzip automatically the chromatograms from the zip files.
 if (thefunction %in% c("annotatediff"))  {
-  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)
-    }
-
-    #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")
-  }
+    if (!exists("zipfile")) zipfile=NULL
+    if (!exists("singlefile")) singlefile=NULL
+    rawFilePath = getRawfilePathFromArguments(singlefile, zipfile, listArguments)
+    zipfile = rawFilePath$zipfile
+    singlefile = rawFilePath$singlefile
+    listArguments = rawFilePath$listArguments
+    directory = retrieveRawfileInTheWorkingDirectory(singlefile, zipfile)
 }
 
 
-
 #addition of xset object to the list of arguments in the first position
 if (exists("xset") != 0){
-  listArguments=append(list(xset), listArguments)
+    listArguments=append(list(xset), listArguments)
 }
 
 cat("\n\n")
@@ -149,25 +124,32 @@
 
 
 if (thefunction %in% c("annotatediff")) {
-  results_list=annotatediff(xset=xset,listArguments=listArguments,variableMetadataOutput=variableMetadataOutput,dataMatrixOutput=dataMatrixOutput,new_file_path=new_file_path)
-  xa=results_list[["xa"]]
-  diffrep=results_list[["diffrep"]]
-  variableMetadata=results_list[["variableMetadata"]]
+    results_list=annotatediff(xset=xset,listArguments=listArguments,variableMetadataOutput=variableMetadataOutput,dataMatrixOutput=dataMatrixOutput)
+    xa=results_list[["xa"]]
+    diffrep=results_list[["diffrep"]]
+    variableMetadata=results_list[["variableMetadata"]]
 
-  cat("\n\n")
-  cat("\tXSET OBJECT INFO\n")
-  print(xa)
+    cat("\n\n")
+    cat("\tXSET OBJECT INFO\n")
+    print(xa)
 }
 
 if (thefunction %in% c("combinexsAnnos")) {
-  cAnnot=combinexsAnnos_function(xaP=xaP,xaN=xaN,listOFlistArgumentsP=listOFlistArgumentsP,listOFlistArgumentsN=listOFlistArgumentsN,diffrepP=diffrepP,diffrepN=diffrepN,convert_param=listArguments[["convert_param"]],pos=listArguments[["pos"]],tol=listArguments[["tol"]],ruleset=listArguments[["ruleset"]],keep_meta=listArguments[["keep_meta"]],variableMetadataOutput=variableMetadataOutput)
+    cAnnot=combinexsAnnos_function(
+        xaP=xaP,xaN=xaN,
+        listOFlistArgumentsP=listOFlistArgumentsP,listOFlistArgumentsN=listOFlistArgumentsN,
+        diffrepP=diffrepP,diffrepN=diffrepN,
+        pos=listArguments[["pos"]],tol=listArguments[["tol"]],ruleset=listArguments[["ruleset"]],keep_meta=listArguments[["keep_meta"]],
+        convertRTMinute=listArguments[["convertRTMinute"]], numDigitsMZ=listArguments[["numDigitsMZ"]], numDigitsRT=listArguments[["numDigitsRT"]],
+        variableMetadataOutput=variableMetadataOutput
+    )
 }
 
 dev.off()
 
 
 #saving R data in .Rdata file to save the variables used in the present tool
-objects2save = c("xa","variableMetadata","diffrep","cAnnot","listOFlistArguments","zipfile")
+objects2save = c("xa","variableMetadata","diffrep","cAnnot","listOFlistArguments","zipfile","singlefile")
 save(list=objects2save[objects2save %in% ls()], file=xsetRdataOutput)
 
 cat("\n\n")
--- a/README.rst	Wed Feb 01 12:24:21 2017 -0500
+++ b/README.rst	Fri Apr 07 07:42:38 2017 -0400
@@ -2,6 +2,16 @@
 Changelog/News
 --------------
 
+**Version 2.0.6 - 10/02/2017**
+
+- IMPROVEMENT: Synchronize the variableMetadata export option with the other tools (xcms.group, xcms.fillpeaks, camera.annotate)
+
+
+**Version 2.0.5 - 22/12/2016**
+
+- IMPROVEMENT: add the possibility to add a personal Matrix of matching rules (ruleset)
+
+
 **Version 2.0.4 - 21/04/2016**
 
 - UPGRADE: upgrate the CAMERA version from 1.22.0 to 1.26.0
--- a/abims_CAMERA_combinexsAnnos.xml	Wed Feb 01 12:24:21 2017 -0500
+++ b/abims_CAMERA_combinexsAnnos.xml	Fri Apr 07 07:42:38 2017 -0400
@@ -1,7 +1,7 @@
-<tool id="abims_CAMERA_combinexsAnnos" name="CAMERA.combinexsAnnos" version="2.0.4">
+<tool id="abims_CAMERA_combinexsAnnos" name="CAMERA.combinexsAnnos" version="2.0.6">
 
     <description>Wrapper function for the combinexsAnnos CAMERA function. Returns a dataframe with recalculated annotations.</description>
-    
+
     <macros>
         <import>macros.xml</import>
     </macros>
@@ -11,20 +11,24 @@
 
     <command><![CDATA[
         @COMMAND_CAMERA_SCRIPT@
-        xfunction combinexsAnnos 
-        image_pos $image_pos 
-        image_neg $image_neg
+        xfunction combinexsAnnos
+        image_pos '$image_pos'
+        image_neg '$image_neg'
+
+        variableMetadataOutput '$variableMetadata'
 
-        variableMetadataOutput $variableMetadata
+        pos $pos tol $tol ruleset $ruleset keep_meta $keep_meta
 
-        pos $pos tol $tol ruleset $ruleset convert_param $convert_param keep_meta $keep_meta
-        
+        convertRTMinute $export.convertRTMinute
+        numDigitsMZ $export.numDigitsMZ
+        numDigitsRT $export.numDigitsRT
+
     ]]></command>
 
     <inputs>
         <param name="image_pos" type="data" label="Positive RData ion mode" format="rdata.camera.positive,rdata" help="output file from CAMERA.annotate using a positive polarity mode" />
         <param name="image_neg" type="data" label="Negative RData ion mode" format="rdata.camera.negative,rdata" help="output file from CAMERA.annotate using a positive negative mode" />
-    
+
         <param name="pos" type="select" label="Returned peaklist polarity mode">
             <option value="TRUE" selected="true">positive</option>
             <option value="FALSE" >negative</option>
@@ -32,9 +36,13 @@
 
         <param name="tol" type="integer" value="2" label="Retention time window in seconds" help="[pos] As first step it searches for pseudospectra from the positive and the negative sample within a retention time window" />
         <param name="ruleset" type="text" value="1,1" label="Matrix of matching rules" help="[ruleset] Matrix of matching rules. By default, the matrix (1,1) would create the M+H/M-H rule, since the first rule of xsa.pos@ruleset and xsa.neg@ruleset is M+H respectively M-H. Only rules with identical charge can be combined!" />
-        <param name="convert_param" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Convert retention time (seconds) rtmed, rtmin and rtmax into minutes"/>
         <param name="keep_meta" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Keep only the metabolites which match a difference "/>
 
+        <section name="export" title="Export options">
+            <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" />
+        </section>
     </inputs>
 
     <outputs>
@@ -52,13 +60,18 @@
             <param name="pos" value="TRUE"/>
             <param name="tol" value="2"/>
             <param name="ruleset" value="1,1"/>
+            <section name="export">
+                <param name="convertRTMinute" value="True"/>
+                <param name="numDigitsMZ" value="4" />
+                <param name="numDigitsRT" value="1" />
+            </section>
             <output name="variableMetadata" file="faahOK.xset.group.retcor.group.fillPeaks.annotate.positive.combinexsAnnos.variableMetadata.tsv" />
         </test>
     </tests>
-    
-    
+
+
     <help><![CDATA[
-        
+
 @HELP_AUTHORS@
 
 =======================
@@ -100,11 +113,11 @@
 ========================= ======================= ===================== ==========
 Name                      Output file             Format                Parameter
 ========================= ======================= ===================== ==========
-xcms.annotatediffreport   xset.annotate_POS.RData rdata.camera.positive RData file        			
+xcms.annotatediffreport   xset.annotate_POS.RData rdata.camera.positive RData file
 ------------------------- ----------------------- --------------------- ----------
 xcms.annotatediffreport   xset.annotate_NEG.RData rdata.camera.positive RData file
 ========================= ======================= ===================== ==========
-  
+
 **Downstream tools**
 
 +---------------------------+-----------------------------------------+--------+
@@ -128,6 +141,10 @@
     | Multivariate PCA, PLS and OPLS
 
 
+**Place of CAMERA.combinexsannot after XCMS part of the metabolomic workflow**
+
+.. image:: combinexsannos_workflow_zoom.png
+
 **General schema of the metabolomic workflow**
 
 .. image:: combinexsannos_workflow.png
@@ -153,12 +170,12 @@
 
     | A tabular file which is similar to the diffreport result , within additional columns containing the annotation results.
     | For each metabolite (row) :
-    | the value of the intensity in each sample, fold, tstat, pvalue, anova, mzmed, mzmin, mzmax, rtmed, rtmin, rtmax, npeaks, isotopes, adduct, pcgroup and neg (or pos). Mode 
+    | the value of the intensity in each sample, fold, tstat, pvalue, anova, mzmed, mzmin, mzmax, rtmed, rtmin, rtmax, npeaks, isotopes, adduct, pcgroup and neg (or pos). Mode
 
 xset.combinexsAnnos.Rdata
 
     | Rdata file, that be used outside Galaxy in R.
-    
+
 
 ---------------------------------------------------
 
@@ -192,6 +209,15 @@
 Changelog/News
 --------------
 
+**Version 2.0.6 - 10/02/2017**
+
+- IMPROVEMENT: Synchronize the variableMetadata export option with the other tools (xcms.group, xcms.fillpeaks, camera.annotate)
+
+
+**Version 2.0.5 - 22/12/2016**
+
+- IMPROVEMENT: add the possibility to add a personal Matrix of matching rules (ruleset)
+
 **Version 2.0.4 - 21/04/2016**
 
 - UPGRADE: upgrate the CAMERA version from 1.22.0 to 1.26.0
@@ -213,7 +239,7 @@
 
 **Version 2.0.0 - 09/06/2015**
 
-- NEW: combinexsAnnos Check CAMERA ion species annotation due to matching with opposite ion mode 
+- NEW: combinexsAnnos Check CAMERA ion species annotation due to matching with opposite ion mode
 
 
     ]]></help>
@@ -222,5 +248,3 @@
 
 
 </tool>
- 
- 
--- a/lib.r	Wed Feb 01 12:24:21 2017 -0500
+++ b/lib.r	Fri Apr 07 07:42:38 2017 -0400
@@ -1,188 +1,304 @@
-# lib.r version="2.2.1"
+# lib.r
+
+#@author G. Le Corguille
+#The function create a pdf from the different png generated by diffreport
+diffreport_png2pdf <- function(filebase) {
+    dir.create("pdf")
 
-#The function create a pdf from the different png generated by diffreport
-diffreport_png2pdf <- function(filebase, new_file_path) {
+    pdfEicOutput = paste0("pdf/",filebase,"-eic_pdf.pdf")
+    pdfBoxOutput = paste0("pdf/",filebase,"-box_pdf.pdf")
+
+    system(paste0("gm convert ",filebase,"_eic/*.png ",pdfEicOutput))
+    system(paste0("gm convert ",filebase,"_box/*.png ",pdfBoxOutput))
+
+}
 
-  pdfEicOutput = paste(new_file_path,filebase,"-eic_visible_pdf",sep="")
-  pdfBoxOutput = paste(new_file_path,filebase,"-box_visible_pdf",sep="")
+#@author G. Le Corguille
+#This function convert if it is required the Retention Time in minutes
+RTSecondToMinute <- function(variableMetadata, convertRTMinute) {
+    if (convertRTMinute){
+        #converting the retention times (seconds) into minutes
+        print("converting the retention times into minutes in the variableMetadata")
+        variableMetadata[,"rt"]=variableMetadata[,"rt"]/60
+        variableMetadata[,"rtmin"]=variableMetadata[,"rtmin"]/60
+        variableMetadata[,"rtmax"]=variableMetadata[,"rtmax"]/60
+    }
+    return (variableMetadata)
+}
 
-  system(paste("gm convert ",filebase,"_eic/*.png ",filebase,"_eic.pdf",sep=""))
-  system(paste("gm convert ",filebase,"_box/*.png ",filebase,"_box.pdf",sep=""))
-
-  file.copy(paste(filebase,"_eic.pdf",sep=""), pdfEicOutput)
-  file.copy(paste(filebase,"_box.pdf",sep=""), pdfBoxOutput)
+#@author G. Le Corguille
+#This function format ions identifiers
+formatIonIdentifiers <- function(variableMetadata, numDigitsRT=0, numDigitsMZ=0) {
+    splitDeco = strsplit(as.character(variableMetadata$name),"_")
+    idsDeco = sapply(splitDeco, function(x) { deco=unlist(x)[2]; if (is.na(deco)) return ("") else return(paste0("_",deco)) })
+    namecustom = make.unique(paste0("M",round(variableMetadata[,"mz"],numDigitsMZ),"T",round(variableMetadata[,"rt"],numDigitsRT),idsDeco))
+    variableMetadata=cbind(name=variableMetadata$name, namecustom=namecustom, variableMetadata[,!(colnames(variableMetadata) %in% c("name"))])
+    return(variableMetadata)
 }
 
 #The function annotateDiffreport without the corr function which bugs
-annotatediff <- function(xset=xset, listArguments=listArguments, variableMetadataOutput="variableMetadata.tsv", dataMatrixOutput="dataMatrix.tsv",new_file_path=NULL) {
-  # Resolve the bug with x11, with the function png
-  options(bitmapType='cairo')
-
-  #Check if the fillpeaks step has been done previously, if it hasn't, there is an error message and the execution is stopped.
-  res=try(is.null(xset@filled))
-
-  # ------ annot -------
-  listArguments[["calcCiS"]]=as.logical(listArguments[["calcCiS"]])
-  listArguments[["calcIso"]]=as.logical(listArguments[["calcIso"]])
-  listArguments[["calcCaS"]]=as.logical(listArguments[["calcCaS"]])
+annotatediff <- function(xset=xset, listArguments=listArguments, variableMetadataOutput="variableMetadata.tsv", dataMatrixOutput="dataMatrix.tsv") {
+    # Resolve the bug with x11, with the function png
+    options(bitmapType='cairo')
 
-  #graphMethod parameter bugs where this parameter is not defined in quick=true
-  if(listArguments[["quick"]]==TRUE) {
-    xa= annotate(object=xset,nSlaves=1,sigma=listArguments[["sigma"]],perfwhm=listArguments[["perfwhm"]],maxcharge=listArguments[["maxcharge"]],maxiso=listArguments[["maxiso"]],minfrac=listArguments[["minfrac"]],ppm=listArguments[["ppm"]],mzabs=listArguments[["mzabs"]],quick=listArguments[["quick"]],polarity=listArguments[["polarity"]],max_peaks=listArguments[["max_peaks"]],intval=listArguments[["intval"]])
-  }
-  else {
-    xa= annotate(object=xset,nSlaves=1,sigma=listArguments[["sigma"]],perfwhm=listArguments[["perfwhm"]],graphMethod=listArguments[["graphMethod"]],cor_eic_th=listArguments[["cor_eic_th"]],pval=listArguments[["pval"]],calcCiS=listArguments[["calcCiS"]],calcIso=listArguments[["calcIso"]],calcCaS=listArguments[["calcCaS"]],multiplier=listArguments[["multiplier"]],maxcharge=listArguments[["maxcharge"]],maxiso=listArguments[["maxiso"]],minfrac=listArguments[["minfrac"]],ppm=listArguments[["ppm"]],mzabs=listArguments[["mzabs"]],quick=listArguments[["quick"]],polarity=listArguments[["polarity"]],max_peaks=listArguments[["max_peaks"]],intval=listArguments[["intval"]])
-
-  }  
-  peakList=getPeaklist(xa,intval=listArguments[["intval"]])
-  peakList=cbind(groupnames(xa@xcmsSet),peakList); colnames(peakList)[1] = c("name");
-
-
-  # --- Multi condition : diffreport --- 
-  diffrep=NULL
-  if (!is.null(listArguments[["runDiffreport"]]) & nlevels(sampclass(xset))>=2) {
     #Check if the fillpeaks step has been done previously, if it hasn't, there is an error message and the execution is stopped.
     res=try(is.null(xset@filled))
-    classes=levels(sampclass(xset))
-    x=1:(length(classes)-1)
-    for (i in seq(along=x) ) {
-      y=1:(length(classes))
-      for (n in seq(along=y)){
-        if(i+n <= length(classes)){
-          filebase=paste(classes[i],class2=classes[i+n],sep="-vs-")
+
+    # ------ annot -------
+    listArguments[["calcCiS"]]=as.logical(listArguments[["calcCiS"]])
+    listArguments[["calcIso"]]=as.logical(listArguments[["calcIso"]])
+    listArguments[["calcCaS"]]=as.logical(listArguments[["calcCaS"]])
 
-          diffrep=diffreport(object=xset,class1=classes[i],class2=classes[i+n],filebase=filebase,eicmax=listArguments[["eicmax"]],eicwidth=listArguments[["eicwidth"]],sortpval=TRUE,value=listArguments[["value"]],h=listArguments[["h"]],w=listArguments[["w"]],mzdec=listArguments[["mzdec"]])
-          #combines results
-          diffreportTSV=merge(peakList, diffrep[,c("name","fold","tstat","pvalue")], by.x="name", by.y="name", sort=F)
-          diffreportTSV=cbind(diffreportTSV[,!(colnames(diffreportTSV) %in% c(sampnames(xa@xcmsSet)))],diffreportTSV[,(colnames(diffreportTSV) %in% c(sampnames(xa@xcmsSet)))])
+    # common parameters
+    listArguments4annotate = list(object=xset,
+    nSlaves=listArguments[["nSlaves"]],sigma=listArguments[["sigma"]],perfwhm=listArguments[["perfwhm"]],
+    maxcharge=listArguments[["maxcharge"]],maxiso=listArguments[["maxiso"]],minfrac=listArguments[["minfrac"]],
+    ppm=listArguments[["ppm"]],mzabs=listArguments[["mzabs"]],quick=listArguments[["quick"]],
+    polarity=listArguments[["polarity"]],max_peaks=listArguments[["max_peaks"]],intval=listArguments[["intval"]])
 
-          if(listArguments[["sortpval"]]){
-            diffreportTSV=diffreportTSV[order(diffreportTSV$pvalue), ]
-          }
-    
-          if (listArguments[["convert_param"]]){
-              #converting the retention times (seconds) into minutes
-              diffreportTSV$rt=diffreportTSV$rt/60;diffreportTSV$rtmin=diffreportTSV$rtmin/60; diffreportTSV$rtmax=diffreportTSV$rtmax/60;
-          }
-          write.table(diffreportTSV, sep="\t", quote=FALSE, row.names=FALSE, file=paste(new_file_path,filebase,"-tabular_visible_tabular",sep=""))
+    # quick == FALSE
+    if(listArguments[["quick"]]==FALSE) {
+        listArguments4annotate = append(listArguments4annotate,
+            list(graphMethod=listArguments[["graphMethod"]],cor_eic_th=listArguments[["cor_eic_th"]],pval=listArguments[["pval"]],
+            calcCiS=listArguments[["calcCiS"]],calcIso=listArguments[["calcIso"]],calcCaS=listArguments[["calcCaS"]]))
+        # no ruleset
+        if (!is.null(listArguments[["multiplier"]])) {
+            listArguments4annotate = append(listArguments4annotate,
+                list(multiplier=listArguments[["multiplier"]]))
+        }
+        # ruleset
+        else {
+            rulset=read.table(listArguments[["rules"]], h=T, sep=";")
+            if (ncol(rulset) < 4) rulset=read.table(listArguments[["rules"]], h=T, sep="\t")
+            if (ncol(rulset) < 4) rulset=read.table(listArguments[["rules"]], h=T, sep=",")
+            if (ncol(rulset) < 4) {
+                error_message="Your ruleset file seems not well formatted. The column separators accepted are ; , and tabulation"
+                print(error_message)
+                stop(error_message)
+            }
 
-          if (listArguments[["eicmax"]] != 0) {
-              diffreport_png2pdf(filebase, new_file_path)
-          }
+            listArguments4annotate = append(listArguments4annotate,
+                list(rules=rulset))
         }
-      }
     }
-  }
 
 
+    # launch annotate
+    xa = do.call("annotate", listArguments4annotate)
+    peakList=getPeaklist(xa,intval=listArguments[["intval"]])
+    peakList=cbind(groupnames(xa@xcmsSet),peakList); colnames(peakList)[1] = c("name");
+
+    # --- dataMatrix ---
+    dataMatrix = peakList[,(make.names(colnames(peakList)) %in% c("name", make.names(sampnames(xa@xcmsSet))))]
+    write.table(dataMatrix, sep="\t", quote=FALSE, row.names=FALSE, file=dataMatrixOutput)
 
 
-  # --- variableMetadata ---
-  variableMetadata=peakList[,!(make.names(colnames(peakList)) %in% c(make.names(sampnames(xa@xcmsSet))))]
-  # if we have 2 conditions, we keep stat of diffrep
-  if (!is.null(listArguments[["runDiffreport"]]) & nlevels(sampclass(xset))==2) {
-    variableMetadata = merge(variableMetadata, diffrep[,c("name","fold","tstat","pvalue")],by.x="name", by.y="name", sort=F)
-    if(exists("listArguments[[\"sortpval\"]]")){
-      variableMetadata=variableMetadata[order(variableMetadata$pvalue), ]
+    # --- Multi condition : diffreport ---
+    diffrepOri=NULL
+    if (!is.null(listArguments[["runDiffreport"]]) & nlevels(sampclass(xset))>=2) {
+        #Check if the fillpeaks step has been done previously, if it hasn't, there is an error message and the execution is stopped.
+        res=try(is.null(xset@filled))
+        classes=levels(sampclass(xset))
+        x=1:(length(classes)-1)
+        for (i in seq(along=x) ) {
+            y=1:(length(classes))
+            for (n in seq(along=y)){
+                if(i+n <= length(classes)){
+                    filebase=paste(classes[i],class2=classes[i+n],sep="-vs-")
+                    
+                    diffrep=diffreport(object=xset,class1=classes[i],class2=classes[i+n],filebase=filebase,eicmax=listArguments[["eicmax"]],eicwidth=listArguments[["eicwidth"]],sortpval=TRUE,value=listArguments[["value"]],h=listArguments[["h"]],w=listArguments[["w"]],mzdec=listArguments[["mzdec"]])
+                    
+                    diffrepOri = diffrep
+                    
+                    # renamming of the column rtmed to rt to fit with camera peaklist function output
+                    colnames(diffrep)[colnames(diffrep)=="rtmed"] <- "rt"
+                    colnames(diffrep)[colnames(diffrep)=="mzmed"] <- "mz"
+                    
+                    # combines results and reorder columns
+                    diffrep = merge(peakList, diffrep[,c("name","fold","tstat","pvalue")], by.x="name", by.y="name", sort=F)
+                    diffrep = cbind(diffrep[,!(colnames(diffrep) %in% c(sampnames(xa@xcmsSet)))],diffrep[,(colnames(diffrep) %in% c(sampnames(xa@xcmsSet)))])
+                    
+                    diffrep = RTSecondToMinute(diffrep, listArguments[["convertRTMinute"]])
+                    diffrep = formatIonIdentifiers(diffrep, numDigitsRT=listArguments[["numDigitsRT"]], numDigitsMZ=listArguments[["numDigitsMZ"]])
+                    
+                    if(listArguments[["sortpval"]]){
+                        diffrep=diffrep[order(diffrep$pvalue), ]
+                    }
+                    
+                    dir.create("tabular")
+                    write.table(diffrep, sep="\t", quote=FALSE, row.names=FALSE, file=paste("tabular/",filebase,"_tsv.tabular",sep=""))
+                    
+                    if (listArguments[["eicmax"]] != 0) {
+                        diffreport_png2pdf(filebase)
+                    }
+                }
+            }
+        }
     }
-  }
 
-  variableMetadataOri=variableMetadata
-  if (listArguments[["convert_param"]]){
-    #converting the retention times (seconds) into minutes
-    print("converting the retention times into minutes in the variableMetadata")
-    variableMetadata$rt=variableMetadata$rt/60;variableMetadata$rtmin=variableMetadata$rtmin/60; variableMetadata$rtmax=variableMetadata$rtmax/60;
-  }
-  #Transform metabolites name
-  variableMetadata$name= paste("M",round(variableMetadata$mz,digits=listArguments[["num_digits"]]),"T",round(variableMetadata$rt),sep="")    
-  write.table(variableMetadata, sep="\t", quote=FALSE, row.names=FALSE, file=variableMetadataOutput)
 
-  # --- dataMatrix ---
-  dataMatrix = peakList[,(make.names(colnames(peakList)) %in% c(make.names(sampnames(xa@xcmsSet))))]
-  dataMatrix=cbind(peakList$name,dataMatrix); colnames(dataMatrix)[1] = c("name");
+    # --- variableMetadata ---
+    variableMetadata=peakList[,!(make.names(colnames(peakList)) %in% c(make.names(sampnames(xa@xcmsSet))))]
+    variableMetadata = RTSecondToMinute(variableMetadata, listArguments[["convertRTMinute"]])
+    variableMetadata = formatIonIdentifiers(variableMetadata, numDigitsRT=listArguments[["numDigitsRT"]], numDigitsMZ=listArguments[["numDigitsMZ"]])
+    # if we have 2 conditions, we keep stat of diffrep
+    if (!is.null(listArguments[["runDiffreport"]]) & nlevels(sampclass(xset))==2) {
+        variableMetadata = merge(variableMetadata, diffrep[,c("name","fold","tstat","pvalue")],by.x="name", by.y="name", sort=F)
+        if(exists("listArguments[[\"sortpval\"]]")){
+            variableMetadata=variableMetadata[order(variableMetadata$pvalue), ]
+        }
+    }
 
-  if (listArguments[["convert_param"]]){
-    #converting the retention times (seconds) into minutes
-    print("converting the retention times into minutes in the dataMatrix ids")
-    peakList$rt=peakList$rt/60
-  }
-  dataMatrix$name= paste("M",round(peakList$mz,digits=listArguments[["num_digits"]]),"T",round(peakList$rt),sep="")
-  write.table(dataMatrix, sep="\t", quote=FALSE, row.names=FALSE, file=dataMatrixOutput)
-  
-  return(list("xa"=xa,"diffrep"=diffrep,"variableMetadata"=variableMetadataOri));
+    variableMetadataOri=variableMetadata
+    write.table(variableMetadata, sep="\t", quote=FALSE, row.names=FALSE, file=variableMetadataOutput)
+
+    return(list("xa"=xa,"diffrep"=diffrepOri,"variableMetadata"=variableMetadataOri));
 
 }
 
 
-combinexsAnnos_function <- function(xaP, xaN, listOFlistArgumentsP,listOFlistArgumentsN, diffrepP=NULL,diffrepN=NULL,convert_param=FALSE,pos=TRUE,tol=2,ruleset=NULL,keep_meta=TRUE, variableMetadataOutput="variableMetadata.tsv"){
+combinexsAnnos_function <- function(xaP, xaN, listOFlistArgumentsP,listOFlistArgumentsN, diffrepP=NULL,diffrepN=NULL,pos=TRUE,tol=2,ruleset=NULL,keep_meta=TRUE, convertRTMinute=F, numDigitsMZ=0, numDigitsRT=0, variableMetadataOutput="variableMetadata.tsv"){
 
-  #Load the two Rdata to extract the xset objects from positive and negative mode
-  cat("\tObject xset from positive mode\n")
-  print(xaP)
-  cat("\n")  
+    #Load the two Rdata to extract the xset objects from positive and negative mode
+    cat("\tObject xset from positive mode\n")
+    print(xaP)
+    cat("\n")
+
+    cat("\tObject xset from negative mode\n")
+    print(xaN)
+    cat("\n")
 
-  cat("\tObject xset from negative mode\n")
-  print(xaN)
-  cat("\n")
-    
-  cat("\n")
-  cat("\tCombining...\n")
-  #Convert the string to numeric for creating matrix
-  row=as.numeric(strsplit(ruleset,",")[[1]][1])
-  column=as.numeric(strsplit(ruleset,",")[[1]][2])
-  ruleset=cbind(row,column)
-  #Test if the file comes from an older version tool
-  if ((!is.null(xaP)) & (!is.null(xaN))) {
-    #Launch the combinexsannos function from CAMERA
-    cAnnot=combinexsAnnos(xaP, xaN,pos=pos,tol=tol,ruleset=ruleset)
-  } else {
-    stop("You must relauch the CAMERA.annotate step with the lastest version.")
-  }
-
-  
+    cat("\n")
+    cat("\tCombining...\n")
+    #Convert the string to numeric for creating matrix
+    row=as.numeric(strsplit(ruleset,",")[[1]][1])
+    column=as.numeric(strsplit(ruleset,",")[[1]][2])
+    ruleset=cbind(row,column)
+    #Test if the file comes from an older version tool
+    if ((!is.null(xaP)) & (!is.null(xaN))) {
+        #Launch the combinexsannos function from CAMERA
+        cAnnot=combinexsAnnos(xaP, xaN,pos=pos,tol=tol,ruleset=ruleset)
+    } else {
+        stop("You must relauch the CAMERA.annotate step with the lastest version.")
+    }
 
-  if(pos){
-    xa=xaP
-    listOFlistArgumentsP=listOFlistArguments
-    mode="neg. Mode"
-  } else {
-    xa=xaN
-    listOFlistArgumentsN=listOFlistArguments
-    mode="pos. Mode"
-  }
-  intval = "into"; for (steps in names(listOFlistArguments)) { if (!is.null(listOFlistArguments[[steps]]$intval)) intval = listOFlistArguments[[steps]]$intval }
-  peakList=getPeaklist(xa,intval=intval)
-  peakList=cbind(groupnames(xa@xcmsSet),peakList); colnames(peakList)[1] = c("name");
-  variableMetadata=cbind(peakList, cAnnot[, c("isotopes", "adduct", "pcgroup",mode)]);
-  variableMetadata=variableMetadata[,!(colnames(variableMetadata) %in% c(sampnames(xa@xcmsSet)))]
+    if(pos){
+        xa=xaP
+        listOFlistArgumentsP=listOFlistArguments
+        mode="neg. Mode"
+    } else {
+        xa=xaN
+        listOFlistArgumentsN=listOFlistArguments
+        mode="pos. Mode"
+    }
+
+    peakList=getPeaklist(xa)
+    peakList=cbind(groupnames(xa@xcmsSet),peakList); colnames(peakList)[1] = c("name");
+    variableMetadata=cbind(peakList, cAnnot[, c("isotopes", "adduct", "pcgroup",mode)]);
+    variableMetadata=variableMetadata[,!(colnames(variableMetadata) %in% c(sampnames(xa@xcmsSet)))]
+
+    #Test if there are more than two classes (conditions)
+    if ( nlevels(sampclass(xaP@xcmsSet))==2 & (!is.null(diffrepN)) & (!is.null(diffrepP))) {
+        diffrepP = diffrepP[,c("name","fold","tstat","pvalue")]; colnames(diffrepP) = paste("P.",colnames(diffrepP),sep="")
+        diffrepN = diffrepN[,c("name","fold","tstat","pvalue")]; colnames(diffrepN) = paste("N.",colnames(diffrepN),sep="")
 
-  #Test if there are more than two classes (conditions)
-  if ( nlevels(sampclass(xaP@xcmsSet))==2 & (!is.null(diffrepN)) & (!is.null(diffrepP))) {
-    diffrepP = diffrepP[,c("name","fold","tstat","pvalue")]; colnames(diffrepP) = paste("P.",colnames(diffrepP),sep="")
-    diffrepN = diffrepN[,c("name","fold","tstat","pvalue")]; colnames(diffrepN) = paste("N.",colnames(diffrepN),sep="")
-    
-    variableMetadata = merge(variableMetadata, diffrepP, by.x="name", by.y="P.name")
-    variableMetadata = merge(variableMetadata, diffrepN, by.x="name", by.y="N.name")
-  } 
-    
-  rownames(variableMetadata) = NULL
-  #TODO: checker
-  #colnames(variableMetadata)[1:2] = c("name","mz/rt");
+        variableMetadata = merge(variableMetadata, diffrepP, by.x="name", by.y="P.name")
+        variableMetadata = merge(variableMetadata, diffrepN, by.x="name", by.y="N.name")
+    }
+
+    rownames(variableMetadata) = NULL
+    #TODO: checker
+    #colnames(variableMetadata)[1:2] = c("name","mz/rt");
 
-  #If the user want to convert the retention times (seconds) into minutes.
-  if (listArguments[["convert_param"]]){
-    #converting the retention times (seconds) into minutes
-    cat("\tConverting the retention times into minutes\n")
-    variableMetadata$rtmed=cAnnot$rt/60; variableMetadata$rtmin=cAnnot$rtmin/60; variableMetadata$rtmax=cAnnot$rtmax/60;
-  }
+    variableMetadata = RTSecondToMinute(variableMetadata, convertRTMinute)
+    variableMetadata = formatIonIdentifiers(variableMetadata, numDigitsRT=numDigitsRT, numDigitsMZ=numDigitsMZ)
 
-  #If the user want to keep only the metabolites which match a difference
-  if(keep_meta){
-    variableMetadata=variableMetadata[variableMetadata[,c(mode)]!="",]
-  }
-      
-  #Write the output into a tsv file
-  write.table(variableMetadata, sep="\t", quote=FALSE, row.names=FALSE, file=variableMetadataOutput)
-  return(variableMetadata);
+    #If the user want to keep only the metabolites which match a difference
+    if(keep_meta){
+        variableMetadata=variableMetadata[variableMetadata[,c(mode)]!="",]
+    }
+
+    #Write the output into a tsv file
+    write.table(variableMetadata, sep="\t", quote=FALSE, row.names=FALSE, file=variableMetadataOutput)
+    return(variableMetadata);
 
 }
+
+# This function get the raw file path from the arguments
+getRawfilePathFromArguments <- function(singlefile, zipfile, listArguments) {
+    if (!is.null(listArguments[["zipfile"]]))           zipfile = listArguments[["zipfile"]]
+    if (!is.null(listArguments[["zipfilePositive"]]))   zipfile = listArguments[["zipfilePositive"]]
+    if (!is.null(listArguments[["zipfileNegative"]]))   zipfile = listArguments[["zipfileNegative"]]
+
+    if (!is.null(listArguments[["singlefile_galaxyPath"]])) {
+        singlefile_galaxyPaths = listArguments[["singlefile_galaxyPath"]];
+        singlefile_sampleNames = listArguments[["singlefile_sampleName"]]
+    }
+    if (!is.null(listArguments[["singlefile_galaxyPathPositive"]])) {
+        singlefile_galaxyPaths = listArguments[["singlefile_galaxyPathPositive"]];
+        singlefile_sampleNames = listArguments[["singlefile_sampleNamePositive"]]
+    }
+    if (!is.null(listArguments[["singlefile_galaxyPathNegative"]])) {
+        singlefile_galaxyPaths = listArguments[["singlefile_galaxyPathNegative"]];
+        singlefile_sampleNames = listArguments[["singlefile_sampleNameNegative"]]
+    }
+    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]
+            singlefile[[singlefile_sampleName]] = singlefile_galaxyPath
+        }
+    }
+    for (argument in c("zipfile","zipfilePositive","zipfileNegative","singlefile_galaxyPath","singlefile_sampleName","singlefile_galaxyPathPositive","singlefile_sampleNamePositive","singlefile_galaxyPathNegative","singlefile_sampleNameNegative")) {
+        listArguments[[argument]]=NULL
+    }
+    return(list(zipfile=zipfile, singlefile=singlefile, listArguments=listArguments))
+}
+
+
+# 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
+retrieveRawfileInTheWorkingDirectory <- function(singlefile, zipfile) {
+    if(!is.null(singlefile) && (length("singlefile")>0)) {
+        for (singlefile_sampleName in names(singlefile)) {
+            singlefile_galaxyPath = singlefile[[singlefile_sampleName]]
+            if(!file.exists(singlefile_galaxyPath)){
+                error_message=paste("Cannot access the sample:",singlefile_sampleName,"located:",singlefile_galaxyPath,". Please, contact your administrator ... if you have one!")
+                print(error_message); stop(error_message)
+            }
+
+            file.symlink(singlefile_galaxyPath,singlefile_sampleName)
+        }
+        directory = "."
+
+    }
+    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
+        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")
+
+    }
+    return (directory)
+}
--- a/macros.xml	Wed Feb 01 12:24:21 2017 -0500
+++ b/macros.xml	Fri Apr 07 07:42:38 2017 -0400
@@ -2,12 +2,11 @@
 <macros>
     <xml name="requirements">
         <requirements>
-	    <requirement type="package" version="0.4_1">r-snow</requirement>
+            <requirement type="package" version="0.4_1">r-snow</requirement>
             <requirement type="package" version="1.26.0">bioconductor-camera</requirement>
             <requirement type="package" version="2.26.0">bioconductor-multtest</requirement>
-	    <requirement type="package" version="1.1_4">r-batch</requirement>
-            <requirement type="package" version="1.6.27">libpng</requirement>
-            <requirement type="package" version="1.3.20">graphicsmagick</requirement>
+            <requirement type="package" version="1.1_4">r-batch</requirement>
+            <requirement type="package" version="1.3.23">graphicsmagick</requirement>
         </requirements>
     </xml>
     <xml name="stdio">
@@ -19,33 +18,137 @@
     <token name="@COMMAND_CAMERA_SCRIPT@">
         LANG=C Rscript $__tool_directory__/CAMERA.r
     </token>
-    
-    <!-- zipfile load for planemo test -->
-    <token name="@COMMAND_ZIPFILE_LOAD@">
-        #if $zipfile_load_conditional.zipfile_load_select == "yes":
-            #if $zipfile_load_conditional.zip_file:
-                zipfile $zipfile_load_conditional.zip_file
+
+    <!-- raw file 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    
+        #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>
+    </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>
+
+    <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>
+
+    <!-- peaklist export option management -->
+    <token name="@COMMAND_PEAKLIST@">
+        convertRTMinute $export.convertRTMinute
+        numDigitsMZ $export.numDigitsMZ
+        numDigitsRT $export.numDigitsRT
+        intval $export.intval
     </token>
-    <xml name="zipfile_load">
-        <conditional name="zipfile_load_conditional">
-            <param name="zipfile_load_select" type="select" label="Resubmit your zip file" help="Use only if you get a message which say that your original zip file have been deleted on the server." >
-                <option value="no" >no need</option>
-                <option value="yes" selected="peakgroups">yes</option>
+
+    <xml name="input_peaklist">
+        <section name="export" title="Export options">
+            <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="General used intensity value" 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 value="no">
-            </when>
-            <when value="yes">
-                <param name="zip_file" type="data" format="no_unzip.zip,zip" label="Zip file" />
-            </when>
+        </section>
+    </xml>
+
+    <xml name="test_peaklist">
+        <section name="export">
+            <param name="convertRTMinute" value="True"/>
+            <param name="numDigitsMZ" value="4" />
+            <param name="numDigitsRT" value="1" />
+            <param name="intval" value="into"/>
+        </section>
+    </xml>
+
+    <!-- annotate_diffreport <test> commun part -->
+    <xml name="test_annotate_diffreport">
+        <section name="groupfwhm">
+            <param name="sigma" value="6"/>
+            <param name="perfwhm" value="0.6"/>
+        </section>
+        <section name="findisotopes">
+            <param name="maxcharge" value="3"/>
+            <param name="maxiso" value="4"/>
+            <param name="minfrac" value="0.5"/>
+        </section>
+        <section name="findgeneral">
+            <param name="ppm" value="5"/>
+            <param name="mzabs" value="0.015"/>
+            <param name="max_peaks" value="100"/>
+        </section>
+        <section name="diffreport">
+        <conditional name="options">
+            <param name="option" value="show"/>
+            <param name="eicmax" value="200"/>
+            <param name="eicwidth" value="200"/>
+            <param name="value" value="into"/>
+            <param name="h" value="480"/>
+            <param name="w" value="640"/>
+            <param name="mzdec" value="2"/>
+            <param name="sortpval" value="False"/>
+        </conditional>
+        </section>
+        <expand macro="test_peaklist"/>
+    </xml>
+
+    <xml name="test_annotate_quick_false">
+        <param name="quick" value="FALSE"/>
+        <section name="groupcorr">
+            <param name="cor_eic_th" value="0.75"/>
+            <param name="graphMethod" value="hcs"/>
+            <param name="pval" value="0.05"/>
+            <param name="calcCiS" value="True"/>
+            <param name="calcIso" value="False"/>
+            <param name="calcCaS" value="False"/>
+        </section>
+    </xml>
+
+    <xml name="test_annotate_quick_true">
+        <conditional name="quick_block">
+            <param name="quick" value="TRUE"/>
         </conditional>
     </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 
+**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
 
Binary file static/images/combinexsannos_workflow.png has changed
Binary file static/images/combinexsannos_workflow_zoom.png has changed
--- a/test-data/faahOK.xset.group.retcor.group.fillPeaks.annotate.positive.combinexsAnnos.variableMetadata.tsv	Wed Feb 01 12:24:21 2017 -0500
+++ b/test-data/faahOK.xset.group.retcor.group.fillPeaks.annotate.positive.combinexsAnnos.variableMetadata.tsv	Fri Apr 07 07:42:38 2017 -0400
@@ -1,116 +1,116 @@
-name	mz	mzmin	mzmax	rt	rtmin	rtmax	npeaks	KO	WT	isotopes	adduct	pcgroup	isotopes.1	adduct.1	pcgroup.1	neg. Mode
-M208T3291	207.800003051758	207.800003051758	207.800003051758	3291.29196703023	3291.29196703023	3291.29196703023	1	1	0			2102		[M+H]+ 206.793	2102	Found [M+H]+/[M-H]-
-M210T3110	210.199996948242	210.199996948242	210.199996948242	3110.11088685014	3110.11088685014	3110.11088685014	1	1	0			5340		[M+H]+ 209.193	5340	Found [M+H]+/[M-H]-
-M228T3846	228.199996948242	228.199996948242	228.199996948242	3846.02686621606	3844.71679072309	3847.33694170903	2	1	1		[M+H-C6H8O6]+ 403.216 [M+2H-NH3]2+ 471.41	21		[M+H]+ 227.193	21	Found [M+H]+/[M-H]-
-M235T3976	234.900009155273	234.900009155273	234.900009155273	3976.03175698205	3976.03175698205	3976.03175698205	1	0	1			2000		[M+H]+ 233.893	2000	Found [M+H]+/[M-H]-
-M236T3873	236.199996948242	236.199996948242	236.199996948242	3872.50458166888	3872.50458166888	3872.50458166888	1	0	1			2733		[M+H]+ 235.193	2733	Found [M+H]+/[M-H]-
-M238T2755	238.199996948242	238.199996948242	238.199996948242	2754.64826033204	2754.64826033204	2754.64826033204	1	0	1			4595		[M+H]+ 237.193	4595	Found [M+H]+/[M-H]-
-M239T4130	239	239	239	4130.33844192957	4130.33844192957	4130.33844192957	1	0	1			1473		[M+H]+ 237.993	1473	Found [M+H]+/[M-H]-
-M250T4052	250.199996948242	250.199996948242	250.199996948242	4051.60950608857	4051.60950608857	4051.60950608857	1	1	0			77		[M+H]+ 249.193	77	Found [M+H]+/[M-H]-
-M258T3448	258.200012207031	258.200012207031	258.200012207031	3448.2651342683	3446.56346688244	3449.96680165415	2	1	1			2922		[M+H]+ 257.193	2922	Found [M+H]+/[M-H]-
-M261T2686	261.200012207031	261.200012207031	261.200012207031	2685.68075810517	2685.68075810517	2685.68075810517	1	0	1			640		[M+H]+ 260.193	640	Found [M+H]+/[M-H]-
-M266T3323	266.399993896484	266.399993896484	266.399993896484	3322.77149725563	3322.77149725563	3322.77149725563	1	0	1			16		[M+H]+ 265.393	16	Found [M+H]+/[M-H]-
-M275T2920	275.200012207031	275.200012207031	275.200012207031	2920.28496696996	2920.28496696996	2920.28496696996	1	0	1			2868		[M+H]+ 274.193	2868	Found [M+H]+/[M-H]-
-M276T3867_1	275.899993896484	275.899993896484	275.899993896484	3866.89893599656	3866.89893599656	3866.89893599656	1	1	0			21		[M+H]+ 274.893	21	Found [M+H]+/[M-H]-
-M276T2603	276.200012207031	276.200012207031	276.200012207031	2602.85397459635	2602.85397459635	2602.85397459635	1	1	0			5243		[M+H]+ 275.193	5243	Found [M+H]+/[M-H]-
-M284T3653	284.100006103516	284.100006103516	284.100006103516	3652.85708680252	3652.85708680252	3652.85708680252	1	1	0		[M+H-CH3]+ 298.114	47		[M+H]+ 283.093	47	Found [M+H]+/[M-H]-
-M287T4128	287.100006103516	287.100006103516	287.100006103516	4128.44542811787	4128.44542811787	4128.44542811787	1	1	0			23		[M+H]+ 286.093	23	Found [M+H]+/[M-H]-
-M304T3912	304	304	304	3911.73383581848	3911.73383581848	3911.73383581848	1	0	1			4817		[M+H]+ 302.993	4817	Found [M+H]+/[M-H]-
-M304T2622	304	304	304	2621.82968780046	2621.82968780046	2621.82968780046	1	0	1			2642		[M+H]+ 302.993	2642	Found [M+H]+/[M-H]-
-M310T3484	310.200012207031	310.200012207031	310.200012207031	3483.91470694154	3483.91470694154	3483.91470694154	1	1	0		[M+H-H20]+ 327.208	31		[M+H]+ 309.193	31	Found [M+H]+/[M-H]-
-M311T3667	311.200012207031	311.200012207031	311.200012207031	3667.39351291676	3667.39351291676	3667.39351291676	1	1	0		[M+H]+ 310.189	2		[M+H]+ 310.189	2	Found [M+H]+/[M-H]-
-M317T4122	317	317	317	4122.17726376076	4122.17726376076	4122.17726376076	1	1	0			1716		[M+H]+ 315.993	1716	Found [M+H]+/[M-H]-
-M319T3963	319.300018310547	319.300018310547	319.300018310547	3963.24477198361	3963.24477198361	3963.24477198361	1	0	1			1982		[M+H]+ 318.293	1982	Found [M+H]+/[M-H]-
-M326T3910	326.300018310547	326.300018310547	326.300018310547	3910.16592439504	3910.16592439504	3910.16592439504	1	0	1			4822		[M+H]+ 325.293	4822	Found [M+H]+/[M-H]-
-M329T3539	329	329	329	3538.57945160982	3538.57945160982	3538.57945160982	1	0	1			1952		[M+H]+ 327.993	1952	Found [M+H]+/[M-H]-
-M330T3500	330.200012207031	330.200012207031	330.200012207031	3500.20040677211	3496.75308645138	3503.64772709283	2	1	1		[2M+Na+K]2+ 299.215	76		[M+H]+ 329.193	76	Found [M+H]+/[M-H]-
-M333T3521	333	333	333	3520.57714024828	3520.57714024828	3520.57714024828	1	0	1			368		[M+H]+ 331.993	368	Found [M+H]+/[M-H]-
-M341T3309	341.200012207031	341.200012207031	341.200012207031	3308.58072998214	3308.58072998214	3308.58072998214	1	0	1			4		[M+H]+ 340.193	4	Found [M+H]+/[M-H]-
-M341T4172	341.399993896484	341.399993896484	341.399993896484	4172.42311655854	4172.42311655854	4172.42311655854	1	1	0			4369		[M+H]+ 340.393	4369	Found [M+H]+/[M-H]-
-M342T3038	342.300018310547	342.300018310547	342.300018310547	3038.15131755569	3038.15131755569	3038.15131755569	1	0	1			3220		[M+H]+ 341.293	3220	Found [M+H]+/[M-H]-
-M345T3788	345	345	345	3788.06929478123	3788.06929478123	3788.06929478123	1	0	1			4445		[M+H]+ 343.993	4445	Found [M+H]+/[M-H]-
-M348T3493	348.200012207031	348.200012207031	348.200012207031	3493.19473595505	3488.78600287563	3495.99683372091	3	1	2			31		[M+H]+ 347.193	31	Found [M+H]+/[M-H]-
-M349T4038	348.899993896484	348.899993896484	348.899993896484	4038.4655434023	4038.4655434023	4038.4655434023	1	0	1			3765		[M+H]+ 347.893	3765	Found [M+H]+/[M-H]-
-M350T3215	350	350	350	3214.6396934876	3214.6396934876	3214.6396934876	1	1	0			4315		[M+H]+ 348.993	4315	Found [M+H]+/[M-H]-
-M350T3484	350.200012207031	350.200012207031	350.200012207031	3484.15058009239	3484.15058009239	3484.15058009239	1	0	1	[41][M]+	[M+Na]+ 327.208	31	[41][M]+	[M+H]+ 349.193	31	Found [M+H]+/[M-H]-
-M354T4176	354.300018310547	354.300018310547	354.300018310547	4176.48836940693	4176.48836940693	4176.48836940693	1	0	1			4388		[M+H]+ 353.293	4388	Found [M+H]+/[M-H]-
-M361T3500	361	361	361	3499.90373818767	3499.90373818767	3499.90373818767	1	1	0			3374		[M+H]+ 359.993	3374	Found [M+H]+/[M-H]-
-M362T3394	362.300018310547	362.300018310547	362.300018310547	3394.46678522768	3394.46678522768	3394.46678522768	1	0	1			502		[M+H]+ 361.293	502	Found [M+H]+/[M-H]-
-M363T3890	363	363	363	3889.77519285019	3889.77519285019	3889.77519285019	1	0	1			2235		[M+H]+ 361.993	2235	Found [M+H]+/[M-H]-
-M369T4287	369.100006103516	369.100006103516	369.100006103516	4286.86322276304	4286.86322276304	4286.86322276304	1	1	0			6094		[M+H]+ 368.093	6094	Found [M+H]+/[M-H]-
-M371T4218	371.300018310547	371.300018310547	371.300018310547	4217.96617539246	4217.96617539246	4217.96617539246	1	1	0			5327		[M+H]+ 370.293	5327	Found [M+H]+/[M-H]-
-M372T4221	372.300018310547	372.300018310547	372.300018310547	4221.33434899811	4221.33434899811	4221.33434899811	1	0	1			5985		[M+H]+ 371.293	5985	Found [M+H]+/[M-H]-
-M375T2994	375.200012207031	375.200012207031	375.200012207031	2994.06985896253	2994.06985896253	2994.06985896253	1	0	1			32		[M+H]+ 374.193	32	Found [M+H]+/[M-H]-
-M378T3345	377.899993896484	377.899993896484	377.899993896484	3344.8775026371	3344.8775026371	3344.8775026371	1	1	0			802		[M+H]+ 376.893	802	Found [M+H]+/[M-H]-
-M396T4099	396.300018310547	396.300018310547	396.300018310547	4098.66503647187	4098.66503647187	4098.66503647187	2	1	0			150		[M+H]+ 395.293	150	Found [M+H]+/[M-H]-
-M399T3288	399	399	399	3287.55118520376	3287.55118520376	3287.55118520376	1	0	1			2111		[M+H]+ 397.993	2111	Found [M+H]+/[M-H]-
-M404T2691	404.100006103516	404.100006103516	404.100006103516	2690.57128216482	2690.57128216482	2690.57128216482	1	0	1		[M+H-H20]+ 421.11	6		[M+H]+ 403.093	6	Found [M+H]+/[M-H]-
-M406T3575	406	406	406	3574.63014348789	3574.63014348789	3574.63014348789	1	0	1			1668		[M+H]+ 404.993	1668	Found [M+H]+/[M-H]-
-M408T3956	408.300018310547	408.300018310547	408.300018310547	3955.84913291293	3955.84913291293	3955.84913291293	1	1	0			5459		[M+H]+ 407.293	5459	Found [M+H]+/[M-H]-
-M413T4059	413	413	413	4059.4167690378	4059.4167690378	4059.4167690378	1	0	1			4700		[M+H]+ 411.993	4700	Found [M+H]+/[M-H]-
-M415T3626	415.200012207031	415.200012207031	415.200012207031	3625.889727528	3625.889727528	3625.889727528	1	1	0			26		[M+H]+ 414.193	26	Found [M+H]+/[M-H]-
-M418T3317	418.399993896484	418.399993896484	418.399993896484	3316.91873178114	3316.91873178114	3316.91873178114	1	0	1			539		[M+H]+ 417.393	539	Found [M+H]+/[M-H]-
-M420T4187	420.399993896484	420.399993896484	420.399993896484	4186.55782122692	4186.55782122692	4186.55782122692	1	1	0			6064		[M+H]+ 419.393	6064	Found [M+H]+/[M-H]-
-M424T3310	424.399993896484	424.399993896484	424.399993896484	3310.1554922049	3310.1554922049	3310.1554922049	1	0	1			541		[M+H]+ 423.393	541	Found [M+H]+/[M-H]-
-M440T4055	440.300018310547	440.300018310547	440.300018310547	4055.33424681125	4054.35262823827	4056.31586538424	2	2	0		[M+H]+ 439.295	77		[M+H]+ 439.295	77	Found [M+H]+/[M-H]-
-M441T4111	441.100006103516	441.100006103516	441.100006103516	4111.42132545829	4111.42132545829	4111.42132545829	1	0	1		[M+K]+ 402.132	43		[M+H]+ 440.093	43	Found [M+H]+/[M-H]-
-M441T4127_2	441.100006103516	441.100006103516	441.100006103516	4126.89956529202	4126.89956529202	4126.89956529202	1	0	1		[M+Na]+ 418.1	23		[M+H]+ 440.093	23	Found [M+H]+/[M-H]-
-M443T3159	443	443	443	3158.51557850104	3158.51557850104	3158.51557850104	1	1	0			838		[M+H]+ 441.993	838	Found [M+H]+/[M-H]-
-M445T4143	444.899993896484	444.899993896484	444.899993896484	4142.9532295589	4142.9532295589	4142.9532295589	1	0	1			4236		[M+H]+ 443.893	4236	Found [M+H]+/[M-H]-
-M446T2893	446.200012207031	446.200012207031	446.200012207031	2892.58722465327	2892.58722465327	2892.58722465327	1	1	0		[M+Na]+ 423.211	95		[M+H]+ 445.193	95	Found [M+H]+/[M-H]-
-M447T4144	446.899993896484	446.899993896484	446.899993896484	4143.9632134336	4143.9632134336	4143.9632134336	1	0	1			5839		[M+H]+ 445.893	5839	Found [M+H]+/[M-H]-
-M447T4119	447.100006103516	447.100006103516	447.100006103516	4119.30268860621	4119.30268860621	4119.30268860621	1	0	1			120		[M+H]+ 446.093	120	Found [M+H]+/[M-H]-
-M453T3745	453.100006103516	453.100006103516	453.100006103516	3745.49127859189	3745.49127859189	3745.49127859189	1	1	0		[M+H]+ 452.1	14		[M+H]+ 452.1	14	Found [M+H]+/[M-H]-
-M461T3139	461.100006103516	461.100006103516	461.100006103516	3139.30178915582	3139.30178915582	3139.30178915582	1	0	1		[2M+Na+K-H]+ 200.089	67		[M+H]+ 460.093	67	Found [M+H]+/[M-H]-
-M462T2597	461.899993896484	461.899993896484	461.899993896484	2596.59397459635	2596.59397459635	2596.59397459635	1	1	0			2880		[M+H]+ 460.893	2880	Found [M+H]+/[M-H]-
-M465T4110	465.100006103516	465.100006103516	465.100006103516	4109.84516095031	4106.73892937947	4109.84516095031	3	0	2		[M+H-CO]+ 492.092	43		[M+H]+ 464.093	43	Found [M+H]+/[M-H]-
-M469T4110	469	469	469	4109.84004353069	4109.84004353069	4109.84004353069	1	0	1			43		[M+H]+ 467.993	43	Found [M+H]+/[M-H]-
-M482T3312	482.200012207031	482.200012207031	482.200012207031	3311.84592526338	3310.1554922049	3320.00602941677	3	1	2			4		[M+H]+ 481.193	4	Found [M+H]+/[M-H]-
-M486T3726_2	486	486	486	3725.70378168979	3723.46990095085	3727.93766242873	2	1	1			4683		[M+H]+ 484.993	4683	Found [M+H]+/[M-H]-
-M486T3654	486.100006103516	486.100006103516	486.100006103516	3654.3034227609	3654.3034227609	3654.3034227609	1	0	1			2410		[M+H]+ 485.093	2410	Found [M+H]+/[M-H]-
-M493T2872	493	493	493	2872.43169931851	2872.43169931851	2872.43169931851	1	0	1			4766		[M+H]+ 491.993	4766	Found [M+H]+/[M-H]-
-M494T3069	494.300018310547	494.300018310547	494.300018310547	3069.1084825778	3069.1084825778	3069.1084825778	1	1	0			48		[M+H]+ 493.293	48	Found [M+H]+/[M-H]-
-M495T3465	495	495	495	3465.11864061023	3465.11864061023	3465.11864061023	1	1	0			1283		[M+H]+ 493.993	1283	Found [M+H]+/[M-H]-
-M518T3975	518	518	518	3975.06650309073	3975.06650309073	3975.06650309073	1	1	0			2059		[M+H]+ 516.993	2059	Found [M+H]+/[M-H]-
-M520T4132	520.400024414062	520.400024414062	520.400024414062	4131.5173144866	4131.5173144866	4131.5173144866	1	1	0		[M+H]+ 519.397	23		[M+H]+ 519.397	23	Found [M+H]+/[M-H]-
-M522T2525	522	522	522	2524.60597459635	2524.60597459635	2524.60597459635	1	1	0		[M+H]+ 520.991	5042		[M+H]+ 520.991	5042	Found [M+H]+/[M-H]-
-M528T4044	528.299987792969	528.299987792969	528.299987792969	4043.65478609327	4043.65478609327	4043.65478609327	1	0	1			106		[M+H]+ 527.293	106	Found [M+H]+/[M-H]-
-M534T2893_1	534	534	534	2893.43940086615	2893.43940086615	2893.43940086615	1	0	1			95		[M+H]+ 532.993	95	Found [M+H]+/[M-H]-
-M534T3169	534.299987792969	534.299987792969	534.299987792969	3169.25148487446	3169.25148487446	3169.25148487446	1	1	0			791		[M+H]+ 533.293	791	Found [M+H]+/[M-H]-
-M539T2671	538.900024414062	538.900024414062	538.900024414062	2671.01298815173	2671.01298815173	2671.01298815173	1	1	0			4057		[M+H]+ 537.893	4057	Found [M+H]+/[M-H]-
-M541T2916	541.200012207031	541.200012207031	541.200012207031	2915.96882550519	2915.96882550519	2915.96882550519	1	1	0			56		[M+H]+ 540.193	56	Found [M+H]+/[M-H]-
-M542T4146	542.5	542.5	542.5	4145.51429793861	4145.51429793861	4145.51429793861	1	0	1			219		[M+H]+ 541.493	219	Found [M+H]+/[M-H]-
-M545T3858	545	545	545	3857.79163814401	3857.79163814401	3857.79163814401	1	1	0			1418		[M+H]+ 543.993	1418	Found [M+H]+/[M-H]-
-M546T3196	546.200012207031	546.200012207031	546.200012207031	3196.03297484936	3194.01201990731	3198.0539297914	2	1	1		[M+H]+ 545.2	30		[M+H]+ 545.2	30	Found [M+H]+/[M-H]-
-M546T3373	546.299987792969	546.299987792969	546.299987792969	3372.50532490707	3372.50532490707	3372.50532490707	1	0	1			1591		[M+H]+ 545.293	1591	Found [M+H]+/[M-H]-
-M547T2882	546.900024414062	546.900024414062	546.900024414062	2881.52679761665	2881.52679761665	2881.52679761665	1	1	0			131		[M+H]+ 545.893	131	Found [M+H]+/[M-H]-
-M547T2930	546.900024414062	546.900024414062	546.900024414062	2929.96472679346	2929.96472679346	2929.96472679346	1	0	1			3632		[M+H]+ 545.893	3632	Found [M+H]+/[M-H]-
-M548T4180_2	548.100036621094	548.100036621094	548.100036621094	4180.12028828767	4180.12028828767	4180.12028828767	1	1	0			6024		[M+H]+ 547.093	6024	Found [M+H]+/[M-H]-
-M551T3507	551.100036621094	551.100036621094	551.100036621094	3507.17741350176	3507.17741350176	3507.17741350176	1	1	0			76		[M+H]+ 550.093	76	Found [M+H]+/[M-H]-
-M552T3631	552.299987792969	552.299987792969	552.299987792969	3630.7372705795	3630.7372705795	3630.7372705795	1	0	1			2359		[M+H]+ 551.293	2359	Found [M+H]+/[M-H]-
-M552T3836	552.400024414062	552.400024414062	552.400024414062	3835.51794589405	3835.51794589405	3835.51794589405	1	0	1			3360		[M+H]+ 551.393	3360	Found [M+H]+/[M-H]-
-M552T2806	552.5	552.5	552.5	2805.77058037431	2805.77058037431	2805.77058037431	1	0	1			154		[M+H]+ 551.493	154	Found [M+H]+/[M-H]-
-M555T2628	554.799987792969	554.799987792969	554.799987792969	2628.03802468566	2628.03802468566	2628.03802468566	1	1	0			2677		[M+H]+ 553.793	2677	Found [M+H]+/[M-H]-
-M560T3524	560.100036621094	560.100036621094	560.100036621094	3524.45539948538	3524.45539948538	3524.45539948538	1	1	0			363		[M+H]+ 559.093	363	Found [M+H]+/[M-H]-
-M561T3500	560.900024414062	560.900024414062	560.900024414062	3499.5907337547	3499.5907337547	3499.5907337547	1	0	1			3396		[M+H]+ 559.893	3396	Found [M+H]+/[M-H]-
-M566T2712	566	566	566	2712.46713466996	2712.46713466996	2712.46713466996	1	1	0			2531		[M+H]+ 564.993	2531	Found [M+H]+/[M-H]-
-M567T2630	566.799987792969	566.799987792969	566.799987792969	2629.63309270258	2629.63309270258	2629.63309270258	1	1	0			2685		[M+H]+ 565.793	2685	Found [M+H]+/[M-H]-
-M570T3689	570.5	570.5	570.5	3689.29376228834	3689.29376228834	3689.29376228834	1	0	1			617		[M+H]+ 569.493	617	Found [M+H]+/[M-H]-
-M572T2893	571.600036621094	571.600036621094	571.600036621094	2892.58722465327	2892.58722465327	2892.58722465327	1	1	0			95		[M+H]+ 570.593	95	Found [M+H]+/[M-H]-
-M574T2913	573.700012207031	573.700012207031	573.700012207031	2912.8908895169	2912.8908895169	2912.8908895169	1	1	0		[M+H]+ 572.692	56		[M+H]+ 572.692	56	Found [M+H]+/[M-H]-
-M575T2527	574.700012207031	574.700012207031	574.700012207031	2527.16708488001	2527.16708488001	2527.16708488001	1	0	1			5962		[M+H]+ 573.693	5962	Found [M+H]+/[M-H]-
-M578T2852	578.299987792969	578.299987792969	578.299987792969	2852.41195305107	2849.90816808503	2854.91573801711	2	1	1			111		[M+H]+ 577.293	111	Found [M+H]+/[M-H]-
-M578T3834	578.400024414062	578.400024414062	578.400024414062	3834.20284641246	3834.20284641246	3834.20284641246	1	1	0			3346		[M+H]+ 577.393	3346	Found [M+H]+/[M-H]-
-M580T3296	579.5	579.5	579.5	3296.04055494637	3296.04055494637	3296.04055494637	1	1	0			2610		[M+H]+ 578.493	2610	Found [M+H]+/[M-H]-
-M582T3848_2	582.5	582.5	582.5	3847.90453079719	3847.90453079719	3847.90453079719	1	1	0		[M+H]+ 581.493	21		[M+H]+ 581.493	21	Found [M+H]+/[M-H]-
-M583T3496	583	583	583	3496.27878193711	3496.27878193711	3496.27878193711	1	1	0			3516		[M+H]+ 581.993	3516	Found [M+H]+/[M-H]-
-M583T2581	583.400024414062	583.400024414062	583.400024414062	2581.23728676082	2581.23728676082	2581.23728676082	1	1	0			5692		[M+H]+ 582.393	5692	Found [M+H]+/[M-H]-
-M584T2539	584.400024414062	584.400024414062	584.400024414062	2538.69097459635	2538.69097459635	2538.69097459635	1	1	0			5558		[M+H]+ 583.393	5558	Found [M+H]+/[M-H]-
-M586T2762	585.900024414062	585.900024414062	585.900024414062	2761.59491820405	2761.59491820405	2761.59491820405	1	1	0			94		[M+H]+ 584.893	94	Found [M+H]+/[M-H]-
-M592T4176	591.5	591.5	591.5	4175.56395558154	4175.56395558154	4175.56395558154	1	1	0			115		[M+H]+ 590.493	115	Found [M+H]+/[M-H]-
-M593T3448	593.299987792969	593.299987792969	593.299987792969	3448.42769567721	3448.42769567721	3448.42769567721	1	0	1			2939		[M+H]+ 592.293	2939	Found [M+H]+/[M-H]-
-M596T4172	596.100036621094	596.100036621094	596.100036621094	4172.42311655854	4172.42311655854	4172.42311655854	1	1	0			4425		[M+H]+ 595.093	4425	Found [M+H]+/[M-H]-
-M597T2724	596.799987792969	596.799987792969	596.799987792969	2723.73277209484	2723.73277209484	2723.73277209484	1	0	1			2540		[M+H]+ 595.793	2540	Found [M+H]+/[M-H]-
-M598T2738	597.799987792969	597.799987792969	597.799987792969	2737.68724200948	2737.68724200948	2737.68724200948	1	0	1			4444		[M+H]+ 596.793	4444	Found [M+H]+/[M-H]-
-M598T3811	598.299987792969	598.299987792969	598.299987792969	3810.99738439489	3810.99738439489	3810.99738439489	1	1	0			46		[M+H]+ 597.293	46	Found [M+H]+/[M-H]-
-M598T3177	598.5	598.5	598.5	3176.86596447828	3176.86596447828	3176.86596447828	1	1	0			801		[M+H]+ 597.493	801	Found [M+H]+/[M-H]-
+name	namecustom	mz	mzmin	mzmax	rt	rtmin	rtmax	npeaks	KO	WT	isotopes	adduct	pcgroup	isotopes.1	adduct.1	pcgroup.1	neg. Mode
+M208T3291	M207.8T54.9	207.800003051758	207.800003051758	207.800003051758	54.8548661171705	54.8548661171705	54.8548661171705	1	1	0			2102		[M+H]+ 206.793	2102	Found [M+H]+/[M-H]-
+M210T3110	M210.2T51.8	210.199996948242	210.199996948242	210.199996948242	51.8351814475023	51.8351814475023	51.8351814475023	1	1	0			5340		[M+H]+ 209.193	5340	Found [M+H]+/[M-H]-
+M228T3846	M228.2T64.1	228.199996948242	228.199996948242	228.199996948242	64.1004477702677	64.0786131787182	64.1222823618172	2	1	1		[M+H-C6H8O6]+ 403.216 [M+2H-NH3]2+ 471.41	21		[M+H]+ 227.193	21	Found [M+H]+/[M-H]-
+M235T3976	M234.9T66.3	234.900009155273	234.900009155273	234.900009155273	66.2671959497008	66.2671959497008	66.2671959497008	1	0	1			2000		[M+H]+ 233.893	2000	Found [M+H]+/[M-H]-
+M236T3873	M236.2T64.5	236.199996948242	236.199996948242	236.199996948242	64.5417430278147	64.5417430278147	64.5417430278147	1	0	1			2733		[M+H]+ 235.193	2733	Found [M+H]+/[M-H]-
+M238T2755	M238.2T45.9	238.199996948242	238.199996948242	238.199996948242	45.9108043388673	45.9108043388673	45.9108043388673	1	0	1			4595		[M+H]+ 237.193	4595	Found [M+H]+/[M-H]-
+M239T4130	M239T68.8	239	239	239	68.8389740321595	68.8389740321595	68.8389740321595	1	0	1			1473		[M+H]+ 237.993	1473	Found [M+H]+/[M-H]-
+M250T4052	M250.2T67.5	250.199996948242	250.199996948242	250.199996948242	67.5268251014762	67.5268251014762	67.5268251014762	1	1	0			77		[M+H]+ 249.193	77	Found [M+H]+/[M-H]-
+M258T3448	M258.2T57.5	258.200012207031	258.200012207031	258.200012207031	57.4710855711383	57.4427244480407	57.4994466942358	2	1	1			2922		[M+H]+ 257.193	2922	Found [M+H]+/[M-H]-
+M261T2686	M261.2T44.8	261.200012207031	261.200012207031	261.200012207031	44.7613459684195	44.7613459684195	44.7613459684195	1	0	1			640		[M+H]+ 260.193	640	Found [M+H]+/[M-H]-
+M266T3323	M266.4T55.4	266.399993896484	266.399993896484	266.399993896484	55.3795249542604	55.3795249542604	55.3795249542604	1	0	1			16		[M+H]+ 265.393	16	Found [M+H]+/[M-H]-
+M275T2920	M275.2T48.7	275.200012207031	275.200012207031	275.200012207031	48.671416116166	48.671416116166	48.671416116166	1	0	1			2868		[M+H]+ 274.193	2868	Found [M+H]+/[M-H]-
+M276T3867_1	M275.9T64.4_1	275.899993896484	275.899993896484	275.899993896484	64.4483155999427	64.4483155999427	64.4483155999427	1	1	0			21		[M+H]+ 274.893	21	Found [M+H]+/[M-H]-
+M276T2603	M276.2T43.4	276.200012207031	276.200012207031	276.200012207031	43.3808995766058	43.3808995766058	43.3808995766058	1	1	0			5243		[M+H]+ 275.193	5243	Found [M+H]+/[M-H]-
+M284T3653	M284.1T60.9	284.100006103516	284.100006103516	284.100006103516	60.8809514467087	60.8809514467087	60.8809514467087	1	1	0		[M+H-CH3]+ 298.114	47		[M+H]+ 283.093	47	Found [M+H]+/[M-H]-
+M287T4128	M287.1T68.8	287.100006103516	287.100006103516	287.100006103516	68.8074238019644	68.8074238019644	68.8074238019644	1	1	0			23		[M+H]+ 286.093	23	Found [M+H]+/[M-H]-
+M304T3912	M304T65.2	304	304	304	65.195563930308	65.195563930308	65.195563930308	1	0	1			4817		[M+H]+ 302.993	4817	Found [M+H]+/[M-H]-
+M304T2622	M304T43.7	304	304	304	43.697161463341	43.697161463341	43.697161463341	1	0	1			2642		[M+H]+ 302.993	2642	Found [M+H]+/[M-H]-
+M310T3484	M310.2T58.1	310.200012207031	310.200012207031	310.200012207031	58.0652451156923	58.0652451156923	58.0652451156923	1	1	0		[M+H-H20]+ 327.208	31		[M+H]+ 309.193	31	Found [M+H]+/[M-H]-
+M311T3667	M311.2T61.1	311.200012207031	311.200012207031	311.200012207031	61.1232252152794	61.1232252152794	61.1232252152794	1	1	0		[M+H]+ 310.189	2		[M+H]+ 310.189	2	Found [M+H]+/[M-H]-
+M317T4122	M317T68.7	317	317	317	68.7029543960126	68.7029543960126	68.7029543960126	1	1	0			1716		[M+H]+ 315.993	1716	Found [M+H]+/[M-H]-
+M319T3963	M319.3T66.1	319.300018310547	319.300018310547	319.300018310547	66.0540795330602	66.0540795330602	66.0540795330602	1	0	1			1982		[M+H]+ 318.293	1982	Found [M+H]+/[M-H]-
+M326T3910	M326.3T65.2	326.300018310547	326.300018310547	326.300018310547	65.1694320732506	65.1694320732506	65.1694320732506	1	0	1			4822		[M+H]+ 325.293	4822	Found [M+H]+/[M-H]-
+M329T3539	M329T59	329	329	329	58.976324193497	58.976324193497	58.976324193497	1	0	1			1952		[M+H]+ 327.993	1952	Found [M+H]+/[M-H]-
+M330T3500	M330.2T58.3	330.200012207031	330.200012207031	330.200012207031	58.3366734462018	58.279218107523	58.3941287848805	2	1	1		[2M+Na+K]2+ 299.215	76		[M+H]+ 329.193	76	Found [M+H]+/[M-H]-
+M333T3521	M333T58.7	333	333	333	58.6762856708046	58.6762856708046	58.6762856708046	1	0	1			368		[M+H]+ 331.993	368	Found [M+H]+/[M-H]-
+M341T3309	M341.2T55.1	341.200012207031	341.200012207031	341.200012207031	55.1430121663691	55.1430121663691	55.1430121663691	1	0	1			4		[M+H]+ 340.193	4	Found [M+H]+/[M-H]-
+M341T4172	M341.4T69.5	341.399993896484	341.399993896484	341.399993896484	69.5403852759756	69.5403852759756	69.5403852759756	1	1	0			4369		[M+H]+ 340.393	4369	Found [M+H]+/[M-H]-
+M342T3038	M342.3T50.6	342.300018310547	342.300018310547	342.300018310547	50.6358552925949	50.6358552925949	50.6358552925949	1	0	1			3220		[M+H]+ 341.293	3220	Found [M+H]+/[M-H]-
+M345T3788	M345T63.1	345	345	345	63.1344882463539	63.1344882463539	63.1344882463539	1	0	1			4445		[M+H]+ 343.993	4445	Found [M+H]+/[M-H]-
+M348T3493	M348.2T58.2	348.200012207031	348.200012207031	348.200012207031	58.2199122659174	58.1464333812605	58.2666138953485	3	1	2			31		[M+H]+ 347.193	31	Found [M+H]+/[M-H]-
+M349T4038	M348.9T67.3	348.899993896484	348.899993896484	348.899993896484	67.3077590567051	67.3077590567051	67.3077590567051	1	0	1			3765		[M+H]+ 347.893	3765	Found [M+H]+/[M-H]-
+M350T3215	M350T53.6	350	350	350	53.5773282247933	53.5773282247933	53.5773282247933	1	1	0			4315		[M+H]+ 348.993	4315	Found [M+H]+/[M-H]-
+M350T3484	M350.2T58.1	350.200012207031	350.200012207031	350.200012207031	58.0691763348732	58.0691763348732	58.0691763348732	1	0	1	[41][M]+	[M+Na]+ 327.208	31	[41][M]+	[M+H]+ 349.193	31	Found [M+H]+/[M-H]-
+M354T4176	M354.3T69.6	354.300018310547	354.300018310547	354.300018310547	69.6081394901155	69.6081394901155	69.6081394901155	1	0	1			4388		[M+H]+ 353.293	4388	Found [M+H]+/[M-H]-
+M361T3500	M361T58.3	361	361	361	58.3317289697945	58.3317289697945	58.3317289697945	1	1	0			3374		[M+H]+ 359.993	3374	Found [M+H]+/[M-H]-
+M362T3394	M362.3T56.6	362.300018310547	362.300018310547	362.300018310547	56.5744464204614	56.5744464204614	56.5744464204614	1	0	1			502		[M+H]+ 361.293	502	Found [M+H]+/[M-H]-
+M363T3890	M363T64.8	363	363	363	64.8295865475032	64.8295865475032	64.8295865475032	1	0	1			2235		[M+H]+ 361.993	2235	Found [M+H]+/[M-H]-
+M369T4287	M369.1T71.4	369.100006103516	369.100006103516	369.100006103516	71.4477203793839	71.4477203793839	71.4477203793839	1	1	0			6094		[M+H]+ 368.093	6094	Found [M+H]+/[M-H]-
+M371T4218	M371.3T70.3	371.300018310547	371.300018310547	371.300018310547	70.2994362565411	70.2994362565411	70.2994362565411	1	1	0			5327		[M+H]+ 370.293	5327	Found [M+H]+/[M-H]-
+M372T4221	M372.3T70.4	372.300018310547	372.300018310547	372.300018310547	70.3555724833019	70.3555724833019	70.3555724833019	1	0	1			5985		[M+H]+ 371.293	5985	Found [M+H]+/[M-H]-
+M375T2994	M375.2T49.9	375.200012207031	375.200012207031	375.200012207031	49.9011643160422	49.9011643160422	49.9011643160422	1	0	1			32		[M+H]+ 374.193	32	Found [M+H]+/[M-H]-
+M378T3345	M377.9T55.7	377.899993896484	377.899993896484	377.899993896484	55.7479583772851	55.7479583772851	55.7479583772851	1	1	0			802		[M+H]+ 376.893	802	Found [M+H]+/[M-H]-
+M396T4099	M396.3T68.3	396.300018310547	396.300018310547	396.300018310547	68.3110839411979	68.3110839411979	68.3110839411979	2	1	0			150		[M+H]+ 395.293	150	Found [M+H]+/[M-H]-
+M399T3288	M399T54.8	399	399	399	54.7925197533959	54.7925197533959	54.7925197533959	1	0	1			2111		[M+H]+ 397.993	2111	Found [M+H]+/[M-H]-
+M404T2691	M404.1T44.8	404.100006103516	404.100006103516	404.100006103516	44.8428547027469	44.8428547027469	44.8428547027469	1	0	1		[M+H-H20]+ 421.11	6		[M+H]+ 403.093	6	Found [M+H]+/[M-H]-
+M406T3575	M406T59.6	406	406	406	59.5771690581316	59.5771690581316	59.5771690581316	1	0	1			1668		[M+H]+ 404.993	1668	Found [M+H]+/[M-H]-
+M408T3956	M408.3T65.9	408.300018310547	408.300018310547	408.300018310547	65.9308188818822	65.9308188818822	65.9308188818822	1	1	0			5459		[M+H]+ 407.293	5459	Found [M+H]+/[M-H]-
+M413T4059	M413T67.7	413	413	413	67.65694615063	67.65694615063	67.65694615063	1	0	1			4700		[M+H]+ 411.993	4700	Found [M+H]+/[M-H]-
+M415T3626	M415.2T60.4	415.200012207031	415.200012207031	415.200012207031	60.4314954588001	60.4314954588001	60.4314954588001	1	1	0			26		[M+H]+ 414.193	26	Found [M+H]+/[M-H]-
+M418T3317	M418.4T55.3	418.399993896484	418.399993896484	418.399993896484	55.281978863019	55.281978863019	55.281978863019	1	0	1			539		[M+H]+ 417.393	539	Found [M+H]+/[M-H]-
+M420T4187	M420.4T69.8	420.399993896484	420.399993896484	420.399993896484	69.7759636871153	69.7759636871153	69.7759636871153	1	1	0			6064		[M+H]+ 419.393	6064	Found [M+H]+/[M-H]-
+M424T3310	M424.4T55.2	424.399993896484	424.399993896484	424.399993896484	55.1692582034151	55.1692582034151	55.1692582034151	1	0	1			541		[M+H]+ 423.393	541	Found [M+H]+/[M-H]-
+M440T4055	M440.3T67.6	440.300018310547	440.300018310547	440.300018310547	67.5889041135209	67.5725438039712	67.6052644230706	2	2	0		[M+H]+ 439.295	77		[M+H]+ 439.295	77	Found [M+H]+/[M-H]-
+M441T4111	M441.1T68.5	441.100006103516	441.100006103516	441.100006103516	68.5236887576381	68.5236887576381	68.5236887576381	1	0	1		[M+K]+ 402.132	43		[M+H]+ 440.093	43	Found [M+H]+/[M-H]-
+M441T4127_2	M441.1T68.8_2	441.100006103516	441.100006103516	441.100006103516	68.7816594215337	68.7816594215337	68.7816594215337	1	0	1		[M+Na]+ 418.1	23		[M+H]+ 440.093	23	Found [M+H]+/[M-H]-
+M443T3159	M443T52.6	443	443	443	52.6419263083506	52.6419263083506	52.6419263083506	1	1	0			838		[M+H]+ 441.993	838	Found [M+H]+/[M-H]-
+M445T4143	M444.9T69	444.899993896484	444.899993896484	444.899993896484	69.0492204926483	69.0492204926483	69.0492204926483	1	0	1			4236		[M+H]+ 443.893	4236	Found [M+H]+/[M-H]-
+M446T2893	M446.2T48.2	446.200012207031	446.200012207031	446.200012207031	48.2097870775546	48.2097870775546	48.2097870775546	1	1	0		[M+Na]+ 423.211	95		[M+H]+ 445.193	95	Found [M+H]+/[M-H]-
+M447T4144	M446.9T69.1	446.899993896484	446.899993896484	446.899993896484	69.0660535572266	69.0660535572266	69.0660535572266	1	0	1			5839		[M+H]+ 445.893	5839	Found [M+H]+/[M-H]-
+M447T4119	M447.1T68.7	447.100006103516	447.100006103516	447.100006103516	68.6550448101035	68.6550448101035	68.6550448101035	1	0	1			120		[M+H]+ 446.093	120	Found [M+H]+/[M-H]-
+M453T3745	M453.1T62.4	453.100006103516	453.100006103516	453.100006103516	62.4248546431982	62.4248546431982	62.4248546431982	1	1	0		[M+H]+ 452.1	14		[M+H]+ 452.1	14	Found [M+H]+/[M-H]-
+M461T3139	M461.1T52.3	461.100006103516	461.100006103516	461.100006103516	52.3216964859304	52.3216964859304	52.3216964859304	1	0	1		[2M+Na+K-H]+ 200.089	67		[M+H]+ 460.093	67	Found [M+H]+/[M-H]-
+M462T2597	M461.9T43.3	461.899993896484	461.899993896484	461.899993896484	43.2765662432725	43.2765662432725	43.2765662432725	1	1	0			2880		[M+H]+ 460.893	2880	Found [M+H]+/[M-H]-
+M465T4110	M465.1T68.5	465.100006103516	465.100006103516	465.100006103516	68.4974193491718	68.4456488229912	68.4974193491718	3	0	2		[M+H-CO]+ 492.092	43		[M+H]+ 464.093	43	Found [M+H]+/[M-H]-
+M469T4110	M469T68.5	469	469	469	68.4973340588448	68.4973340588448	68.4973340588448	1	0	1			43		[M+H]+ 467.993	43	Found [M+H]+/[M-H]-
+M482T3312	M482.2T55.2	482.200012207031	482.200012207031	482.200012207031	55.1974320877231	55.1692582034151	55.3334338236129	3	1	2			4		[M+H]+ 481.193	4	Found [M+H]+/[M-H]-
+M486T3726_2	M486T62.1_2	486	486	486	62.0950630281632	62.0578316825142	62.1322943738121	2	1	1			4683		[M+H]+ 484.993	4683	Found [M+H]+/[M-H]-
+M486T3654	M486.1T60.9	486.100006103516	486.100006103516	486.100006103516	60.9050570460149	60.9050570460149	60.9050570460149	1	0	1			2410		[M+H]+ 485.093	2410	Found [M+H]+/[M-H]-
+M493T2872	M493T47.9	493	493	493	47.8738616553085	47.8738616553085	47.8738616553085	1	0	1			4766		[M+H]+ 491.993	4766	Found [M+H]+/[M-H]-
+M494T3069	M494.3T51.2	494.300018310547	494.300018310547	494.300018310547	51.1518080429633	51.1518080429633	51.1518080429633	1	1	0			48		[M+H]+ 493.293	48	Found [M+H]+/[M-H]-
+M495T3465	M495T57.8	495	495	495	57.7519773435038	57.7519773435038	57.7519773435038	1	1	0			1283		[M+H]+ 493.993	1283	Found [M+H]+/[M-H]-
+M518T3975	M518T66.3	518	518	518	66.2511083848454	66.2511083848454	66.2511083848454	1	1	0			2059		[M+H]+ 516.993	2059	Found [M+H]+/[M-H]-
+M520T4132	M520.4T68.9	520.400024414062	520.400024414062	520.400024414062	68.85862190811	68.85862190811	68.85862190811	1	1	0		[M+H]+ 519.397	23		[M+H]+ 519.397	23	Found [M+H]+/[M-H]-
+M522T2525	M522T42.1	522	522	522	42.0767662432725	42.0767662432725	42.0767662432725	1	1	0		[M+H]+ 520.991	5042		[M+H]+ 520.991	5042	Found [M+H]+/[M-H]-
+M528T4044	M528.3T67.4	528.299987792969	528.299987792969	528.299987792969	67.3942464348878	67.3942464348878	67.3942464348878	1	0	1			106		[M+H]+ 527.293	106	Found [M+H]+/[M-H]-
+M534T2893_1	M534T48.2_1	534	534	534	48.2239900144358	48.2239900144358	48.2239900144358	1	0	1			95		[M+H]+ 532.993	95	Found [M+H]+/[M-H]-
+M534T3169	M534.3T52.8	534.299987792969	534.299987792969	534.299987792969	52.820858081241	52.820858081241	52.820858081241	1	1	0			791		[M+H]+ 533.293	791	Found [M+H]+/[M-H]-
+M539T2671	M538.9T44.5	538.900024414062	538.900024414062	538.900024414062	44.5168831358622	44.5168831358622	44.5168831358622	1	1	0			4057		[M+H]+ 537.893	4057	Found [M+H]+/[M-H]-
+M541T2916	M541.2T48.6	541.200012207031	541.200012207031	541.200012207031	48.5994804250865	48.5994804250865	48.5994804250865	1	1	0			56		[M+H]+ 540.193	56	Found [M+H]+/[M-H]-
+M542T4146	M542.5T69.1	542.5	542.5	542.5	69.0919049656436	69.0919049656436	69.0919049656436	1	0	1			219		[M+H]+ 541.493	219	Found [M+H]+/[M-H]-
+M545T3858	M545T64.3	545	545	545	64.2965273024001	64.2965273024001	64.2965273024001	1	1	0			1418		[M+H]+ 543.993	1418	Found [M+H]+/[M-H]-
+M546T3196	M546.2T53.3	546.200012207031	546.200012207031	546.200012207031	53.2672162474893	53.2335336651218	53.3008988298567	2	1	1		[M+H]+ 545.2	30		[M+H]+ 545.2	30	Found [M+H]+/[M-H]-
+M546T3373	M546.3T56.2	546.299987792969	546.299987792969	546.299987792969	56.2084220817844	56.2084220817844	56.2084220817844	1	0	1			1591		[M+H]+ 545.293	1591	Found [M+H]+/[M-H]-
+M547T2882	M546.9T48	546.900024414062	546.900024414062	546.900024414062	48.0254466269442	48.0254466269442	48.0254466269442	1	1	0			131		[M+H]+ 545.893	131	Found [M+H]+/[M-H]-
+M547T2930	M546.9T48.8	546.900024414062	546.900024414062	546.900024414062	48.8327454465577	48.8327454465577	48.8327454465577	1	0	1			3632		[M+H]+ 545.893	3632	Found [M+H]+/[M-H]-
+M548T4180_2	M548.1T69.7_2	548.100036621094	548.100036621094	548.100036621094	69.6686714714612	69.6686714714612	69.6686714714612	1	1	0			6024		[M+H]+ 547.093	6024	Found [M+H]+/[M-H]-
+M551T3507	M551.1T58.5	551.100036621094	551.100036621094	551.100036621094	58.452956891696	58.452956891696	58.452956891696	1	1	0			76		[M+H]+ 550.093	76	Found [M+H]+/[M-H]-
+M552T3631	M552.3T60.5	552.299987792969	552.299987792969	552.299987792969	60.5122878429917	60.5122878429917	60.5122878429917	1	0	1			2359		[M+H]+ 551.293	2359	Found [M+H]+/[M-H]-
+M552T3836	M552.4T63.9	552.400024414062	552.400024414062	552.400024414062	63.9252990982341	63.9252990982341	63.9252990982341	1	0	1			3360		[M+H]+ 551.393	3360	Found [M+H]+/[M-H]-
+M552T2806	M552.5T46.8	552.5	552.5	552.5	46.7628430062386	46.7628430062386	46.7628430062386	1	0	1			154		[M+H]+ 551.493	154	Found [M+H]+/[M-H]-
+M555T2628	M554.8T43.8	554.799987792969	554.799987792969	554.799987792969	43.800633744761	43.800633744761	43.800633744761	1	1	0			2677		[M+H]+ 553.793	2677	Found [M+H]+/[M-H]-
+M560T3524	M560.1T58.7	560.100036621094	560.100036621094	560.100036621094	58.7409233247563	58.7409233247563	58.7409233247563	1	1	0			363		[M+H]+ 559.093	363	Found [M+H]+/[M-H]-
+M561T3500	M560.9T58.3	560.900024414062	560.900024414062	560.900024414062	58.3265122292451	58.3265122292451	58.3265122292451	1	0	1			3396		[M+H]+ 559.893	3396	Found [M+H]+/[M-H]-
+M566T2712	M566T45.2	566	566	566	45.2077855778326	45.2077855778326	45.2077855778326	1	1	0			2531		[M+H]+ 564.993	2531	Found [M+H]+/[M-H]-
+M567T2630	M566.8T43.8	566.799987792969	566.799987792969	566.799987792969	43.8272182117096	43.8272182117096	43.8272182117096	1	1	0			2685		[M+H]+ 565.793	2685	Found [M+H]+/[M-H]-
+M570T3689	M570.5T61.5	570.5	570.5	570.5	61.4882293714724	61.4882293714724	61.4882293714724	1	0	1			617		[M+H]+ 569.493	617	Found [M+H]+/[M-H]-
+M572T2893	M571.6T48.2	571.600036621094	571.600036621094	571.600036621094	48.2097870775546	48.2097870775546	48.2097870775546	1	1	0			95		[M+H]+ 570.593	95	Found [M+H]+/[M-H]-
+M574T2913	M573.7T48.5	573.700012207031	573.700012207031	573.700012207031	48.5481814919484	48.5481814919484	48.5481814919484	1	1	0		[M+H]+ 572.692	56		[M+H]+ 572.692	56	Found [M+H]+/[M-H]-
+M575T2527	M574.7T42.1	574.700012207031	574.700012207031	574.700012207031	42.1194514146668	42.1194514146668	42.1194514146668	1	0	1			5962		[M+H]+ 573.693	5962	Found [M+H]+/[M-H]-
+M578T2852	M578.3T47.5	578.299987792969	578.299987792969	578.299987792969	47.5401992175178	47.4984694680838	47.5819289669518	2	1	1			111		[M+H]+ 577.293	111	Found [M+H]+/[M-H]-
+M578T3834	M578.4T63.9	578.400024414062	578.400024414062	578.400024414062	63.903380773541	63.903380773541	63.903380773541	1	1	0			3346		[M+H]+ 577.393	3346	Found [M+H]+/[M-H]-
+M580T3296	M579.5T54.9	579.5	579.5	579.5	54.9340092491062	54.9340092491062	54.9340092491062	1	1	0			2610		[M+H]+ 578.493	2610	Found [M+H]+/[M-H]-
+M582T3848_2	M582.5T64.1_2	582.5	582.5	582.5	64.1317421799532	64.1317421799532	64.1317421799532	1	1	0		[M+H]+ 581.493	21		[M+H]+ 581.493	21	Found [M+H]+/[M-H]-
+M583T3496	M583T58.3	583	583	583	58.2713130322852	58.2713130322852	58.2713130322852	1	1	0			3516		[M+H]+ 581.993	3516	Found [M+H]+/[M-H]-
+M583T2581	M583.4T43	583.400024414062	583.400024414062	583.400024414062	43.0206214460137	43.0206214460137	43.0206214460137	1	1	0			5692		[M+H]+ 582.393	5692	Found [M+H]+/[M-H]-
+M584T2539	M584.4T42.3	584.400024414062	584.400024414062	584.400024414062	42.3115162432725	42.3115162432725	42.3115162432725	1	1	0			5558		[M+H]+ 583.393	5558	Found [M+H]+/[M-H]-
+M586T2762	M585.9T46	585.900024414062	585.900024414062	585.900024414062	46.0265819700675	46.0265819700675	46.0265819700675	1	1	0			94		[M+H]+ 584.893	94	Found [M+H]+/[M-H]-
+M592T4176	M591.5T69.6	591.5	591.5	591.5	69.5927325930257	69.5927325930257	69.5927325930257	1	1	0			115		[M+H]+ 590.493	115	Found [M+H]+/[M-H]-
+M593T3448	M593.3T57.5	593.299987792969	593.299987792969	593.299987792969	57.4737949279535	57.4737949279535	57.4737949279535	1	0	1			2939		[M+H]+ 592.293	2939	Found [M+H]+/[M-H]-
+M596T4172	M596.1T69.5	596.100036621094	596.100036621094	596.100036621094	69.5403852759756	69.5403852759756	69.5403852759756	1	1	0			4425		[M+H]+ 595.093	4425	Found [M+H]+/[M-H]-
+M597T2724	M596.8T45.4	596.799987792969	596.799987792969	596.799987792969	45.3955462015806	45.3955462015806	45.3955462015806	1	0	1			2540		[M+H]+ 595.793	2540	Found [M+H]+/[M-H]-
+M598T2738	M597.8T45.6	597.799987792969	597.799987792969	597.799987792969	45.628120700158	45.628120700158	45.628120700158	1	0	1			4444		[M+H]+ 596.793	4444	Found [M+H]+/[M-H]-
+M598T3811	M598.3T63.5	598.299987792969	598.299987792969	598.299987792969	63.5166230732481	63.5166230732481	63.5166230732481	1	1	0			46		[M+H]+ 597.293	46	Found [M+H]+/[M-H]-
+M598T3177	M598.5T52.9	598.5	598.5	598.5	52.947766074638	52.947766074638	52.947766074638	1	1	0			801		[M+H]+ 597.493	801	Found [M+H]+/[M-H]-
--- a/tool_dependencies.xml	Wed Feb 01 12:24:21 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<tool_dependency>
-    <package name="R" version="3.1.2">
-        <repository changeset_revision="4d2fd1413b56" name="package_r_3_1_2" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
-    </package>
-    <package name="bioconductor-camera" version="1.26.0">
-        <repository changeset_revision="fd308c76626b" name="package_bioconductor_camera_1_26_0" owner="lecorguille" toolshed="https://toolshed.g2.bx.psu.edu" />
-    </package>
-    <package name="graphicsmagick" version="1.3.20">
-        <repository changeset_revision="f2855f4cbc8f" name="package_graphicsmagick_1_3_20" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
-    </package>
-</tool_dependency>