changeset 4:d61f6ceef5d6 draft

planemo upload for repository https://github.com/workflow4metabolomics/nmr_bucketing commit a0155b12acca444f72ff761fcce740e71be28a6d-dirty
author lecorguille
date Tue, 22 Nov 2016 05:22:03 -0500
parents 58679e85745f
children 475d219739ff
files NmrBucketing_script.R NmrBucketing_wrapper.R NmrBucketing_xml.xml README.rst
diffstat 4 files changed, 128 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/NmrBucketing_script.R	Fri Aug 12 05:47:27 2016 -0400
+++ b/NmrBucketing_script.R	Tue Nov 22 05:22:03 2016 -0500
@@ -5,11 +5,15 @@
 # Starting date : 20-10-2014                                                                   #
 # Version 1 : 18-12-2014                                                                       #
 # Version 2 : 07-01-2015                                                                       #
+# Version 3 : 24-10-2016                                                                       #
 #                                                                                              #
-# Input files : files in included in user-defined directory                                    #
+# Input files : modification on october 2016                                                   #
+#   - Raw bruker files included in user-defined fileName                                      #
+#   - Preprocessed files (alignment, ...) included in p x n dataframe                          #
 ################################################################################################
-NmrBucketing <- function(directory,leftBorder = 10.0,rightBorder = 0.5,bucketSize = 0.04,exclusionZones,exclusionZonesBorders=NULL,
-                         graph=c("None","Overlay","One_per_individual"),nomFichier,savLog.txtC = NULL) 
+NmrBucketing <- function(fileType,fileName,leftBorder = 10.0,rightBorder = 0.5,bucketSize = 0.04,exclusionZones,
+                         exclusionZonesBorders=NULL,graph=c("None","Overlay","One_per_individual"),
+                         nomFichier,savLog.txtC = NULL) 
 {
   ## Option
   ##---------------
@@ -131,13 +135,7 @@
     return(f.bucket)
   }
   
-    
-  # File names
-  FileNames <- list.files(directory)
-  n <- length(FileNames)
-  
   # Exclusion zones
-##  if (exclusionZones == "yes")
   if (!is.null(exclusionZonesBorders))
   {
     exclusion.zone.m <- matrix(exclusionZonesBorders[[1]],nrow=1)
@@ -145,40 +143,78 @@
       for (k in 2:length(exclusionZonesBorders))
         exclusion.zone.m <- rbind(exclusion.zone.m,exclusionZonesBorders[[k]])
   }
-
-  # Reading and Bucketing
-  directory <- paste(directory,"/",sep="")
-
-  i <- 1
-  while (i <= n)
+  
+  ## CHANGES
+    ## Inputs from zip or library (raw files)
+  if (fileType == "zip")
   {
-    # File reading
-    SampleDir <- paste(directory,FileNames[i],"/1/",sep="")
-    setwd(SampleDir)
-    DataDir <- "pdata/1"
-
-    rawSpectrum <- NmRBrucker_read(DataDir,rawSpectrum)
-
-    orderedSpectrum <- rawSpectrum[order(rawSpectrum[,1],decreasing=T), ]
+      # File names
+    FileNames <- list.files(fileName)
+    n <- length(FileNames)
     
-    # Removal of chemical shifts > leftBorder or < rightBorder boundaries
-    truncatedSpectrum <- orderedSpectrum[orderedSpectrum[,1] < leftBorder & orderedSpectrum[,1] > rightBorder, ]
-    truncatedSpectrum[,1] <- round(truncatedSpectrum[,1],3)
-    
-    # Bucketing
-    spectrum.bucket <- NmrBrucker_bucket(truncatedSpectrum)
+    # Reading and Bucketing
+    fileName <- paste(fileName,"/",sep="")
+  
+    i <- 1
+    while (i <= n)
+    {
+      # File reading
+      SampleDir <- paste(fileName,FileNames[i],"/1/",sep="")
+      setwd(SampleDir)
+      DataDir <- "pdata/1"
+  
+      rawSpectrum <- NmRBrucker_read(DataDir,rawSpectrum)
+  
+      orderedSpectrum <- rawSpectrum[order(rawSpectrum[,1],decreasing=T), ]
+      
+      # Removal of chemical shifts > leftBorder or < rightBorder boundaries
+      truncatedSpectrum <- orderedSpectrum[orderedSpectrum[,1] < leftBorder & orderedSpectrum[,1] > rightBorder, ]
+      truncatedSpectrum[,1] <- round(truncatedSpectrum[,1],3)
+      
+      # Bucketing
+      spectrum.bucket <- NmrBrucker_bucket(truncatedSpectrum)
+      
+      # spectrum Concatenation
+      if (i == 1)
+        bucketedSpectra <- spectrum.bucket
+      if (i > 1)
+        bucketedSpectra <- cbind(bucketedSpectra,spectrum.bucket[,2])
+      colnames(bucketedSpectra)[i+1] <- FileNames[i]
+      
+      # Next sample
+      rm(spectrum.bucket)
+      i <- i +1
+    }
+    # Directory
+    cd(fileName)  
+  }
+  
+  ## Inputs from dataset (preprocessed files)
+  if (fileType=="tsv")
+  {
+    FileNames <- colnames(fileName)
+    n <- length(FileNames)
     
-    # spectrum Concatenation
-    if (i == 1)
-      bucketedSpectra <- spectrum.bucket
-    if (i > 1)
-      bucketedSpectra <- cbind(bucketedSpectra,spectrum.bucket[,2])
-    colnames(bucketedSpectra)[i+1] <- FileNames[i]
-    
-    # Next sample
-    rm(spectrum.bucket)
-    i <- i +1
+    for (i in 1:ncol(fileName))
+    {
+      orderedSpectrum <- cbind(as.numeric(rownames(fileName)),fileName[,i])
+      orderedSpectrum <- orderedSpectrum[order(orderedSpectrum[,1],decreasing=T), ]
+      
+      truncatedSpectrum <- orderedSpectrum[orderedSpectrum[,1] < leftBorder & orderedSpectrum[,1] > rightBorder, ]
+      truncatedSpectrum[,1] <- round(truncatedSpectrum[,1],3)
+      
+      # Bucketing
+      spectrum.bucket <- NmrBrucker_bucket(truncatedSpectrum)
+      
+      # spectrum Concatenation
+      if (i == 1)
+        bucketedSpectra <- spectrum.bucket
+      if (i > 1)
+        bucketedSpectra <- cbind(bucketedSpectra,spectrum.bucket[,2])
+      colnames(bucketedSpectra)[i+1] <- colnames(fileName)[i]
+    }
   }
