Repository 'nmr_alignment'
hg clone https://toolshed.g2.bx.psu.edu/repos/marie-tremblay-metatoul/nmr_alignment

Changeset 1:58eecef626da (2017-03-02)
Previous changeset 0:d690c5ad932f (2016-11-24) Next changeset 2:908e1345d7ca (2017-03-31)
Commit message:
Uploaded
added:
nmr_alignement/.Rhistory
nmr_alignement/.shed.yml
nmr_alignement/NmrAlignment_script.R
nmr_alignement/NmrAlignment_wrapper.R
nmr_alignement/NmrAlignment_xml.xml
nmr_alignement/static/images/NmrAlignment.png
nmr_alignement/test-data/MTBLS1.zip
nmr_alignement/test-data/MTBLS1_bucketedData.tabular
nmr_alignement/test-data/MTBLS1_sampleMetadata.tabular
nmr_alignement/test-data/MTBLS1_variableMetadata.tabular
removed:
NmrAlignment_script.R
NmrAlignment_wrapper.R
NmrAlignment_xml.xml
static/images/NmrAlignment.png
test-data/MTBLS1.zip
test-data/MTBLS1_bucketedData.tabular
test-data/MTBLS1_sampleMetadata.tabular
test-data/MTBLS1_variableMetadata.tabular
b
diff -r d690c5ad932f -r 58eecef626da NmrAlignment_script.R
--- a/NmrAlignment_script.R Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,440 +0,0 @@\n-################################################################################################\n-# NMR SPECTRA ALIGNEMENT USING THE CLUPA ALGORITHM (Vu et al. 2013)                            #\n-# Included in the speaq package                                                                #\n-# User : Galaxy                                                                                #\n-# Original data : --                                                                           #\n-# Starting date : 05-10-2016                                                                   #\n-# Version 1 : --                                                                               #\n-#                                                                                              #\n-# Input files : datra.frame containing spectra to align                                        #\n-################################################################################################\n-\n-\n-################################################################################################\n-# Bruker files reading                                                                         #\n-# Input parameters                                                                             #\n-#   - directory: name of your folder containing all experimental samples as sub-directories    #\n-#   - leftBorder: upper boundary: values greater than this value are not used;                 #\n-#                 Default value: 10.0 ppm                                                      #\n-#   - rightBorder: lower boundary: values lower than this value are not used;                  #\n-#                 Default value: 10.0 ppm                                                      #\n-#   - exclusionZones: spectral regions to exclude (water, solvent or contaminant resonance);   #\n-#                   boolean                                                                    #\n-#   - exclusionZonesBorders: upper and lower boudaries of exclusions zones                     #\n-# Output parameters                                                                            #\n-#   - truncatedSpectrum_matrice: n x p datamatrix                                              #\n-################################################################################################\n-NmrRead <- function(directory, leftBorder= 10.0, rightBorder= 0.5, exclusionZones=FALSE, exclusionZonesBorders=NULL)\n-{\n-  ## Option\n-  ##---------------\n-  strAsFacL <- options()$stringsAsFactors\n-  options(stingsAsFactors=FALSE)\n-  options(warn=-1)\n-  \n-  \n-  ## Constants\n-  ##---------------\n-  topEnvC <- environment()\n-  flgC <- "\\n"\n-  \n-  ## Log file (in case of integration into Galaxy)\n-  ##----------------------------------------------\n-  #  if(!is.null(savLog.txtC))\n-  #    sink(savLog.txtC, append=TRUE)\n-  \n-  ## Functions definition\n-  ##---------------------  \n-  ## RAW BRUKER FILE READING FUNCTION\n-  NmRBrucker_read <- function(DataDir,SampleSpectrum)\n-  {\n-    \n-    bruker.get_param <- function (ACQ,paramStr)\n-    {\n-      regexpStr <- paste("^...",paramStr,"=",sep="")\n-      as.numeric(gsub("^[^=]+= ","" ,ACQ[which(simplify2array(regexpr(regexpStr,ACQ))>0)]))\n-    }\n-    \n-    ACQFILE <- "acqus"\n-    SPECFILE <- paste(DataDir,"/1r",sep="")\n-    PROCFILE <- paste(DataDir,"/procs",sep="")\n-    \n-    ACQ <- readLines(ACQFILE)\n-    TD      <- bruker.get_param(ACQ,"TD")\n-    SW      <- bruker.get_param(ACQ,"SW")\n-    SWH     <- bruker.get_param(ACQ,"SW_h")\n-    DTYPA   <- bruker.get_param(ACQ,"DTYPA")\n-    BYTORDA <- bruker.get_param(ACQ,"BYTORDA")\n-    #ENDIAN=ifelse( BYTORDA==0, "little", "big")\n-    ENDIAN <- "little"\n-    SIZE=ifelse( DTYPA==0, 4, 8)\n-    \n-    PROC <- readLines(PROCFILE)\n-    OFFSET <- bruker.get_param(PROC,"OFFSET")\n-    SI <- bruker.get_param(PROC,"SI")\n-    \n-    to.read=file(SPECFILE,"rb")\n-    maxTDSI=max(TD,SI)\n-    #  signal<-rev(readBin(to.read, what="int",s'..b'1, maxshift=maxshift, \n-                            verbose)\n-{\n-  ## Peak picking\n-  cat("\\n detect peaks....")\n-  startTime <- proc.time()\n-  peakList <- detectSpecPeaks(X=data, nDivRange=nDivRange, scales=scales, baselineThresh=baselineThresh,  \n-                              SNR.Th = SNR.Th, verbose=verbose)\n-  endTime <- proc.time()\n-  cat("Peak detection time:",(endTime[3]-startTime[3])/60," minutes")\n-\n-  ## Reference spectrum determination\n-  if (reference == 0)\n-  {\n-    cat("\\n Find the spectrum reference...")\n-    resFindRef<- findRef(peakList)\n-    refInd <- resFindRef$refInd\n-    cat("\\n Order of spectrum for reference \\n")\n-    for (i in 1:length(resFindRef$orderSpec))\n-    {\n-      cat(paste(i, ":",resFindRef$orderSpec[i],sep=""), " ")\n-      if (i %% 10 == 0) \n-        cat("\\n")\n-    }\n-    cat("\\n The reference is: ", refInd)\n-  }\n-  else\n-  {\n-    refInd=reference\n-  }\n-  ## Spectra alignment to the reference\n-  maxshift <- 50\n-  Y <- dohCluster(data, peakList=peakList, refInd=refInd, maxShift=maxShift, acceptLostPeak, verbose)\n-\n-  ## Output  \n-  return(Y)\n-}\n-\n-\n-################################################################################################\n-# Principal function                                                                           #\n-# Input parameters                                                                             #\n-#   - directory: name of your folder containing all experimental samples as sub-directories    #\n-#   - leftBorder: upper boundary: values greater than this value are not used;                 #\n-#                 Default value: 10.0 ppm                                                      #\n-#   - rightBorder: lower boundary: values lower than this value are not used;                  #\n-#                 Default value: 10.0 ppm                                                      #\n-#   - exclusionZones: spectral regions to exclude (water, solvent or contaminant resonance);   #\n-#                   boolean                                                                    #\n-#   - exclusionZonesBorders: upper and lower boudaries of exclusions zones                     #\n-#   - verbose: printing out process information (boolean)                                      #\n-#   - reference: reference spectrum number, if exists                                          #\n-#                Default value: 0 (automatic detection                                         #\n-#   - nDivRange: size of a single small segment after division of the whole spectrum           #\n-#                 Default value: 64                                                            #\n-#   - baselineThresh: removal of all the peaks with intensity lower than this threshold        #\n-#                 Default value: 50000                                                         #\n-# Output parameters: list containing                                                           #\n-#   - data.read: n x p matrix                                                                  #\n-#   - data.aligned: n x p matrix                                                               #\n-################################################################################################\n-nmr.alignment <- function(directory, leftBorder= 10.0, rightBorder= 0.5, exclusionZones=FALSE, \n-                          exclusionZonesBorders=NULL, reference=0, nDivRange=64, baselineThresh=50000, maxshift=50, verbose=FALSE)\n-{\n-  data.read <- NmrRead(directory=directory, leftBorder=leftBorder, rightBorder=rightBorder, exclusionZones=exclusionZones, exclusionZonesBorders=exclusionZonesBorders)\n-  rownames(data.read) <- data.read[,1]\n-  data.read <- data.read[,-1]\n-  data.read <- t(data.read)\n-  data.aligned <- cluPA.alignment(data=data.read, reference=reference, nDivRange=nDivRange, \n-                                  baselineThresh=baselineThresh, maxshift=maxshift, verbose=verbose)\n-\n-  return(list(data.read,data.aligned))\n-}\n-\n'
b
diff -r d690c5ad932f -r 58eecef626da NmrAlignment_wrapper.R
--- a/NmrAlignment_wrapper.R Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,176 +0,0 @@
-#!/usr/local/public/bin/Rscript --vanilla --slave --no-site-file
-
-## 06102016_NmrAlignment_wrapper.R
-## Marie Tremblay-Franco
-## marie.tremblay-franco@toulouse.inra.fr
-
-runExampleL <- FALSE
-
-##------------------------------
-## Options
-##------------------------------
-strAsFacL <- options()$stringsAsFactors
-options(stringsAsFactors = FALSE)
-
-
-##------------------------------
-## Libraries loading
-##------------------------------
- # ParseCommandArgs function
-library(batch) 
- # Alignment
-library(speaq)
-
-
-# R script call
-source_local <- function(fname)
-{
- argv <- commandArgs(trailingOnly = FALSE)
- base_dir <- dirname(substring(argv[grep("--file=", argv)], 8))
- source(paste(base_dir, fname, sep="/"))
-}
-# Function import
-source_local("NmrAlignment_script.R")
-
-
-##------------------------------
-## Errors ?????????????????????
-##------------------------------
-
-
-##------------------------------
-## Constants
-##------------------------------
-topEnvC <- environment()
-flagC <- "\n"
-
-
-##------------------------------
-## Script
-##------------------------------
-if(!runExampleL)
-    argLs <- parseCommandArgs(evaluate=FALSE)
-
-
-## Parameters Loading
-##-------------------
- # Inputs
- ## Library of spectra to align
-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)
- }
-}
-
-
- ## Spectral width
-leftBorder <- argLs[["left_border"]]
-rightBorder <- argLs[["right_border"]]
-
- ##Exclusion zone(s)
-exclusionZones <- argLs[["zone_exclusion_choices.choice"]]
-exclusionZonesBorders <- NULL
-if (!is.null(argLs$zone_exclusion_left))
-{
-   for(i in which(names(argLs)=="zone_exclusion_left"))
-   {
-     exclusionZonesBorders <- c(exclusionZonesBorders,list(c(argLs[[i]],argLs[[i+1]])))
-   }
-}
-
- ## Reference spectrum
-reference <- argLs[["reference"]]
-
- ## Size of a small nDivRange
-nDivRange <- argLs[["nDivRange"]]
-
- ## Intensity threshold for peak removal
-baselineThresh <- argLs[["baselineThresh"]]
-
-
- # Outputs
-logOut <- argLs[["logOut"]]
-alignedSpectra <- argLs[["alignedSpectra"]]
-graphOut <- argLs[["graphOut"]]
-
-
-## Checking arguments
-##-------------------
-error.stock <- "\n"
-if(length(error.stock) > 1)
-  stop(error.stock)
-  
-  
-## Computation
-##------------
-directory.alignement <- nmr.alignment(directory=directory,leftBorder=leftBorder,rightBorder=rightBorder,exclusionZones=exclusionZones,
-                                  exclusionZonesBorders=exclusionZonesBorders, reference=reference, nDivRange=nDivRange, 
-                                  baselineThresh=baselineThresh, maxshift=50, verbose=FALSE)
-directory.raw <- directory.alignement[[1]]
-directory.aligned <- directory.alignement[[2]]
-
-## Saving
-##-------
- # Aligned spectra
-t.directory.aligned <- t(directory.aligned)
-rownames(t.directory.aligned) <- colnames(directory.aligned)
-# colnames(t.directory.aligned) <- c("Bucket",colnames(t.directory.aligned))
-write.table(t.directory.aligned,file=alignedSpectra,row.names=TRUE,quote=FALSE,sep="\t") 
-
-
-excludedZone <- NULL
-for (c in 1:length(exclusionZonesBorders))
-{
-  excludedZone <- c(excludedZone,exclusionZonesBorders[[c]])
-  excludedZone <- sort(excludedZone)
-}
-
-## Graphical output: overlay of raw and estimated spectra
-pdf(graphOut,onefile=TRUE)
-par(mfrow=c(2,1))
-
-raw.spectra <- data.frame(directory.raw)
-colnames(raw.spectra) <- substr(colnames(raw.spectra),2,7)
-
-aligned.spectra <- data.frame(directory.aligned)
-colnames(aligned.spectra) <- substr(colnames(aligned.spectra),2,7)
-
-drawSpec(raw.spectra,xlab="", ylab="Raw spectra", main="")
-drawSpec(aligned.spectra,xlab="", ylab="Aligned spectra", main="")
-
-nbZones <- length(excludedZone)/2
-if (nbZones != 0)
-{
-  n <- length(excludedZone)
-  drawSpec(raw.spectra[,1:which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n])[1]],xlab="", ylab="Raw spectra", main="")
-  drawSpec(aligned.spectra[,1:which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n])[1]],xlab="", ylab="Aligned spectra", main="")
-
-  n <- n - 1
-  while (n >= nbZones & nbZones > 1)
-  {
-    drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n])[1]):(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n-1])[1])],xlab="", ylab="Raw spectra", main="")
-    drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n])[1]):(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n-1])[1])],xlab="", ylab="Aligned spectra", main="")
-    n <- n - 2
-  }
-  
-  drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[1])[1]):ncol(raw.spectra)],xlab="", ylab="Raw spectra", main="")
-  drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[1])[1]):ncol(aligned.spectra)],xlab="", ylab="Aligned spectra", main="")
-}
-drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == 2.4)[1]):(which(round(as.numeric(colnames(raw.spectra)),2) == 2.8)[1])],xlab="", ylab="Raw spectra", main="")
-drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == 2.4)[1]):(which(round(as.numeric(colnames(aligned.spectra)),2) == 2.8)[1])],xlab="", ylab="Aligned spectra", main="")
-
-dev.off()
-
-
-## Ending
-##---------------------
-cat("\nEnd of 'NMR alignment' Galaxy module call: ", as.character(Sys.time()), sep = "")
-options(stringsAsFactors = strAsFacL)
-rm(list = ls())
b
diff -r d690c5ad932f -r 58eecef626da NmrAlignment_xml.xml
--- a/NmrAlignment_xml.xml Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,258 +0,0 @@\n-<tool id="NmrAlignment" name="NMR_Alignment" version="2016-10-07">\n-\n-\t <description> Alignment of NMR spectra based on the Cluster-based Peak Alignment (CluPA) algorithm </description>\n-\n-\t <requirements>\n-       <requirement type="package" version="3.1.2">R</requirement>\n-\t     <requirement type="package" version="1.1_4">r-batch</requirement>\n-\t     <requirement type="package" version="1.2.1">r-speaq</requirement>\n-  \t</requirements>\n-\n-    <stdio>\n-        <exit_code range="1:" level="fatal" />\n-    </stdio>\n-\n-  \t<command>\n-\t\t## Wrapper\n-        Rscript $__tool_directory__/NmrAlignment_wrapper.R\n-\n-\t\t## File input\n-        #if $inputs.input == "lib":\n-            library $__app__.config.user_library_import_dir/$__user_email__/$inputs.library\n-        #elif $inputs.input == "zip_file":\n-            zipfile $inputs.zip_file\n-        #end if\n-\n-\t\t## Spectra borders\n-\t\tleft_border $left_border\n-\t\tright_border $right_border\n-\n-\n-\t\t## Exclusion zone\n-\t\tzone_exclusion_choices.choice ${zone_exclusion_choices.choice}\n-\t\t#if str($zone_exclusion_choices.choice) == \'yes\':\n-\t\t\t#for $i in $zone_exclusion_choices.conditions:\n-\t\t\t\tzone_exclusion_left ${i.zone_exclusion_left}\n-\t\t\t\tzone_exclusion_right ${i.zone_exclusion_right}\n-\t\t\t#end for\n-\t\t#end if\n-\n-\t\t## Reference spectrum\n-\t\treference $reference\n-\n-\t\t## Segment size\n-\t\tnDivRange $nDivRange\n-\n-\t\t## Intensity threshold\n-\t\tbaselineThresh $baselineThresh\n-\n-\t\t## Outputs\n-\t\tlogOut $logOut\n-\t\talignedSpectra $alignedSpectra\n-\t\tgraphOut $graphOut\n-\t  </command>\n-\n-  \t<inputs>\n-        <conditional name="inputs">\n-            <param name="input" type="select" label="Choose your inputs method" >\n-                <option value="zip_file" selected="true">Zip file from your history containing your Bruker directories</option>\n-                <option value="lib" >Library directory name</option>\n-            </param>\n-            <when value="zip_file">\n-                <param name="zip_file" type="data" format="no_unzip.zip" label="Zip file" />\n-            </when>\n-            <when value="lib">\n-                <param name="library" type="text" size="40" label="Library directory name" help="The name of your directory containing all your data" >\n-                    <validator type="empty_field"/>\n-                </param>\n-            </when>\n-        </conditional>\n-\n-\t\t<param name="left_border" label="Left Border" type="float" value="10.0" size="10" help="Default value is 10 ppm"/>\n-\t\t<param name="right_border" label="Right Border" type="float" value="0.5" size="10" help="Default value is 0.5 ppm"/>\n-\n-\t\t<conditional name="zone_exclusion_choices">\n-\t\t\t<param name="choice" type="select" label="Exclusion zone(s)" help="Choose if you want to exclude particular zone(s)" >\n-\t\t\t\t<option value="yes" > yes </option>\n-\t\t\t\t<option value="no" selected="true"> no </option>\n-\t\t\t</param>\n-\t\t\t<when value="yes">\n-\t\t\t\t<repeat name="conditions" title="exclusion zones">\n-\t\t\t\t\t<param name="zone_exclusion_left" label="Left exclusion zone border" type="float" value="10.0" />\n-\t\t\t\t\t<param name="zone_exclusion_right" label="Right exclusion zone border" type="float" value="10.0" />\n-\t\t\t\t</repeat>\n-\t\t\t</when>\n-      <when value="no" />\n-\t\t</conditional>\n-\n-\t\t<param name="reference" type="integer" value="0" help="Number of the reference spectrum. Default value is 0: automatic determination of the reference spectrum" />\n-\n-\t\t<param name="nDivRange" type="integer" value="64" help="Size of a single small segment after division of spectra. Default value is 64" />\n-\n-\t\t<param name="baselineThresh" type="integer" value="1" help="Threshold to remove all peaks with intensity lower this value. Default value is 1" />\n-\n-\t</inputs>\n-\n-\t<outputs>\n-\t\t<data format="txt" name="logOut" label="${tool.name}_log" />\n-\t\t<data format="tabular" name="alignedSpectra" label="${tool.name}_alignedSpectra" />\n-\t\t<data format="pdf" name="graphOut" label="${tool.name}_graph" />\n-\t</outputs>\n-\n-\t<help>\n-\n-.. class:: infomark\n-\n-**'..b'------------\n-\n-**Upstream tools**\n-\n-========================= ================= =======\n-Name                      output file       format\n-========================= ================= =======\n-NA                        NA                NA\n-========================= ================= =======\n-\n-\n-**Downstream tools**\n-\n-+---------------------------+----------------------+--------+\n-| Name                      | Output file          | Format |\n-+===========================+======================+========+\n-|NmrBucketing               | dataMatrix.tsv       | Tabular|\n-+---------------------------+----------------------+--------+\n-|                           | sampleMetadata.tsv   | Tabular|\n-+---------------------------+----------------------+--------+\n-|                           | variableMetadata.tsv | Tabular|\n-+---------------------------+----------------------+--------+\n-|NmrNormalization           | dataMatrix.tsv       | Tabular|\n-+---------------------------+----------------------+--------+\n-|                           | sampleMetadata.tsv   | Tabular|\n-+---------------------------+----------------------+--------+\n-|                           | variableMetadata.tsv | Tabular|\n-+---------------------------+----------------------+--------+\n-|Univariate                 | variableMetadata.tsv | Tabular|\n-+---------------------------+----------------------+--------+\n-|Multivariate               | sampleMetadata.tsv   | Tabular|\n-+---------------------------+----------------------+--------+\n-|                           | variableMetadata.tsv | Tabular|\n-+---------------------------+----------------------+--------+\n-\n-\n------------\n-Input files\n------------\n-\n-+---------------------------+------------+\n-| Parameter : num + label   |   Format   |\n-+===========================+============+\n-| 1 : Choose your inputs    |   zip      |\n-+---------------------------+------------+\n-\n-**Choose your inputs**\n-\n-    | Zip file (recommended): You can put a zip file containing your inputs: myinputs.zip (containing all your conditions as sub-directories).\n-\n-\n-----------\n-Parameters\n-----------\n-\n-Bucket width\n-\t| size of windows\n-\t|\n-\n-Left limit\n-\t| Upper boundary: values greater than this value are not used in the bucketing. Default value is 10.0 ppm\n-\t|\n-\n-Right limit\n-\t| Lower boundary: values lower than this value are not used in the bucketing. Default value is 0.5 ppm\n-\t|\n-\n-Exclusion zone(s)\n-\t| Spectral regions to exclude, water, solvents, ... resonance\n-\t| If YES: parameters **Lower exclusion zone** and **Upper exclusion zone** are visible,\n-\t| If NO: no zone to exclude\n-\t| Default value is NO\n-\t|\n-\n-Left exclusion zone\n-\t| Upper boundary of exclusion zone\n-\t|\n-\n-Right exclusion zone\n-\t| Lower boundary of exclusion zone\n-\n-| *Notes:*\n-| - these parameters can be used several times using the "Add new exclusion zones" button\n-|\n-\n-Reference spectrum\n-\t| spectrum to which other spectra are aligned\n-\t| Default value is 0: heuristic strategy to find the optimal template developped in the speaq package\n-\t|\n-\n-Segment size\n-\t| Size of a single small segment after division of spectra\n-\t| Default value: 64 (minimal value adviced)\n-\t|\n-\n-Intensity threshold\n-\t| All peaks with an intensity below this threshold are removed\n-\t| Default value: 1\n-\t|\n-\n-\n-------------\n-Output files\n-------------\n-\n-alignedSpectra.tsv\n-\t| tabular output\n-\t| Data matrix with p rows (ppm) and n columns (samples) containing the aligned intensities\n-\t|\n-\n-graphOut.pdf\n-\t| pdf output\n-\t| Graphical chart of raw and aligned data: whole spectral width, "zoomed" zones depending on the exclusion zones, spectral zone between 2.8 and 2.4ppm corresponding to the citric acid\n-\n-\n----------------------------------------------------\n-\n----------------\n-Example\n----------------\n-\n-\n-.. image:: ./static/images/NmrAlignment.png\n-        :width: 500\n-\n-   </help>\n-   <citations>\n-       <citation type="doi">10.1093/bioinformatics/btu813</citation>\n-   </citations>\n-\n-</tool>\n'
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/.shed.yml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/.shed.yml Thu Mar 02 10:23:37 2017 -0500
[
@@ -0,0 +1,7 @@
+categories: [Metabolomics]
+description: '[Metabolomics][W4M][NMR] NMR Alignment - Alignment of NMR spectra based on the Cluster-based Peak Alignment (CluPA) algorithm'
+homepage_url: http://workflow4metabolomics.org
+long_description: 'Part of the W4M project: http://workflow4metabolomics.org'
+name: nmr_alignment
+owner: marie-tremblay-metatoul
+remote_repository_url: https://github.com/workflow4metabolomics/nmr_alignment
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/NmrAlignment_script.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/NmrAlignment_script.R Thu Mar 02 10:23:37 2017 -0500
[
b'@@ -0,0 +1,440 @@\n+################################################################################################\r\n+# NMR SPECTRA ALIGNEMENT USING THE CLUPA ALGORITHM (Vu et al. 2013)                            #\r\n+# Included in the speaq package                                                                #\r\n+# User : Galaxy                                                                                #\r\n+# Original data : --                                                                           #\r\n+# Starting date : 05-10-2016                                                                   #\r\n+# Version 1 : --                                                                               #\r\n+#                                                                                              #\r\n+# Input files : datra.frame containing spectra to align                                        #\r\n+################################################################################################\r\n+\r\n+\r\n+################################################################################################\r\n+# Bruker files reading                                                                         #\r\n+# Input parameters                                                                             #\r\n+#   - directory: name of your folder containing all experimental samples as sub-directories    #\r\n+#   - leftBorder: upper boundary: values greater than this value are not used;                 #\r\n+#                 Default value: 10.0 ppm                                                      #\r\n+#   - rightBorder: lower boundary: values lower than this value are not used;                  #\r\n+#                 Default value: 10.0 ppm                                                      #\r\n+#   - exclusionZones: spectral regions to exclude (water, solvent or contaminant resonance);   #\r\n+#                   boolean                                                                    #\r\n+#   - exclusionZonesBorders: upper and lower boudaries of exclusions zones                     #\r\n+# Output parameters                                                                            #\r\n+#   - truncatedSpectrum_matrice: n x p datamatrix                                              #\r\n+################################################################################################\r\n+NmrRead <- function(directory, leftBorder= 10.0, rightBorder= 0.5, exclusionZones=FALSE, exclusionZonesBorders=NULL)\r\n+{\r\n+  ## Option\r\n+  ##---------------\r\n+  strAsFacL <- options()$stringsAsFactors\r\n+  options(stingsAsFactors=FALSE)\r\n+  options(warn=-1)\r\n+  \r\n+  \r\n+  ## Constants\r\n+  ##---------------\r\n+  topEnvC <- environment()\r\n+  flgC <- "\\n"\r\n+  \r\n+  ## Log file (in case of integration into Galaxy)\r\n+  ##----------------------------------------------\r\n+  #  if(!is.null(savLog.txtC))\r\n+  #    sink(savLog.txtC, append=TRUE)\r\n+  \r\n+  ## Functions definition\r\n+  ##---------------------  \r\n+  ## RAW BRUKER FILE READING FUNCTION\r\n+  NmRBrucker_read <- function(DataDir,SampleSpectrum)\r\n+  {\r\n+    \r\n+    bruker.get_param <- function (ACQ,paramStr)\r\n+    {\r\n+      regexpStr <- paste("^...",paramStr,"=",sep="")\r\n+      as.numeric(gsub("^[^=]+= ","" ,ACQ[which(simplify2array(regexpr(regexpStr,ACQ))>0)]))\r\n+    }\r\n+    \r\n+    ACQFILE <- "acqus"\r\n+    SPECFILE <- paste(DataDir,"/1r",sep="")\r\n+    PROCFILE <- paste(DataDir,"/procs",sep="")\r\n+    \r\n+    ACQ <- readLines(ACQFILE)\r\n+    TD      <- bruker.get_param(ACQ,"TD")\r\n+    SW      <- bruker.get_param(ACQ,"SW")\r\n+    SWH     <- bruker.get_param(ACQ,"SW_h")\r\n+    DTYPA   <- bruker.get_param(ACQ,"DTYPA")\r\n+    BYTORDA <- bruker.get_param(ACQ,"BYTORDA")\r\n+    #ENDIAN=ifelse( BYTORDA==0, "little", "big")\r\n+    ENDIAN <- "little"\r\n+    SIZE=ifelse( DTYPA==0, 4, 8)\r\n+    \r\n+    PROC <- readLines(PROCFILE)\r\n+    OFFSET <- bruker.get_param(PROC,"OFFSET")\r\n+    SI <- bruker.get_param(PROC,"SI")\r\n+    \r\n+    to.read=file(SPECFILE,"rb"'..b'eak picking\r\n+  cat("\\n detect peaks....")\r\n+  startTime <- proc.time()\r\n+  peakList <- detectSpecPeaks(X=data, nDivRange=nDivRange, scales=scales, baselineThresh=baselineThresh,  \r\n+                              SNR.Th = SNR.Th, verbose=verbose)\r\n+  endTime <- proc.time()\r\n+  cat("Peak detection time:",(endTime[3]-startTime[3])/60," minutes")\r\n+\r\n+  ## Reference spectrum determination\r\n+  if (reference == 0)\r\n+  {\r\n+    cat("\\n Find the spectrum reference...")\r\n+    resFindRef<- findRef(peakList)\r\n+    refInd <- resFindRef$refInd\r\n+    cat("\\n Order of spectrum for reference \\n")\r\n+    for (i in 1:length(resFindRef$orderSpec))\r\n+    {\r\n+      cat(paste(i, ":",resFindRef$orderSpec[i],sep=""), " ")\r\n+      if (i %% 10 == 0) \r\n+        cat("\\n")\r\n+    }\r\n+    cat("\\n The reference is: ", refInd)\r\n+  }\r\n+  else\r\n+  {\r\n+    refInd=reference\r\n+  }\r\n+  ## Spectra alignment to the reference\r\n+  maxshift <- 50\r\n+  Y <- dohCluster(data, peakList=peakList, refInd=refInd, maxShift=maxShift, acceptLostPeak, verbose)\r\n+\r\n+  ## Output  \r\n+  return(Y)\r\n+}\r\n+\r\n+\r\n+################################################################################################\r\n+# Principal function                                                                           #\r\n+# Input parameters                                                                             #\r\n+#   - directory: name of your folder containing all experimental samples as sub-directories    #\r\n+#   - leftBorder: upper boundary: values greater than this value are not used;                 #\r\n+#                 Default value: 10.0 ppm                                                      #\r\n+#   - rightBorder: lower boundary: values lower than this value are not used;                  #\r\n+#                 Default value: 10.0 ppm                                                      #\r\n+#   - exclusionZones: spectral regions to exclude (water, solvent or contaminant resonance);   #\r\n+#                   boolean                                                                    #\r\n+#   - exclusionZonesBorders: upper and lower boudaries of exclusions zones                     #\r\n+#   - verbose: printing out process information (boolean)                                      #\r\n+#   - reference: reference spectrum number, if exists                                          #\r\n+#                Default value: 0 (automatic detection                                         #\r\n+#   - nDivRange: size of a single small segment after division of the whole spectrum           #\r\n+#                 Default value: 64                                                            #\r\n+#   - baselineThresh: removal of all the peaks with intensity lower than this threshold        #\r\n+#                 Default value: 50000                                                         #\r\n+# Output parameters: list containing                                                           #\r\n+#   - data.read: n x p matrix                                                                  #\r\n+#   - data.aligned: n x p matrix                                                               #\r\n+################################################################################################\r\n+nmr.alignment <- function(directory, leftBorder= 10.0, rightBorder= 0.5, exclusionZones=FALSE, \r\n+                          exclusionZonesBorders=NULL, reference=0, nDivRange=64, baselineThresh=50000, maxshift=50, verbose=FALSE)\r\n+{\r\n+  data.read <- NmrRead(directory=directory, leftBorder=leftBorder, rightBorder=rightBorder, exclusionZones=exclusionZones, exclusionZonesBorders=exclusionZonesBorders)\r\n+  rownames(data.read) <- data.read[,1]\r\n+  data.read <- data.read[,-1]\r\n+  data.read <- t(data.read)\r\n+  data.aligned <- cluPA.alignment(data=data.read, reference=reference, nDivRange=nDivRange, \r\n+                                  baselineThresh=baselineThresh, maxshift=maxshift, verbose=verbose)\r\n+\r\n+  return(list(data.read,data.aligned))\r\n+}\r\n+\r\n'
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/NmrAlignment_wrapper.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/NmrAlignment_wrapper.R Thu Mar 02 10:23:37 2017 -0500
[
@@ -0,0 +1,176 @@
+#!/usr/local/public/bin/Rscript --vanilla --slave --no-site-file
+
+## 06102016_NmrAlignment_wrapper.R
+## Marie Tremblay-Franco
+## marie.tremblay-franco@toulouse.inra.fr
+
+runExampleL <- FALSE
+
+##------------------------------
+## Options
+##------------------------------
+strAsFacL <- options()$stringsAsFactors
+options(stringsAsFactors = FALSE)
+
+
+##------------------------------
+## Libraries loading
+##------------------------------
+ # ParseCommandArgs function
+library(batch) 
+ # Alignment
+library(speaq)
+
+
+# R script call
+source_local <- function(fname)
+{
+ argv <- commandArgs(trailingOnly = FALSE)
+ base_dir <- dirname(substring(argv[grep("--file=", argv)], 8))
+ source(paste(base_dir, fname, sep="/"))
+}
+# Function import
+source_local("NmrAlignment_script.R")
+
+
+##------------------------------
+## Errors ?????????????????????
+##------------------------------
+
+
+##------------------------------
+## Constants
+##------------------------------
+topEnvC <- environment()
+flagC <- "\n"
+
+
+##------------------------------
+## Script
+##------------------------------
+if(!runExampleL)
+    argLs <- parseCommandArgs(evaluate=FALSE)
+
+
+## Parameters Loading
+##-------------------
+ # Inputs
+ ## Library of spectra to align
+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)
+ }
+}
+
+
+ ## Spectral width
+leftBorder <- argLs[["left_border"]]
+rightBorder <- argLs[["right_border"]]
+
+ ##Exclusion zone(s)
+exclusionZones <- argLs[["zone_exclusion_choices.choice"]]
+exclusionZonesBorders <- NULL
+if (!is.null(argLs$zone_exclusion_left))
+{
+   for(i in which(names(argLs)=="zone_exclusion_left"))
+   {
+     exclusionZonesBorders <- c(exclusionZonesBorders,list(c(argLs[[i]],argLs[[i+1]])))
+   }
+}
+
+ ## Reference spectrum
+reference <- argLs[["reference"]]
+
+ ## Size of a small nDivRange
+nDivRange <- argLs[["nDivRange"]]
+
+ ## Intensity threshold for peak removal
+baselineThresh <- argLs[["baselineThresh"]]
+
+
+ # Outputs
+logOut <- argLs[["logOut"]]
+alignedSpectra <- argLs[["alignedSpectra"]]
+graphOut <- argLs[["graphOut"]]
+
+
+## Checking arguments
+##-------------------
+error.stock <- "\n"
+if(length(error.stock) > 1)
+  stop(error.stock)
+  
+  
+## Computation
+##------------
+directory.alignement <- nmr.alignment(directory=directory,leftBorder=leftBorder,rightBorder=rightBorder,exclusionZones=exclusionZones,
+                                  exclusionZonesBorders=exclusionZonesBorders, reference=reference, nDivRange=nDivRange, 
+                                  baselineThresh=baselineThresh, maxshift=50, verbose=FALSE)
+directory.raw <- directory.alignement[[1]]
+directory.aligned <- directory.alignement[[2]]
+
+## Saving
+##-------
+ # Aligned spectra
+t.directory.aligned <- t(directory.aligned)
+rownames(t.directory.aligned) <- colnames(directory.aligned)
+# colnames(t.directory.aligned) <- c("Bucket",colnames(t.directory.aligned))
+write.table(t.directory.aligned,file=alignedSpectra,row.names=TRUE,quote=FALSE,sep="\t") 
+
+
+excludedZone <- NULL
+for (c in 1:length(exclusionZonesBorders))
+{
+  excludedZone <- c(excludedZone,exclusionZonesBorders[[c]])
+  excludedZone <- sort(excludedZone)
+}
+
+## Graphical output: overlay of raw and estimated spectra
+pdf(graphOut,onefile=TRUE)
+par(mfrow=c(2,1))
+
+raw.spectra <- data.frame(directory.raw)
+colnames(raw.spectra) <- substr(colnames(raw.spectra),2,7)
+
+aligned.spectra <- data.frame(directory.aligned)
+colnames(aligned.spectra) <- substr(colnames(aligned.spectra),2,7)
+
+drawSpec(raw.spectra,xlab="", ylab="Raw spectra", main="")
+drawSpec(aligned.spectra,xlab="", ylab="Aligned spectra", main="")
+
+nbZones <- length(excludedZone)/2
+if (nbZones != 0)
+{
+  n <- length(excludedZone)
+  drawSpec(raw.spectra[,1:which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n])[1]],xlab="", ylab="Raw spectra", main="")
+  drawSpec(aligned.spectra[,1:which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n])[1]],xlab="", ylab="Aligned spectra", main="")
+
+  n <- n - 1
+  while (n >= nbZones & nbZones > 1)
+  {
+    drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n])[1]):(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[n-1])[1])],xlab="", ylab="Raw spectra", main="")
+    drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n])[1]):(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[n-1])[1])],xlab="", ylab="Aligned spectra", main="")
+    n <- n - 2
+  }
+  
+  drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == excludedZone[1])[1]):ncol(raw.spectra)],xlab="", ylab="Raw spectra", main="")
+  drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == excludedZone[1])[1]):ncol(aligned.spectra)],xlab="", ylab="Aligned spectra", main="")
+}
+drawSpec(raw.spectra[,(which(round(as.numeric(colnames(raw.spectra)),2) == 2.4)[1]):(which(round(as.numeric(colnames(raw.spectra)),2) == 2.8)[1])],xlab="", ylab="Raw spectra", main="")
+drawSpec(aligned.spectra[,(which(round(as.numeric(colnames(aligned.spectra)),2) == 2.4)[1]):(which(round(as.numeric(colnames(aligned.spectra)),2) == 2.8)[1])],xlab="", ylab="Aligned spectra", main="")
+
+dev.off()
+
+
+## Ending
+##---------------------
+cat("\nEnd of 'NMR alignment' Galaxy module call: ", as.character(Sys.time()), sep = "")
+options(stringsAsFactors = strAsFacL)
+rm(list = ls())
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/NmrAlignment_xml.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/NmrAlignment_xml.xml Thu Mar 02 10:23:37 2017 -0500
b
b'@@ -0,0 +1,247 @@\n+<tool id="NmrAlignment" name="NMR spectra alignment" version="2.0.1">\r\n+\t<description>based on the Cluster-based Peak Alignment (CluPA) algorithm</description>\r\n+\t <requirements>\r\n+        <requirement type="package" version="3.1.2">R</requirement>\r\n+\t    <requirement type="package" version="1.1_4">r-batch</requirement>\r\n+\t    <requirement type="package" version="1.2.1">r-speaq</requirement>\r\n+  \t</requirements>\r\n+    <stdio>\r\n+        <exit_code range="1:" level="fatal" />\r\n+    </stdio>\r\n+  \t<command>\r\n+\t\t## Wrapper\r\n+        Rscript \'$__tool_directory__/NmrAlignment_wrapper.R\'\r\n+\r\n+\t\t## File input\r\n+        #if $inputs.input == "lib":\r\n+            library \'$__app__.config.user_library_import_dir/$__user_email__/$inputs.library\'\r\n+        #elif $inputs.input == "zip_file":\r\n+            zipfile \'$inputs.zip_file\'\r\n+        #end if\r\n+\r\n+\t\t## Spectra borders\r\n+\t\tleft_border $left_border\r\n+\t\tright_border $right_border\r\n+\r\n+\t\t## Exclusion zone\r\n+\t\tzone_exclusion_choices.choice ${zone_exclusion_choices.choice}\r\n+\t\t#if str($zone_exclusion_choices.choice) == \'yes\':\r\n+\t\t\t#for $i in $zone_exclusion_choices.conditions:\r\n+\t\t\t\tzone_exclusion_left ${i.zone_exclusion_left}\r\n+\t\t\t\tzone_exclusion_right ${i.zone_exclusion_right}\r\n+\t\t\t#end for\r\n+\t\t#end if\r\n+\r\n+\t\t## Reference spectrum\r\n+\t\treference $reference\r\n+\r\n+\t\t## Segment size\r\n+\t\tnDivRange $nDivRange\r\n+\r\n+\t\t## Intensity threshold\r\n+\t\tbaselineThresh $baselineThresh\r\n+\r\n+\t\t## Outputs\r\n+\t\tlogOut \'$logOut\'\r\n+\t\talignedSpectra \'$alignedSpectra\'\r\n+\t\tgraphOut \'$graphOut\'\r\n+\t</command>\r\n+  \t<inputs>\r\n+        <conditional name="inputs">\r\n+            <param name="input" type="select" label="Choose your inputs method" >\r\n+                <option value="zip_file" selected="true">Zip file from your history containing your Bruker directories</option>\r\n+                <option value="lib" >Library directory name</option>\r\n+            </param>\r\n+            <when value="zip_file">\r\n+                <param name="zip_file" type="data" format="no_unzip.zip" label="Zip file" />\r\n+            </when>\r\n+            <when value="lib">\r\n+                <param name="library" type="text" size="40" label="Library directory name" help="The name of your directory containing all your data" >\r\n+                    <validator type="empty_field"/>\r\n+                </param>\r\n+            </when>\r\n+        </conditional>\r\n+\r\n+\t\t<param name="left_border" label="Left Border" type="float" value="10.0" size="10" help="Default value is 10 ppm"/>\r\n+\t\t<param name="right_border" label="Right Border" type="float" value="0.5" size="10" help="Default value is 0.5 ppm"/>\r\n+\r\n+\t\t<conditional name="zone_exclusion_choices">\r\n+\t\t\t<param name="choice" type="select" label="Exclusion zone(s)" help="Choose if you want to exclude particular zone(s)" >\r\n+\t\t\t\t<option value="yes" > yes </option>\r\n+\t\t\t\t<option value="no" selected="true"> no </option>\r\n+\t\t\t</param>\r\n+\t\t\t<when value="yes">\r\n+\t\t\t\t<repeat name="conditions" title="exclusion zones">\r\n+\t\t\t\t\t<param name="zone_exclusion_left" label="Left exclusion zone border" type="float" value="10.0" />\r\n+\t\t\t\t\t<param name="zone_exclusion_right" label="Right exclusion zone border" type="float" value="10.0" />\r\n+\t\t\t\t</repeat>\r\n+\t\t\t</when>\r\n+      <when value="no" />\r\n+\t\t</conditional>\r\n+\t\t<param name="reference" type="integer" value="0" help="Number of the reference spectrum. Default value is 0: automatic determination of the reference spectrum" />\r\n+\t\t<param name="nDivRange" type="integer" value="64" help="Size of a single small segment after division of spectra. Default value is 64" />\r\n+\t\t<param name="baselineThresh" type="integer" value="1" help="Threshold to remove all peaks with intensity lower this value. Default value is 1" />\r\n+\t</inputs>\r\n+\r\n+\t<outputs>\r\n+\t\t<data format="txt" name="logOut" label="${tool.name}_log" />\r\n+\t\t<data format="tabular" name="alignedSpectra" label="${tool.name}_alignedSpectra" />\r\n+\t\t<data format="pdf" name="graphOut" label="${tool.name}_graph" />\r'..b' file       format\r\n+========================= ================= =======\r\n+NA                        NA                NA\r\n+========================= ================= =======\r\n+\r\n+\r\n+**Downstream tools**\r\n+\r\n++---------------------------+----------------------+--------+\r\n+| Name                      | Output file          | Format |\r\n++===========================+======================+========+\r\n+|NmrBucketing               | dataMatrix.tsv       | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|                           | sampleMetadata.tsv   | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|                           | variableMetadata.tsv | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|NmrNormalization           | dataMatrix.tsv       | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|                           | sampleMetadata.tsv   | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|                           | variableMetadata.tsv | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|Univariate                 | variableMetadata.tsv | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|Multivariate               | sampleMetadata.tsv   | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+|                           | variableMetadata.tsv | Tabular|\r\n++---------------------------+----------------------+--------+\r\n+\r\n+\r\n+-----------\r\n+Input files\r\n+-----------\r\n+\r\n++---------------------------+------------+\r\n+| Parameter : num + label   |   Format   |\r\n++===========================+============+\r\n+| 1 : Choose your inputs    |   zip      |\r\n++---------------------------+------------+\r\n+\r\n+**Choose your inputs**\r\n+\r\n+    | Zip file (recommended): You can put a zip file containing your inputs: myinputs.zip (containing all your conditions as sub-directories).\r\n+\r\n+\r\n+----------\r\n+Parameters\r\n+----------\r\n+\r\n+Bucket width\r\n+\t| size of windows\r\n+\t|\r\n+\r\n+Left limit\r\n+\t| Upper boundary: values greater than this value are not used in the bucketing. Default value is 10.0 ppm\r\n+\t|\r\n+\r\n+Right limit\r\n+\t| Lower boundary: values lower than this value are not used in the bucketing. Default value is 0.5 ppm\r\n+\t|\r\n+\r\n+Exclusion zone(s)\r\n+\t| Spectral regions to exclude, water, solvents, ... resonance\r\n+\t| If YES: parameters **Lower exclusion zone** and **Upper exclusion zone** are visible,\r\n+\t| If NO: no zone to exclude\r\n+\t| Default value is NO\r\n+\t|\r\n+\r\n+Left exclusion zone\r\n+\t| Upper boundary of exclusion zone\r\n+\t|\r\n+\r\n+Right exclusion zone\r\n+\t| Lower boundary of exclusion zone\r\n+\r\n+| *Notes:*\r\n+| - these parameters can be used several times using the "Add new exclusion zones" button\r\n+|\r\n+\r\n+Reference spectrum\r\n+\t| spectrum to which other spectra are aligned\r\n+\t| Default value is 0: heuristic strategy to find the optimal template developped in the speaq package\r\n+\t|\r\n+\r\n+Segment size\r\n+\t| Size of a single small segment after division of spectra\r\n+\t| Default value: 64 (minimal value adviced)\r\n+\t|\r\n+\r\n+Intensity threshold\r\n+\t| All peaks with an intensity below this threshold are removed\r\n+\t| Default value: 1\r\n+\t|\r\n+\r\n+\r\n+------------\r\n+Output files\r\n+------------\r\n+\r\n+alignedSpectra.tsv\r\n+\t| tabular output\r\n+\t| Data matrix with p rows (ppm) and n columns (samples) containing the aligned intensities\r\n+\t|\r\n+\r\n+graphOut.pdf\r\n+\t| pdf output\r\n+\t| Graphical chart of raw and aligned data: whole spectral width, "zoomed" zones depending on the exclusion zones, spectral zone between 2.8 and 2.4ppm corresponding to the citric acid\r\n+\r\n+\r\n+---------------------------------------------------\r\n+\r\n+---------------\r\n+Example\r\n+---------------\r\n+\r\n+\r\n+.. image:: ./static/images/NmrAlignment.png\r\n+        :width: 500\r\n+\r\n+   </help>\r\n+   <citations>\r\n+       <citation type="doi">10.1093/bioinformatics/btu813</citation>\r\n+   </citations>\r\n+</tool>\r\n'
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/static/images/NmrAlignment.png
b
Binary file nmr_alignement/static/images/NmrAlignment.png has changed
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/test-data/MTBLS1.zip
b
Binary file nmr_alignement/test-data/MTBLS1.zip has changed
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/test-data/MTBLS1_bucketedData.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/test-data/MTBLS1_bucketedData.tabular Thu Mar 02 10:23:37 2017 -0500
b
b'@@ -0,0 +1,595 @@\n+Bucket\tADG10003u_007\tADG10003u_008\tADG10003u_009\tADG10003u_010\tADG10003u_015\tADG10003u_016\tADG10003u_017\tADG10003u_021\tADG10003u_022\tADG10003u_023\tADG10003u_051\tADG10003u_052\tADG10003u_053\tADG10003u_066\tADG10003u_067\tADG10003u_071\tADG10003u_072\tADG10003u_073\tADG10003u_087\tADG10003u_088\tADG10003u_089\tADG10003u_097\tADG10003u_098\r\n+B9.295\t1.79949423217956e-06\t1.36845276225836e-05\t2.01160697683997e-05\t7.25986492795804e-07\t2.42490464839257e-05\t3.11580892214512e-05\t8.19866824235026e-06\t3.09192259268499e-05\t2.64389193821353e-05\t1.45055826888266e-05\t3.45040700032625e-06\t1.60970199365859e-05\t1.05993065753594e-05\t2.90248760646802e-05\t1.06130409475137e-05\t5.2278556041205e-06\t2.44519080406605e-05\t3.7420635381202e-05\t1.57230624459948e-05\t2.75224138622866e-06\t2.08828714579133e-05\t5.49917968773367e-05\t8.22464110337308e-06\r\n+B9.286\t0.000183987136571742\t4.73741598311689e-05\t6.48220850387143e-05\t4.08486623139604e-05\t0.000124595459054319\t3.41874426311483e-05\t0.000122371178407348\t3.49547713922308e-05\t0.00015628757744243\t2.37737814473545e-05\t5.13987818577577e-05\t0.000134108924379129\t9.59219627606648e-05\t8.44451844992086e-05\t0.00022720535031565\t9.86157895513715e-05\t1.06199525078497e-05\t3.70983827911379e-05\t3.16119098225048e-05\t5.1709215131723e-06\t2.21703993321988e-05\t1.19479684646357e-05\t8.95607890845055e-06\r\n+B9.276\t6.1185692617288e-05\t0.00020732837726723\t0.00012538786536446\t2.84181782334477e-05\t2.53083682825459e-05\t2.76930477756038e-05\t9.7914592965261e-05\t1.44908072132008e-05\t7.76504143484867e-05\t2.21918164602678e-05\t0.000443221195814841\t0.00034996670727668\t0.000412632862820386\t0.000146364982064243\t0.000101892447453022\t0.00020898968160112\t0.00018589786110267\t0.000307514987819811\t0.000357112398084273\t0.000316352014982079\t0.00021198645013364\t0.000691068949900525\t0.000221146831632783\r\n+B9.266\t4.50617404358542e-05\t7.7187909059995e-06\t1.52411037411529e-05\t1.10253427920853e-05\t4.1745051441984e-05\t3.63488304424524e-05\t3.3290398209022e-05\t1.13169550474572e-05\t9.45184418976979e-06\t7.6012521812347e-06\t6.92482995870393e-06\t3.8268420757911e-05\t2.37195119946984e-06\t2.86004474506151e-05\t3.22860579421692e-06\t2.96039906990133e-06\t2.52808779783966e-05\t0.000142090898957934\t1.10312630129144e-05\t3.60677293639806e-06\t2.97265975382987e-05\t6.66305467846902e-06\t1.14495101906091e-05\r\n+B9.255\t1.15660880406503e-05\t2.14664012391468e-05\t4.60009639329725e-06\t1.25395676678615e-05\t4.17248489153109e-05\t1.46532714803481e-05\t1.00057270405122e-05\t2.75328532847705e-05\t2.74077840472564e-05\t2.41894891121703e-06\t8.0400281246103e-06\t1.59037103857697e-05\t1.00611731499731e-06\t6.71681516896861e-06\t1.36105357122668e-05\t7.11442411954162e-06\t2.21537557041547e-05\t2.87845824558775e-05\t4.03717597605331e-05\t1.42618582461408e-05\t1.84330229833385e-05\t6.39363012853215e-05\t2.18920831381193e-05\r\n+B9.246\t2.03293920474837e-07\t2.02423815996018e-05\t4.96598896737477e-06\t1.35705313106542e-05\t3.41075710581766e-05\t6.53017072634504e-05\t4.43984949390479e-06\t1.63183767828055e-05\t2.72484433555238e-06\t8.78724169594538e-06\t8.95623692386308e-07\t2.45735590368271e-05\t5.26105502709834e-06\t2.37539064007069e-05\t2.19035721346259e-05\t1.50517785846819e-05\t2.16082826646081e-05\t2.53649297518041e-05\t1.32773972605395e-05\t1.00977058894297e-05\t1.55783781762885e-05\t3.76630403674761e-05\t2.14582962168246e-05\r\n+B9.236\t3.37742336734625e-05\t1.09466424044581e-05\t1.26844396116922e-05\t1.41040509503652e-05\t8.32806751647478e-06\t6.89331798338183e-05\t1.31306116922384e-05\t2.44043814312157e-05\t2.60353424850613e-06\t1.5498729364209e-05\t1.12441000124573e-05\t1.90904945628191e-05\t4.77289113406423e-06\t2.6783614160707e-05\t1.81281101162131e-05\t2.27290178082349e-05\t2.2060579242685e-05\t2.02102446881195e-05\t2.82836945109232e-05\t2.6769889759727e-05\t3.20529608453921e-05\t1.46895321061598e-05\t2.72459848898296e-05\r\n+B9.226\t1.02347475703096e-05\t1.61525191983677e-05\t6.32740402153627e-06\t2.17291460045977e-06\t3.58860102752402e-05\t5.32064617047859e-05\t3.88074184844747e-06\t1.41925328605111e-05\t3.61825110992116e-05\t1.56626397248238e-05\t1.488989398'..b'2263392642444\t0.00538943800528357\t0.00514775819006039\t0.00559553789396426\t0.0173520429506117\t0.028324033261543\r\n+B0.876\t0.00215863677466562\t0.00369895246404019\t0.00360045348807487\t0.00134769212206423\t0.00218354336599731\t0.00245532683379321\t0.00345022433982449\t0.000717888096909645\t0.00170401747506495\t0.000356847987108017\t0.0041628951177036\t0.005088145578844\t0.00284987245949532\t0.00268286392210182\t0.00197915272339639\t0.0164744229799929\t0.00871859567919084\t0.0291624658349522\t0.00450433606743076\t0.00467317787458834\t0.00464469278467577\t0.0176322957897126\t0.0298903125539951\r\n+B0.866\t0.00150013418482023\t0.00258508360037412\t0.00238111738536749\t0.000983712268869988\t0.00157378746779101\t0.00184741600638927\t0.00259613706860757\t0.000530590445564721\t0.00114218607490948\t0.000297719443003154\t0.00236377135640083\t0.00299039447289031\t0.00169838032153178\t0.00202478720109677\t0.00155237208983581\t0.00506508824735588\t0.00335278099612616\t0.00916049409218431\t0.00304824370929634\t0.0028945285734165\t0.0028543532645478\t0.00397438831823791\t0.00746021084696681\r\n+B0.857\t0.000986962374512856\t0.00174301185204418\t0.00155459274530862\t0.00059744100374567\t0.000946611593982685\t0.00119641009019251\t0.00173321235334005\t0.000356899004924163\t0.000758730491964375\t0.000160811437925477\t0.00152510957100737\t0.00196835887814581\t0.00101457930295155\t0.00150335976451684\t0.00101420955937978\t0.0033735623219071\t0.00210956426055451\t0.00493276854725743\t0.00178283936255044\t0.00165275426730159\t0.00170372495712446\t0.00248870525573775\t0.0039846322834038\r\n+B0.846\t0.000839825601114667\t0.0012769784113784\t0.00110091918664795\t0.000413961172391942\t0.000708888771217311\t0.000778154520699405\t0.00111234240481985\t0.000244663266226838\t0.000484525523691875\t7.68758960306947e-05\t0.000909219126236251\t0.00113056799032888\t0.000631562997579227\t0.00107030332221529\t0.000634580995745331\t0.00106135884542878\t0.000970558123349218\t0.00157698752726719\t0.00109118524592164\t0.0010809000005087\t0.00117405624971632\t0.00104182637112804\t0.00136932315987551\r\n+B0.836\t0.000540291147081289\t0.00110805916107828\t0.000991944918364915\t0.000259305489167024\t0.000414200683547401\t0.000446851710747917\t0.000739324952553648\t0.00014512091218808\t0.000240131270356258\t1.53279187890163e-05\t0.000995779500719967\t0.00117589795062701\t0.000663607401633198\t0.00072607607121414\t0.000348533637762843\t0.000814771690737036\t0.000852228105038011\t0.00106417265964175\t0.00106436355116083\t0.00088998568772594\t0.00115577335390134\t0.000793475313473202\t0.000969704476916626\r\n+B0.826\t0.000439210376659004\t0.000622025753244184\t0.0005877341421479\t0.000201776175879904\t0.000325527630159852\t0.000344597178120722\t0.000468730496980652\t0.000169188243600758\t0.000244354283493434\t1.80591932027473e-05\t0.000645393534597378\t0.00076364124043746\t0.000411619698520102\t0.000416731585656504\t0.000256480294202034\t0.000524752271786902\t0.000676304092825243\t0.000814916554483356\t0.000597779964300897\t0.000807012376046873\t0.000712066733726576\t0.000508127245813254\t0.000691958647587166\r\n+B0.816\t0.000394076959769821\t0.000626251816952311\t0.000644546372165628\t0.000163741793970591\t0.000294493619073591\t0.000396363737760121\t0.000520046367222883\t0.00012853568638618\t0.000243131055493038\t1.18743008584546e-05\t0.000604929046893319\t0.000717510278393041\t0.000373029125568352\t0.000391937364448496\t0.000234261393789731\t0.000523235700797077\t0.000619868853421147\t0.000730622691788109\t0.000640770168804395\t0.000676985988978989\t0.000745527871203007\t0.00061791716531139\t0.000781012740687151\r\n+B0.806\t0.000336785447055572\t0.000470318285990568\t0.000447571911175899\t0.00015477142985862\t0.000254766661248894\t0.000300355488014835\t0.000386815449880438\t0.000128859420585409\t0.000182934749398549\t1.11417886043334e-05\t0.0003939533156056\t0.000417332638774188\t0.000210616293653824\t0.000296880999894829\t0.000120837576055159\t0.00033047173709954\t0.000388172417071423\t0.000450376987152908\t0.000452051328977898\t0.000485123182275246\t0.00047918667429437\t0.000397128925502763\t0.000516124725384787\r\n+B0.8\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\r\n'
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/test-data/MTBLS1_sampleMetadata.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/test-data/MTBLS1_sampleMetadata.tabular Thu Mar 02 10:23:37 2017 -0500
b
@@ -0,0 +1,24 @@
+Sample SampleOrder
+ADG10003u_007 1
+ADG10003u_008 2
+ADG10003u_009 3
+ADG10003u_010 4
+ADG10003u_015 5
+ADG10003u_016 6
+ADG10003u_017 7
+ADG10003u_021 8
+ADG10003u_022 9
+ADG10003u_023 10
+ADG10003u_051 11
+ADG10003u_052 12
+ADG10003u_053 13
+ADG10003u_066 14
+ADG10003u_067 15
+ADG10003u_071 16
+ADG10003u_072 17
+ADG10003u_073 18
+ADG10003u_087 19
+ADG10003u_088 20
+ADG10003u_089 21
+ADG10003u_097 22
+ADG10003u_098 23
b
diff -r d690c5ad932f -r 58eecef626da nmr_alignement/test-data/MTBLS1_variableMetadata.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nmr_alignement/test-data/MTBLS1_variableMetadata.tabular Thu Mar 02 10:23:37 2017 -0500
b
@@ -0,0 +1,595 @@
+Bucket VariableOrder
+B9.295 1
+B9.286 2
+B9.276 3
+B9.266 4
+B9.255 5
+B9.246 6
+B9.236 7
+B9.226 8
+B9.215 9
+B9.206 10
+B9.196 11
+B9.186 12
+B9.175 13
+B9.165 14
+B9.156 15
+B9.146 16
+B9.135 17
+B9.126 18
+B9.116 19
+B9.106 20
+B9.095 21
+B9.085 22
+B9.076 23
+B9.066 24
+B9.055 25
+B9.046 26
+B9.036 27
+B9.026 28
+B9.015 29
+B9.005 30
+B8.996 31
+B8.986 32
+B8.975 33
+B8.966 34
+B8.956 35
+B8.946 36
+B8.935 37
+B8.925 38
+B8.916 39
+B8.905 40
+B8.895 41
+B8.886 42
+B8.876 43
+B8.865 44
+B8.855 45
+B8.845 46
+B8.836 47
+B8.825 48
+B8.815 49
+B8.806 50
+B8.796 51
+B8.785 52
+B8.775 53
+B8.765 54
+B8.756 55
+B8.745 56
+B8.735 57
+B8.726 58
+B8.716 59
+B8.705 60
+B8.695 61
+B8.685 62
+B8.676 63
+B8.665 64
+B8.655 65
+B8.646 66
+B8.636 67
+B8.625 68
+B8.615 69
+B8.605 70
+B8.596 71
+B8.585 72
+B8.575 73
+B8.565 74
+B8.556 75
+B8.545 76
+B8.535 77
+B8.525 78
+B8.516 79
+B8.505 80
+B8.495 81
+B8.485 82
+B8.476 83
+B8.465 84
+B8.455 85
+B8.445 86
+B8.436 87
+B8.425 88
+B8.415 89
+B8.405 90
+B8.396 91
+B8.385 92
+B8.375 93
+B8.365 94
+B8.356 95
+B8.345 96
+B8.335 97
+B8.325 98
+B8.316 99
+B8.305 100
+B8.295 101
+B8.285 102
+B8.276 103
+B8.265 104
+B8.255 105
+B8.245 106
+B8.236 107
+B8.225 108
+B8.215 109
+B8.205 110
+B8.196 111
+B8.185 112
+B8.175 113
+B8.165 114
+B8.156 115
+B8.145 116
+B8.135 117
+B8.125 118
+B8.116 119
+B8.105 120
+B8.096 121
+B8.086 122
+B8.076 123
+B8.065 124
+B8.056 125
+B8.046 126
+B8.036 127
+B8.025 128
+B8.016 129
+B8.006 130
+B7.996 131
+B7.985 132
+B7.976 133
+B7.966 134
+B7.956 135
+B7.945 136
+B7.936 137
+B7.926 138
+B7.916 139
+B7.905 140
+B7.896 141
+B7.886 142
+B7.876 143
+B7.865 144
+B7.856 145
+B7.846 146
+B7.836 147
+B7.825 148
+B7.816 149
+B7.806 150
+B7.796 151
+B7.785 152
+B7.776 153
+B7.766 154
+B7.756 155
+B7.745 156
+B7.736 157
+B7.726 158
+B7.716 159
+B7.705 160
+B7.696 161
+B7.686 162
+B7.676 163
+B7.665 164
+B7.656 165
+B7.646 166
+B7.636 167
+B7.625 168
+B7.616 169
+B7.606 170
+B7.596 171
+B7.585 172
+B7.575 173
+B7.566 174
+B7.556 175
+B7.545 176
+B7.535 177
+B7.526 178
+B7.516 179
+B7.505 180
+B7.495 181
+B7.486 182
+B7.476 183
+B7.465 184
+B7.455 185
+B7.446 186
+B7.436 187
+B7.425 188
+B7.415 189
+B7.406 190
+B7.396 191
+B7.385 192
+B7.375 193
+B7.366 194
+B7.356 195
+B7.345 196
+B7.335 197
+B7.326 198
+B7.316 199
+B7.305 200
+B7.295 201
+B7.286 202
+B7.275 203
+B7.265 204
+B7.255 205
+B7.246 206
+B7.235 207
+B7.225 208
+B7.216 209
+B7.206 210
+B7.195 211
+B7.185 212
+B7.175 213
+B7.166 214
+B7.155 215
+B7.145 216
+B7.136 217
+B7.126 218
+B7.115 219
+B7.105 220
+B7.096 221
+B7.086 222
+B7.075 223
+B7.065 224
+B7.056 225
+B7.046 226
+B7.035 227
+B7.025 228
+B7.016 229
+B7.006 230
+B6.995 231
+B6.985 232
+B6.976 233
+B6.966 234
+B6.955 235
+B6.945 236
+B6.935 237
+B6.926 238
+B6.915 239
+B6.905 240
+B6.895 241
+B6.886 242
+B6.875 243
+B6.865 244
+B6.855 245
+B6.846 246
+B6.835 247
+B6.825 248
+B6.815 249
+B6.806 250
+B6.795 251
+B6.785 252
+B6.775 253
+B6.766 254
+B6.755 255
+B6.745 256
+B6.735 257
+B6.726 258
+B6.715 259
+B6.705 260
+B6.695 261
+B6.686 262
+B6.675 263
+B6.665 264
+B6.655 265
+B6.646 266
+B6.635 267
+B6.625 268
+B6.615 269
+B6.606 270
+B6.595 271
+B6.585 272
+B6.575 273
+B6.566 274
+B6.555 275
+B6.545 276
+B6.535 277
+B6.526 278
+B6.515 279
+B6.505 280
+B6.495 281
+B6.486 282
+B6.475 283
+B6.466 284
+B6.456 285
+B6.446 286
+B6.435 287
+B6.426 288
+B6.416 289
+B6.406 290
+B6.395 291
+B6.386 292
+B6.376 293
+B6.366 294
+B6.355 295
+B6.346 296
+B6.336 297
+B6.326 298
+B6.315 299
+B6.306 300
+B6.296 301
+B6.286 302
+B6.275 303
+B6.266 304
+B6.256 305
+B6.246 306
+B6.235 307
+B6.226 308
+B6.216 309
+B6.206 310
+B6.195 311
+B6.186 312
+B6.176 313
+B6.166 314
+B6.155 315
+B6.146 316
+B6.136 317
+B6.126 318
+B6.115 319
+B6.106 320
+B6.096 321
+B6.086 322
+B6.075 323
+B6.066 324
+B6.056 325
+B6.046 326
+B6.035 327
+B6.026 328
+B6.016 329
+B6.006 330
+B4.236 331
+B4.226 332
+B4.216 333
+B4.205 334
+B4.196 335
+B4.186 336
+B4.176 337
+B4.165 338
+B4.155 339
+B4.146 340
+B4.136 341
+B4.125 342
+B4.115 343
+B4.106 344
+B4.096 345
+B4.085 346
+B4.075 347
+B4.066 348
+B4.056 349
+B4.045 350
+B4.035 351
+B4.026 352
+B4.015 353
+B4.005 354
+B3.995 355
+B3.186 356
+B3.175 357
+B3.166 358
+B3.156 359
+B3.146 360
+B3.135 361
+B3.126 362
+B3.116 363
+B3.106 364
+B3.095 365
+B3.086 366
+B3.076 367
+B3.066 368
+B3.055 369
+B3.046 370
+B3.036 371
+B3.026 372
+B3.015 373
+B3.006 374
+B2.996 375
+B2.986 376
+B2.975 377
+B2.966 378
+B2.956 379
+B2.946 380
+B2.935 381
+B2.926 382
+B2.916 383
+B2.906 384
+B2.895 385
+B2.886 386
+B2.876 387
+B2.866 388
+B2.855 389
+B2.846 390
+B2.836 391
+B2.826 392
+B2.815 393
+B2.806 394
+B2.796 395
+B2.786 396
+B2.775 397
+B2.766 398
+B2.756 399
+B2.746 400
+B2.735 401
+B2.726 402
+B2.716 403
+B2.706 404
+B2.695 405
+B2.686 406
+B2.676 407
+B2.666 408
+B2.655 409
+B2.646 410
+B2.636 411
+B2.626 412
+B2.615 413
+B2.606 414
+B2.596 415
+B2.586 416
+B2.575 417
+B2.566 418
+B2.556 419
+B2.546 420
+B2.535 421
+B2.526 422
+B2.516 423
+B2.506 424
+B2.495 425
+B2.486 426
+B2.476 427
+B2.466 428
+B2.455 429
+B2.446 430
+B2.436 431
+B2.426 432
+B2.415 433
+B2.406 434
+B2.396 435
+B2.385 436
+B2.375 437
+B2.365 438
+B2.356 439
+B2.345 440
+B2.335 441
+B2.325 442
+B2.316 443
+B2.305 444
+B2.295 445
+B2.285 446
+B2.276 447
+B2.265 448
+B2.255 449
+B2.245 450
+B2.236 451
+B2.225 452
+B2.215 453
+B2.205 454
+B2.196 455
+B2.185 456
+B2.175 457
+B2.165 458
+B2.156 459
+B2.145 460
+B2.135 461
+B2.126 462
+B2.116 463
+B2.105 464
+B2.095 465
+B2.086 466
+B2.076 467
+B2.065 468
+B2.055 469
+B2.045 470
+B2.036 471
+B2.025 472
+B2.015 473
+B2.005 474
+B1.994 475
+B1.985 476
+B1.974 477
+B1.964 478
+B1.954 479
+B1.945 480
+B1.934 481
+B1.924 482
+B1.914 483
+B1.905 484
+B1.894 485
+B1.884 486
+B1.874 487
+B1.865 488
+B1.854 489
+B1.844 490
+B1.834 491
+B1.825 492
+B1.814 493
+B1.804 494
+B1.794 495
+B1.785 496
+B1.774 497
+B1.764 498
+B1.754 499
+B1.743 500
+B1.734 501
+B1.723 502
+B1.713 503
+B1.703 504
+B1.694 505
+B1.683 506
+B1.673 507
+B1.663 508
+B1.654 509
+B1.643 510
+B1.633 511
+B1.623 512
+B1.612 513
+B1.603 514
+B1.592 515
+B1.582 516
+B1.572 517
+B1.563 518
+B1.552 519
+B1.542 520
+B1.532 521
+B1.523 522
+B1.512 523
+B1.502 524
+B1.491 525
+B1.482 526
+B1.472 527
+B1.461 528
+B1.451 529
+B1.442 530
+B1.432 531
+B1.421 532
+B1.411 533
+B1.401 534
+B1.392 535
+B1.381 536
+B1.371 537
+B1.36 538
+B1.351 539
+B1.341 540
+B1.33 541
+B1.32 542
+B1.31 543
+B1.301 544
+B1.29 545
+B1.28 546
+B1.27 547
+B1.261 548
+B1.25 549
+B1.239 550
+B1.229 551
+B1.22 552
+B1.21 553
+B1.199 554
+B1.189 555
+B1.18 556
+B1.17 557
+B1.159 558
+B1.149 559
+B1.139 560
+B1.129 561
+B1.119 562
+B1.108 563
+B1.098 564
+B1.089 565
+B1.079 566
+B1.068 567
+B1.058 568
+B1.048 569
+B1.039 570
+B1.028 571
+B1.018 572
+B1.008 573
+B0.998 574
+B0.988 575
+B0.977 576
+B0.967 577
+B0.958 578
+B0.948 579
+B0.937 580
+B0.926 581
+B0.916 582
+B0.907 583
+B0.897 584
+B0.886 585
+B0.876 586
+B0.866 587
+B0.857 588
+B0.846 589
+B0.836 590
+B0.826 591
+B0.816 592
+B0.806 593
+B0.8 594
b
diff -r d690c5ad932f -r 58eecef626da static/images/NmrAlignment.png
b
Binary file static/images/NmrAlignment.png has changed
b
diff -r d690c5ad932f -r 58eecef626da test-data/MTBLS1.zip
b
Binary file test-data/MTBLS1.zip has changed
b
diff -r d690c5ad932f -r 58eecef626da test-data/MTBLS1_bucketedData.tabular
--- a/test-data/MTBLS1_bucketedData.tabular Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,595 +0,0 @@\n-Bucket\tADG10003u_007\tADG10003u_008\tADG10003u_009\tADG10003u_010\tADG10003u_015\tADG10003u_016\tADG10003u_017\tADG10003u_021\tADG10003u_022\tADG10003u_023\tADG10003u_051\tADG10003u_052\tADG10003u_053\tADG10003u_066\tADG10003u_067\tADG10003u_071\tADG10003u_072\tADG10003u_073\tADG10003u_087\tADG10003u_088\tADG10003u_089\tADG10003u_097\tADG10003u_098\n-B9.295\t1.79949423217956e-06\t1.36845276225836e-05\t2.01160697683997e-05\t7.25986492795804e-07\t2.42490464839257e-05\t3.11580892214512e-05\t8.19866824235026e-06\t3.09192259268499e-05\t2.64389193821353e-05\t1.45055826888266e-05\t3.45040700032625e-06\t1.60970199365859e-05\t1.05993065753594e-05\t2.90248760646802e-05\t1.06130409475137e-05\t5.2278556041205e-06\t2.44519080406605e-05\t3.7420635381202e-05\t1.57230624459948e-05\t2.75224138622866e-06\t2.08828714579133e-05\t5.49917968773367e-05\t8.22464110337308e-06\n-B9.286\t0.000183987136571742\t4.73741598311689e-05\t6.48220850387143e-05\t4.08486623139604e-05\t0.000124595459054319\t3.41874426311483e-05\t0.000122371178407348\t3.49547713922308e-05\t0.00015628757744243\t2.37737814473545e-05\t5.13987818577577e-05\t0.000134108924379129\t9.59219627606648e-05\t8.44451844992086e-05\t0.00022720535031565\t9.86157895513715e-05\t1.06199525078497e-05\t3.70983827911379e-05\t3.16119098225048e-05\t5.1709215131723e-06\t2.21703993321988e-05\t1.19479684646357e-05\t8.95607890845055e-06\n-B9.276\t6.1185692617288e-05\t0.00020732837726723\t0.00012538786536446\t2.84181782334477e-05\t2.53083682825459e-05\t2.76930477756038e-05\t9.7914592965261e-05\t1.44908072132008e-05\t7.76504143484867e-05\t2.21918164602678e-05\t0.000443221195814841\t0.00034996670727668\t0.000412632862820386\t0.000146364982064243\t0.000101892447453022\t0.00020898968160112\t0.00018589786110267\t0.000307514987819811\t0.000357112398084273\t0.000316352014982079\t0.00021198645013364\t0.000691068949900525\t0.000221146831632783\n-B9.266\t4.50617404358542e-05\t7.7187909059995e-06\t1.52411037411529e-05\t1.10253427920853e-05\t4.1745051441984e-05\t3.63488304424524e-05\t3.3290398209022e-05\t1.13169550474572e-05\t9.45184418976979e-06\t7.6012521812347e-06\t6.92482995870393e-06\t3.8268420757911e-05\t2.37195119946984e-06\t2.86004474506151e-05\t3.22860579421692e-06\t2.96039906990133e-06\t2.52808779783966e-05\t0.000142090898957934\t1.10312630129144e-05\t3.60677293639806e-06\t2.97265975382987e-05\t6.66305467846902e-06\t1.14495101906091e-05\n-B9.255\t1.15660880406503e-05\t2.14664012391468e-05\t4.60009639329725e-06\t1.25395676678615e-05\t4.17248489153109e-05\t1.46532714803481e-05\t1.00057270405122e-05\t2.75328532847705e-05\t2.74077840472564e-05\t2.41894891121703e-06\t8.0400281246103e-06\t1.59037103857697e-05\t1.00611731499731e-06\t6.71681516896861e-06\t1.36105357122668e-05\t7.11442411954162e-06\t2.21537557041547e-05\t2.87845824558775e-05\t4.03717597605331e-05\t1.42618582461408e-05\t1.84330229833385e-05\t6.39363012853215e-05\t2.18920831381193e-05\n-B9.246\t2.03293920474837e-07\t2.02423815996018e-05\t4.96598896737477e-06\t1.35705313106542e-05\t3.41075710581766e-05\t6.53017072634504e-05\t4.43984949390479e-06\t1.63183767828055e-05\t2.72484433555238e-06\t8.78724169594538e-06\t8.95623692386308e-07\t2.45735590368271e-05\t5.26105502709834e-06\t2.37539064007069e-05\t2.19035721346259e-05\t1.50517785846819e-05\t2.16082826646081e-05\t2.53649297518041e-05\t1.32773972605395e-05\t1.00977058894297e-05\t1.55783781762885e-05\t3.76630403674761e-05\t2.14582962168246e-05\n-B9.236\t3.37742336734625e-05\t1.09466424044581e-05\t1.26844396116922e-05\t1.41040509503652e-05\t8.32806751647478e-06\t6.89331798338183e-05\t1.31306116922384e-05\t2.44043814312157e-05\t2.60353424850613e-06\t1.5498729364209e-05\t1.12441000124573e-05\t1.90904945628191e-05\t4.77289113406423e-06\t2.6783614160707e-05\t1.81281101162131e-05\t2.27290178082349e-05\t2.2060579242685e-05\t2.02102446881195e-05\t2.82836945109232e-05\t2.6769889759727e-05\t3.20529608453921e-05\t1.46895321061598e-05\t2.72459848898296e-05\n-B9.226\t1.02347475703096e-05\t1.61525191983677e-05\t6.32740402153627e-06\t2.17291460045977e-06\t3.58860102752402e-05\t5.32064617047859e-05\t3.88074184844747e-06\t1.41925328605111e-05\t3.61825110992116e-05\t1.56626397248238e-05\t1.48898939857621e-0'..b'7579\t0.0232263392642444\t0.00538943800528357\t0.00514775819006039\t0.00559553789396426\t0.0173520429506117\t0.028324033261543\n-B0.876\t0.00215863677466562\t0.00369895246404019\t0.00360045348807487\t0.00134769212206423\t0.00218354336599731\t0.00245532683379321\t0.00345022433982449\t0.000717888096909645\t0.00170401747506495\t0.000356847987108017\t0.0041628951177036\t0.005088145578844\t0.00284987245949532\t0.00268286392210182\t0.00197915272339639\t0.0164744229799929\t0.00871859567919084\t0.0291624658349522\t0.00450433606743076\t0.00467317787458834\t0.00464469278467577\t0.0176322957897126\t0.0298903125539951\n-B0.866\t0.00150013418482023\t0.00258508360037412\t0.00238111738536749\t0.000983712268869988\t0.00157378746779101\t0.00184741600638927\t0.00259613706860757\t0.000530590445564721\t0.00114218607490948\t0.000297719443003154\t0.00236377135640083\t0.00299039447289031\t0.00169838032153178\t0.00202478720109677\t0.00155237208983581\t0.00506508824735588\t0.00335278099612616\t0.00916049409218431\t0.00304824370929634\t0.0028945285734165\t0.0028543532645478\t0.00397438831823791\t0.00746021084696681\n-B0.857\t0.000986962374512856\t0.00174301185204418\t0.00155459274530862\t0.00059744100374567\t0.000946611593982685\t0.00119641009019251\t0.00173321235334005\t0.000356899004924163\t0.000758730491964375\t0.000160811437925477\t0.00152510957100737\t0.00196835887814581\t0.00101457930295155\t0.00150335976451684\t0.00101420955937978\t0.0033735623219071\t0.00210956426055451\t0.00493276854725743\t0.00178283936255044\t0.00165275426730159\t0.00170372495712446\t0.00248870525573775\t0.0039846322834038\n-B0.846\t0.000839825601114667\t0.0012769784113784\t0.00110091918664795\t0.000413961172391942\t0.000708888771217311\t0.000778154520699405\t0.00111234240481985\t0.000244663266226838\t0.000484525523691875\t7.68758960306947e-05\t0.000909219126236251\t0.00113056799032888\t0.000631562997579227\t0.00107030332221529\t0.000634580995745331\t0.00106135884542878\t0.000970558123349218\t0.00157698752726719\t0.00109118524592164\t0.0010809000005087\t0.00117405624971632\t0.00104182637112804\t0.00136932315987551\n-B0.836\t0.000540291147081289\t0.00110805916107828\t0.000991944918364915\t0.000259305489167024\t0.000414200683547401\t0.000446851710747917\t0.000739324952553648\t0.00014512091218808\t0.000240131270356258\t1.53279187890163e-05\t0.000995779500719967\t0.00117589795062701\t0.000663607401633198\t0.00072607607121414\t0.000348533637762843\t0.000814771690737036\t0.000852228105038011\t0.00106417265964175\t0.00106436355116083\t0.00088998568772594\t0.00115577335390134\t0.000793475313473202\t0.000969704476916626\n-B0.826\t0.000439210376659004\t0.000622025753244184\t0.0005877341421479\t0.000201776175879904\t0.000325527630159852\t0.000344597178120722\t0.000468730496980652\t0.000169188243600758\t0.000244354283493434\t1.80591932027473e-05\t0.000645393534597378\t0.00076364124043746\t0.000411619698520102\t0.000416731585656504\t0.000256480294202034\t0.000524752271786902\t0.000676304092825243\t0.000814916554483356\t0.000597779964300897\t0.000807012376046873\t0.000712066733726576\t0.000508127245813254\t0.000691958647587166\n-B0.816\t0.000394076959769821\t0.000626251816952311\t0.000644546372165628\t0.000163741793970591\t0.000294493619073591\t0.000396363737760121\t0.000520046367222883\t0.00012853568638618\t0.000243131055493038\t1.18743008584546e-05\t0.000604929046893319\t0.000717510278393041\t0.000373029125568352\t0.000391937364448496\t0.000234261393789731\t0.000523235700797077\t0.000619868853421147\t0.000730622691788109\t0.000640770168804395\t0.000676985988978989\t0.000745527871203007\t0.00061791716531139\t0.000781012740687151\n-B0.806\t0.000336785447055572\t0.000470318285990568\t0.000447571911175899\t0.00015477142985862\t0.000254766661248894\t0.000300355488014835\t0.000386815449880438\t0.000128859420585409\t0.000182934749398549\t1.11417886043334e-05\t0.0003939533156056\t0.000417332638774188\t0.000210616293653824\t0.000296880999894829\t0.000120837576055159\t0.00033047173709954\t0.000388172417071423\t0.000450376987152908\t0.000452051328977898\t0.000485123182275246\t0.00047918667429437\t0.000397128925502763\t0.000516124725384787\n-B0.8\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n'
b
diff -r d690c5ad932f -r 58eecef626da test-data/MTBLS1_sampleMetadata.tabular
--- a/test-data/MTBLS1_sampleMetadata.tabular Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,24 +0,0 @@
-Sample SampleOrder
-ADG10003u_007 1
-ADG10003u_008 2
-ADG10003u_009 3
-ADG10003u_010 4
-ADG10003u_015 5
-ADG10003u_016 6
-ADG10003u_017 7
-ADG10003u_021 8
-ADG10003u_022 9
-ADG10003u_023 10
-ADG10003u_051 11
-ADG10003u_052 12
-ADG10003u_053 13
-ADG10003u_066 14
-ADG10003u_067 15
-ADG10003u_071 16
-ADG10003u_072 17
-ADG10003u_073 18
-ADG10003u_087 19
-ADG10003u_088 20
-ADG10003u_089 21
-ADG10003u_097 22
-ADG10003u_098 23
b
diff -r d690c5ad932f -r 58eecef626da test-data/MTBLS1_variableMetadata.tabular
--- a/test-data/MTBLS1_variableMetadata.tabular Thu Nov 24 12:11:04 2016 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,595 +0,0 @@
-Bucket VariableOrder
-B9.295 1
-B9.286 2
-B9.276 3
-B9.266 4
-B9.255 5
-B9.246 6
-B9.236 7
-B9.226 8
-B9.215 9
-B9.206 10
-B9.196 11
-B9.186 12
-B9.175 13
-B9.165 14
-B9.156 15
-B9.146 16
-B9.135 17
-B9.126 18
-B9.116 19
-B9.106 20
-B9.095 21
-B9.085 22
-B9.076 23
-B9.066 24
-B9.055 25
-B9.046 26
-B9.036 27
-B9.026 28
-B9.015 29
-B9.005 30
-B8.996 31
-B8.986 32
-B8.975 33
-B8.966 34
-B8.956 35
-B8.946 36
-B8.935 37
-B8.925 38
-B8.916 39
-B8.905 40
-B8.895 41
-B8.886 42
-B8.876 43
-B8.865 44
-B8.855 45
-B8.845 46
-B8.836 47
-B8.825 48
-B8.815 49
-B8.806 50
-B8.796 51
-B8.785 52
-B8.775 53
-B8.765 54
-B8.756 55
-B8.745 56
-B8.735 57
-B8.726 58
-B8.716 59
-B8.705 60
-B8.695 61
-B8.685 62
-B8.676 63
-B8.665 64
-B8.655 65
-B8.646 66
-B8.636 67
-B8.625 68
-B8.615 69
-B8.605 70
-B8.596 71
-B8.585 72
-B8.575 73
-B8.565 74
-B8.556 75
-B8.545 76
-B8.535 77
-B8.525 78
-B8.516 79
-B8.505 80
-B8.495 81
-B8.485 82
-B8.476 83
-B8.465 84
-B8.455 85
-B8.445 86
-B8.436 87
-B8.425 88
-B8.415 89
-B8.405 90
-B8.396 91
-B8.385 92
-B8.375 93
-B8.365 94
-B8.356 95
-B8.345 96
-B8.335 97
-B8.325 98
-B8.316 99
-B8.305 100
-B8.295 101
-B8.285 102
-B8.276 103
-B8.265 104
-B8.255 105
-B8.245 106
-B8.236 107
-B8.225 108
-B8.215 109
-B8.205 110
-B8.196 111
-B8.185 112
-B8.175 113
-B8.165 114
-B8.156 115
-B8.145 116
-B8.135 117
-B8.125 118
-B8.116 119
-B8.105 120
-B8.096 121
-B8.086 122
-B8.076 123
-B8.065 124
-B8.056 125
-B8.046 126
-B8.036 127
-B8.025 128
-B8.016 129
-B8.006 130
-B7.996 131
-B7.985 132
-B7.976 133
-B7.966 134
-B7.956 135
-B7.945 136
-B7.936 137
-B7.926 138
-B7.916 139
-B7.905 140
-B7.896 141
-B7.886 142
-B7.876 143
-B7.865 144
-B7.856 145
-B7.846 146
-B7.836 147
-B7.825 148
-B7.816 149
-B7.806 150
-B7.796 151
-B7.785 152
-B7.776 153
-B7.766 154
-B7.756 155
-B7.745 156
-B7.736 157
-B7.726 158
-B7.716 159
-B7.705 160
-B7.696 161
-B7.686 162
-B7.676 163
-B7.665 164
-B7.656 165
-B7.646 166
-B7.636 167
-B7.625 168
-B7.616 169
-B7.606 170
-B7.596 171
-B7.585 172
-B7.575 173
-B7.566 174
-B7.556 175
-B7.545 176
-B7.535 177
-B7.526 178
-B7.516 179
-B7.505 180
-B7.495 181
-B7.486 182
-B7.476 183
-B7.465 184
-B7.455 185
-B7.446 186
-B7.436 187
-B7.425 188
-B7.415 189
-B7.406 190
-B7.396 191
-B7.385 192
-B7.375 193
-B7.366 194
-B7.356 195
-B7.345 196
-B7.335 197
-B7.326 198
-B7.316 199
-B7.305 200
-B7.295 201
-B7.286 202
-B7.275 203
-B7.265 204
-B7.255 205
-B7.246 206
-B7.235 207
-B7.225 208
-B7.216 209
-B7.206 210
-B7.195 211
-B7.185 212
-B7.175 213
-B7.166 214
-B7.155 215
-B7.145 216
-B7.136 217
-B7.126 218
-B7.115 219
-B7.105 220
-B7.096 221
-B7.086 222
-B7.075 223
-B7.065 224
-B7.056 225
-B7.046 226
-B7.035 227
-B7.025 228
-B7.016 229
-B7.006 230
-B6.995 231
-B6.985 232
-B6.976 233
-B6.966 234
-B6.955 235
-B6.945 236
-B6.935 237
-B6.926 238
-B6.915 239
-B6.905 240
-B6.895 241
-B6.886 242
-B6.875 243
-B6.865 244
-B6.855 245
-B6.846 246
-B6.835 247
-B6.825 248
-B6.815 249
-B6.806 250
-B6.795 251
-B6.785 252
-B6.775 253
-B6.766 254
-B6.755 255
-B6.745 256
-B6.735 257
-B6.726 258
-B6.715 259
-B6.705 260
-B6.695 261
-B6.686 262
-B6.675 263
-B6.665 264
-B6.655 265
-B6.646 266
-B6.635 267
-B6.625 268
-B6.615 269
-B6.606 270
-B6.595 271
-B6.585 272
-B6.575 273
-B6.566 274
-B6.555 275
-B6.545 276
-B6.535 277
-B6.526 278
-B6.515 279
-B6.505 280
-B6.495 281
-B6.486 282
-B6.475 283
-B6.466 284
-B6.456 285
-B6.446 286
-B6.435 287
-B6.426 288
-B6.416 289
-B6.406 290
-B6.395 291
-B6.386 292
-B6.376 293
-B6.366 294
-B6.355 295
-B6.346 296
-B6.336 297
-B6.326 298
-B6.315 299
-B6.306 300
-B6.296 301
-B6.286 302
-B6.275 303
-B6.266 304
-B6.256 305
-B6.246 306
-B6.235 307
-B6.226 308
-B6.216 309
-B6.206 310
-B6.195 311
-B6.186 312
-B6.176 313
-B6.166 314
-B6.155 315
-B6.146 316
-B6.136 317
-B6.126 318
-B6.115 319
-B6.106 320
-B6.096 321
-B6.086 322
-B6.075 323
-B6.066 324
-B6.056 325
-B6.046 326
-B6.035 327
-B6.026 328
-B6.016 329
-B6.006 330
-B4.236 331
-B4.226 332
-B4.216 333
-B4.205 334
-B4.196 335
-B4.186 336
-B4.176 337
-B4.165 338
-B4.155 339
-B4.146 340
-B4.136 341
-B4.125 342
-B4.115 343
-B4.106 344
-B4.096 345
-B4.085 346
-B4.075 347
-B4.066 348
-B4.056 349
-B4.045 350
-B4.035 351
-B4.026 352
-B4.015 353
-B4.005 354
-B3.995 355
-B3.186 356
-B3.175 357
-B3.166 358
-B3.156 359
-B3.146 360
-B3.135 361
-B3.126 362
-B3.116 363
-B3.106 364
-B3.095 365
-B3.086 366
-B3.076 367
-B3.066 368
-B3.055 369
-B3.046 370
-B3.036 371
-B3.026 372
-B3.015 373
-B3.006 374
-B2.996 375
-B2.986 376
-B2.975 377
-B2.966 378
-B2.956 379
-B2.946 380
-B2.935 381
-B2.926 382
-B2.916 383
-B2.906 384
-B2.895 385
-B2.886 386
-B2.876 387
-B2.866 388
-B2.855 389
-B2.846 390
-B2.836 391
-B2.826 392
-B2.815 393
-B2.806 394
-B2.796 395
-B2.786 396
-B2.775 397
-B2.766 398
-B2.756 399
-B2.746 400
-B2.735 401
-B2.726 402
-B2.716 403
-B2.706 404
-B2.695 405
-B2.686 406
-B2.676 407
-B2.666 408
-B2.655 409
-B2.646 410
-B2.636 411
-B2.626 412
-B2.615 413
-B2.606 414
-B2.596 415
-B2.586 416
-B2.575 417
-B2.566 418
-B2.556 419
-B2.546 420
-B2.535 421
-B2.526 422
-B2.516 423
-B2.506 424
-B2.495 425
-B2.486 426
-B2.476 427
-B2.466 428
-B2.455 429
-B2.446 430
-B2.436 431
-B2.426 432
-B2.415 433
-B2.406 434
-B2.396 435
-B2.385 436
-B2.375 437
-B2.365 438
-B2.356 439
-B2.345 440
-B2.335 441
-B2.325 442
-B2.316 443
-B2.305 444
-B2.295 445
-B2.285 446
-B2.276 447
-B2.265 448
-B2.255 449
-B2.245 450
-B2.236 451
-B2.225 452
-B2.215 453
-B2.205 454
-B2.196 455
-B2.185 456
-B2.175 457
-B2.165 458
-B2.156 459
-B2.145 460
-B2.135 461
-B2.126 462
-B2.116 463
-B2.105 464
-B2.095 465
-B2.086 466
-B2.076 467
-B2.065 468
-B2.055 469
-B2.045 470
-B2.036 471
-B2.025 472
-B2.015 473
-B2.005 474
-B1.994 475
-B1.985 476
-B1.974 477
-B1.964 478
-B1.954 479
-B1.945 480
-B1.934 481
-B1.924 482
-B1.914 483
-B1.905 484
-B1.894 485
-B1.884 486
-B1.874 487
-B1.865 488
-B1.854 489
-B1.844 490
-B1.834 491
-B1.825 492
-B1.814 493
-B1.804 494
-B1.794 495
-B1.785 496
-B1.774 497
-B1.764 498
-B1.754 499
-B1.743 500
-B1.734 501
-B1.723 502
-B1.713 503
-B1.703 504
-B1.694 505
-B1.683 506
-B1.673 507
-B1.663 508
-B1.654 509
-B1.643 510
-B1.633 511
-B1.623 512
-B1.612 513
-B1.603 514
-B1.592 515
-B1.582 516
-B1.572 517
-B1.563 518
-B1.552 519
-B1.542 520
-B1.532 521
-B1.523 522
-B1.512 523
-B1.502 524
-B1.491 525
-B1.482 526
-B1.472 527
-B1.461 528
-B1.451 529
-B1.442 530
-B1.432 531
-B1.421 532
-B1.411 533
-B1.401 534
-B1.392 535
-B1.381 536
-B1.371 537
-B1.36 538
-B1.351 539
-B1.341 540
-B1.33 541
-B1.32 542
-B1.31 543
-B1.301 544
-B1.29 545
-B1.28 546
-B1.27 547
-B1.261 548
-B1.25 549
-B1.239 550
-B1.229 551
-B1.22 552
-B1.21 553
-B1.199 554
-B1.189 555
-B1.18 556
-B1.17 557
-B1.159 558
-B1.149 559
-B1.139 560
-B1.129 561
-B1.119 562
-B1.108 563
-B1.098 564
-B1.089 565
-B1.079 566
-B1.068 567
-B1.058 568
-B1.048 569
-B1.039 570
-B1.028 571
-B1.018 572
-B1.008 573
-B0.998 574
-B0.988 575
-B0.977 576
-B0.967 577
-B0.958 578
-B0.948 579
-B0.937 580
-B0.926 581
-B0.916 582
-B0.907 583
-B0.897 584
-B0.886 585
-B0.876 586
-B0.866 587
-B0.857 588
-B0.846 589
-B0.836 590
-B0.826 591
-B0.816 592
-B0.806 593
-B0.8 594