Repository 'biosigner'
hg clone https://toolshed.g2.bx.psu.edu/repos/ethevenot/biosigner

Changeset 0:48e4be935243 (2016-07-27)
Next changeset 1:4ff502a46189 (2016-07-30)
Commit message:
planemo upload for repository https://github.com/workflow4metabolomics/biosigner.git commit b8af709c9fd6ed283fc4e4249dcf692556927b2d
added:
LICENSE.md
README.md
biosigner_config.xml
biosigner_wrapper.R
build.xml
static/images/biosigner_workflowPositionImage.png
static/images/biosigner_workingExampleImage.png
test-data/dataMatrix.tsv
test-data/sampleMetadata.tsv
test-data/variableMetadata.out
test-data/variableMetadata.tsv
tests/biosigner_tests.R
tests/sacurine/dataMatrix.tsv
tests/sacurine/sampleMetadata.tsv
tests/sacurine/variableMetadata.tsv
b
diff -r 000000000000 -r 48e4be935243 LICENSE.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE.md Wed Jul 27 11:40:20 2016 -0400
[
b'@@ -0,0 +1,517 @@\n+  CeCILL FREE SOFTWARE LICENSE AGREEMENT\n+\n+Version 2.1 dated 2013-06-21\n+\n+\n+    Notice\n+\n+This Agreement is a Free Software license agreement that is the result\n+of discussions between its authors in order to ensure compliance with\n+the two main principles guiding its drafting:\n+\n+  * firstly, compliance with the principles governing the distribution\n+    of Free Software: access to source code, broad rights granted to users,\n+  * secondly, the election of a governing law, French law, with which it\n+    is conformant, both as regards the law of torts and intellectual\n+    property law, and the protection that it offers to both authors and\n+    holders of the economic rights over software.\n+\n+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) \n+license are: \n+\n+Commissariat \xe0 l\'\xe9nergie atomique et aux \xe9nergies alternatives - CEA, a\n+public scientific, technical and industrial research establishment,\n+having its principal place of business at 25 rue Leblanc, immeuble Le\n+Ponant D, 75015 Paris, France.\n+\n+Centre National de la Recherche Scientifique - CNRS, a public scientific\n+and technological establishment, having its principal place of business\n+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.\n+\n+Institut National de Recherche en Informatique et en Automatique -\n+Inria, a public scientific and technological establishment, having its\n+principal place of business at Domaine de Voluceau, Rocquencourt, BP\n+105, 78153 Le Chesnay cedex, France.\n+\n+\n+    Preamble\n+\n+The purpose of this Free Software license agreement is to grant users\n+the right to modify and redistribute the software governed by this\n+license within the framework of an open source distribution model.\n+\n+The exercising of this right is conditional upon certain obligations for\n+users so as to preserve this status for all subsequent redistributions.\n+\n+In consideration of access to the source code and the rights to copy,\n+modify and redistribute granted by the license, users are provided only\n+with a limited warranty and the software\'s author, the holder of the\n+economic rights, and the successive licensors only have limited liability.\n+\n+In this respect, the risks associated with loading, using, modifying\n+and/or developing or reproducing the software by the user are brought to\n+the user\'s attention, given its Free Software status, which may make it\n+complicated to use, with the result that its use is reserved for\n+developers and experienced professionals having in-depth computer\n+knowledge. Users are therefore encouraged to load and test the\n+suitability of the software as regards their requirements in conditions\n+enabling the security of their systems and/or data to be ensured and,\n+more generally, to use and operate it in the same conditions of\n+security. This Agreement may be freely reproduced and published,\n+provided it is not altered, and that no provisions are either added or\n+removed herefrom.\n+\n+This Agreement may apply to any or all software for which the holder of\n+the economic rights decides to submit the use thereof to its provisions.\n+\n+Frequently asked questions can be found on the official website of the\n+CeCILL licenses family (http://www.cecill.info/index.en.html) for any \n+necessary clarification.\n+\n+\n+    Article 1 - DEFINITIONS\n+\n+For the purpose of this Agreement, when the following expressions\n+commence with a capital letter, they shall have the following meaning:\n+\n+Agreement: means this license agreement, and its possible subsequent\n+versions and annexes.\n+\n+Software: means the software in its Object Code and/or Source Code form\n+and, where applicable, its documentation, "as is" when the Licensee\n+accepts the Agreement.\n+\n+Initial Software: means the Software in its Source Code and possibly its\n+Object Code form and, where applicable, its documentation, "as is" when\n+it is first distributed under the terms and conditions of the Agreement.\n+\n+Modified Software: means the Software modified by at lea'..b"l be\n+decided on a case-by-case basis between the relevant Licensor and the\n+Licensee pursuant to a memorandum of understanding. The Licensor\n+disclaims any and all liability as regards the Licensee's use of the\n+name of the Software. No warranty is given as regards the existence of\n+prior rights over the name of the Software or as regards the existence\n+of a trademark.\n+\n+\n+    Article 10 - TERMINATION\n+\n+10.1 In the event of a breach by the Licensee of its obligations\n+hereunder, the Licensor may automatically terminate this Agreement\n+thirty (30) days after notice has been sent to the Licensee and has\n+remained ineffective.\n+\n+10.2 A Licensee whose Agreement is terminated shall no longer be\n+authorized to use, modify or distribute the Software. However, any\n+licenses that it may have granted prior to termination of the Agreement\n+shall remain valid subject to their having been granted in compliance\n+with the terms and conditions hereof.\n+\n+\n+    Article 11 - MISCELLANEOUS\n+\n+\n+      11.1 EXCUSABLE EVENTS\n+\n+Neither Party shall be liable for any or all delay, or failure to\n+perform the Agreement, that may be attributable to an event of force\n+majeure, an act of God or an outside cause, such as defective\n+functioning or interruptions of the electricity or telecommunications\n+networks, network paralysis following a virus attack, intervention by\n+government authorities, natural disasters, water damage, earthquakes,\n+fire, explosions, strikes and labor unrest, war, etc.\n+\n+11.2 Any failure by either Party, on one or more occasions, to invoke\n+one or more of the provisions hereof, shall under no circumstances be\n+interpreted as being a waiver by the interested Party of its right to\n+invoke said provision(s) subsequently.\n+\n+11.3 The Agreement cancels and replaces any or all previous agreements,\n+whether written or oral, between the Parties and having the same\n+purpose, and constitutes the entirety of the agreement between said\n+Parties concerning said purpose. No supplement or modification to the\n+terms and conditions hereof shall be effective as between the Parties\n+unless it is made in writing and signed by their duly authorized\n+representatives.\n+\n+11.4 In the event that one or more of the provisions hereof were to\n+conflict with a current or future applicable act or legislative text,\n+said act or legislative text shall prevail, and the Parties shall make\n+the necessary amendments so as to comply with said act or legislative\n+text. All other provisions shall remain effective. Similarly, invalidity\n+of a provision of the Agreement, for any reason whatsoever, shall not\n+cause the Agreement as a whole to be invalid.\n+\n+\n+      11.5 LANGUAGE\n+\n+The Agreement is drafted in both French and English and both versions\n+are deemed authentic.\n+\n+\n+    Article 12 - NEW VERSIONS OF THE AGREEMENT\n+\n+12.1 Any person is authorized to duplicate and distribute copies of this\n+Agreement.\n+\n+12.2 So as to ensure coherence, the wording of this Agreement is\n+protected and may only be modified by the authors of the License, who\n+reserve the right to periodically publish updates or new versions of the\n+Agreement, each with a separate number. These subsequent versions may\n+address new issues encountered by Free Software.\n+\n+12.3 Any Software distributed under a given version of the Agreement may\n+only be subsequently distributed under the same version of the Agreement\n+or a subsequent version, subject to the provisions of Article 5.3.4\n+<#compatibility>.\n+\n+\n+    Article 13 - GOVERNING LAW AND JURISDICTION\n+\n+13.1 The Agreement is governed by French law. The Parties agree to\n+endeavor to seek an amicable solution to any disagreements or disputes\n+that may arise during the performance of the Agreement.\n+\n+13.2 Failing an amicable solution within two (2) months as from their\n+occurrence, and unless emergency proceedings are necessary, the\n+disagreements or disputes shall be referred to the Paris Courts having\n+jurisdiction, by the more diligent Party.\n"
b
diff -r 000000000000 -r 48e4be935243 README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Wed Jul 27 11:40:20 2016 -0400
[
@@ -0,0 +1,42 @@
+Discovery of significant signatures from omics data
+===================================================
+
+A Galaxy module from the [Workflow4metabolomics](http://workflow4metabolomics.org) project
+
+Status: [![Build Status](https://travis-ci.org/workflow4metabolomics/biosigner.svg?branch=master)](https://travis-ci.org/workflow4metabolomics/biosigner).
+
+## Description
+
+**Version:** 2.2.2  
+**Date:** 2016-05-21  
+**Author:** Philippe Rinaudo and Etienne A. Thevenot (CEA, LIST, MetaboHUB, W4M Core Development Team)   
+**Email:** [etienne.thevenot(at)cea.fr](mailto:etienne.thevenot@cea.fr)  
+**Citation:** Rinaudo P., Boudah S., Junot C. and Thevenot E.A. (2015). biosigner: A new method for the discovery of restricted and stable molecular signatures from omics data. *Frontiers in Molecular Biosciences*, in review.   
+**Licence:** CeCILL
+**Reference history:** [W4M00003_diaplasma](http://galaxy.workflow4metabolomics.org/history/list_published)      
+**Funding:** Agence Nationale de la Recherche ([MetaboHUB](http://www.metabohub.fr/index.php?lang=en&Itemid=473) national infrastructure for metabolomics and fluxomics, ANR-11-INBS-0010 grant)
+
+## Installation
+
+* Configuration file: `biosigner_config.xml`.
+* Image files: 
+  + `static/images/biosigner_workflowPositionImage.png`.   
+  + `static/images/biosigner_workingExampleImage.png`.
+* Wrapper file: `biosigner_wrapper.R`.
+* R packages  
+  + **batch** from CRAN: `install.packages("batch", dep=TRUE)`.
+  + **biosigner** from Bioconductor (which itself depends on **ropls** from Bioconductor and **e1071** and **randomForest** from CRAN): `source("http://www.bioconductor.org/biocLite.R") ; biocLite("biosigner")`.
+
+## Tests
+
+The code in the wrapper can be tested by running the `tests/biosigner_tests.R` in R  
+
+## News
+
+## CHANGES IN VERSION 2.2.2
+
+ * Internal updates to biosigner package versions of 1.0.0 and above, and ropls versions of 1.4.0 and above (i.e. using S4 methods instead of S3)
+    
+## CHANGES IN VERSION 2.2.1
+
+ * Creation of the tool: with S3 versions of biosigner (< 1.0.0) and ropls (< 1.4.0)
b
diff -r 000000000000 -r 48e4be935243 biosigner_config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/biosigner_config.xml Wed Jul 27 11:40:20 2016 -0400
[
b'@@ -0,0 +1,276 @@\n+<tool id="biosigner" name="Biosigner" version="2.2.2">\n+\t<description>Molecular signature discovery from omics data</description>\n+\n+\t<requirements>\n+\t\t<requirement type="package" version="3.2.2">R</requirement>\n+\t\t<requirement type="package">r-batch</requirement>\n+\t\t<requirement type="package">bioconductor-biosigner</requirement>\n+\t</requirements>\n+\n+\t<command><![CDATA[\n+\t$__tool_directory__/biosigner_wrapper.R\n+\t\n+\t\tdataMatrix_in "$dataMatrix_in"\n+\t\tsampleMetadata_in "$sampleMetadata_in"\n+\t\tvariableMetadata_in "$variableMetadata_in"\n+\n+\t\trespC "$respC"\n+\t\t\n+\t\t#if $advCpt.opcC == "full"\n+        methodC "$advCpt.methodC"\n+        bootI "$advCpt.bootI"\n+        tierC "$advCpt.tierC"        \n+        pvalN "$advCpt.pvalN"\n+        seedI "$advCpt.seedI"\n+\t\t#end if\n+\n+\t\tvariableMetadata_out "$variableMetadata_out"\n+\t\tfigure_tier "$figure_tier"\n+        figure_boxplot "$figure_boxplot"\n+\t\tinformation "$information"\n+\t\t]]></command>\n+\n+\t<inputs>\n+\t\t<param name="dataMatrix_in" label="Data matrix file" type="data" format="tabular" help="variable x sample, decimal: \'.\', missing: NA, mode: numerical, sep: tabular" />\n+\t\t<param name="sampleMetadata_in" label="Sample metadata file" type="data" format="tabular" help="sample x metadata, decimal: \'.\', missing: NA, mode: character and numerical, sep: tabular" />\n+\t\t<param name="variableMetadata_in" label="Variable metadata file" type="data" format="tabular" help="variable x metadata, decimal: \'.\', missing: NA, mode: character and numerical, sep: tabular" />\n+\t\t<param name="respC" label="Sample classes" type="text" value = "" help="Column of sampleMetadata containing 2 types of strings (e.g., \'case\' and \'control\')" />\t\n+\t\n+\t<conditional name="advCpt">\n+\t\t<param name="opcC" type="select" label="Advanced computational parameters" >\n+\t\t\t<option value="default" selected="true">Use default</option>\n+\t\t\t<option value="full">Full parameter list</option>\n+\t\t</param>\n+\t\t<when value="default"/>\n+\t\t<when value="full">\n+            <param name="methodC" label="Classification method(s)" type="select" help="">\n+                <option value="all" selected="true">all</option>\n+                <option value="plsda">PLS-DA</option>\n+                <option value="randomforest">Random Forest</option>\n+                <option value="svm">SVM</option>\n+            </param>\n+\t\t\t<param name="bootI" type="integer" value="50" label="Number of bootstraps" help=""/>\n+            <param name="tierC" label="Selection tier(s)" type="select" help="">\n+                <option value="S" selected="true">S</option>\n+                <option value="A">S+A</option>\n+            </param>\n+            <param name="pvalN" type="float" value="0.05" label="p-value threshold" help="Must be between 0 and 1"/>\n+            <param name="seedI" type="integer" value="0" label="Seed" help="Select an integer (e.g., 123) if you want to obtain exactly the same signatures when re-running the algorithm; 0 means that no seed is selected"/>\n+\t\t</when>\n+\t</conditional>\n+\t\t\n+  </inputs>\n+\t\n+  <outputs>\n+    <data name="variableMetadata_out" label="${tool.name}_${variableMetadata_in.name}" format="tabular" ></data>\n+\t<data name="figure_tier" label="${tool.name}__figure-tier.pdf" format="pdf"/>\n+    <data name="figure_boxplot" label="${tool.name}__figure-boxplot.pdf" format="pdf"/>\n+\t<data name="information" label="${tool.name}__information.txt" format="txt"/>\n+  </outputs>\n+  \n+  <tests>\n+\t  <test>\n+\t\t  <param name="dataMatrix_in" value="dataMatrix.tsv"/>\n+\t\t  <param name="sampleMetadata_in" value="sampleMetadata.tsv"/>\n+\t\t  <param name="variableMetadata_in" value="variableMetadata.tsv"/>\n+\t\t  <param name="respC" value="gender"/>\n+\t\t  <param name="opcC" value="full"/>\n+\t\t  <param name="methodC" value="all"/>\n+\t\t  <param name="bootI" value="5"/>\n+\t\t  <param name="tierC" value="S"/>\n+\t\t  <param name="pvalN" value="0.05"/>\n+\t\t  <param name="seedI" value="123"/>\n+\t\t  <output name="variableMetadata_out" file="variableMetadata.out"/>\n+\t'..b"a, with . as decimal and NA for missing values; use the **Check Format** tool in the **LC-MS/Quality Control** section to check the formats of your **dataMatrix**, **sampleMetadata** and **variableMetadata** files\n+\t| \n+\n+Variable metadata file\n+\t| variable x metadata **variableMetadata** tabular separated file of the numeric and/or character variable metadata, with . as decimal and NA for missing values; use the **Check Format** tool in the **LC-MS/Quality Control** section to check the formats of your **dataMatrix**, **sampleMetadata** and **variableMetadata** files\n+\t| \n+   \n+Classes of samples\n+\t| Column of the sample metadata table to be used as the qualitative **binary** response to be modelled; the column should contain only two types of strings (e.g., 'case' and 'control')\n+\t| \n+\n+Advanced: Classification method(s) (default = all)\n+\t| Either one or all of the following classifiers: Partial Least Squares Discriminant Analysis (PLS-DA), or Random Forest, or Support Vector Machine (SVM)\n+\t| \n+\n+Advanced: Number of bootstraps (default = 50)\n+\t| This parameter controls the number of times the model performance is compared to the prediction on a test subset where the intensities of the candidate feature have been randomly permuted.\n+\t| \n+    \n+Advanced: Selection tier(s) (default = S)\n+\t| Tier *S* corresponds to the final signature, i.e., features which have been found significant in all the backward selection steps; features with tier *A* have been found significant in all but the last selection, and so on for tier *B* to *E*. Default selection tier is *S*, meaning that the final signature only is returned; to view a larger number of candidate features, the *S+A* tiers can be selected. \n+\t|     \n+\n+Advanced: p-value threshold (default = 0.05)\n+\t| This threshold controls the selection of the features at each selection round (tier): to be selected, the proportion of times the prediction on the test set with the randomized intensities of the feature is more accurate than on the original test set must be inferior to this threshold. For example, if the number of bootstraps is 50, no more than 2 out of the 50 predictions on the randomized test set must not be more accurate than on the original test set (since 1/50 = 0.02).\n+\n+Advanced: Seed (default = 0)\n+\t| As the algorithm relies on resampling (bootstrap), re-running the module may result in slightly different signatures. To ensure that returned results are exactly the same, the **seed** parameter (integer) can be used; the default, 0, means that no seed is used.\n+\t|     \n+\n+------------\n+Output files\n+------------\n+\n+variableMetadata_out.tabular\n+\t| When a least one feature has been selected, a **tier** column is added indicating for each feature the classifier(s) it was selected from.\n+\t| \n+\n+figure-tier.pdf\n+\t| Graphic summarizing which features were selected, with their corresponding tier (i.e., round(s) of selection) for each classifier.\n+\t| \n+    \n+figure-boxplot.pdf\n+\t| Individual boxplots of the features which were selected in at least one of the signatures. Features selected for a single classifier are colored (*red* for PLS-DA, *green* for Random Forest, and *blue* for SVM)\n+\t| \n+\t\t\t\n+information.txt\n+\t| Text file with all messages and warnings generated during the computation.\n+\t|\n+\n+---------------------------------------------------\n+\n+---------------\n+Working example\n+---------------\n+\n+See the **W4M00003_diaplasma** in the **Shared Data/Published Histories** menu\n+\n+\n+\n+Figure output\n+=============\n+\n+.. image:: biosigner_workingExampleImage.png\n+        :width: 600\n+        \n+---------------------------------------------------\n+\n+----\n+NEWS\n+----\n+\n+CHANGES IN VERSION 2.2.2\n+========================\n+\n+Internal updates to biosigner package versions of 1.0.0 and above, and ropls versions of 1.4.0 and above (i.e. using S4 methods instead of S3)\n+\n+CHANGES IN VERSION 2.2.1\n+========================\n+\n+Creation of the tool\n+\n+  </help>\n+\n+  <citations/>\n+\n+</tool>\n"
b
diff -r 000000000000 -r 48e4be935243 biosigner_wrapper.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/biosigner_wrapper.R Wed Jul 27 11:40:20 2016 -0400
[
@@ -0,0 +1,230 @@
+#!/usr/bin/env Rscript
+
+library(batch) ## parseCommandArgs
+
+argVc <- unlist(parseCommandArgs(evaluate=FALSE))
+
+
+#### Start_of_tested_code  <- function() {}
+
+
+##------------------------------
+## Initializing
+##------------------------------
+
+## options
+##--------
+
+strAsFacL <- options()$stringsAsFactors
+options(stringsAsFactors = FALSE)
+
+## libraries
+##----------
+
+suppressMessages(library(biosigner))
+
+if(packageVersion("biosigner") < "1.0.0")
+    stop("Please use 'biosigner' versions of 1.0.0 and above")
+if(packageVersion("ropls") < "1.4.0")
+    stop("Please use 'ropls' versions of 1.4.0 and above")
+
+## constants
+##----------
+
+modNamC <- "Biosigner" ## module name
+
+topEnvC <- environment()
+flgC <- "\n"
+
+## functions
+##----------
+
+flgF <- function(tesC,
+                 envC = topEnvC,
+                 txtC = NA) { ## management of warning and error messages
+
+    tesL <- eval(parse(text = tesC), envir = envC)
+
+    if(!tesL) {
+
+        sink(NULL)
+        stpTxtC <- ifelse(is.na(txtC),
+                          paste0(tesC, " is FALSE"),
+                          txtC)
+
+        stop(stpTxtC,
+             call. = FALSE)
+
+    }
+
+} ## flgF
+
+
+## log file
+##---------
+
+sink(argVc["information"])
+
+cat("\nStart of the '", modNamC, "' Galaxy module call: ",
+    format(Sys.time(), "%a %d %b %Y %X"), "\n", sep="")
+
+
+## arguments
+##----------
+
+xMN <- t(as.matrix(read.table(argVc["dataMatrix_in"],
+                              check.names = FALSE,
+                              header = TRUE,
+                              row.names = 1,
+                              sep = "\t")))
+
+samDF <- read.table(argVc["sampleMetadata_in"],
+                    check.names = FALSE,
+                    header = TRUE,
+                    row.names = 1,
+                    sep = "\t")
+flgF("identical(rownames(xMN), rownames(samDF))", txtC = "Sample names (or number) in the data matrix (first row) and sample metadata (first column) are not identical; use the 'Check Format' module in the 'Quality Control' section")
+
+varDF <- read.table(argVc["variableMetadata_in"],
+                    check.names = FALSE,
+                    header = TRUE,
+                    row.names = 1,
+                    sep = "\t")
+flgF("identical(colnames(xMN), rownames(varDF))", txtC = "Variable names (or number) in the data matrix (first column) and sample metadata (first column) are not identical; use the 'Check Format' module in the 'Quality Control' section")
+
+flgF("argVc['respC'] %in% colnames(samDF)",
+     txtC = paste0("Class argument (", argVc['respC'], ") must be either none or one of the column names (first row) of your sample metadata"))
+respVc <- samDF[, argVc["respC"]]
+flgF("mode(respVc) == 'character'",
+     txtC = paste0("'", argVc['respC'], "' column of sampleMetadata does not contain only characters"))
+respFc <- factor(respVc)
+flgF("length(levels(respFc)) == 2",
+     txtC = paste0("'", argVc['respC'], "' column of sampleMetadata does not contain only 2 types of characters (e.g., 'case' and 'control')"))
+tierMaxC <- ifelse("tierC" %in% names(argVc), argVc["tierC"], "S")
+pvalN <- ifelse("pvalN" %in% names(argVc), as.numeric(argVc["pvalN"]), 0.05)
+
+
+##------------------------------
+## Computation and plot
+##------------------------------
+
+
+sink()
+
+optWrnN <- options()$warn
+options(warn = -1)
+
+if("seedI" %in% names(argVc) && argVc["seedI"] != "0")
+    set.seed(as.integer(argVc["seedI"]))
+
+bsnLs <- biosign(x = xMN,
+                 y = respFc,
+                 methodVc = ifelse("methodC" %in% names(argVc), argVc["methodC"], "all"),
+                 bootI = ifelse("bootI" %in% names(argVc), as.numeric(argVc["bootI"]), 50),
+                 pvalN = pvalN,
+                 printL = FALSE,
+                 plotL = FALSE,
+                 .sinkC = argVc["information"])
+
+if("seedI" %in% names(argVc) && argVc["seedI"] != "0")
+    set.seed(NULL)
+
+tierMC <- bsnLs@tierMC
+
+if(!is.null(tierMC)) {
+    plot(bsnLs,
+         tierMaxC = tierMaxC,
+         file.pdfC = argVc["figure_tier"],
+         .sinkC = argVc["information"])
+    plot(bsnLs,
+         tierMaxC = tierMaxC,
+         typeC = "boxplot",
+         file.pdfC = argVc["figure_boxplot"],
+         .sinkC = argVc["information"])
+} else {
+    pdf(argVc["figure_tier"])
+    plot(1, bty = "n", type = "n",
+         xaxt = "n", yaxt = "n", xlab = "", ylab = "")
+    text(mean(par("usr")[1:2]), mean(par("usr")[3:4]),
+         labels = "No significant variable to display")
+    dev.off()
+    pdf(argVc["figure_boxplot"])
+    plot(1, bty = "n", type = "n",
+         xaxt = "n", yaxt = "n", xlab = "", ylab = "")
+    text(mean(par("usr")[1:2]), mean(par("usr")[3:4]),
+         labels = "No significant variable to display")
+    dev.off()
+}
+
+
+options(warn = optWrnN)
+
+
+##------------------------------
+## Print
+##------------------------------
+
+sink(argVc["information"], append = TRUE)
+
+tierFullVc <- c("S", LETTERS[1:5])
+tierVc <- tierFullVc[1:which(tierFullVc == tierMaxC)]
+
+if(sum(tierMC %in% tierVc)) {
+    cat("\nSignificant features from '", paste(tierVc, collapse = "', '"), "' tiers:\n", sep = "")
+    print(tierMC[apply(tierMC, 1, function(rowVc) sum(rowVc %in% tierVc) > 0), ,
+                         drop = FALSE])
+    cat("\nAccuracy:\n")
+    print(round(getAccuracyMN(bsnLs), 3))
+} else
+    cat("\nNo significant variable found for any classifier\n")
+
+
+##------------------------------
+## Ending
+##------------------------------
+
+## Saving
+##-------
+
+if(!is.null(tierMC)) {
+    tierDF <- data.frame(tier = sapply(rownames(varDF),
+                             function(varC) {
+                                 varTirVc <- tierMC[varC, ]
+                                 varTirVc <- names(varTirVc)[varTirVc %in% tierVc]
+                                 paste(varTirVc, collapse = "|")
+                             }),
+                         stringsAsFactors = FALSE)
+    colnames(tierDF) <- paste(argVc["respC"],
+                              colnames(tierDF),
+                              paste(tierVc, collapse = ""),
+                              sep = "_")
+    varDF <- cbind.data.frame(varDF, tierDF)
+}
+
+## variableMetadata
+
+varDF <- cbind.data.frame(variableMetadata = rownames(varDF),
+                          varDF)
+write.table(varDF,
+            file = argVc["variableMetadata_out"],
+            quote = FALSE,
+            row.names = FALSE,
+            sep = "\t")
+
+
+## Closing
+##--------
+
+cat("\nEnd of '", modNamC, "' Galaxy module call: ",
+    as.character(Sys.time()), "\n", sep = "")
+
+sink()
+
+options(stringsAsFactors = strAsFacL)
+
+
+#### End_of_tested_code <- function() {}
+
+
+rm(list = ls())
+
b
diff -r 000000000000 -r 48e4be935243 build.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/build.xml Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,79 @@
+<project name="w4m.biosigner" default="all">
+
+ <property name="tool.xml" value="biosigner_config.xml"/>
+ <property name="conda.dir" value="${user.home}/w4m-conda"/>
+
+ <!--~~~
+ ~ ALL ~
+ ~~~~~-->
+
+ <target name="all"/>
+
+ <!--~~~~
+ ~ TEST ~
+ ~~~~~-->
+
+ <target name="test" depends="planemo.lint,planemo.test"/>
+
+ <!--~~~~~~~~~~~~
+ ~ PLANEMO LINT ~
+ ~~~~~~~~~~~~~-->
+
+ <target name="planemo.lint">
+ <exec executable="planemo" failonerror="true">
+ <arg value="lint"/>
+ <arg value="${tool.xml}"/>
+ </exec>
+ </target>
+
+ <!--~~~~~~~~~~~~
+ ~ PLANEMO TEST ~
+ ~~~~~~~~~~~~~-->
+
+ <target name="planemo.test" depends="planemo.conda.install">
+ <exec executable="planemo" failonerror="true">
+ <arg value="test"/>
+ <arg value="--conda_prefix"/>
+ <arg value="${conda.dir}"/>
+ <arg value="--galaxy_branch"/>
+ <arg value="release_16.01"/>
+ <arg value="--conda_dependency_resolution"/>
+ <arg value="${tool.xml}"/>
+ </exec>
+ </target>
+
+ <!--~~~~~~~~~~~~~~~~~~~~~
+ ~ PLANEMO CONDA INSTALL ~
+ ~~~~~~~~~~~~~~~~~~~~~~-->
+
+ <target name="planemo.conda.install" depends="planemo.conda.init">
+ <exec executable="planemo" failonerror="true">
+ <arg value="conda_install"/>
+ <arg value="--conda_prefix"/>
+ <arg value="${conda.dir}"/>
+ <arg value="${tool.xml}"/>
+ </exec>
+ </target>
+
+ <!--~~~~~~~~~~~~~~~~~~
+ ~ PLANEMO CONDA INIT ~
+ ~~~~~~~~~~~~~~~~~~~-->
+
+ <available file="${conda.dir}" property="conda.is.installed"/>
+ <target name="planemo.conda.init" unless="conda.is.installed">
+ <exec executable="planemo" failonerror="true">
+ <arg value="conda_init"/>
+ <arg value="--conda_prefix"/>
+ <arg value="${conda.dir}"/>
+ </exec>
+ </target>
+
+ <!--~~~~~
+ ~ CLEAN ~
+ ~~~~~~-->
+
+ <target name="clean">
+ <delete dir="${conda.dir}"/>
+ </target>
+
+</project>
b
diff -r 000000000000 -r 48e4be935243 static/images/biosigner_workflowPositionImage.png
b
Binary file static/images/biosigner_workflowPositionImage.png has changed
b
diff -r 000000000000 -r 48e4be935243 static/images/biosigner_workingExampleImage.png
b
Binary file static/images/biosigner_workingExampleImage.png has changed
b
diff -r 000000000000 -r 48e4be935243 test-data/dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dataMatrix.tsv Wed Jul 27 11:40:20 2016 -0400
b
b'@@ -0,0 +1,110 @@\n+\tHU_011\tHU_014\tHU_015\tHU_017\tHU_018\tHU_019\tHU_020\tHU_021\tHU_022\tHU_023\tHU_024\tHU_025\tHU_026\tHU_027\tHU_028\tHU_029\tHU_030\tHU_031\tHU_032\tHU_033\tHU_034\tHU_035\tHU_036\tHU_037\tHU_038\tHU_039\tHU_040\tHU_041\tHU_042\tHU_043\tHU_044\tHU_045\tHU_046\tHU_047\tHU_048\tHU_049\tHU_050\tHU_051\tHU_052\tHU_053\tHU_054\tHU_055\tHU_056\tHU_057\tHU_058\tHU_060\tHU_061\tHU_062\tHU_063\tHU_064\tHU_065\tHU_066\tHU_067\tHU_068\tHU_069\tHU_070\tHU_072\tHU_073\tHU_074\tHU_075\tHU_076\tHU_077\tHU_078\tHU_079\tHU_080\tHU_081\tHU_082\tHU_083\tHU_084\tHU_085\tHU_086\tHU_087\tHU_088\tHU_089\tHU_090\tHU_091\tHU_092\tHU_093\tHU_094\tHU_095\tHU_097\tHU_098\tHU_099\tHU_100\tHU_101\tHU_102\tHU_103\tHU_105\tHU_106\tHU_107\tHU_108\tHU_109\tHU_110\tHU_112\tHU_113\tHU_114\tHU_115\tHU_116\tHU_117\tHU_118\tHU_119\tHU_120\tHU_121\tHU_122\tHU_123\tHU_124\tHU_125\tHU_126\tHU_127\tHU_129\tHU_130\tHU_131\tHU_132\tHU_133\tHU_134\tHU_135\tHU_136\tHU_137\tHU_138\tHU_139\tHU_140\tHU_142\tHU_143\tHU_144\tHU_145\tHU_146\tHU_147\tHU_148\tHU_149\tHU_150\tHU_152\tHU_154\tHU_155\tHU_156\tHU_157\tHU_158\tHU_159\tHU_160\tHU_162\tHU_163\tHU_164\tHU_166\tHU_167\tHU_168\tHU_169\tHU_170\tHU_171\tHU_172\tHU_173\tHU_174\tHU_175\tHU_177\tHU_179\tHU_180\tHU_181\tHU_182\tHU_183\tHU_184\tHU_185\tHU_186\tHU_187\tHU_188\tHU_189\tHU_190\tHU_191\tHU_192\tHU_193\tHU_194\tHU_195\tHU_196\tHU_197\tHU_198\tHU_199\tHU_200\tHU_201\tHU_202\tHU_203\tHU_204\tHU_205\tHU_206\tHU_207\tHU_208\tHU_209\n+(2-methoxyethoxy)propanoic acid isomer\t3.019766011\t3.81433889\t3.51969148\t2.56218265\t3.781921607\t4.161073524\t3.199174022\t3.378109516\t3.26452758\t3.787490017\t5.36371403\t3.202345706\t3.980345369\t3.020293232\t5.083462878\t3.388718935\t3.445549982\t1.27650453\t3.738547491\t1.253594534\t3.232847813\t4.559559002\t4.075948481\t2.570748216\t4.117811641\t5.038208548\t4.394350472\t3.665845239\t3.42296993\t3.74546685\t3.110957103\t4.252742233\t4.296284046\t2.995377877\t3.389971588\t5.349114655\t5.813374487\t4.304743135\t1.435768568\t5.369591232\t3.809431106\t3.0110849\t1.321147859\t3.401176446\t3.506978677\t5.24237122\t3.416889621\t3.415584225\t3.887678774\t3.555974489\t3.710985751\t4.232236312\t3.803661779\t4.379572071\t3.938310455\t1.376325833\t3.390271579\t5.215817481\t4.351838419\t3.714724817\t3.529736242\t3.862848205\t3.383427403\t3.661146136\t4.112188079\t4.249731699\t4.765467314\t3.51532253\t4.155850086\t4.045784307\t4.222815204\t4.168351191\t4.21782555\t3.612098315\t3.073157836\t4.235420499\t3.820636952\t2.797679916\t3.136688731\t3.665614604\t4.154569098\t4.299336631\t3.559309507\t2.996742676\t3.480758857\t4.034741661\t3.856739467\t2.852684744\t3.651373844\t3.759574346\t3.95537384\t2.849099312\t3.398179811\t3.984515153\t3.597414226\t3.290898684\t4.179746804\t4.943696911\t1.555387577\t3.60408986\t1.301552667\t3.640714337\t3.9838544\t3.827632696\t4.969533288\t3.504223072\t2.927962237\t4.011233932\t3.846480069\t3.945182011\t3.444671991\t3.617341684\t4.433665852\t3.758001601\t3.117921102\t3.604887175\t3.827127682\t1.270341972\t4.661967452\t3.058563173\t4.718036674\t3.77969937\t4.41111843\t3.735829951\t3.867366105\t3.377810236\t4.174630078\t4.051745447\t4.354188592\t3.522532268\t3.278058138\t3.375142493\t4.201257373\t3.531025311\t4.104608416\t3.308431289\t3.645655442\t5.077657223\t1.307713092\t4.169713633\t3.588749002\t3.785980907\t3.237049946\t4.089354447\t3.881406873\t3.732585337\t4.054073292\t4.137363308\t4.493012079\t4.930648019\t3.399303204\t3.372649157\t3.808510752\t3.912572116\t4.87526109\t3.423336878\t4.817034951\t3.574103433\t3.392706279\t3.640266302\t3.918027353\t2.984720403\t4.912949546\t3.391126097\t3.496992454\t4.454290676\t3.679442656\t4.082141098\t3.901748493\t4.459292151\t3.658028576\t3.61865837\t1.347192548\t3.156817506\t4.088827883\t3.68482537\t3.739437875\t3.62621039\t3.861325975\t1.321648909\t4.186987285\t3.748127215\t4.208859398\n+(gamma)Glu-Leu/Ile\t3.888479324\t4.277148905\t4.195649235\t4.323759965\t4.629328558\t4.412266289\t4.175236737\t4.635271487\t3.847144646\t3.871586241\t4.417740636\t4.328564559\t4.02953783\t4.152376569\t4.292682632\t4.531347748\t4.453076004\t4.6291358\t4.113221891\t4.150947299\t4.124072576\t3.901047415\t4.024811926\t4.181515516\t4.181368916\t3.876389846\t4.704956128\t4.21159738\t4.336920642\t4.38187405\t3.899552672\t4.061643136\t4.379398702\t3.828154643\t4.197557784\t4.015019635\t4.401325613\t3.802961064\t4.191430823\t4.'..b'049\t4.330382886\t4.100121431\t4.320047243\t4.239744811\t4.150606181\t4.124659917\t4.375400222\t4.251030211\t3.777775091\t4.361487807\t4.082842319\t4.083917302\t4.325269835\t4.010354674\t4.462516251\t4.472209609\t4.259480191\t4.392390039\t4.395272253\t4.305664387\t4.179207569\t4.396834579\t4.31087313\t4.419271137\t4.039056214\t4.393125083\t4.675851363\t4.364602525\t4.466913655\t4.481694872\t4.318407645\t4.289313676\t4.446749448\t4.571755159\t4.580876703\t4.472186105\t4.571326085\t4.256571368\t4.39667478\t4.528005839\t4.541201304\t4.406940498\t4.545197346\t4.391907474\t4.344684431\t4.477778512\t4.450207826\t4.417370227\t4.386250441\t4.085408476\t4.379901509\t4.215423793\t4.406536979\t4.163083399\t3.963043381\t4.187628652\t4.320252412\t4.545904132\t4.157495172\t4.5392129\t4.355912516\t4.32104914\t4.595052116\t4.387708897\t4.434185544\t4.060156974\t4.416837064\t4.417398742\t4.332046944\t4.248920107\t4.318558306\t4.675950075\t4.188599527\t4.654017827\t4.398818689\t4.448725636\t4.565013209\t4.273248747\t4.353604308\t4.056089953\t4.261860182\t4.366973197\t4.451823465\t4.375387491\t4.392784813\t4.187746104\t4.182184758\t4.06300237\t4.433683963\t4.494079796\t4.423765189\t4.646938456\t4.487248568\t4.175523204\t4.322262883\t4.314792833\t4.211783408\t4.348925516\t4.245849039\t4.482311354\t4.365509618\t4.44930672\t4.232880823\t4.441521421\t4.563517091\t4.331946693\t4.200062175\t4.208486129\t4.241824508\t4.445903314\t4.60948463\t4.517829053\t4.578649469\t4.916165933\t4.654804445\t4.551715167\t4.291265754\t4.874321475\t4.400847348\t4.38994431\t4.303778936\t4.373744009\t4.302854884\t4.598405731\t4.568087675\t4.461992655\t4.464836218\t4.625734497\t4.584892798\t4.662890116\t4.339637524\t4.497000889\t3.983841809\t4.283440095\t4.488303133\t4.296996312\t4.19346948\t4.727898398\t4.28073709\t4.513542781\t4.421895016\t4.313514034\t4.453121704\t4.303450906\t4.055802163\t4.602680714\t4.27076319\t4.224132258\t4.276186679\t4.652756637\t4.634338821\t4.47194762\n+Xanthosine\t4.075879575\t4.195761901\t4.12449321\t4.2502583\t4.361708565\t4.199196067\t4.196265732\t4.404987211\t4.41064782\t4.175794892\t4.258855541\t4.172714224\t4.016015657\t4.100203052\t4.384366912\t4.112921255\t4.399534645\t4.332193324\t4.208322622\t4.379464496\t4.265560718\t4.418307991\t4.087210986\t4.354190761\t3.978396839\t4.172345295\t4.106312026\t4.113942504\t4.558528094\t4.405650867\t3.683591924\t4.26118478\t4.282118008\t3.858642232\t4.299616596\t4.314749151\t4.065692925\t4.144560403\t4.103564195\t3.790628566\t4.416095358\t3.700313782\t4.265516105\t4.289286398\t4.302147514\t4.38354181\t4.218737122\t4.241238791\t4.415874314\t4.120532172\t4.291457181\t4.432756525\t4.239834416\t4.385267423\t4.203494903\t4.352140139\t4.353667915\t4.211041989\t4.471329543\t4.407096124\t4.335026554\t4.295258417\t4.360194162\t4.244628342\t4.523107299\t4.680727647\t4.380119407\t4.50434686\t4.101784524\t4.190726746\t4.702793616\t4.283539498\t4.491848445\t4.628062354\t4.405671691\t4.158371484\t4.227722032\t4.320367885\t4.415241512\t4.640270467\t4.21985738\t4.150109329\t4.265318291\t4.540761333\t4.261018241\t4.151723361\t4.259370091\t4.393426673\t4.870015557\t4.19378655\t4.10780659\t4.016284523\t4.107217721\t4.31688128\t4.49131669\t4.562464053\t4.50079102\t4.281917446\t4.487327505\t4.133987874\t4.186924379\t4.447610934\t4.384756495\t4.455984384\t4.431190839\t4.272439619\t4.515910771\t4.35224905\t4.249140203\t4.126305817\t4.025207129\t4.144468584\t4.370255637\t4.480739473\t4.363577911\t4.194958282\t3.950238979\t4.197796158\t4.489707246\t4.395211284\t4.589147194\t4.410919138\t4.26922062\t4.315277915\t4.516084092\t4.26149305\t5.535146698\t4.244361054\t4.422768199\t4.078743662\t4.434466561\t4.090579617\t4.085780689\t4.48828568\t4.610716761\t4.159093884\t4.139057245\t3.674563769\t4.65106654\t4.176384186\t4.301494215\t4.241053606\t3.94529113\t4.123354762\t3.765637618\t4.203290621\t4.40791255\t4.150929571\t4.289863493\t4.178743871\t4.123566885\t4.345336878\t4.279958081\t4.063705348\t4.069319014\t4.200426656\t4.00966354\t4.200744339\t4.061326655\t4.093155495\t4.514761467\t4.227698791\t4.527880359\t4.507718263\t4.375752047\t4.28503905\t4.235141509\t4.534792548\t4.394130646\t4.523847631\t4.352227778\t4.233160334\t4.253659257\t4.031631259\t4.426082168\t4.500371235\t4.186340083\t4.629825565\t4.408696151\t4.3878006\t4.256140724\t4.487781609\t4.222953354\n'
b
diff -r 000000000000 -r 48e4be935243 test-data/sampleMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sampleMetadata.tsv Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,184 @@
+ age bmi gender
+HU_011 29 19.75 M
+HU_014 59 22.64 F
+HU_015 42 22.72 M
+HU_017 41 23.03 M
+HU_018 34 20.96 M
+HU_019 35 23.41 M
+HU_020 59 17.1 M
+HU_021 34 23.36 M
+HU_022 51 28.23 F
+HU_023 51 29.55 M
+HU_024 57 29.86 M
+HU_025 53 21.6 M
+HU_026 34 23.46 F
+HU_027 37 24.82 M
+HU_028 41 23.92 F
+HU_029 37 27.78 M
+HU_030 49 25.88 M
+HU_031 25 20.76 M
+HU_032 38 24.09 F
+HU_033 44 18.36 F
+HU_034 52 23.37 M
+HU_035 37 20.7 F
+HU_036 47 29.51 M
+HU_037 35 25.62 M
+HU_038 52 22.72 M
+HU_039 45 24.9 M
+HU_040 24 26.54 M
+HU_041 28 23.67 M
+HU_042 36 19.75 M
+HU_043 42 29.04 M
+HU_044 57 25.46 F
+HU_045 46 20.81 F
+HU_046 35 24.84 M
+HU_047 43 25 F
+HU_048 39 19.49 F
+HU_049 50 27.85 M
+HU_050 30 24.21 M
+HU_051 24 23.23 F
+HU_052 51 20.06 F
+HU_053 49 25.88 M
+HU_054 29 20.76 M
+HU_055 58 24.89 F
+HU_056 41 21.15 M
+HU_057 57 27.16 M
+HU_058 45 26.7 M
+HU_060 55 28.72 F
+HU_061 44 25.35 F
+HU_062 34 22.22 M
+HU_063 35 21.01 F
+HU_064 32 21.94 F
+HU_065 54 21.87 M
+HU_066 25 22.53 F
+HU_067 40 19.31 F
+HU_068 37 27.22 F
+HU_069 39 24.38 M
+HU_070 58 18.71 M
+HU_072 47 27.13 M
+HU_073 35 25.38 M
+HU_074 42 20.94 F
+HU_075 38 21.05 M
+HU_076 47 26.7 M
+HU_077 27 21.15 M
+HU_078 46 25.18 M
+HU_079 47 23.55 M
+HU_080 21 19.72 F
+HU_081 25 17.84 F
+HU_082 49 23.15 M
+HU_083 50 29.76 M
+HU_084 62 23.8 F
+HU_085 23 22.86 M
+HU_086 33 23.51 M
+HU_087 38 23.8 F
+HU_088 50 21.78 F
+HU_089 31 23.7 M
+HU_090 46 19.79 M
+HU_091 61 26.12 M
+HU_092 40 21.83 M
+HU_093 53 21.71 M
+HU_094 32 23.29 M
+HU_095 27 27.33 M
+HU_097 50 26.78 M
+HU_098 46 20.45 M
+HU_099 23 21.3 M
+HU_100 47 21.22 F
+HU_101 39 23.7 M
+HU_102 59 24.03 F
+HU_103 49 26.79 M
+HU_105 47 22.96 M
+HU_106 42 27.34 M
+HU_107 46 24.22 M
+HU_108 25 23.81 M
+HU_109 32 22.68 M
+HU_110 50 20.9 F
+HU_112 55 25.36 M
+HU_113 44 23.05 M
+HU_114 58 29.38 M
+HU_115 46 27.24 F
+HU_116 28 20.96 F
+HU_117 24 22.86 M
+HU_118 30 21.64 F
+HU_119 50 24.44 F
+HU_120 32 23.88 F
+HU_121 26 20.57 M
+HU_122 48 23.03 M
+HU_123 49 24.39 M
+HU_124 34 22.22 M
+HU_125 58 25.47 M
+HU_126 45 24.7 M
+HU_127 45 25.62 M
+HU_129 47 29.32 M
+HU_130 33 26.06 M
+HU_131 42 23.12 M
+HU_132 38 26.67 F
+HU_133 53 25.43 M
+HU_134 48 22.89 M
+HU_135 31 24.93 M
+HU_136 52 20.81 F
+HU_137 28 22.22 M
+HU_138 42 21.88 M
+HU_139 47 23.03 M
+HU_140 49 26.59 M
+HU_142 25 20.98 M
+HU_143 52 23.15 F
+HU_144 38 29.54 M
+HU_145 27 29.09 M
+HU_146 42 24.21 M
+HU_147 60 31.74 M
+HU_148 55 30.48 F
+HU_149 35 19.49 F
+HU_150 49 27.24 F
+HU_152 26 17.58 F
+HU_154 35 27.71 F
+HU_155 48 20.45 F
+HU_156 36 16.85 F
+HU_157 43 21.95 F
+HU_158 50 25.48 F
+HU_159 37 21.72 F
+HU_160 31 24.17 F
+HU_162 50 29.03 F
+HU_163 49 23.15 F
+HU_164 45 25.63 F
+HU_166 40 19.72 F
+HU_167 55 20.57 F
+HU_168 37 20.76 F
+HU_169 53 19.14 F
+HU_170 50 24.61 F
+HU_171 29 21.37 F
+HU_172 55 21.36 F
+HU_173 55 20.28 F
+HU_174 42 31.64 F
+HU_175 35 21.26 F
+HU_177 59 28.58 F
+HU_179 33 26.57 F
+HU_180 53 23.74 F
+HU_181 49 22.46 F
+HU_182 43 23.74 F
+HU_183 46 19.13 F
+HU_184 37 25.33 F
+HU_185 42 21.09 F
+HU_186 44 22.1 F
+HU_187 21 19.95 F
+HU_188 22 24.22 F
+HU_189 39 19.43 F
+HU_190 28 25.93 M
+HU_191 36 26.12 M
+HU_192 31 24.22 M
+HU_193 35 21.78 F
+HU_194 40 28.04 F
+HU_195 26 18.42 F
+HU_196 27 21.1 F
+HU_197 26 20.72 M
+HU_198 35 22.98 M
+HU_199 33 21.04 M
+HU_200 46 23.89 M
+HU_201 34 20.24 M
+HU_202 42 28.06 M
+HU_203 25 19.95 F
+HU_204 31 29.06 M
+HU_205 33 28.37 M
+HU_206 45 22.15 F
+HU_207 33 19.47 F
+HU_208 27 18.61 F
+HU_209 17.5 21.48 F
b
diff -r 000000000000 -r 48e4be935243 test-data/variableMetadata.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/variableMetadata.out Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,110 @@
+variableMetadata msiLevel hmdb chemicalClass gender_tier_S
+(2-methoxyethoxy)propanoic acid isomer 2 Organi
+(gamma)Glu-Leu/Ile 2 AA-pep
+1-Methyluric acid 1 HMDB03099 AroHeP:Xenobi
+1-Methylxanthine 1 HMDB10738 AroHeP
+1,3-Dimethyluric acid 1 HMDB01857 AroHeP
+1,7-Dimethyluric acid 1 HMDB11103 AroHeP
+2-acetamido-4-methylphenyl acetate 2 AroHoM
+2-Aminoadipic acid 1 HMDB00510 AA-pep
+2-Hydroxybenzyl alcohol 1 HMDB59709 AroHoM
+2-Isopropylmalic acid 1 HMDB00402 Organi
+2-Methylhippuric acid 1 HMDB11723 AA-pep:AcyGly
+2,2-Dimethylglutaric acid 1 Lipids
+3-Hydroxybenzyl alcohol 1 HMDB59712 AroHoM
+3-Hydroxyphenylacetic acid 1 HMDB00440 AroHoM
+3-Indole carboxylic acid glucuronide 2 HMDB13189 Carboh
+3-Methyl-2-oxovaleric acid 1 HMDB00491 Lipids
+3-Methylcrotonylglycine 1 HMDB00459 AA-pep:AcyGly
+3,3-Dimethylglutaric acid 1 HMDB02441 Lipids
+3,4-Dihydroxybenzeneacetic acid 1 HMDB01336 AroHoM
+3,5-dihydroxybenzoic acid/3,4-dihydroxybenzoic acid 2 AroHoM
+3,7-Dimethyluric acid 1 HMDB01982 AroHeP
+4-Acetamidobutanoic acid isomer 2 2 Lipids
+4-Acetamidobutanoic acid isomer 3 2 Lipids
+4-Hydroxybenzoic acid 1 HMDB00500 AroHoM
+4-Methylhippuric acid/3-Methylhippuric acid 1 AA-pep:AcyGly
+5-Hydroxyindoleacetic acid 1 HMDB00763 AroHeP
+5-Sulfosalicylic acid 1 HMDB11725 AroHoM
+6-(2-hydroxyethoxy)-6-oxohexanoic acid 2 Organi
+6-(carboxymethoxy)-hexanoic acid 2 Organi
+9-Methylxanthine 2 HMDB59716 AroHeP
+Acetaminophen glucuronide 1 HMDB10316 Carboh
+Acetylphenylalanine 1 HMDB00512 AA-pep plsda
+alpha-N-Phenylacetyl-glutamine 1 HMDB06344 AA-pep plsda
+Aminosalicyluric acid 2 AA-pep:AcyGly
+Asp-Leu/Ile isomer 1 2 AA-pep
+Asp-Leu/Ile isomer 2 2 AA-pep
+Aspartic acid 1 HMDB00191 AA-pep
+Azelaic acid 1 HMDB00784 Organi
+Benzoic acid isomer 2 AroHoM
+Chenodeoxycholic acid isomer 2 Lipids:Steroi
+Cinnamoylglycine 1 HMDB11621 AA-pep:AcyGly
+Citric acid 1 HMDB00094 Organi plsda
+Dehydroepiandrosterone 3-glucuronide 1 HMDB10348 Lipids:Steroi
+Dehydroepiandrosterone sulfate 1 HMDB01032 Lipids:Steroi
+Deoxyhexose 1 HMDB00849 Carboh
+Dimethylguanosine 2 HMDB04824 Nucleo
+FMNH2 2 HMDB01142 AroHeP
+Fumaric acid 1 HMDB00134 Lipids
+Gentisic acid 1 HMDB00152 AroHoM
+Glu-Val 2 HMDB59717 AA-pep
+Gluconic acid and/or isomers 2 Carboh plsda
+Glucuronic acid and/or isomers 2 Carboh plsda
+Glyceric acid 1 HMDB00139 Carboh
+Glycocholic acid isomer 2 2 Lipids:Steroi
+Glycocholic acid isomer 3 2 Lipids:Steroi
+Heptylmalonic acid 2 HMDB59719 Lipids
+Hexanoylglycine 1 HMDB00701 AA-pep:AcyGly
+Hippuric acid 1 HMDB00714 AA-pep:AcyGly plsda
+Hydroxybenzyl alcohol isomer 2 AroHeM
+Hydroxyphenyllactic acid 1 HMDB00755 AroHoM
+Hydroxysuberic acid isomer 1 2 Organi
+Hydroxysuberic acid isomer 2 2 Organi
+Isovalerylalanine isomer 2 AA-pep
+Ketoleucine 1 HMDB00695 Lipids
+Kynurenic acid 1 HMDB00715 AA-pep
+Malic acid 1 HMDB00156 Organi plsda
+Methoxysalicylic acid isomer 2 AroHoM
+Methyl (hydroxymethyl)pyrrolidine-carboxylate/Methyl (hydroxy)piperidine-carboxylate 2 AA-pep
+Methylinosine 2 Nucleo
+Mevalonic acid isomer 1 2 Organi
+Monoethyl phthalate 2 HMDB02120 AroHoM:Xenobi
+N-Acetyl-aspartic acid 1 HMDB00812 AA-pep
+N-Acetylisoleucine 1 AA-pep
+N-Acetylleucine 1 HMDB11756 AA-pep
+N-Acetyltryptophan 1 HMDB13713 AA-pep
+N-Acetyltryptophan isomer 3 2 AA-pep
+N2-Acetylaminoadipic acid 2 AA-pep
+N4-Acetylcytidine 1 HMDB05923 Nucleo
+Nicotinuric acid isomer 2 AA-pep
+Ortho-Hydroxyphenylacetic acid 1 HMDB00669 AroHoM
+Oxoglutaric acid 2 HMDB00208 Organi plsda|randomforest|svm
+p-Anisic acid 1 HMDB01101 AroHoM plsda|randomforest|svm
+p-Hydroxyhippuric acid 2 HMDB13678 AA-pep:AcyGly
+p-Hydroxymandelic acid 1 HMDB00822 AroHoM
+p-Hydroxyphenylacetic acid 1 HMDB00020 AroHoM
+Pantothenic acid 1 HMDB00210 AliAcy plsda
+Pentose 2 Carboh
+Phe-Tyr-Asp (and isomers) 2 AA-pep plsda
+Porphobilinogen 1 HMDB00245 Organi
+Pyridoxic acid isomer 1 2 AroHeM
+Pyridylacetylglycine 2 HMDB59723 AA-pep:AcyGly:Xenobi
+Pyrocatechol sulfate 2 HMDB59724 AroHoM
+Pyroglutamic acid 1 HMDB00267 AliHeM
+Pyrroledicarboxylic acid 2 AroHeM
+Pyruvic acid 1 HMDB00243 Organi
+Quinic acid 1 HMDB03072 AliHoM
+Salicylic acid 1 HMDB01895 AroHoM:Xenobi
+Sebacic acid 1 HMDB00792 Organi
+Suberic acid 1 HMDB00893 Organi
+Sulfosalicylic acid isomer 2 AroHoM
+Taurine 1 HMDB00251 Organi
+Testosterone glucuronide 2 HMDB03193 Lipids:Steroi plsda|randomforest|svm
+Tetrahydrohippuric acid 2 AA-pep:AcyGly
+Threo-3-Phenylserine 1 HMDB02184 AA-pep
+Threonic acid/Erythronic acid 2 Carboh plsda
+Tryptophan 1 HMDB00929 AA-pep
+Valerylglycine isomer 1 2 AA-pep:AcyGly
+Valerylglycine isomer 2 2 AA-pep:AcyGly
+Xanthosine 1 HMDB00299 Nucleo
b
diff -r 000000000000 -r 48e4be935243 test-data/variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/variableMetadata.tsv Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,110 @@
+ msiLevel hmdb chemicalClass
+(2-methoxyethoxy)propanoic acid isomer 2 Organi
+(gamma)Glu-Leu/Ile 2 AA-pep
+1-Methyluric acid 1 HMDB03099 AroHeP:Xenobi
+1-Methylxanthine 1 HMDB10738 AroHeP
+1,3-Dimethyluric acid 1 HMDB01857 AroHeP
+1,7-Dimethyluric acid 1 HMDB11103 AroHeP
+2-acetamido-4-methylphenyl acetate 2 AroHoM
+2-Aminoadipic acid 1 HMDB00510 AA-pep
+2-Hydroxybenzyl alcohol 1 HMDB59709 AroHoM
+2-Isopropylmalic acid 1 HMDB00402 Organi
+2-Methylhippuric acid 1 HMDB11723 AA-pep:AcyGly
+2,2-Dimethylglutaric acid 1 Lipids
+3-Hydroxybenzyl alcohol 1 HMDB59712 AroHoM
+3-Hydroxyphenylacetic acid 1 HMDB00440 AroHoM
+3-Indole carboxylic acid glucuronide 2 HMDB13189 Carboh
+3-Methyl-2-oxovaleric acid 1 HMDB00491 Lipids
+3-Methylcrotonylglycine 1 HMDB00459 AA-pep:AcyGly
+3,3-Dimethylglutaric acid 1 HMDB02441 Lipids
+3,4-Dihydroxybenzeneacetic acid 1 HMDB01336 AroHoM
+3,5-dihydroxybenzoic acid/3,4-dihydroxybenzoic acid 2 AroHoM
+3,7-Dimethyluric acid 1 HMDB01982 AroHeP
+4-Acetamidobutanoic acid isomer 2 2 Lipids
+4-Acetamidobutanoic acid isomer 3 2 Lipids
+4-Hydroxybenzoic acid 1 HMDB00500 AroHoM
+4-Methylhippuric acid/3-Methylhippuric acid 1 AA-pep:AcyGly
+5-Hydroxyindoleacetic acid 1 HMDB00763 AroHeP
+5-Sulfosalicylic acid 1 HMDB11725 AroHoM
+6-(2-hydroxyethoxy)-6-oxohexanoic acid 2 Organi
+6-(carboxymethoxy)-hexanoic acid 2 Organi
+9-Methylxanthine 2 HMDB59716 AroHeP
+Acetaminophen glucuronide 1 HMDB10316 Carboh
+Acetylphenylalanine 1 HMDB00512 AA-pep
+alpha-N-Phenylacetyl-glutamine 1 HMDB06344 AA-pep
+Aminosalicyluric acid 2 AA-pep:AcyGly
+Asp-Leu/Ile isomer 1 2 AA-pep
+Asp-Leu/Ile isomer 2 2 AA-pep
+Aspartic acid 1 HMDB00191 AA-pep
+Azelaic acid 1 HMDB00784 Organi
+Benzoic acid isomer 2 AroHoM
+Chenodeoxycholic acid isomer 2 Lipids:Steroi
+Cinnamoylglycine 1 HMDB11621 AA-pep:AcyGly
+Citric acid 1 HMDB00094 Organi
+Dehydroepiandrosterone 3-glucuronide 1 HMDB10348 Lipids:Steroi
+Dehydroepiandrosterone sulfate 1 HMDB01032 Lipids:Steroi
+Deoxyhexose 1 HMDB00849 Carboh
+Dimethylguanosine 2 HMDB04824 Nucleo
+FMNH2 2 HMDB01142 AroHeP
+Fumaric acid 1 HMDB00134 Lipids
+Gentisic acid 1 HMDB00152 AroHoM
+Glu-Val 2 HMDB59717 AA-pep
+Gluconic acid and/or isomers 2 Carboh
+Glucuronic acid and/or isomers 2 Carboh
+Glyceric acid 1 HMDB00139 Carboh
+Glycocholic acid isomer 2 2 Lipids:Steroi
+Glycocholic acid isomer 3 2 Lipids:Steroi
+Heptylmalonic acid 2 HMDB59719 Lipids
+Hexanoylglycine 1 HMDB00701 AA-pep:AcyGly
+Hippuric acid 1 HMDB00714 AA-pep:AcyGly
+Hydroxybenzyl alcohol isomer 2 AroHeM
+Hydroxyphenyllactic acid 1 HMDB00755 AroHoM
+Hydroxysuberic acid isomer 1 2 Organi
+Hydroxysuberic acid isomer 2 2 Organi
+Isovalerylalanine isomer 2 AA-pep
+Ketoleucine 1 HMDB00695 Lipids
+Kynurenic acid 1 HMDB00715 AA-pep
+Malic acid 1 HMDB00156 Organi
+Methoxysalicylic acid isomer 2 AroHoM
+Methyl (hydroxymethyl)pyrrolidine-carboxylate/Methyl (hydroxy)piperidine-carboxylate 2 AA-pep
+Methylinosine 2 Nucleo
+Mevalonic acid isomer 1 2 Organi
+Monoethyl phthalate 2 HMDB02120 AroHoM:Xenobi
+N-Acetyl-aspartic acid 1 HMDB00812 AA-pep
+N-Acetylisoleucine 1 AA-pep
+N-Acetylleucine 1 HMDB11756 AA-pep
+N-Acetyltryptophan 1 HMDB13713 AA-pep
+N-Acetyltryptophan isomer 3 2 AA-pep
+N2-Acetylaminoadipic acid 2 AA-pep
+N4-Acetylcytidine 1 HMDB05923 Nucleo
+Nicotinuric acid isomer 2 AA-pep
+Ortho-Hydroxyphenylacetic acid 1 HMDB00669 AroHoM
+Oxoglutaric acid 2 HMDB00208 Organi
+p-Anisic acid 1 HMDB01101 AroHoM
+p-Hydroxyhippuric acid 2 HMDB13678 AA-pep:AcyGly
+p-Hydroxymandelic acid 1 HMDB00822 AroHoM
+p-Hydroxyphenylacetic acid 1 HMDB00020 AroHoM
+Pantothenic acid 1 HMDB00210 AliAcy
+Pentose 2 Carboh
+Phe-Tyr-Asp (and isomers) 2 AA-pep
+Porphobilinogen 1 HMDB00245 Organi
+Pyridoxic acid isomer 1 2 AroHeM
+Pyridylacetylglycine 2 HMDB59723 AA-pep:AcyGly:Xenobi
+Pyrocatechol sulfate 2 HMDB59724 AroHoM
+Pyroglutamic acid 1 HMDB00267 AliHeM
+Pyrroledicarboxylic acid 2 AroHeM
+Pyruvic acid 1 HMDB00243 Organi
+Quinic acid 1 HMDB03072 AliHoM
+Salicylic acid 1 HMDB01895 AroHoM:Xenobi
+Sebacic acid 1 HMDB00792 Organi
+Suberic acid 1 HMDB00893 Organi
+Sulfosalicylic acid isomer 2 AroHoM
+Taurine 1 HMDB00251 Organi
+Testosterone glucuronide 2 HMDB03193 Lipids:Steroi
+Tetrahydrohippuric acid 2 AA-pep:AcyGly
+Threo-3-Phenylserine 1 HMDB02184 AA-pep
+Threonic acid/Erythronic acid 2 Carboh
+Tryptophan 1 HMDB00929 AA-pep
+Valerylglycine isomer 1 2 AA-pep:AcyGly
+Valerylglycine isomer 2 2 AA-pep:AcyGly
+Xanthosine 1 HMDB00299 Nucleo
b
diff -r 000000000000 -r 48e4be935243 tests/biosigner_tests.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/biosigner_tests.R Wed Jul 27 11:40:20 2016 -0400
[
b'@@ -0,0 +1,264 @@\n+library(RUnit)\n+\n+wrapperF <- function(argVc) {\n+\n+\n+#### Start_of_testing_code <- function() {}\n+\n+\n+##------------------------------\n+## Initializing\n+##------------------------------\n+\n+## options\n+##--------\n+\n+strAsFacL <- options()$stringsAsFactors\n+options(stringsAsFactors = FALSE)\n+\n+## libraries\n+##----------\n+\n+suppressMessages(library(biosigner))\n+\n+if(packageVersion("biosigner") < "1.0.0")\n+    stop("Please use \'biosigner\' versions of 1.0.0 and above")\n+if(packageVersion("ropls") < "1.4.0")\n+    stop("Please use \'ropls\' versions of 1.4.0 and above")\n+\n+## constants\n+##----------\n+\n+modNamC <- "Biosigner" ## module name\n+\n+topEnvC <- environment()\n+flgC <- "\\n"\n+\n+## functions\n+##----------\n+\n+flgF <- function(tesC,\n+                 envC = topEnvC,\n+                 txtC = NA) { ## management of warning and error messages\n+\n+    tesL <- eval(parse(text = tesC), envir = envC)\n+\n+    if(!tesL) {\n+\n+        sink(NULL)\n+        stpTxtC <- ifelse(is.na(txtC),\n+                          paste0(tesC, " is FALSE"),\n+                          txtC)\n+\n+        stop(stpTxtC,\n+             call. = FALSE)\n+\n+    }\n+\n+} ## flgF\n+\n+\n+## log file\n+##---------\n+\n+sink(argVc["information"])\n+\n+cat("\\nStart of the \'", modNamC, "\' Galaxy module call: ",\n+    format(Sys.time(), "%a %d %b %Y %X"), "\\n", sep="")\n+\n+\n+## arguments\n+##----------\n+\n+xMN <- t(as.matrix(read.table(argVc["dataMatrix_in"],\n+                              check.names = FALSE,\n+                              header = TRUE,\n+                              row.names = 1,\n+                              sep = "\\t")))\n+\n+samDF <- read.table(argVc["sampleMetadata_in"],\n+                    check.names = FALSE,\n+                    header = TRUE,\n+                    row.names = 1,\n+                    sep = "\\t")\n+flgF("identical(rownames(xMN), rownames(samDF))", txtC = "Sample names (or number) in the data matrix (first row) and sample metadata (first column) are not identical; use the \'Check Format\' module in the \'Quality Control\' section")\n+\n+varDF <- read.table(argVc["variableMetadata_in"],\n+                    check.names = FALSE,\n+                    header = TRUE,\n+                    row.names = 1,\n+                    sep = "\\t")\n+flgF("identical(colnames(xMN), rownames(varDF))", txtC = "Variable names (or number) in the data matrix (first column) and sample metadata (first column) are not identical; use the \'Check Format\' module in the \'Quality Control\' section")\n+\n+flgF("argVc[\'respC\'] %in% colnames(samDF)",\n+     txtC = paste0("Class argument (", argVc[\'respC\'], ") must be either none or one of the column names (first row) of your sample metadata"))\n+respVc <- samDF[, argVc["respC"]]\n+flgF("mode(respVc) == \'character\'",\n+     txtC = paste0("\'", argVc[\'respC\'], "\' column of sampleMetadata does not contain only characters"))\n+respFc <- factor(respVc)\n+flgF("length(levels(respFc)) == 2",\n+     txtC = paste0("\'", argVc[\'respC\'], "\' column of sampleMetadata does not contain only 2 types of characters (e.g., \'case\' and \'control\')"))\n+tierMaxC <- ifelse("tierC" %in% names(argVc), argVc["tierC"], "S")\n+pvalN <- ifelse("pvalN" %in% names(argVc), as.numeric(argVc["pvalN"]), 0.05)\n+\n+\n+##------------------------------\n+## Computation and plot\n+##------------------------------\n+\n+\n+sink()\n+\n+optWrnN <- options()$warn\n+options(warn = -1)\n+\n+if("seedI" %in% names(argVc) && argVc["seedI"] != "0")\n+    set.seed(as.integer(argVc["seedI"]))\n+\n+bsnLs <- biosign(x = xMN,\n+                 y = respFc,\n+                 methodVc = ifelse("methodC" %in% names(argVc), argVc["methodC"], "all"),\n+                 bootI = ifelse("bootI" %in% names(argVc), as.numeric(argVc["bootI"]), 50),\n+                 pvalN = pvalN,\n+                 printL = FALSE,\n+                 plotL = FALSE,\n+                 .sinkC = argVc["information"])\n+\n+if("seedI" %in% names(argVc) && argVc["seedI"] != "0")\n+    set.seed(NULL)\n+\n+tierMC <- bsnLs@tierMC\n+\n+if(!is.null(tierMC)) {\n+    '..b'argVc["figure_tier"])\n+    plot(1, bty = "n", type = "n",\n+         xaxt = "n", yaxt = "n", xlab = "", ylab = "")\n+    text(mean(par("usr")[1:2]), mean(par("usr")[3:4]),\n+         labels = "No significant variable to display")\n+    dev.off()\n+    pdf(argVc["figure_boxplot"])\n+    plot(1, bty = "n", type = "n",\n+         xaxt = "n", yaxt = "n", xlab = "", ylab = "")\n+    text(mean(par("usr")[1:2]), mean(par("usr")[3:4]),\n+         labels = "No significant variable to display")\n+    dev.off()\n+}\n+\n+\n+options(warn = optWrnN)\n+\n+\n+##------------------------------\n+## Print\n+##------------------------------\n+\n+sink(argVc["information"], append = TRUE)\n+\n+tierFullVc <- c("S", LETTERS[1:5])\n+tierVc <- tierFullVc[1:which(tierFullVc == tierMaxC)]\n+\n+if(sum(tierMC %in% tierVc)) {\n+    cat("\\nSignificant features from \'", paste(tierVc, collapse = "\', \'"), "\' tiers:\\n", sep = "")\n+    print(tierMC[apply(tierMC, 1, function(rowVc) sum(rowVc %in% tierVc) > 0), ,\n+                         drop = FALSE])\n+    cat("\\nAccuracy:\\n")\n+    print(round(getAccuracyMN(bsnLs), 3))\n+} else\n+    cat("\\nNo significant variable found for any classifier\\n")\n+\n+\n+##------------------------------\n+## Ending\n+##------------------------------\n+\n+## Saving\n+##-------\n+\n+if(!is.null(tierMC)) {\n+    tierDF <- data.frame(tier = sapply(rownames(varDF),\n+                             function(varC) {\n+                                 varTirVc <- tierMC[varC, ]\n+                                 varTirVc <- names(varTirVc)[varTirVc %in% tierVc]\n+                                 paste(varTirVc, collapse = "|")\n+                             }),\n+                         stringsAsFactors = FALSE)\n+    colnames(tierDF) <- paste(argVc["respC"],\n+                              colnames(tierDF),\n+                              paste(tierVc, collapse = ""),\n+                              sep = "_")\n+    varDF <- cbind.data.frame(varDF, tierDF)\n+}\n+\n+## variableMetadata\n+\n+varDF <- cbind.data.frame(variableMetadata = rownames(varDF),\n+                          varDF)\n+write.table(varDF,\n+            file = argVc["variableMetadata_out"],\n+            quote = FALSE,\n+            row.names = FALSE,\n+            sep = "\\t")\n+\n+\n+## Closing\n+##--------\n+\n+cat("\\nEnd of \'", modNamC, "\' Galaxy module call: ",\n+    as.character(Sys.time()), "\\n", sep = "")\n+\n+sink()\n+\n+options(stringsAsFactors = strAsFacL)\n+\n+\n+#### End_of_testing_code <- function() {}\n+\n+\n+    return(list(bsnLs = bsnLs))\n+\n+\n+    rm(list = ls())\n+\n+\n+}\n+\n+\n+exaDirOutC <- "output"\n+if(!file.exists(exaDirOutC))\n+   stop("Please create an \'output\' subfolder into the (current) \'tests\' folder")\n+\n+tesArgLs <- list(sacurine_all = c(respC = "gender",\n+                     methodC = "all",\n+                     bootI = "5",\n+                     pvalN = "0.05",\n+                     seedI = "123",\n+                     .chkC = "checkEqualsNumeric(getAccuracyMN(outLs[[\'bsnLs\']])[\'AS\', \'randomforest\'], 0.8534348, tolerance = 1e-7)"))\n+\n+for(tesC in names(tesArgLs))\n+    tesArgLs[[tesC]] <- c(tesArgLs[[tesC]],\n+                          dataMatrix_in = file.path(unlist(strsplit(tesC, "_"))[1], "dataMatrix.tsv"),\n+                          sampleMetadata_in = file.path(unlist(strsplit(tesC, "_"))[1], "sampleMetadata.tsv"),\n+                          variableMetadata_in = file.path(unlist(strsplit(tesC, "_"))[1], "variableMetadata.tsv"),\n+                          variableMetadata_out = file.path(exaDirOutC, "variableMetadata.tsv"),\n+                          figure_tier = file.path(exaDirOutC, "figure-tier.pdf"),\n+                          figure_boxplot = file.path(exaDirOutC, "figure-boxplot.pdf"),\n+                          information = file.path(exaDirOutC, "information.txt"))\n+\n+for(tesC in names(tesArgLs)) {\n+    print(tesC)\n+    outLs <- wrapperF(tesArgLs[[tesC]])\n+    if(".chkC" %in% names(tesArgLs[[tesC]]))\n+        stopifnot(eval(parse(text = tesArgLs[[tesC]][[".chkC"]])))\n+}\n+\n+message("Checks successfully completed")\n'
b
diff -r 000000000000 -r 48e4be935243 tests/sacurine/dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/sacurine/dataMatrix.tsv Wed Jul 27 11:40:20 2016 -0400
b
b'@@ -0,0 +1,110 @@\n+\tHU_011\tHU_014\tHU_015\tHU_017\tHU_018\tHU_019\tHU_020\tHU_021\tHU_022\tHU_023\tHU_024\tHU_025\tHU_026\tHU_027\tHU_028\tHU_029\tHU_030\tHU_031\tHU_032\tHU_033\tHU_034\tHU_035\tHU_036\tHU_037\tHU_038\tHU_039\tHU_040\tHU_041\tHU_042\tHU_043\tHU_044\tHU_045\tHU_046\tHU_047\tHU_048\tHU_049\tHU_050\tHU_051\tHU_052\tHU_053\tHU_054\tHU_055\tHU_056\tHU_057\tHU_058\tHU_060\tHU_061\tHU_062\tHU_063\tHU_064\tHU_065\tHU_066\tHU_067\tHU_068\tHU_069\tHU_070\tHU_072\tHU_073\tHU_074\tHU_075\tHU_076\tHU_077\tHU_078\tHU_079\tHU_080\tHU_081\tHU_082\tHU_083\tHU_084\tHU_085\tHU_086\tHU_087\tHU_088\tHU_089\tHU_090\tHU_091\tHU_092\tHU_093\tHU_094\tHU_095\tHU_097\tHU_098\tHU_099\tHU_100\tHU_101\tHU_102\tHU_103\tHU_105\tHU_106\tHU_107\tHU_108\tHU_109\tHU_110\tHU_112\tHU_113\tHU_114\tHU_115\tHU_116\tHU_117\tHU_118\tHU_119\tHU_120\tHU_121\tHU_122\tHU_123\tHU_124\tHU_125\tHU_126\tHU_127\tHU_129\tHU_130\tHU_131\tHU_132\tHU_133\tHU_134\tHU_135\tHU_136\tHU_137\tHU_138\tHU_139\tHU_140\tHU_142\tHU_143\tHU_144\tHU_145\tHU_146\tHU_147\tHU_148\tHU_149\tHU_150\tHU_152\tHU_154\tHU_155\tHU_156\tHU_157\tHU_158\tHU_159\tHU_160\tHU_162\tHU_163\tHU_164\tHU_166\tHU_167\tHU_168\tHU_169\tHU_170\tHU_171\tHU_172\tHU_173\tHU_174\tHU_175\tHU_177\tHU_179\tHU_180\tHU_181\tHU_182\tHU_183\tHU_184\tHU_185\tHU_186\tHU_187\tHU_188\tHU_189\tHU_190\tHU_191\tHU_192\tHU_193\tHU_194\tHU_195\tHU_196\tHU_197\tHU_198\tHU_199\tHU_200\tHU_201\tHU_202\tHU_203\tHU_204\tHU_205\tHU_206\tHU_207\tHU_208\tHU_209\n+(2-methoxyethoxy)propanoic acid isomer\t3.019766011\t3.81433889\t3.51969148\t2.56218265\t3.781921607\t4.161073524\t3.199174022\t3.378109516\t3.26452758\t3.787490017\t5.36371403\t3.202345706\t3.980345369\t3.020293232\t5.083462878\t3.388718935\t3.445549982\t1.27650453\t3.738547491\t1.253594534\t3.232847813\t4.559559002\t4.075948481\t2.570748216\t4.117811641\t5.038208548\t4.394350472\t3.665845239\t3.42296993\t3.74546685\t3.110957103\t4.252742233\t4.296284046\t2.995377877\t3.389971588\t5.349114655\t5.813374487\t4.304743135\t1.435768568\t5.369591232\t3.809431106\t3.0110849\t1.321147859\t3.401176446\t3.506978677\t5.24237122\t3.416889621\t3.415584225\t3.887678774\t3.555974489\t3.710985751\t4.232236312\t3.803661779\t4.379572071\t3.938310455\t1.376325833\t3.390271579\t5.215817481\t4.351838419\t3.714724817\t3.529736242\t3.862848205\t3.383427403\t3.661146136\t4.112188079\t4.249731699\t4.765467314\t3.51532253\t4.155850086\t4.045784307\t4.222815204\t4.168351191\t4.21782555\t3.612098315\t3.073157836\t4.235420499\t3.820636952\t2.797679916\t3.136688731\t3.665614604\t4.154569098\t4.299336631\t3.559309507\t2.996742676\t3.480758857\t4.034741661\t3.856739467\t2.852684744\t3.651373844\t3.759574346\t3.95537384\t2.849099312\t3.398179811\t3.984515153\t3.597414226\t3.290898684\t4.179746804\t4.943696911\t1.555387577\t3.60408986\t1.301552667\t3.640714337\t3.9838544\t3.827632696\t4.969533288\t3.504223072\t2.927962237\t4.011233932\t3.846480069\t3.945182011\t3.444671991\t3.617341684\t4.433665852\t3.758001601\t3.117921102\t3.604887175\t3.827127682\t1.270341972\t4.661967452\t3.058563173\t4.718036674\t3.77969937\t4.41111843\t3.735829951\t3.867366105\t3.377810236\t4.174630078\t4.051745447\t4.354188592\t3.522532268\t3.278058138\t3.375142493\t4.201257373\t3.531025311\t4.104608416\t3.308431289\t3.645655442\t5.077657223\t1.307713092\t4.169713633\t3.588749002\t3.785980907\t3.237049946\t4.089354447\t3.881406873\t3.732585337\t4.054073292\t4.137363308\t4.493012079\t4.930648019\t3.399303204\t3.372649157\t3.808510752\t3.912572116\t4.87526109\t3.423336878\t4.817034951\t3.574103433\t3.392706279\t3.640266302\t3.918027353\t2.984720403\t4.912949546\t3.391126097\t3.496992454\t4.454290676\t3.679442656\t4.082141098\t3.901748493\t4.459292151\t3.658028576\t3.61865837\t1.347192548\t3.156817506\t4.088827883\t3.68482537\t3.739437875\t3.62621039\t3.861325975\t1.321648909\t4.186987285\t3.748127215\t4.208859398\n+(gamma)Glu-Leu/Ile\t3.888479324\t4.277148905\t4.195649235\t4.323759965\t4.629328558\t4.412266289\t4.175236737\t4.635271487\t3.847144646\t3.871586241\t4.417740636\t4.328564559\t4.02953783\t4.152376569\t4.292682632\t4.531347748\t4.453076004\t4.6291358\t4.113221891\t4.150947299\t4.124072576\t3.901047415\t4.024811926\t4.181515516\t4.181368916\t3.876389846\t4.704956128\t4.21159738\t4.336920642\t4.38187405\t3.899552672\t4.061643136\t4.379398702\t3.828154643\t4.197557784\t4.015019635\t4.401325613\t3.802961064\t4.191430823\t4.'..b'049\t4.330382886\t4.100121431\t4.320047243\t4.239744811\t4.150606181\t4.124659917\t4.375400222\t4.251030211\t3.777775091\t4.361487807\t4.082842319\t4.083917302\t4.325269835\t4.010354674\t4.462516251\t4.472209609\t4.259480191\t4.392390039\t4.395272253\t4.305664387\t4.179207569\t4.396834579\t4.31087313\t4.419271137\t4.039056214\t4.393125083\t4.675851363\t4.364602525\t4.466913655\t4.481694872\t4.318407645\t4.289313676\t4.446749448\t4.571755159\t4.580876703\t4.472186105\t4.571326085\t4.256571368\t4.39667478\t4.528005839\t4.541201304\t4.406940498\t4.545197346\t4.391907474\t4.344684431\t4.477778512\t4.450207826\t4.417370227\t4.386250441\t4.085408476\t4.379901509\t4.215423793\t4.406536979\t4.163083399\t3.963043381\t4.187628652\t4.320252412\t4.545904132\t4.157495172\t4.5392129\t4.355912516\t4.32104914\t4.595052116\t4.387708897\t4.434185544\t4.060156974\t4.416837064\t4.417398742\t4.332046944\t4.248920107\t4.318558306\t4.675950075\t4.188599527\t4.654017827\t4.398818689\t4.448725636\t4.565013209\t4.273248747\t4.353604308\t4.056089953\t4.261860182\t4.366973197\t4.451823465\t4.375387491\t4.392784813\t4.187746104\t4.182184758\t4.06300237\t4.433683963\t4.494079796\t4.423765189\t4.646938456\t4.487248568\t4.175523204\t4.322262883\t4.314792833\t4.211783408\t4.348925516\t4.245849039\t4.482311354\t4.365509618\t4.44930672\t4.232880823\t4.441521421\t4.563517091\t4.331946693\t4.200062175\t4.208486129\t4.241824508\t4.445903314\t4.60948463\t4.517829053\t4.578649469\t4.916165933\t4.654804445\t4.551715167\t4.291265754\t4.874321475\t4.400847348\t4.38994431\t4.303778936\t4.373744009\t4.302854884\t4.598405731\t4.568087675\t4.461992655\t4.464836218\t4.625734497\t4.584892798\t4.662890116\t4.339637524\t4.497000889\t3.983841809\t4.283440095\t4.488303133\t4.296996312\t4.19346948\t4.727898398\t4.28073709\t4.513542781\t4.421895016\t4.313514034\t4.453121704\t4.303450906\t4.055802163\t4.602680714\t4.27076319\t4.224132258\t4.276186679\t4.652756637\t4.634338821\t4.47194762\n+Xanthosine\t4.075879575\t4.195761901\t4.12449321\t4.2502583\t4.361708565\t4.199196067\t4.196265732\t4.404987211\t4.41064782\t4.175794892\t4.258855541\t4.172714224\t4.016015657\t4.100203052\t4.384366912\t4.112921255\t4.399534645\t4.332193324\t4.208322622\t4.379464496\t4.265560718\t4.418307991\t4.087210986\t4.354190761\t3.978396839\t4.172345295\t4.106312026\t4.113942504\t4.558528094\t4.405650867\t3.683591924\t4.26118478\t4.282118008\t3.858642232\t4.299616596\t4.314749151\t4.065692925\t4.144560403\t4.103564195\t3.790628566\t4.416095358\t3.700313782\t4.265516105\t4.289286398\t4.302147514\t4.38354181\t4.218737122\t4.241238791\t4.415874314\t4.120532172\t4.291457181\t4.432756525\t4.239834416\t4.385267423\t4.203494903\t4.352140139\t4.353667915\t4.211041989\t4.471329543\t4.407096124\t4.335026554\t4.295258417\t4.360194162\t4.244628342\t4.523107299\t4.680727647\t4.380119407\t4.50434686\t4.101784524\t4.190726746\t4.702793616\t4.283539498\t4.491848445\t4.628062354\t4.405671691\t4.158371484\t4.227722032\t4.320367885\t4.415241512\t4.640270467\t4.21985738\t4.150109329\t4.265318291\t4.540761333\t4.261018241\t4.151723361\t4.259370091\t4.393426673\t4.870015557\t4.19378655\t4.10780659\t4.016284523\t4.107217721\t4.31688128\t4.49131669\t4.562464053\t4.50079102\t4.281917446\t4.487327505\t4.133987874\t4.186924379\t4.447610934\t4.384756495\t4.455984384\t4.431190839\t4.272439619\t4.515910771\t4.35224905\t4.249140203\t4.126305817\t4.025207129\t4.144468584\t4.370255637\t4.480739473\t4.363577911\t4.194958282\t3.950238979\t4.197796158\t4.489707246\t4.395211284\t4.589147194\t4.410919138\t4.26922062\t4.315277915\t4.516084092\t4.26149305\t5.535146698\t4.244361054\t4.422768199\t4.078743662\t4.434466561\t4.090579617\t4.085780689\t4.48828568\t4.610716761\t4.159093884\t4.139057245\t3.674563769\t4.65106654\t4.176384186\t4.301494215\t4.241053606\t3.94529113\t4.123354762\t3.765637618\t4.203290621\t4.40791255\t4.150929571\t4.289863493\t4.178743871\t4.123566885\t4.345336878\t4.279958081\t4.063705348\t4.069319014\t4.200426656\t4.00966354\t4.200744339\t4.061326655\t4.093155495\t4.514761467\t4.227698791\t4.527880359\t4.507718263\t4.375752047\t4.28503905\t4.235141509\t4.534792548\t4.394130646\t4.523847631\t4.352227778\t4.233160334\t4.253659257\t4.031631259\t4.426082168\t4.500371235\t4.186340083\t4.629825565\t4.408696151\t4.3878006\t4.256140724\t4.487781609\t4.222953354\n'
b
diff -r 000000000000 -r 48e4be935243 tests/sacurine/sampleMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/sacurine/sampleMetadata.tsv Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,184 @@
+ age bmi gender
+HU_011 29 19.75 M
+HU_014 59 22.64 F
+HU_015 42 22.72 M
+HU_017 41 23.03 M
+HU_018 34 20.96 M
+HU_019 35 23.41 M
+HU_020 59 17.1 M
+HU_021 34 23.36 M
+HU_022 51 28.23 F
+HU_023 51 29.55 M
+HU_024 57 29.86 M
+HU_025 53 21.6 M
+HU_026 34 23.46 F
+HU_027 37 24.82 M
+HU_028 41 23.92 F
+HU_029 37 27.78 M
+HU_030 49 25.88 M
+HU_031 25 20.76 M
+HU_032 38 24.09 F
+HU_033 44 18.36 F
+HU_034 52 23.37 M
+HU_035 37 20.7 F
+HU_036 47 29.51 M
+HU_037 35 25.62 M
+HU_038 52 22.72 M
+HU_039 45 24.9 M
+HU_040 24 26.54 M
+HU_041 28 23.67 M
+HU_042 36 19.75 M
+HU_043 42 29.04 M
+HU_044 57 25.46 F
+HU_045 46 20.81 F
+HU_046 35 24.84 M
+HU_047 43 25 F
+HU_048 39 19.49 F
+HU_049 50 27.85 M
+HU_050 30 24.21 M
+HU_051 24 23.23 F
+HU_052 51 20.06 F
+HU_053 49 25.88 M
+HU_054 29 20.76 M
+HU_055 58 24.89 F
+HU_056 41 21.15 M
+HU_057 57 27.16 M
+HU_058 45 26.7 M
+HU_060 55 28.72 F
+HU_061 44 25.35 F
+HU_062 34 22.22 M
+HU_063 35 21.01 F
+HU_064 32 21.94 F
+HU_065 54 21.87 M
+HU_066 25 22.53 F
+HU_067 40 19.31 F
+HU_068 37 27.22 F
+HU_069 39 24.38 M
+HU_070 58 18.71 M
+HU_072 47 27.13 M
+HU_073 35 25.38 M
+HU_074 42 20.94 F
+HU_075 38 21.05 M
+HU_076 47 26.7 M
+HU_077 27 21.15 M
+HU_078 46 25.18 M
+HU_079 47 23.55 M
+HU_080 21 19.72 F
+HU_081 25 17.84 F
+HU_082 49 23.15 M
+HU_083 50 29.76 M
+HU_084 62 23.8 F
+HU_085 23 22.86 M
+HU_086 33 23.51 M
+HU_087 38 23.8 F
+HU_088 50 21.78 F
+HU_089 31 23.7 M
+HU_090 46 19.79 M
+HU_091 61 26.12 M
+HU_092 40 21.83 M
+HU_093 53 21.71 M
+HU_094 32 23.29 M
+HU_095 27 27.33 M
+HU_097 50 26.78 M
+HU_098 46 20.45 M
+HU_099 23 21.3 M
+HU_100 47 21.22 F
+HU_101 39 23.7 M
+HU_102 59 24.03 F
+HU_103 49 26.79 M
+HU_105 47 22.96 M
+HU_106 42 27.34 M
+HU_107 46 24.22 M
+HU_108 25 23.81 M
+HU_109 32 22.68 M
+HU_110 50 20.9 F
+HU_112 55 25.36 M
+HU_113 44 23.05 M
+HU_114 58 29.38 M
+HU_115 46 27.24 F
+HU_116 28 20.96 F
+HU_117 24 22.86 M
+HU_118 30 21.64 F
+HU_119 50 24.44 F
+HU_120 32 23.88 F
+HU_121 26 20.57 M
+HU_122 48 23.03 M
+HU_123 49 24.39 M
+HU_124 34 22.22 M
+HU_125 58 25.47 M
+HU_126 45 24.7 M
+HU_127 45 25.62 M
+HU_129 47 29.32 M
+HU_130 33 26.06 M
+HU_131 42 23.12 M
+HU_132 38 26.67 F
+HU_133 53 25.43 M
+HU_134 48 22.89 M
+HU_135 31 24.93 M
+HU_136 52 20.81 F
+HU_137 28 22.22 M
+HU_138 42 21.88 M
+HU_139 47 23.03 M
+HU_140 49 26.59 M
+HU_142 25 20.98 M
+HU_143 52 23.15 F
+HU_144 38 29.54 M
+HU_145 27 29.09 M
+HU_146 42 24.21 M
+HU_147 60 31.74 M
+HU_148 55 30.48 F
+HU_149 35 19.49 F
+HU_150 49 27.24 F
+HU_152 26 17.58 F
+HU_154 35 27.71 F
+HU_155 48 20.45 F
+HU_156 36 16.85 F
+HU_157 43 21.95 F
+HU_158 50 25.48 F
+HU_159 37 21.72 F
+HU_160 31 24.17 F
+HU_162 50 29.03 F
+HU_163 49 23.15 F
+HU_164 45 25.63 F
+HU_166 40 19.72 F
+HU_167 55 20.57 F
+HU_168 37 20.76 F
+HU_169 53 19.14 F
+HU_170 50 24.61 F
+HU_171 29 21.37 F
+HU_172 55 21.36 F
+HU_173 55 20.28 F
+HU_174 42 31.64 F
+HU_175 35 21.26 F
+HU_177 59 28.58 F
+HU_179 33 26.57 F
+HU_180 53 23.74 F
+HU_181 49 22.46 F
+HU_182 43 23.74 F
+HU_183 46 19.13 F
+HU_184 37 25.33 F
+HU_185 42 21.09 F
+HU_186 44 22.1 F
+HU_187 21 19.95 F
+HU_188 22 24.22 F
+HU_189 39 19.43 F
+HU_190 28 25.93 M
+HU_191 36 26.12 M
+HU_192 31 24.22 M
+HU_193 35 21.78 F
+HU_194 40 28.04 F
+HU_195 26 18.42 F
+HU_196 27 21.1 F
+HU_197 26 20.72 M
+HU_198 35 22.98 M
+HU_199 33 21.04 M
+HU_200 46 23.89 M
+HU_201 34 20.24 M
+HU_202 42 28.06 M
+HU_203 25 19.95 F
+HU_204 31 29.06 M
+HU_205 33 28.37 M
+HU_206 45 22.15 F
+HU_207 33 19.47 F
+HU_208 27 18.61 F
+HU_209 17.5 21.48 F
b
diff -r 000000000000 -r 48e4be935243 tests/sacurine/variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/sacurine/variableMetadata.tsv Wed Jul 27 11:40:20 2016 -0400
b
@@ -0,0 +1,110 @@
+ msiLevel hmdb chemicalClass
+(2-methoxyethoxy)propanoic acid isomer 2 Organi
+(gamma)Glu-Leu/Ile 2 AA-pep
+1-Methyluric acid 1 HMDB03099 AroHeP:Xenobi
+1-Methylxanthine 1 HMDB10738 AroHeP
+1,3-Dimethyluric acid 1 HMDB01857 AroHeP
+1,7-Dimethyluric acid 1 HMDB11103 AroHeP
+2-acetamido-4-methylphenyl acetate 2 AroHoM
+2-Aminoadipic acid 1 HMDB00510 AA-pep
+2-Hydroxybenzyl alcohol 1 HMDB59709 AroHoM
+2-Isopropylmalic acid 1 HMDB00402 Organi
+2-Methylhippuric acid 1 HMDB11723 AA-pep:AcyGly
+2,2-Dimethylglutaric acid 1 Lipids
+3-Hydroxybenzyl alcohol 1 HMDB59712 AroHoM
+3-Hydroxyphenylacetic acid 1 HMDB00440 AroHoM
+3-Indole carboxylic acid glucuronide 2 HMDB13189 Carboh
+3-Methyl-2-oxovaleric acid 1 HMDB00491 Lipids
+3-Methylcrotonylglycine 1 HMDB00459 AA-pep:AcyGly
+3,3-Dimethylglutaric acid 1 HMDB02441 Lipids
+3,4-Dihydroxybenzeneacetic acid 1 HMDB01336 AroHoM
+3,5-dihydroxybenzoic acid/3,4-dihydroxybenzoic acid 2 AroHoM
+3,7-Dimethyluric acid 1 HMDB01982 AroHeP
+4-Acetamidobutanoic acid isomer 2 2 Lipids
+4-Acetamidobutanoic acid isomer 3 2 Lipids
+4-Hydroxybenzoic acid 1 HMDB00500 AroHoM
+4-Methylhippuric acid/3-Methylhippuric acid 1 AA-pep:AcyGly
+5-Hydroxyindoleacetic acid 1 HMDB00763 AroHeP
+5-Sulfosalicylic acid 1 HMDB11725 AroHoM
+6-(2-hydroxyethoxy)-6-oxohexanoic acid 2 Organi
+6-(carboxymethoxy)-hexanoic acid 2 Organi
+9-Methylxanthine 2 HMDB59716 AroHeP
+Acetaminophen glucuronide 1 HMDB10316 Carboh
+Acetylphenylalanine 1 HMDB00512 AA-pep
+alpha-N-Phenylacetyl-glutamine 1 HMDB06344 AA-pep
+Aminosalicyluric acid 2 AA-pep:AcyGly
+Asp-Leu/Ile isomer 1 2 AA-pep
+Asp-Leu/Ile isomer 2 2 AA-pep
+Aspartic acid 1 HMDB00191 AA-pep
+Azelaic acid 1 HMDB00784 Organi
+Benzoic acid isomer 2 AroHoM
+Chenodeoxycholic acid isomer 2 Lipids:Steroi
+Cinnamoylglycine 1 HMDB11621 AA-pep:AcyGly
+Citric acid 1 HMDB00094 Organi
+Dehydroepiandrosterone 3-glucuronide 1 HMDB10348 Lipids:Steroi
+Dehydroepiandrosterone sulfate 1 HMDB01032 Lipids:Steroi
+Deoxyhexose 1 HMDB00849 Carboh
+Dimethylguanosine 2 HMDB04824 Nucleo
+FMNH2 2 HMDB01142 AroHeP
+Fumaric acid 1 HMDB00134 Lipids
+Gentisic acid 1 HMDB00152 AroHoM
+Glu-Val 2 HMDB59717 AA-pep
+Gluconic acid and/or isomers 2 Carboh
+Glucuronic acid and/or isomers 2 Carboh
+Glyceric acid 1 HMDB00139 Carboh
+Glycocholic acid isomer 2 2 Lipids:Steroi
+Glycocholic acid isomer 3 2 Lipids:Steroi
+Heptylmalonic acid 2 HMDB59719 Lipids
+Hexanoylglycine 1 HMDB00701 AA-pep:AcyGly
+Hippuric acid 1 HMDB00714 AA-pep:AcyGly
+Hydroxybenzyl alcohol isomer 2 AroHeM
+Hydroxyphenyllactic acid 1 HMDB00755 AroHoM
+Hydroxysuberic acid isomer 1 2 Organi
+Hydroxysuberic acid isomer 2 2 Organi
+Isovalerylalanine isomer 2 AA-pep
+Ketoleucine 1 HMDB00695 Lipids
+Kynurenic acid 1 HMDB00715 AA-pep
+Malic acid 1 HMDB00156 Organi
+Methoxysalicylic acid isomer 2 AroHoM
+Methyl (hydroxymethyl)pyrrolidine-carboxylate/Methyl (hydroxy)piperidine-carboxylate 2 AA-pep
+Methylinosine 2 Nucleo
+Mevalonic acid isomer 1 2 Organi
+Monoethyl phthalate 2 HMDB02120 AroHoM:Xenobi
+N-Acetyl-aspartic acid 1 HMDB00812 AA-pep
+N-Acetylisoleucine 1 AA-pep
+N-Acetylleucine 1 HMDB11756 AA-pep
+N-Acetyltryptophan 1 HMDB13713 AA-pep
+N-Acetyltryptophan isomer 3 2 AA-pep
+N2-Acetylaminoadipic acid 2 AA-pep
+N4-Acetylcytidine 1 HMDB05923 Nucleo
+Nicotinuric acid isomer 2 AA-pep
+Ortho-Hydroxyphenylacetic acid 1 HMDB00669 AroHoM
+Oxoglutaric acid 2 HMDB00208 Organi
+p-Anisic acid 1 HMDB01101 AroHoM
+p-Hydroxyhippuric acid 2 HMDB13678 AA-pep:AcyGly
+p-Hydroxymandelic acid 1 HMDB00822 AroHoM
+p-Hydroxyphenylacetic acid 1 HMDB00020 AroHoM
+Pantothenic acid 1 HMDB00210 AliAcy
+Pentose 2 Carboh
+Phe-Tyr-Asp (and isomers) 2 AA-pep
+Porphobilinogen 1 HMDB00245 Organi
+Pyridoxic acid isomer 1 2 AroHeM
+Pyridylacetylglycine 2 HMDB59723 AA-pep:AcyGly:Xenobi
+Pyrocatechol sulfate 2 HMDB59724 AroHoM
+Pyroglutamic acid 1 HMDB00267 AliHeM
+Pyrroledicarboxylic acid 2 AroHeM
+Pyruvic acid 1 HMDB00243 Organi
+Quinic acid 1 HMDB03072 AliHoM
+Salicylic acid 1 HMDB01895 AroHoM:Xenobi
+Sebacic acid 1 HMDB00792 Organi
+Suberic acid 1 HMDB00893 Organi
+Sulfosalicylic acid isomer 2 AroHoM
+Taurine 1 HMDB00251 Organi
+Testosterone glucuronide 2 HMDB03193 Lipids:Steroi
+Tetrahydrohippuric acid 2 AA-pep:AcyGly
+Threo-3-Phenylserine 1 HMDB02184 AA-pep
+Threonic acid/Erythronic acid 2 Carboh
+Tryptophan 1 HMDB00929 AA-pep
+Valerylglycine isomer 1 2 AA-pep:AcyGly
+Valerylglycine isomer 2 2 AA-pep:AcyGly
+Xanthosine 1 HMDB00299 Nucleo