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

Changeset 0:d690c5ad932f (2016-11-24)
Next changeset 1:58eecef626da (2017-03-02)
Commit message:
planemo upload for repository https://github.com/workflow4metabolomics/nmr_alignment commit 8ddcd37917c778e152d71ff1f0f05a869f8454c2-dirty
added:
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 000000000000 -r d690c5ad932f NmrAlignment_script.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NmrAlignment_script.R Thu Nov 24 12:11:04 2016 -0500
[
b'@@ -0,0 +1,440 @@\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 000000000000 -r d690c5ad932f NmrAlignment_wrapper.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NmrAlignment_wrapper.R Thu Nov 24 12:11:04 2016 -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 000000000000 -r d690c5ad932f NmrAlignment_xml.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NmrAlignment_xml.xml Thu Nov 24 12:11:04 2016 -0500
b
b'@@ -0,0 +1,258 @@\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 000000000000 -r d690c5ad932f static/images/NmrAlignment.png
b
Binary file static/images/NmrAlignment.png has changed
b
diff -r 000000000000 -r d690c5ad932f test-data/MTBLS1.zip
b
Binary file test-data/MTBLS1.zip has changed
b
diff -r 000000000000 -r d690c5ad932f test-data/MTBLS1_bucketedData.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/MTBLS1_bucketedData.tabular Thu Nov 24 12:11:04 2016 -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\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 000000000000 -r d690c5ad932f test-data/MTBLS1_sampleMetadata.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/MTBLS1_sampleMetadata.tabular Thu Nov 24 12:11:04 2016 -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 000000000000 -r d690c5ad932f test-data/MTBLS1_variableMetadata.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/MTBLS1_variableMetadata.tabular Thu Nov 24 12:11:04 2016 -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