+  
   identifiants <- gsub("([- , * { } | \\[ ])","_",colnames(bucketedSpectra)[-1])
   colnames(bucketedSpectra) <- c(colnames(bucketedSpectra)[1],identifiants)
 
@@ -195,9 +231,6 @@
   rownames(variableMetadata) <- rownames(bucketedSpectra)
   colnames(variableMetadata) <- "VariableOrder"
 
-  # Directory
-  cd(directory)  
-  
   # Bucketed spectra graph
   if (graph != "None")
   {
--- a/NmrBucketing_wrapper.R	Fri Aug 12 05:47:27 2016 -0400
+++ b/NmrBucketing_wrapper.R	Tue Nov 22 05:22:03 2016 -0500
@@ -77,18 +77,23 @@
 ## Parameters Loading
 ##-------------------
   # Inputs
-if (!is.null(argLs[["zipfile"]])){
-	zipfile= argLs[["zipfile"]]
-	directory=unzip(zipfile, list=F)
-	directory=paste(getwd(),strsplit(directory[1],"/")[[1]][2],sep="/")
-} else if (!is.null(argLs[["library"]])){
-	directory=argLs[["library"]]
-    	if(!file.exists(directory)){
-		error_message=paste("Cannot access the directory :",directory,".Please verify if the directory exists or not.")
-		print(error_message)
-		stop(error_message)
-	}
-}
+if (!is.null(argLs[["zipfile"]])){
+	fileType="zip"
+	zipfile= argLs[["zipfile"]]
+	directory=unzip(zipfile, list=F)
+	directory=paste(getwd(),strsplit(directory[1],"/")[[1]][2],sep="/")
+} else if (!is.null(argLs[["library"]])){
+	fileType="zip"
+	directory=argLs[["library"]]
+    	if(!file.exists(directory)){
+		error_message=paste("Cannot access the directory :",directory,".Please verify if the directory exists or not.")
+		print(error_message)
+		stop(error_message)
+	}
+} else if (!is.null(argLs[["tsvfile"]])){
+	fileType="tsv"
+	directory <- read.table(argLs[["tsvfile"]],check.names=FALSE,header=TRUE,sep="\t")
+}
 
 leftBorder <- argLs[["left_border"]]
 rightBorder <- argLs[["right_border"]]
@@ -111,7 +116,7 @@
 dataMatrixOut <- argLs[["dataMatrixOut"]]
 sampleMetadataOut <- argLs[["sampleOut"]]
 variableMetadataOut <- argLs[["variableOut"]]
-log <- argLs[["logOut"]]
+logFile <- argLs[["logOut"]]
 
 ## Checking arguments
 ##-------------------
@@ -123,7 +128,9 @@
   
 ## Computation
 ##------------
-outputs <- NmrBucketing(directory,leftBorder,rightBorder,bucketSize,exclusionZones,exclusionZonesBorders,graphique,nomGraphe,log)
+outputs <- NmrBucketing(fileType=fileType, fileName=directory, leftBorder=leftBorder, rightBorder=rightBorder, bucketSize=bucketSize, 
+						exclusionZones=exclusionZones, exclusionZonesBorders=exclusionZonesBorders, graph=graphique, nomFichier=nomGraphe, 
+						savLog.txtC=logFile)
 data_bucket <- outputs[[1]]
 data_sample <- outputs[[2]]
 data_variable <- outputs[[3]]
--- a/NmrBucketing_xml.xml	Fri Aug 12 05:47:27 2016 -0400
+++ b/NmrBucketing_xml.xml	Tue Nov 22 05:22:03 2016 -0500
@@ -1,9 +1,8 @@
-<tool id="NmrBucketing" name="NMR_Bucketing" version="1.0.2">
+<tool id="NmrBucketing" name="NMR_Bucketing" version="1.0.3">
 
     <description> Bucketing and integration of NMR Bruker raw data</description>
 
     <requirements>
-        <requirement type="package" version="3.1.2">R</requirement>
 	    <requirement type="package" version="1.1_4">r-batch</requirement>
 	    <requirement type="package" version="1.8.8">r-pracma</requirement>
     </requirements>
@@ -13,12 +12,14 @@
     </stdio>
 
     <command>
-        Rscript $__tool_directory__/NmrBucketing_wrapper.R
+        Rscript '$__tool_directory__/NmrBucketing_wrapper.R'
 
         #if $inputs.input == "lib":
-            library $__app__.config.user_library_import_dir/$__user_email__/$inputs.library
+            library '$__app__.config.user_library_import_dir/$__user_email__/$inputs.library'
+        #elif $inputs.input == "tsv_file":
+            tsvfile '$inputs.tsv_file'
         #elif $inputs.input == "zip_file":
-            zipfile $inputs.zip_file
+            zipfile '$inputs.zip_file'
         #end if
 
 
@@ -44,21 +45,25 @@
 
         ## Outputs
         logOut log.log
-        dataMatrixOut $dataMatrixOut
-        sampleOut $sampleOut
-        variableOut $variableOut
-        graphOut $graphOut; cat log.log
+        dataMatrixOut '$dataMatrixOut'
+        sampleOut '$sampleOut'
+        variableOut '$variableOut'
+        graphOut '$graphOut'; cat log.log
     </command>
 
     <inputs>
         <conditional name="inputs">
             <param name="input" type="select" label="Choose your inputs method" >
                 <option value="zip_file" selected="true">Zip file from your history containing your Bruker directories</option>
+                <option value="tsv_file">Tsv file containing preprocessed spectra (from your history)</option>
                 <option value="lib" >Library directory name</option>
             </param>
             <when value="zip_file">
                 <param name="zip_file" type="data" format="no_unzip.zip" label="Zip file" />
             </when>
+            <when value="tsv_file">
+                <param name="tsv_file" type="data" format="tabular" label="Tsv file" />
+            </when>
             <when value="lib">
                 <param name="library" type="text" size="40" label="Library directory name" help="The name of your directory containing all your data" >
                     <validator type="empty_field"/> 
@@ -103,7 +108,6 @@
             <filter> graphType != "None" </filter>
         </data>
     </outputs>
-
     
     <tests>
         <test>
@@ -147,12 +151,11 @@
 
 **Upstream tools**
 
-========================= ================= ======= =========
-Name                      output file       format  parameter
-========================= ================= ======= =========
-NA                        NA                zip      NA				
-========================= ================= ======= =========
-
+========================= ============================ =======
+Name                      output file                  format 
+========================= ============================ =======
+NMRAlignment              NMR_Alignment_alignedSpectra tsv    
+========================= ============================ =======
 
 **Downstream tools**
 
@@ -178,13 +181,16 @@
 +===========================+============+
 | 1 : Choose your inputs    |   zip      |
 +---------------------------+------------+
+| 1 : Choose your inputs    |   tsv      |
++---------------------------+------------+
 
 **Choose your inputs**
 
-You have two methods for your inputs:
+You have three methods for your inputs:
 
-| Zip file (recommended): You can put a zip file containing your inputs: myinputs.zip (containing all your conditions as sub-directories).
+| Zip file (recommended): You can put a zip file containing your inputs as raw Bruker files: myinputs.zip (containing all your conditions as sub-directories).
 | library folder: You must specify the name of your "library" (folder) created within your space project (for example: /projet/externe/institut/login/galaxylibrary/yourlibrary). Your library must contain all your conditions as sub-directories.
+| Tsv file: You can put a tsv file containing your inputs as preprocessed spectra: myinputs.tsv (containing all your conditions in columns and chemical shifts in rows).
 
 .. image:: ./static/images/Mth_Architecture_Repertoire_Bruker.png
 :width: 800
@@ -275,6 +281,10 @@
 Changelog/News
 --------------
 
+**Version 1.0.3 - 24/10/2016**
+
+- ENHANCEMENT: add possibility of bucketing processed files (upstream tools)	    
+	    
 **Version 1.0.2 - 12/08/2016**
 
 - ENHANCEMENT: x-axis customization: add chemical shift labels 
--- a/README.rst	Fri Aug 12 05:47:27 2016 -0400
+++ b/README.rst	Tue Nov 22 05:22:03 2016 -0500
@@ -2,6 +2,10 @@
 Changelog/News
 --------------
 
+**Version 1.0.3 - 24/10/2016**
+
+- ENHANCEMENT: add possibility of bucketing processed files (upstream tools)
+
 **Version 1.0.2 - 12/08/2016**
 
 - ENHANCEMENT: x-axis customization: add chemical shift labels