changeset 18:8e740205c907 draft

planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 717c02f887ce343ca55f862c8020aaf49f5581d8
author lecorguille
date Wed, 08 Feb 2017 05:27:04 -0500
parents 3bd1e74d4abc
children 2faecb1270fe
files abims_xcms_retcor.xml lib.r macros.xml xcms.r
diffstat 4 files changed, 20 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/abims_xcms_retcor.xml	Wed Feb 08 04:36:13 2017 -0500
+++ b/abims_xcms_retcor.xml	Wed Feb 08 05:27:04 2017 -0500
@@ -43,7 +43,7 @@
         <conditional name="methods">
             <param name="method" type="select" label="Method to use for retention time correction" help="[method] See the help section below" >
                 <option value="obiwarp" >obiwarp</option>
-                <option value="peakgroups" selected="peakgroups">peakgroups</option>
+                <option value="peakgroups" selected="true">peakgroups</option>
             </param>
             <when value="obiwarp">
                 <param name="profStep" type="float" value="1" label="Step size (in m/z)" help="[profStep] to use for profile generation from the raw data files" />
--- a/lib.r	Wed Feb 08 04:36:13 2017 -0500
+++ b/lib.r	Wed Feb 08 05:27:04 2017 -0500
@@ -27,28 +27,32 @@
 
 #@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)
+formatIonIdentifiers <- function(dataData, numDigitsRT=0, numDigitsMZ=0) {
+    return(make.unique(paste0("M",round(dataData[,"mz"],numDigitsMZ),"T",round(dataData[,"rt"],numDigitsRT))))
 }
 
 #@author G. Le Corguille
 # value: intensity values to be used into, maxo or intb
 getPeaklistW4M <- function(xset, intval="into",convertRTMinute=F,numDigitsMZ=4,numDigitsRT=0,variableMetadataOutput,dataMatrixOutput) {
-    variableMetadata_dataMatrix = peakTable(xset, method="medret", value=intval)
-    variableMetadata_dataMatrix = cbind(name=groupnames(xset),variableMetadata_dataMatrix)
+    groups <- xset@groups
+    values <- groupval(xset, "medret", value=intval)
 
-    dataMatrix = variableMetadata_dataMatrix[,(make.names(colnames(variableMetadata_dataMatrix)) %in% c("name", make.names(sampnames(xset))))]
+    # renamming of the column rtmed to rt to fit with camera peaklist function output
+    colnames(groups)[colnames(groups)=="rtmed"] <- "rt"
+    colnames(groups)[colnames(groups)=="mzmed"] <- "mz"
+
+    ids <- formatIonIdentifiers(groups, numDigitsRT=numDigitsRT, numDigitsMZ=numDigitsMZ)
+    groups = RTSecondToMinute(groups, convertRTMinute)
 
-    variableMetadata = variableMetadata_dataMatrix[,!(make.names(colnames(variableMetadata_dataMatrix)) %in% c(make.names(sampnames(xset))))]
-    variableMetadata = RTSecondToMinute(variableMetadata, convertRTMinute)
-    variableMetadata = formatIonIdentifiers(variableMetadata, numDigitsRT=numDigitsRT, numDigitsMZ=numDigitsMZ)
+    rownames(groups) = ids
+    rownames(values) = ids
 
-    write.table(variableMetadata, file=variableMetadataOutput,sep="\t",quote=F,row.names=F)
-    write.table(dataMatrix, file=dataMatrixOutput,sep="\t",quote=F,row.names=F)
+    #@TODO: add "name" as the first column name
+    #colnames(groups)[1] = "name"
+    #colnames(values)[1] = "name"
+
+    write.table(groups, file=variableMetadataOutput,sep="\t",quote=F,row.names = T,col.names = NA)
+    write.table(values, file=dataMatrixOutput,sep="\t",quote=F,row.names = T,col.names = NA)
 }
 
 #@author Y. Guitton
--- a/macros.xml	Wed Feb 08 04:36:13 2017 -0500
+++ b/macros.xml	Wed Feb 08 05:27:04 2017 -0500
@@ -70,42 +70,7 @@
         </conditional>
     </xml>
 
-    <token name="@COMMAND_PEAKLIST@">
-        #if $peaklist.peaklistBool
-            variableMetadataOutput $variableMetadata
-            dataMatrixOutput $dataMatrix
-            convertRTMinute $peaklist.convertRTMinute
-            numDigitsMZ $peaklist.numDigitsMZ
-            numDigitsRT $peaklist.numDigitsRT
-            intval $peaklist.intval
-        #end if
-    </token>
 
-    <xml name="input_peaklist">
-        <conditional name="peaklist">
-            <param name="peaklistBool" type="boolean" label="Get a Peak List" />
-            <when value="true">
-              <param name="convertRTMinute" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Convert retention time (seconds) into minutes" help="Convert the columns rtmed, rtmin and rtmax into minutes"/>
-              <param name="numDigitsMZ" type="integer" value="4" label="Number of decimal places for mass values reported in ions' identifiers." help="A minimum of 4 decimal places is recommended. Useful to avoid duplicates within identifiers" />
-              <param name="numDigitsRT" type="integer" value="0" label="Number of decimal places for retention time values reported in ions' identifiers." help="Useful to avoid duplicates within identifiers" />
-              <param name="intval" type="select" label="Reported intensity values" help="[intval] See the help section below">
-                  <option value="into" selected="true">into</option>
-                  <option value="maxo">maxo</option>
-                  <option value="intb">intb</option>
-              </param>
-            </when>
-            <when value="false" />
-        </conditional>
-    </xml>
-
-    <xml name="output_peaklist">
-        <data name="variableMetadata" format="tabular" label="${image.name[:-6]}.fillPeaks.variableMetadata.tsv">
-            <filter>(peaklist['peaklistBool'])</filter>
-        </data>
-        <data name="dataMatrix" format="tabular" label="${image.name[:-6]}.fillPeaks.dataMatrix.tsv" >
-            <filter>(peaklist['peaklistBool'])</filter>
-        </data>
-    </xml>
 
     <token name="@HELP_AUTHORS@">
 .. class:: infomark
--- a/xcms.r	Wed Feb 08 04:36:13 2017 -0500
+++ b/xcms.r	Wed Feb 08 05:27:04 2017 -0500
@@ -252,7 +252,7 @@
     getBPCs(xcmsSet=xset,rt="corrected",pdfname=bicspdf)
 }
 
-if ((thefunction == "group" || thefunction == "fillPeaks") && exists("intval")) {
+if (thefunction == "fillPeaks" && exists("intval")) {
     getPeaklistW4M(xset,intval,convertRTMinute,numDigitsMZ,numDigitsRT,variableMetadataOutput,dataMatrixOutput)
 }