Repository 'w4mclassfilter'
hg clone https://testtoolshed.g2.bx.psu.edu/repos/eschen42/w4mclassfilter

Changeset 14:1d36ecf93e67 (2021-03-11)
Previous changeset 13:b24ca78a425b (2018-09-03) Next changeset 15:08d4ca8bc6dd (2021-03-11)
Commit message:
"planemo upload commit 9639dde5737c9aa2330bb603c2299345939407cf"
added:
README.md
docker_container_postbuild_setup_run.txt
planemo_install_history.txt
test_repositories.list
tools/old_w4mclassfilter.xml
tools/w4mclassfilter/LICENSE
tools/w4mclassfilter/README
tools/w4mclassfilter/quick_test.sh
tools/w4mclassfilter/run_serve.sh
tools/w4mclassfilter/run_test.sh
tools/w4mclassfilter/test-data/exp_med1_medoid_dm.tsv
tools/w4mclassfilter/test-data/exp_med1_medoid_sm.tsv
tools/w4mclassfilter/test-data/exp_med1_medoid_vm.tsv
tools/w4mclassfilter/test-data/expected_dataMatrix.tsv
tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv
tools/w4mclassfilter/test-data/expected_variableMetadata.tsv
tools/w4mclassfilter/test-data/input_dataMatrix.tsv
tools/w4mclassfilter/test-data/input_med1_dm.tsv
tools/w4mclassfilter/test-data/input_med1_sm.tsv
tools/w4mclassfilter/test-data/input_med1_vm.tsv
tools/w4mclassfilter/test-data/input_nofilter_dataMatrix.tsv
tools/w4mclassfilter/test-data/input_sampleMetadata.tsv
tools/w4mclassfilter/test-data/input_variableMetadata.tsv
tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv
tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv
tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv
tools/w4mclassfilter/test_log.txt
tools/w4mclassfilter/w4mclassfilter.xml
tools/w4mclassfilter/w4mclassfilter_wrapper.R
removed:
README
test-data/expected_dataMatrix.tsv
test-data/expected_sampleMetadata.tsv
test-data/expected_variableMetadata.tsv
test-data/input_dataMatrix.tsv
test-data/input_nofilter_dataMatrix.tsv
test-data/input_sampleMetadata.tsv
test-data/input_variableMetadata.tsv
test-data/rangefilter_dataMatrix.tsv
test-data/rangefilter_sampleMetadata.tsv
test-data/rangefilter_variableMetadata.tsv
w4mclassfilter.xml
w4mclassfilter_wrapper.R
b
diff -r b24ca78a425b -r 1d36ecf93e67 README
--- a/README Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,8 +0,0 @@
-Galaxy Wrapper for the w4mclassfilter R Package
-<https://doi.org/10.5281/zenodo.1034793>
-
-This is a Galaxy tool-wrapper <https://docs.galaxyproject.org/en/latest/dev/schema.htm>
-to wrap the w4mclassfilter R package <https://github.com/HegemanLab/w4mclassfilter> 
-for use with the Workflow4Metabolomics <http://workflow4metabolomics.org/>
-flavor of Galaxy <https://galaxyproject.org/>.
-The tool is built with Planemo <http://planemo.readthedocs.io/en/latest/>.
b
diff -r b24ca78a425b -r 1d36ecf93e67 README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Thu Mar 11 20:44:23 2021 +0000
[
b'@@ -0,0 +1,238 @@\n+[![DOI](https://zenodo.org/badge/90571457.svg)](https://zenodo.org/badge/latestdoi/90571457) Latest public release\n+\n+[![Build Status](https://travis-ci.org/HegemanLab/w4mclassfilter_galaxy_wrapper.svg?branch=master)](https://travis-ci.org/HegemanLab/w4mclassfilter_galaxy_wrapper) Current build status for master branch on GitHub\n+\n+[Repository \'w4mclassfilter\' in Galaxy Toolshed](https://toolshed.g2.bx.psu.edu/repository?repository_id=5f24951d82ab40fa)\n+\n+# W4M Data Subset\n+\n+#### A Galaxy tool to select a subset of Workflow4Metabolomics data\n+\n+*W4M Data Subset* is [Galaxy tool-wrapper](https://docs.galaxyproject.org/en/latest/dev/schema.htm) to wrap the\n+[w4mclassfilter R package](https://github.com/HegemanLab/w4mclassfilter) for use with the\n+[Workflow4Metabolomics](http://workflow4metabolomics.org/) flavor of\n+[Galaxy](https://galaxyproject.org/).\n+This tool was developed and tested with [planemo](http://planemo.readthedocs.io/en/latest/).\n+\n+#### Author\n+\n+Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)\n+\n+#### R package wrapped by this tool\n+\n+The *w4mclassfilter* package is available from the Hegeman lab github repository [https://github.com/HegemanLab/w4mclassfilter/releases](https://github.com/HegemanLab/w4mclassfilter/releases).\n+\n+#### Tool in Galaxy Toolshed\n+\n+The "w4mclassfilter" Galaxy tool, built from this repository, is in the main Galaxy Toolshed at [https://toolshed.g2.bx.psu.edu/repository?repository_id=5f24951d82ab40fa](https://toolshed.g2.bx.psu.edu/repository?repository_id=5f24951d82ab40fa)\n+\n+#### Tool updates\n+\n+See the **NEWS** section at the bottom of this page\n+\n+## Motivation\n+\n+LC-MS metabolomics experiments seek to resolve "features", i.e., species that have distinct chromatographic retention time ("rt") and (after ionization) mass-to-charge ratio ("*m/z*" or "mz").\n+(If a chemical is fragmented or may have a variety of adducts, several features will result.)\n+Data for a sample are collected as mass-spectral intensities, each of\n+which is associated with a position on a 2D plane with dimensions of rt\n+and *m/z*. Ideally, features would be sufficiently reproducible among\n+sample-runs to distinguish features that are similar among samples from\n+those that differ.\n+\n+For liquid chromatography, the retention time for a species can vary considerably from one chromatography\n+run to the next.  The Workflow4Metabolomics suite of Galaxy tools\n+(W4M, [Giacomoni *et al.*, 2014, Guitton *et al.* 2017])\n+uses the XCMS preprocessing tools [Smith *et al.*, 2006] for "retention-time correction" to\n+align features among samples. Features may be better aligned if pooled\n+samples and blanks are included.\n+\n+Multivariate statistical tools may be used to discover clusters of\n+similar samples [Th&#233;venot *et al.*, 2015].\n+However, once retention-time alignment of features has been achieved\n+among samples in LC-MS datasets:\n+\n+- The presence of pools and blanks may confound identification and separation of sample clusters.\n+- Multivariate statistical algorithms may be impacted by missing values or dimensions that have zero variance.\n+\n+\n+## Description\n+\n+The W4M Data Subset tool selects subsets of samples, features, or data values and conditions the data for further analysis.\n+\n+- The tool takes as input the *dataMatrix*, *sampleMetadata*, and *variableMetadata* datasets produced by W4M\\\'s XCMS and CAMERA [Kuhl *et al.*, 2012] tools.\n+- The tool produces the same trio of output datasets, modified as described below.\n+\n+This tool can perform several operations to reduce the number samples or features to be analyzed (although *this should be done only in a statistically sound manner* consistent with the nature of the experiment):\n+\n+- *Sample filtering:* Samples may be selected by designating a "sample class" column in *sampleMetadata* and specifying criteria to include or exclude samples based on the contents of this column.\n+- *Feature filtering:* Features may be selected by speci'..b'+#### New features\n+\n+* Added support for filtering out features whose attributes fall outside specified ranges. For more detail, see "Variable-range filters" above.\n+\n+#### Internal modifications\n+\n+* Now uses w4mclassfilter R package v0.98.6.\n+* Now sorts sample names and feature names in output files because some statistical tools expect the same order in dataMatrix row and column names as in the corresponding metadata files.\n+\n+### Changes in version 0.98.3\n+\n+#### New features\n+\n+* Improved reference-list.\n+\n+#### Internal modifications\n+\n+* Improved input handling.\n+* Now uses w4mclassfilter R package v0.98.3, although that version has no functional implications for this tool.\n+\n+### Changes in version 0.98.1\n+\n+#### New features\n+\n+* First release - Wrap the w4mclassfilter R package that implements filtering of W4M data matrix, variable metadata, and sample metadata by class of sample.\n+* *dataMatrix* *is* modified by the tool, so it *does* appear as an output file\n+* *sampleMetadata* *is* modified by the tool, so it *does* appear as an output file\n+* *variableMetadata* *is* modified by the tool, so it *does* appear as an output file\n+\n+#### Internal modifications\n+\n+* none\n+\n+## Citations\n+\n+Benjamini, Yoav and Hochberg, Yosef (1995) **Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing.** In *Journal of the royal statistical society. Series B (Methodological), 1 (57), pp. pp. 289-300.* [http://www.jstor.org/stable/2346101](http://www.jstor.org/stable/2346101)\n+\n+Kuhl, Carsten and Tautenhahn, Ralf and B&#246;ttcher, Christoph and Larson, Tony R. and Neumann, Steffen (2011). **CAMERA: An Integrated Strategy for Compound Spectra Extraction and Annotation of Liquid Chromatography/Mass Spectrometry Data Sets.** In *Analytical Chemistry, 84 (1), pp. 283-289.* [doi:10.1021/ac202450g](http://dx.doi.org/10.1021/ac202450g)\n+\n+Giacomoni, F. and Le Corguille, G. and Monsoor, M. and Landi, M. and Pericard, P. and Petera, M. and Duperier, C. and Tremblay-Franco, M. and Martin, J.-F. and Jacob, D. and *et al.* (2014). **Workflow4Metabolomics: a collaborative research infrastructure for computational metabolomics.** In *Bioinformatics, 31 (9), pp. 1493\xe2\x80\x931495.* [doi:10.1093/bioinformatics/btu813](http://dx.doi.org/10.1093/bioinformatics/btu813)\n+\n+Guitton, Yann and Tremblay-Franco, Marie and Le Corguill&#233;, Gildas and Martin, Jean-Fran\xc3\xa7ois and P&#233;t&#233;ra, M&#233;lanie and Roger-Mele, Pierrick and Delabri&#232;re, Alexis and Goulitquer, Sophie and Monsoor, Misharl and Duperier, Christophe and *et al.* (2017). **Create, run, share, publish, and reference your LC\xe2\x80\x93MS, FIA\xe2\x80\x93MS, GC\xe2\x80\x93MS, and NMR data analysis workflows with the Workflow4Metabolomics 3.0 Galaxy online infrastructure for metabolomics.** In *The International Journal of Biochemistry &amp; Cell Biology, pp. 89-101.* [doi:10.1016/j.biocel.2017.07.002](http://dx.doi.org/10.1016/j.biocel.2017.07.002)\n+\n+Smith, Colin A. and Want, Elizabeth J. and O\'Maille, Grace and Abagyan, Ruben and Siuzdak, Gary (2006). **XCMS: Processing Mass Spectrometry Data for Metabolite Profiling Using Nonlinear Peak Alignment, Matching, and Identification.** In *Analytical Chemistry, 78 (3), pp. 779\xe2\x80\x93787.* [doi:10.1021/ac051437y](http://dx.doi.org/10.1021/ac051437y)\n+\n+Th&#233;venot, Etienne A. and Roux, Aur&#233;lie and Xu, Ying and Ezan, Eric and Junot, Christophe (2015). **Analysis of the Human Adult Urinary Metabolome Variations with Age, Body Mass Index, and Gender by Implementing a Comprehensive Workflow for Univariate and OPLS Statistical Analyses.** In *Journal of Proteome Research, 14 (8), pp. 3322\xe2\x80\x933335.* [doi:10.1021/acs.jproteome.5b00354](http://dx.doi.org/10.1021/acs.jproteome.5b00354)\n+\n+Yekutieli, Daniel and Benjamini, Yoav (2001) **The control of the false discovery rate in multiple testing under dependency.** In *The Annals of Statistics, 29 (4), pp. 1165-1188.* [doi:10.1214/aos/1013699998](http://dx.doi.org/10.1214/aos/1013699998)\n'
b
diff -r b24ca78a425b -r 1d36ecf93e67 docker_container_postbuild_setup_run.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docker_container_postbuild_setup_run.txt Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,13 @@
+virtualenv .venv     # initialize the virtual environment - do this once
+. .venv/bin/activate # activate the virtual environment - do this each time you start using planemo
+pip install planemo  # install planemo into the virtual environment - do this once
+# here is where I pull my project from github - depends on ~/.ssh
+mkdir src
+cd src
+git clone git@github.com:HegemanLab/w4mclassfilter_galaxy_wrapper.git
+cd w4mclassfilter_galaxy_wrapper/
+planemo conda_init .     # initialize conda for planemo - do this once
+planemo conda_install .  # install the package dependencies using conda resolution - do this each time the dependencies change
+./run_test.sh            # wrapper that mainly does:  planemo test --conda_dependency_resolution w4mclassfilter.xml
+./run_serve.sh           # wrapper that mainly does:  planemo serve --host 0.0.0.0 --conda_dependency_resolution .
+planemo shed_update -t testtoolshed .  # deploy to testtoolshed - depends on ~/.planemo.yml
b
diff -r b24ca78a425b -r 1d36ecf93e67 planemo_install_history.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo_install_history.txt Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# abridged transcript of the steps that I used to test this wrapper
+
+ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
+
+sudo apt-get install build-essential
+
+cat >> ~/.bashrc << .
+# ACE
+export PATH="/home/backdoor/.linuxbrew/bin:$PATH"
+export MANPATH="/home/backdoor/.linuxbrew/share/man:$MANPATH"
+export INFOPATH="/home/backdoor/.linuxbrew/share/info:$INFOPATH"
+.
+
+brew update
+brew install python
+brew tap galaxyproject/tap
+brew install planemo
+
+git clone https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper.git
+cd w4mclassfilter_galaxy_wrapper/
+
+./run_test.sh
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/expected_dataMatrix.tsv
--- a/test-data/expected_dataMatrix.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,16 +0,0 @@
- HU_017 HU_034 HU_078 HU_091 HU_093 HU_099 HU_130 HU_134 HU_138
-HMDB00191 560002 575790 785428 645785 591569 960658 639437 1092885 1409045
-HMDB00208 747080 595872 3143654 4059767 1433702 5593888 2477288 3346077 4230072
-HMDB00251 368600 94936 293988 352855 767894 268331 310918 1248919 577184
-HMDB00299 250551 456162 808657 614370 250403 768004 504108 1014041 1362408
-HMDB00512 0 280560 556003 590779 209285 342532 569970 525240 246282
-HMDB00518 0 85944 129886 175800 13154 230242 440223 315368 10657
-HMDB00715 1252089 905408 5140022 2658555 814523 2558923 4184204 3865723 3236644
-HMDB01032 2569205 1604999 26222916 257139 675754 59906109 31151730 18648127 14989438
-HMDB01101 30689 52217 229568 4763576 3878773 976436 608298 1605075 72021
-HMDB01101.1 6877586 3158 4763576 3878773 976436 831937 1605075 72021 442510
-HMDB03193 76043 44943 173175 242549 57066 559869 339188 471368 262271
-HMDB04824 374028 539206 959381 605191 310260 1253319 477995 825691 1157093
-HMDB10348 47259 60885 168264 176500 76457 610110 279156 524468 451573
-HMDB13189 2644620 1661412 2755434 593863 837865 3526136 1608814 3446611 1941527
-HMDB59717 357351 301983 1028110 1530493 270027 1378535 808334 1132813 871209
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/expected_sampleMetadata.tsv
--- a/test-data/expected_sampleMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,10 +0,0 @@
-sampleMetadata injectionOrder mode age bmi gender
-HU_017 2 pos 41 23.03 M
-HU_034 9 pos 52 23.37 M
-HU_078 34 pos 46 25.18 M
-HU_091 42 pos 61 26.12 M
-HU_093 43 pos 53 21.71 M
-HU_099 46 pos 23 21.3 M
-HU_130 63 pos 33 26.06 M
-HU_134 67 pos 48 22.89 M
-HU_138 68 pos 42 21.88 M
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/expected_variableMetadata.tsv
--- a/test-data/expected_variableMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,16 +0,0 @@
-variableMetadata name mz rt
-HMDB00191 loquor 650 600
-HMDB00208 loquimini 873 476
-HMDB00251 pasamur 500 423
-HMDB00299 bantur 700 500
-HMDB00512 pantur 900 543
-HMDB00518 loquoris 870 250
-HMDB00715 loquitur 725 900
-HMDB01032 loquimur 550 425
-HMDB01101 bar 150 300
-HMDB01101.1 baz 200 225
-HMDB03193 foo 100 200
-HMDB04824 loquantur 950 522
-HMDB10348 batur 300 275
-HMDB13189 baris 800 325
-HMDB59717 bamur 125 400
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/input_dataMatrix.tsv
--- a/test-data/input_dataMatrix.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,17 +0,0 @@
-dataMatrix HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208
-HMDB03193 76043 412165 44943 27242 436566 173175 242549 57066 559869 3732 339188 471368 262271 127285 451270 212500 79673 NA 891129 43907
-HMDB01101 30689 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 891129 32742
-HMDB01101 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 72900 891129 30689
-HMDB10348 47259 544877 60885 34582 529874 168264 176500 76457 610110 16262 279156 524468 451573 591487 433529 161069 214392 13781 891129 39315
-HMDB59717 357351 1030464 301983 67604 306862 1028110 1530493 270027 1378535 289677 808334 1132813 871209 895435 715190 1563158 784738 146195 891129 239030
-HMDB00822 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627
-HMDB13189 2644620 727587 1661412 619181 136278 2755434 593863 837865 3526136 2003278 1608814 3446611 1941527 113937 3132404 2893445 2092753 1034666 891129 841661
-HMDB00299 250551 1046138 456162 159386 1013302 808657 614370 250403 768004 242085 504108 1014041 1362408 1057660 1110050 566050 411886 142233 891129 284775
-HMDB00191 560002 771533 575790 392284 888498 785428 645785 591569 960658 910201 639437 1092885 1409045 2292023 1246459 1945577 710519 773384 891129 622898
-HMDB00518 -34236 58249 85944 NA 342102 129886 175800 13154 230242 NA 440223 315368 10657 419508 48673 28361 514579 23108 891129 73831
-HMDB00715 1252089 2547452 905408 371059 4983588 5140022 2658555 814523 2558923 859466 4184204 3865723 3236644 2615560 3820724 3577833 2295288 625924 891129 1341900
-HMDB01032 2569205 26023086 1604999 430453 8103558 26222916 257139 675754 59906109 263055 31151730 18648127 14989438 1554658 20249262 5588731 871010 15920 891129 44276
-HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 891129 2540044
-HMDB04824 374028 1144386 539206 178517 1046190 959381 605191 310260 1253319 477259 477995 825691 1157093 1089284 1411802 1020206 782673 346761 891129 387811
-HMDB00512 NA 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 891129 85554
-HMDB00251 368600 616555 94936 622468 180988 293988 352855 767894 268331 167246 310918 1248919 577184 10985 335711 403815 80614 63393 891129 616061
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/input_nofilter_dataMatrix.tsv
--- a/test-data/input_nofilter_dataMatrix.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,16 +0,0 @@
-dataMatrix HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208
-HMDB03193 76043 412165 44943 27242 436566 173175 242549 57066 559869 3732 339188 471368 262271 127285 451270 212500 79673 NA 891129 43907
-HMDB01101 30689 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 891129 32742
-HMDB01101 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 72900 891129 30689
-HMDB10348 47259 544877 60885 34582 529874 168264 176500 76457 610110 16262 279156 524468 451573 591487 433529 161069 214392 13781 891129 39315
-HMDB59717 357351 1030464 301983 67604 306862 1028110 1530493 270027 1378535 289677 808334 1132813 871209 895435 715190 1563158 784738 146195 891129 239030
-HMDB00822 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627
-HMDB00299 250551 1046138 456162 159386 1013302 808657 614370 250403 768004 242085 504108 1014041 1362408 1057660 1110050 566050 411886 142233 891129 284775
-HMDB00191 560002 771533 575790 392284 888498 785428 645785 591569 960658 910201 639437 1092885 1409045 2292023 1246459 1945577 710519 773384 891129 622898
-HMDB00518 -34236 58249 85944 NA 342102 129886 175800 13154 230242 NA 440223 315368 10657 419508 48673 28361 514579 23108 891129 73831
-HMDB00715 1252089 2547452 905408 371059 4983588 5140022 2658555 814523 2558923 859466 4184204 3865723 3236644 2615560 3820724 3577833 2295288 625924 891129 1341900
-HMDB01032 2569205 26023086 1604999 430453 8103558 26222916 257139 675754 59906109 263055 31151730 18648127 14989438 1554658 20249262 5588731 871010 15920 891129 44276
-HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 891129 2540044
-HMDB04824 374028 1144386 539206 178517 1046190 959381 605191 310260 1253319 477259 477995 825691 1157093 1089284 1411802 1020206 782673 346761 891129 387811
-HMDB00512 NA 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 891129 85554
-HMDB00251 368600 616555 94936 622468 180988 293988 352855 767894 268331 167246 310918 1248919 577184 10985 335711 403815 80614 63393 891129 616061
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/input_sampleMetadata.tsv
--- a/test-data/input_sampleMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,21 +0,0 @@
-sampleMetadata injectionOrder mode age bmi gender
-HU_017 2 pos 41 23.03 M
-HU_028 7 pos 41 23.92 F
-HU_034 9 pos 52 23.37 M
-HU_051 20 pos 24 23.23 F
-HU_060 24 pos 55 28.72 F
-HU_078 34 pos 46 25.18 M
-HU_091 42 pos 61 26.12 M
-HU_093 43 pos 53 21.71 M
-HU_099 46 pos 23 21.3 M
-HU_110 53 pos 50 20.9 F
-HU_130 63 pos 33 26.06 M
-HU_134 67 pos 48 22.89 M
-HU_138 68 pos 42 21.88 M
-HU_149 72 pos 35 19.49 F
-HU_152 75 pos 26 17.58 F
-HU_175 87 pos 35 21.26 F
-HU_178 88 pos 60 32.87 F
-HU_185 95 pos 42 21.09 F
-HU_204 104 pos 31 29.06 M
-HU_208 106 pos 27 18.61 F
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/input_variableMetadata.tsv
--- a/test-data/input_variableMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,17 +0,0 @@
-variable name mz rt
-HMDB03193 foo 100 200
-HMDB01101 bar 150 300
-HMDB01101 baz 200 225
-HMDB00208 loquimini 873 476
-HMDB10348 batur 300 275
-HMDB00299 bantur 700 500
-HMDB00191 loquor 650 600
-HMDB00518 loquoris 870 250
-HMDB59717 bamur 125 400
-HMDB00822 bamini 300 199
-HMDB13189 baris 800 325
-HMDB00715 loquitur 725 900
-HMDB01032 loquimur 550 425
-HMDB04824 loquantur 950 522
-HMDB00512 pantur 900 543
-HMDB00251 pasamur 500 423
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/rangefilter_dataMatrix.tsv
--- a/test-data/rangefilter_dataMatrix.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,6 +0,0 @@
- HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_208
-HMDB00191 19.0950724540801 19.5573683394871 19.1351832076319 18.581538968171 19.7610090032025 19.5831195045026 19.3006944055142 19.1741869272827 19.8736633887651 19.7958256457729 19.2864427002132 20.0597101691826 20.4262862563728 21.1281900906526 20.2494039981067 20.8917666482316 19.438513703552 19.5608253922588 19.2486364146654
-HMDB00208 19.5109032146715 23.6779611010349 19.1846429313023 20.1610039089984 22.7740711828923 21.5840110083096 21.9529654992985 20.451313755289 22.4154199380002 22.3652301844309 21.2403301698498 21.6740392144135 22.0122507889717 22.8615935600174 23.0952006159265 23.3011358356974 22.746605551146 20.5866803867983 21.2764220576728
-HMDB01032 21.2928905785523 24.6332887213057 20.6141409677961 18.7154961966847 22.9501240553341 24.6443247870262 17.9721889132336 19.3661386209868 25.8361997953493 18.0050049466979 24.8928089492302 24.1525273990616 23.8374429574498 20.5681658146509 24.2713659930314 22.4140893053724 19.7323297568288 13.958552715431 15.4342372710269
-HMDB01101.1 22.7134708439962 15.6722319530667 11.6247954558602 23.3631578345615 17.8085620299575 22.183613575742 21.8871689158671 19.8971659609365 19.6661147561338 19.214418735272 20.6142092807528 16.1361300108053 18.7553505325418 20.079142288524 20.4818181509538 14.9315685693242 21.3775881248719 16.1536311941017 14.9054340159519
-HMDB13189 21.3346290086766 19.4727602406215 20.6639784491577 19.2400016764968 17.0561931543153 21.3938481405109 19.1797706242895 19.6763582845664 21.7496566885488 20.9339312108399 20.6175661105571 21.7167470481744 20.8887603396637 16.7978767996065 21.5788388647145 21.4643567902489 20.9969706149343 19.9807336965562 19.6828797432404
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/rangefilter_sampleMetadata.tsv
--- a/test-data/rangefilter_sampleMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,20 +0,0 @@
-sampleMetadata injectionOrder mode age bmi gender
-HU_017 2 pos 41 23.03 M
-HU_028 7 pos 41 23.92 F
-HU_034 9 pos 52 23.37 M
-HU_051 20 pos 24 23.23 F
-HU_060 24 pos 55 28.72 F
-HU_078 34 pos 46 25.18 M
-HU_091 42 pos 61 26.12 M
-HU_093 43 pos 53 21.71 M
-HU_099 46 pos 23 21.3 M
-HU_110 53 pos 50 20.9 F
-HU_130 63 pos 33 26.06 M
-HU_134 67 pos 48 22.89 M
-HU_138 68 pos 42 21.88 M
-HU_149 72 pos 35 19.49 F
-HU_152 75 pos 26 17.58 F
-HU_175 87 pos 35 21.26 F
-HU_178 88 pos 60 32.87 F
-HU_185 95 pos 42 21.09 F
-HU_208 106 pos 27 18.61 F
b
diff -r b24ca78a425b -r 1d36ecf93e67 test-data/rangefilter_variableMetadata.tsv
--- a/test-data/rangefilter_variableMetadata.tsv Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,6 +0,0 @@
-variableMetadata name mz rt
-HMDB00191 loquor 650 600
-HMDB00208 loquimini 873 476
-HMDB01032 loquimur 550 425
-HMDB01101.1 baz 200 225
-HMDB13189 baris 800 325
b
diff -r b24ca78a425b -r 1d36ecf93e67 test_repositories.list
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test_repositories.list Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,1 @@
+tools/w4mclassfilter
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/old_w4mclassfilter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/old_w4mclassfilter.xml Thu Mar 11 20:44:23 2021 +0000
[
b'@@ -0,0 +1,1146 @@\n+<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.19">\n+    <description>Filter W4M data by values or metadata</description>\n+    <requirements>\n+        <requirement type="package" version="4.0.3">r-base</requirement>\n+        <requirement type="package" version="1.1_5">r-batch</requirement>\n+        <requirement type="package" version="0.98.19">w4mclassfilter</requirement>\n+    </requirements>\n+    <command detect_errors="aggressive"><![CDATA[\n+    unset R_HOME;\n+    if [ \'$centering\' == \'medoid\' -a \'$imputation\' == \'none\' ]; then\n+    (echo \'medoid\' centering may not be chosen with imputation \'none\' 1>&2);\n+        [ ! 1 ];\n+    else\n+        Rscript\n+        $__tool_directory__/w4mclassfilter_wrapper.R\n+        dataMatrix_in         \'$dataMatrix_in\'\n+        sampleMetadata_in     \'$sampleMetadata_in\'\n+        variableMetadata_in   \'$variableMetadata_in\'\n+        sampleclassNames      \'$sampleclassNames\'\n+        inclusive             \'$inclusive\'\n+        wildcards             \'$wildcards\'\n+        classnameColumn       \'$classnameColumn\'\n+        samplenameColumn      \'sampleMetadata\'\n+        variable_range_filter \'$variableRangeFilter\'\n+        transformation        \'$transformation\'\n+        imputation            \'$imputation\'\n+        dataMatrix_out        \'$dataMatrix_out\'\n+        sampleMetadata_out    \'$sampleMetadata_out\'\n+        variableMetadata_out  \'$variableMetadata_out\'\n+        order_vrbl            \'$order_vrbl\'\n+        order_smpl            \'$order_smpl\'\n+        centering             \'$centering\';\n+    fi\n+    ]]></command>\n+    <inputs>\n+        <param name="dataMatrix_in" format="tabular" label="Data matrix" type="data"\n+            help="Choose data-matrix file (tab-separated values with sample names in first row and feature names in first column)." />\n+        <param name="sampleMetadata_in" format="tabular" label="Sample metadata" type="data"\n+            help="Choose sample-metadata file (tab-separated values with one row per sample, sample name in first column)." />\n+        <param name="variableMetadata_in" format="tabular" label="Variable metadata" type="data"\n+            help="Choose variable-metadata file (tab-separated values with one row per feature, feature name in first column)." />\n+        <param name="classnameColumn" label="Column containing the sample-class names (or treatment names)" type="text" value = "class"\n+            help="Name the column in \'Sample metadata\' that has the values to be referenced by \'Sample-class names\' and \'Compute centers for classes\'. [default: \'class\']">\n+            <sanitizer>\n+                <valid initial="string.letters">\n+                    <add preset="string.digits"/>\n+                    <add value="&#46;"    /> <!-- dot, period -->\n+                    <add value="&#95;"    /> <!-- underscore -->\n+                </valid>\n+            </sanitizer>\n+        </param>\n+        <param name="sampleclassNames" label="Sample-class names (or patterns)" type="text" value = ""\n+            help="List of names (or patterns to match names) of sample classes to include or exclude.  List should be comma-separated with no stray space characters. (Leave this empty to match no names.) [default: empty]">\n+            <sanitizer>\n+                <valid initial="string.letters">\n+                    <add preset="string.digits"/>\n+                    <add value="&#123;"   /> <!-- l-curb, left-curly-bracket -->\n+                    <add value="&#124;"   /> <!-- pipe -->\n+                    <add value="&#125;"   /> <!-- r-curb, right-curly-bracket -->\n+                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->\n+                    <add value="&#40;"    /> <!-- left-paren -->\n+                    <add value="&#41;"    /> <!-- right-paren -->\n+                    <add value="&#42;"    /> <!-- splat, asterisk -->\n+                    <add value="&#43;"    /> <!-- plus -->\n+                    <add value="&#45;"    /> <'..b'+\n+\n+--------------------------------\n+Example with Treatment-Centering\n+--------------------------------\n+\n+This example retains only the samples that are medoids for their gender.\n+\n+**Input parameters**\n+\n++---------------------------------------------+-----------------------------------+\n+| Input Parameter                             | Value                             |\n++=============================================+===================================+\n+| Column that names the sample class          | gender                            |\n++---------------------------------------------+-----------------------------------+\n+| Sample-class names                          | (Leave this field empty.)         |\n++---------------------------------------------+-----------------------------------+\n+| Exclude/include named classes               | filter-out                        |\n++---------------------------------------------+-----------------------------------+\n+| Use \'wild-cards\' or \'regular expressions\'   | wild-cards                        |\n++---------------------------------------------+-----------------------------------+\n+| Variable range-filters                      | (Leave this field empty.)         |\n++---------------------------------------------+-----------------------------------+\n+| Data transformation                         | none                              |\n++---------------------------------------------+-----------------------------------+\n+| Missing-value imputation                    | zero                              |\n++---------------------------------------------+-----------------------------------+\n+| Sample-sort column                          | gender                            |\n++---------------------------------------------+-----------------------------------+\n+| Feature-sort column                         | rt                                |\n++---------------------------------------------+-----------------------------------+\n+| Compute centers for classes                 | medoid                            |\n++---------------------------------------------+-----------------------------------+\n+\n+**Expected outputs**\n+\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Expected Output   | Download from URL                                                                                        |\n++===================+==========================================================================================================+\n+| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_dm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_sm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_vm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+    ]]></help>\n+    <citations>\n+        <!-- Giacomoni_2014 W4M 2.5 -->\n+        <citation type="doi">10.1093/bioinformatics/btu813</citation>\n+        <!-- Guitton_2017 W4M 3.0 -->\n+        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>\n+        <!-- Kuhl_2012 CAMERA -->\n+        <citation type="doi">10.1021/ac202450g</citation>\n+        <!-- Smith_2006 XCMS -->\n+        <citation type="doi">10.1021/ac051437y</citation>\n+        <!-- Thevenot_2015 Urinary metabolome statistics -->\n+        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>\n+    </citations>\n+    <!--\n+     vim:noet:sw=4:ts=4\n+--> </tool>\n'
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/LICENSE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/LICENSE Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017-2020 Adrian D. Hegeman's Laboratory
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/README Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,17 @@
+Galaxy Wrapper for the w4mclassfilter R Package
+https://doi.org/10.5281/zenodo.1034793
+
+This is a Galaxy tool-wrapper
+https://docs.galaxyproject.org/en/latest/dev/schema.htm
+
+to wrap the w4mclassfilter R package
+https://github.com/HegemanLab/w4mclassfilter
+
+for use with the Workflow4Metabolomics
+https://workflow4metabolomics.org
+
+flavor of Galaxy
+https://galaxyproject.org
+
+The tool is tested and deployed with Planemo
+https://planemo.readthedocs.io/en/latest
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/quick_test.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/quick_test.sh Thu Mar 11 20:44:23 2021 +0000
[
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# purge old output files
+if [ -f test_log.txt ]; then rm test_log.txt; fi
+if [ -f tool_test_output.html ]; then rm tool_test_output.html; fi
+if [ -f tool_test_output.json ]; then rm tool_test_output.json; fi
+
+# run test and write new output files, showing progress to command line output
+# planemo conda_install .
+planemo test --conda_dependency_resolution w4mclassfilter.xml 2>&1 | grep -v -i observer | tee test_log.txt
+
+# summarize warnings and errors to command line output
+grep -E "(ERROR)|(WARNING)" test_log.txt | grep -v samtools | grep -v "Dynamic Display Application links" | grep -v "twobit.loc"
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/run_serve.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/run_serve.sh Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+# run test and write new output files, showing progress to command line output
+planemo conda_install .
+
+#planemo serve --host 0.0.0.0 --port 8389 --galaxy_root ~/planemo-dev/galaxy-dev .
+planemo serve --host 0.0.0.0 .
+
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/run_test.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/run_test.sh Thu Mar 11 20:44:23 2021 +0000
[
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# purge old output files
+if [ -f test_log.txt ]; then rm test_log.txt; fi
+if [ -f tool_test_output.html ]; then rm tool_test_output.html; fi
+if [ -f tool_test_output.json ]; then rm tool_test_output.json; fi
+
+# run test and write new output files, showing progress to command line output
+planemo conda_install .
+planemo test --conda_dependency_resolution w4mclassfilter.xml 2>&1 | grep -v -i observer | tee test_log.txt
+
+# summarize warnings and errors to command line output
+grep -E "(ERROR)|(WARNING)" test_log.txt | grep -v samtools | grep -v "Dynamic Display Application links" | grep -v "twobit.loc"
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/exp_med1_medoid_dm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/exp_med1_medoid_dm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,10 @@
+ X1 X8 X10 X26 X27 X28 X29 X35 X37 X44 X45 X50 X80 X85 X89 X134 X160 X183 X231 X345 X353
+trtA_1 0 0.00180737321564983 0 0 0 0 0 0 0 0 0.09826970333995 0.502704391270598 0 0 0 0.103676462792297 0 0 0.219609447733449 0 0.0303803032193031
+trtA_2 0 0 0.1499611203546 0 0.171306020866901 0.7407933477417 0 0.0317311746973008 1.0677832262992 0.4890197262973 0 0.251352195635299 0 0.0285671029685997 0.04320144565955 0 0.0256247716491007 0.243708505613103 0 0.0398841868243505 0.00253982134690034
+trtA_3 0 0.0300457862235994 0.0424174908139001 0 0.342612041733801 0 0.528508602842599 0.1222967572165 0.0147975909652498 3.869505334958 0.849339292282099 0 0.1934182113026 0.6387333497781 0.0864028913191 0.0518382313961485 0.411653240176999 0.121854252806552 0.439218895466897 0.183561229851001 0
+trtB_1 0 0 0 0 1.5113745967984 0 0 0 0.0295951819304996 0 0.1965394066799 0.251352195635299 0 0 0 0 0.0256247716491007 0 0.219609447733449 0.2933301023069 0.00507964269380068
+trtB_2 0 0.220593700553497 0.124637442941602 1.086467693902 0 0 0 0.0634623493946016 0 0.978039452594601 0 0.580225894218799 0 0.0571342059371993 0.357735292121102 0.140388243320103 0.0815161028168028 0.414790130357598 0.761398854361399 0.0398841868243505 0
+trtB_3 0 0.00180737321564983 0.0424174908139001 0 0.171306020866901 0 0 0.0317311746973008 0.0147975909652498 0.4890197262973 0.09826970333995 0 0 0.0285671029685997 0.04320144565955 0.0518382313961485 0 0.121854252806552 0 0 0.00253982134690034
+trtC_1 0 0 0 0 1.8589982127458 0.268514070203597 0.0667424385274984 1.9883459973714 0.269349110340201 1.2385296023128 1.1443146127588 0.754715219586299 0.752261526391599 0.125735401747001 0.7011594009854 0.0518382313961485 0.0512495432982014 0.320143072543999 0.679179854411199 0 0.730941378584301
+trtC_2 1.900985710853 0.00180737321564983 0.0848349816278002 0 0 0 0 0 0 0.4890197262973 0 0.251352195635299 0 0.0285671029685997 0 0.244624610443701 0.0256247716491007 0.121854252806552 0 0.0797683736487009 0
+trtC_3 0 0.00361474643129966 0.0424174908139001 0 0.171306020866901 0 0 0.0317311746973008 0.0147975909652498 0 0.09826970333995 0 0 0 0.04320144565955 0 0 0 0.219609447733449 0.0398841868243505 0.00253982134690034
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/exp_med1_medoid_sm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/exp_med1_medoid_sm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,22 @@
+sampleMetadata medoid pcgroup mz rt
+X1 M75T431 1 75.0246219750883 431.003601360729
+X8 M73T1061 8 72.9367161649113 1060.80034606296
+X10 M70T1043 10 70.0122929793033 1042.83709612962
+X26 M75T505 26 74.5552304268754 505.059650753422
+X27 M71T369 27 71.0488456490549 368.759546615083
+X28 M74T876_2 28 73.7524067558588 876.27549665073
+X29 M74T871 29 73.7524028205993 871.313876430572
+X35 M71T377 35 71.0488173286188 376.931518857336
+X37 M71T555 37 71.0489644640144 555.004553220191
+X44 M71T581 44 71.0490430805114 581.198136872667
+X45 M71T364 45 71.0488487473802 364.081506343325
+X50 M77T537 50 76.9819350151329 536.652145428441
+X80 M74T858 80 73.7524235616046 858.00252803859
+X85 M73T32_1 85 72.9368652358215 31.7025769021219
+X89 M71T1041 89 70.9909558511769 1041.40508992281
+X134 M71T138 134 70.7378907468715 137.798948287145
+X160 M73T1096 160 72.936874804031 1095.52504027727
+X183 M70T61 183 70.0651210994061 61.3905354181062
+X231 M74T1033 231 74.0963050198453 1033.01869720333
+X345 M74T33 345 73.5315669737491 33.3902011282139
+X353 M72T54 353 72.0807228513553 54.4048259006589
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/exp_med1_medoid_vm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/exp_med1_medoid_vm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,10 @@
+variableMetadata sample trt
+trtA_1 trtA_1 A
+trtA_2 trtA_2 A
+trtA_3 trtA_3 A
+trtB_1 trtB_1 B
+trtB_2 trtB_2 B
+trtB_3 trtB_3 B
+trtC_1 trtC_1 C
+trtC_2 trtC_2 C
+trtC_3 trtC_3 C
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/expected_dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/expected_dataMatrix.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,16 @@
+ HU_017 HU_034 HU_078 HU_091 HU_093 HU_099 HU_130 HU_134 HU_138
+HMDB00191 560002 575790 785428 645785 591569 960658 639437 1092885 1409045
+HMDB00208 747080 595872 3143654 4059767 1433702 5593888 2477288 3346077 4230072
+HMDB00251 368600 94936 293988 352855 767894 268331 310918 1248919 577184
+HMDB00299 250551 456162 808657 614370 250403 768004 504108 1014041 1362408
+HMDB00512 525240 280560 556003 590779 209285 342532 569970 525240 246282
+HMDB00518 0 85944 129886 175800 13154 230242 440223 315368 10657
+HMDB00715 1252089 905408 5140022 2658555 814523 2558923 4184204 3865723 3236644
+HMDB01032 2569205 1604999 26222916 257139 675754 59906109 31151730 18648127 14989438
+HMDB01101 30689 52217 229568 4763576 3878773 976436 608298 1605075 72021
+HMDB01101.1 6877586 3158 4763576 3878773 976436 831937 1605075 72021 442510
+HMDB03193 76043 44943 173175 242549 57066 559869 339188 471368 262271
+HMDB04824 374028 539206 959381 605191 310260 1253319 477995 825691 1157093
+HMDB10348 47259 60885 168264 176500 76457 610110 279156 524468 451573
+HMDB13189 2644620 1661412 2755434 593863 837865 3526136 1608814 3446611 1941527
+HMDB59717 357351 301983 1028110 1530493 270027 1378535 808334 1132813 871209
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,10 @@
+sampleMetadata injectionOrder mode age bmi gender
+HU_017 2 pos 41 23.03 M
+HU_034 9 pos 52 23.37 M
+HU_078 34 pos 46 25.18 M
+HU_091 42 pos 61 26.12 M
+HU_093 43 pos 53 21.71 M
+HU_099 46 pos 23 21.3 M
+HU_130 63 pos 33 26.06 M
+HU_134 67 pos 48 22.89 M
+HU_138 68 pos 42 21.88 M
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/expected_variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,16 @@
+variableMetadata name mz rt
+HMDB00191 loquor 650 600
+HMDB00208 loquimini 873 476
+HMDB00251 pasamur 500 423
+HMDB00299 bantur 700 500
+HMDB00512 pantur 900 543
+HMDB00518 loquoris 870 250
+HMDB00715 loquitur 725 900
+HMDB01032 loquimur 550 425
+HMDB01101 bar 150 300
+HMDB01101.1 baz 200 225
+HMDB03193 foo 100 200
+HMDB04824 loquantur 950 522
+HMDB10348 batur 300 275
+HMDB13189 baris 800 325
+HMDB59717 bamur 125 400
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_dataMatrix.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,17 @@
+dataMatrix HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208
+HMDB03193 76043 412165 44943 27242 436566 173175 242549 57066 559869 3732 339188 471368 262271 127285 451270 212500 79673 NA 891129 43907
+HMDB01101 30689 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 891129 32742
+HMDB01101 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 72900 891129 30689
+HMDB10348 47259 544877 60885 34582 529874 168264 176500 76457 610110 16262 279156 524468 451573 591487 433529 161069 214392 13781 891129 39315
+HMDB59717 357351 1030464 301983 67604 306862 1028110 1530493 270027 1378535 289677 808334 1132813 871209 895435 715190 1563158 784738 146195 891129 239030
+HMDB00822 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627
+HMDB13189 2644620 727587 1661412 619181 136278 2755434 593863 837865 3526136 2003278 1608814 3446611 1941527 113937 3132404 2893445 2092753 1034666 891129 841661
+HMDB00299 250551 1046138 456162 159386 1013302 808657 614370 250403 768004 242085 504108 1014041 1362408 1057660 1110050 566050 411886 142233 891129 284775
+HMDB00191 560002 771533 575790 392284 888498 785428 645785 591569 960658 910201 639437 1092885 1409045 2292023 1246459 1945577 710519 773384 891129 622898
+HMDB00518 -34236 58249 85944 NA 342102 129886 175800 13154 230242 NA 440223 315368 10657 419508 48673 28361 514579 23108 891129 73831
+HMDB00715 1252089 2547452 905408 371059 4983588 5140022 2658555 814523 2558923 859466 4184204 3865723 3236644 2615560 3820724 3577833 2295288 625924 891129 1341900
+HMDB01032 2569205 26023086 1604999 430453 8103558 26222916 257139 675754 59906109 263055 31151730 18648127 14989438 1554658 20249262 5588731 871010 15920 891129 44276
+HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 891129 2540044
+HMDB04824 374028 1144386 539206 178517 1046190 959381 605191 310260 1253319 477259 477995 825691 1157093 1089284 1411802 1020206 782673 346761 891129 387811
+HMDB00512 NA 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 891129 85554
+HMDB00251 368600 616555 94936 622468 180988 293988 352855 767894 268331 167246 310918 1248919 577184 10985 335711 403815 80614 63393 891129 616061
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_med1_dm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_med1_dm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,10 @@
+X M70T1043 M70T61 M71T138 M71T1041 M71T377 M71T369 M71T364 M71T555 M71T581 M72T34_1 M72T54 M72T34_3 M73T1061 M73T1044 M73T32_1 M73T1096 M73T32_2 M73T1043 M74T1042_1 M74T33 M74T871 M74T876_2 M74T858 M74T34 M74T1033 M75T34 M75T505 M75T431 M76T1040 M77T537
+trtA_1 0 0 0.103676462792297 0 0 0 0.09826970333995 0 0 0 0.0303803032193031 0 0.00180737321564983 0.174619941309 0 0 0 0 0 0 0 0 0 0 0.219609447733449 0 0 0 0.0151151439275008 0.502704391270598
+trtA_2 0.1499611203546 0.243708505613103 0 0.04320144565955 0.0317311746973008 0.171306020866901 0 1.0677832262992 0.4890197262973 0.140208039060401 0.00253982134690034 0.0563798353136988 0 0.00346576229545015 0.0285671029685997 0.0256247716491007 0.818318427514498 0.2150061358386 0.1234949545399 0.0398841868243505 0 0.7407933477417 0 0.0476545410972502 0 0.112811564993098 0 0 0 0.251352195635299
+trtA_3 0.0424174908139001 0.121854252806552 0.0518382313961485 0.0864028913191 0.1222967572165 0.342612041733801 0.849339292282099 0.0147975909652498 3.869505334958 0.285443289823299 0 0.112759670627398 0.0300457862235994 0 0.6387333497781 0.411653240176999 0.0933267742982 0.0514902142761002 0.0463451483315485 0.183561229851001 0.528508602842599 0 0.1934182113026 0.420661197739499 0.439218895466897 0.0175408561815491 0 0 0.1265423906184 0
+trtB_1 0 0 0 0 0 1.5113745967984 0.1965394066799 0.0295951819304996 0 0.280416078120801 0.00507964269380068 0 0 0.00346576229545015 0 0.0256247716491007 0.0933267742982 0 0.0463451483315485 0.2933301023069 0 0 0 0.935782704287199 0.219609447733449 0.0175408561815491 0 0 0.0151151439275008 0.251352195635299
+trtB_2 0.124637442941602 0.414790130357598 0.140388243320103 0.357735292121102 0.0634623493946016 0 0 0 0.978039452594601 0.140208039060401 0 0.0563798353136988 0.220593700553497 0.0767204072380991 0.0571342059371993 0.0815161028168028 0.446741706469403 0.0514902142761002 0 0.0398841868243505 0 0 0 0.0476545410972502 0.761398854361399 0 1.086467693902 0 0 0.580225894218799
+trtB_3 0.0424174908139001 0.121854252806552 0.0518382313961485 0.04320144565955 0.0317311746973008 0.171306020866901 0.09826970333995 0.0147975909652498 0.4890197262973 0 0.00253982134690034 0.2357122484906 0.00180737321564983 0 0.0285671029685997 0 0 0.1029804285522 0.204744259308601 0 0 0 0 0 0 0.0422615246151992 0 0 0.2218306650343 0
+trtC_1 0 0.320143072543999 0.0518382313961485 0.7011594009854 1.9883459973714 1.8589982127458 1.1443146127588 0.269349110340201 1.2385296023128 0 0.730941378584301 0.640778164724498 0 0.0069315245909003 0.125735401747001 0.0512495432982014 0 0 0 0 0.0667424385274984 0.268514070203597 0.752261526391599 0 0.679179854411199 0.0175408561815491 0 0 0.0302302878550016 0.754715219586299
+trtC_2 0.0848349816278002 0.121854252806552 0.244624610443701 0 0 0 0 0 0.4890197262973 0.513858474098299 0 0.0563798353136988 0.00180737321564983 0.00346576229545015 0.0285671029685997 0.0256247716491007 0.1866535485964 0.3576876580278 0.0926902966630969 0.0797683736487009 0 0 0 0.0953090821945004 0 0.0350817123630982 0 1.900985710853 0.0151151439275008 0.251352195635299
+trtC_3 0.0424174908139001 0 0 0.04320144565955 0.0317311746973008 0.171306020866901 0.09826970333995 0.0147975909652498 0 0.140208039060401 0.00253982134690034 0 0.00361474643129966 0 0 0 0.0933267742982 0.0514902142761002 0.0463451483315485 0.0398841868243505 0 0 0 0.0476545410972502 0.219609447733449 0 0 0 0 0
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_med1_sm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_med1_sm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,31 @@
+sampleMetadata pcgroup mz rt
+M70T1043 10 70.0122929793033 1042.83709612962
+M70T61 183 70.0651210994061 61.3905354181062
+M71T138 134 70.7378907468715 137.798948287145
+M71T1041 89 70.9909558511769 1041.40508992281
+M71T377 35 71.0488173286188 376.931518857336
+M71T369 27 71.0488456490549 368.759546615083
+M71T364 45 71.0488487473802 364.081506343325
+M71T555 37 71.0489644640144 555.004553220191
+M71T581 44 71.0490430805114 581.198136872667
+M72T34_1 345 71.529455784918 33.7387759459325
+M72T54 353 72.0807228513553 54.4048259006589
+M72T34_3 345 72.0807426611777 33.8672738618788
+M73T1061 8 72.9367161649113 1060.80034606296
+M73T1044 10 72.9367229345106 1043.98726790638
+M73T32_1 85 72.9368652358215 31.7025769021219
+M73T1096 160 72.936874804031 1095.52504027727
+M73T32_2 85 73.0647299005977 32.166230277174
+M73T1043 10 73.1056566280053 1042.8817438948
+M74T1042_1 10 73.531470577532 1042.13833094273
+M74T33 345 73.5315669737491 33.3902011282139
+M74T871 29 73.7524028205993 871.313876430572
+M74T876_2 28 73.7524067558588 876.27549665073
+M74T858 80 73.7524235616046 858.00252803859
+M74T34 345 74.0319853847452 33.6736778224506
+M74T1033 231 74.0963050198453 1033.01869720333
+M75T34 345 74.5303776078914 33.8541677395798
+M75T505 26 74.5552304268754 505.059650753422
+M75T431 1 75.0246219750883 431.003601360729
+M76T1040 89 76.0391694122706 1039.93848585356
+M77T537 50 76.9819350151329 536.652145428441
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_med1_vm.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_med1_vm.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,10 @@
+variableMetadata sample trt
+trtA_1 trtA_1 A
+trtA_2 trtA_2 A
+trtA_3 trtA_3 A
+trtB_1 trtB_1 B
+trtB_2 trtB_2 B
+trtB_3 trtB_3 B
+trtC_1 trtC_1 C
+trtC_2 trtC_2 C
+trtC_3 trtC_3 C
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_nofilter_dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_nofilter_dataMatrix.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,16 @@
+dataMatrix HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208
+HMDB03193 76043 412165 44943 27242 436566 173175 242549 57066 559869 3732 339188 471368 262271 127285 451270 212500 79673 NA 891129 43907
+HMDB01101 30689 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 891129 32742
+HMDB01101 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 72900 891129 30689
+HMDB10348 47259 544877 60885 34582 529874 168264 176500 76457 610110 16262 279156 524468 451573 591487 433529 161069 214392 13781 891129 39315
+HMDB59717 357351 1030464 301983 67604 306862 1028110 1530493 270027 1378535 289677 808334 1132813 871209 895435 715190 1563158 784738 146195 891129 239030
+HMDB00822 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627 14627
+HMDB00299 250551 1046138 456162 159386 1013302 808657 614370 250403 768004 242085 504108 1014041 1362408 1057660 1110050 566050 411886 142233 891129 284775
+HMDB00191 560002 771533 575790 392284 888498 785428 645785 591569 960658 910201 639437 1092885 1409045 2292023 1246459 1945577 710519 773384 891129 622898
+HMDB00518 -34236 58249 85944 NA 342102 129886 175800 13154 230242 NA 440223 315368 10657 419508 48673 28361 514579 23108 891129 73831
+HMDB00715 1252089 2547452 905408 371059 4983588 5140022 2658555 814523 2558923 859466 4184204 3865723 3236644 2615560 3820724 3577833 2295288 625924 891129 1341900
+HMDB01032 2569205 26023086 1604999 430453 8103558 26222916 257139 675754 59906109 263055 31151730 18648127 14989438 1554658 20249262 5588731 871010 15920 891129 44276
+HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 891129 2540044
+HMDB04824 374028 1144386 539206 178517 1046190 959381 605191 310260 1253319 477259 477995 825691 1157093 1089284 1411802 1020206 782673 346761 891129 387811
+HMDB00512 NA 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 891129 85554
+HMDB00251 368600 616555 94936 622468 180988 293988 352855 767894 268331 167246 310918 1248919 577184 10985 335711 403815 80614 63393 891129 616061
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_sampleMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_sampleMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,21 @@
+sampleMetadata injectionOrder mode age bmi gender
+HU_017 2 pos 41 23.03 M
+HU_028 7 pos 41 23.92 F
+HU_034 9 pos 52 23.37 M
+HU_051 20 pos 24 23.23 F
+HU_060 24 pos 55 28.72 F
+HU_078 34 pos 46 25.18 M
+HU_091 42 pos 61 26.12 M
+HU_093 43 pos 53 21.71 M
+HU_099 46 pos 23 21.3 M
+HU_110 53 pos 50 20.9 F
+HU_130 63 pos 33 26.06 M
+HU_134 67 pos 48 22.89 M
+HU_138 68 pos 42 21.88 M
+HU_149 72 pos 35 19.49 F
+HU_152 75 pos 26 17.58 F
+HU_175 87 pos 35 21.26 F
+HU_178 88 pos 60 32.87 F
+HU_185 95 pos 42 21.09 F
+HU_204 104 pos 31 29.06 M
+HU_208 106 pos 27 18.61 F
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/input_variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/input_variableMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,17 @@
+variable name mz rt
+HMDB03193 foo 100 200
+HMDB01101 bar 150 300
+HMDB01101 baz 200 225
+HMDB00208 loquimini 873 476
+HMDB10348 batur 300 275
+HMDB00299 bantur 700 500
+HMDB00191 loquor 650 600
+HMDB00518 loquoris 870 250
+HMDB59717 bamur 125 400
+HMDB00822 bamini 300 199
+HMDB13189 baris 800 325
+HMDB00715 loquitur 725 900
+HMDB01032 loquimur 550 425
+HMDB04824 loquantur 950 522
+HMDB00512 pantur 900 543
+HMDB00251 pasamur 500 423
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,6 @@
+ HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_149 HU_152 HU_175 HU_178 HU_185 HU_208
+HMDB00191 19.0950724540801 19.5573683394871 19.1351832076319 18.581538968171 19.7610090032025 19.5831195045026 19.3006944055142 19.1741869272827 19.8736633887651 19.7958256457729 19.2864427002132 21.1281900906526 20.2494039981067 20.8917666482316 19.438513703552 19.5608253922588 19.2486364146654
+HMDB00208 19.5109032146715 23.6779611010349 19.1846429313023 20.1610039089984 22.7740711828923 21.5840110083096 21.9529654992985 20.451313755289 22.4154199380002 22.3652301844309 21.2403301698498 22.8615935600174 23.0952006159265 23.3011358356974 22.746605551146 20.5866803867983 21.2764220576728
+HMDB01032 21.2928905785523 24.6332887213057 20.6141409677961 18.7154961966847 22.9501240553341 24.6443247870262 17.9721889132336 19.3661386209868 25.8361997953493 18.0050049466979 24.8928089492302 20.5681658146509 24.2713659930314 22.4140893053724 19.7323297568288 13.958552715431 15.4342372710269
+HMDB01101.1 22.7134708439962 15.6722319530667 11.6247954558602 23.3631578345615 17.8085620299575 22.183613575742 21.8871689158671 19.8971659609365 19.6661147561338 19.214418735272 20.6142092807528 20.079142288524 20.4818181509538 14.9315685693242 21.3775881248719 16.1536311941017 14.9054340159519
+HMDB13189 21.3346290086766 19.4727602406215 20.6639784491577 19.2400016764968 17.0561931543153 21.3938481405109 19.1797706242895 19.6763582845664 21.7496566885488 20.9339312108399 20.6175661105571 16.7978767996065 21.5788388647145 21.4643567902489 20.9969706149343 19.9807336965562 19.6828797432404
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,18 @@
+sampleMetadata injectionOrder mode age bmi gender
+HU_017 2 pos 41 23.03 M
+HU_028 7 pos 41 23.92 F
+HU_034 9 pos 52 23.37 M
+HU_051 20 pos 24 23.23 F
+HU_060 24 pos 55 28.72 F
+HU_078 34 pos 46 25.18 M
+HU_091 42 pos 61 26.12 M
+HU_093 43 pos 53 21.71 M
+HU_099 46 pos 23 21.3 M
+HU_110 53 pos 50 20.9 F
+HU_130 63 pos 33 26.06 M
+HU_149 72 pos 35 19.49 F
+HU_152 75 pos 26 17.58 F
+HU_175 87 pos 35 21.26 F
+HU_178 88 pos 60 32.87 F
+HU_185 95 pos 42 21.09 F
+HU_208 106 pos 27 18.61 F
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv Thu Mar 11 20:44:23 2021 +0000
b
@@ -0,0 +1,6 @@
+variableMetadata name mz rt
+HMDB00191 loquor 650 600
+HMDB00208 loquimini 873 476
+HMDB01032 loquimur 550 425
+HMDB01101.1 baz 200 225
+HMDB13189 baris 800 325
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/test_log.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/test_log.txt Thu Mar 11 20:44:23 2021 +0000
[
b'@@ -0,0 +1,1670 @@\n+git --git-dir /home/rstudio/.planemo/gx_repo config remote.origin.fetch \'+refs/*:refs/*\'\n+git --git-dir /home/rstudio/.planemo/gx_repo config remote.origin.mirror true\n+git --git-dir /home/rstudio/.planemo/gx_repo remote update >/dev/null 2>&1\n+galaxy.util.commands WARNING: Passing program arguments as a string may be a security hazard if combined with untrusted input\n+git clone --branch master /home/rstudio/.planemo/gx_repo /tmp/tmp0krucrv3/galaxy-dev\n+Cloning into \'/tmp/tmp0krucrv3/galaxy-dev\'...\n+done.\n+Updating files:  39% (2112/5412)\rUpdating files:  40% (2165/5412)\rUpdating files:  41% (2219/5412)\rUpdating files:  42% (2274/5412)\rUpdating files:  43% (2328/5412)\rUpdating files:  44% (2382/5412)\rUpdating files:  45% (2436/5412)\rUpdating files:  46% (2490/5412)\rUpdating files:  47% (2544/5412)\rUpdating files:  48% (2598/5412)\rUpdating files:  49% (2652/5412)\rUpdating files:  50% (2706/5412)\rUpdating files:  51% (2761/5412)\rUpdating files:  52% (2815/5412)\rUpdating files:  53% (2869/5412)\rUpdating files:  54% (2923/5412)\rUpdating files:  55% (2977/5412)\rUpdating files:  56% (3031/5412)\rUpdating files:  57% (3085/5412)\rUpdating files:  57% (3097/5412)\rUpdating files:  58% (3139/5412)\rUpdating files:  59% (3194/5412)\rUpdating files:  60% (3248/5412)\rUpdating files:  61% (3302/5412)\rUpdating files:  62% (3356/5412)\rUpdating files:  63% (3410/5412)\rUpdating files:  64% (3464/5412)\rUpdating files:  65% (3518/5412)\rUpdating files:  66% (3572/5412)\rUpdating files:  67% (3627/5412)\rUpdating files:  68% (3681/5412)\rUpdating files:  69% (3735/5412)\rUpdating files:  70% (3789/5412)\rUpdating files:  71% (3843/5412)\rUpdating files:  72% (3897/5412)\rUpdating files:  73% (3951/5412)\rUpdating files:  74% (4005/5412)\rUpdating files:  75% (4059/5412)\rUpdating files:  76% (4114/5412)\rUpdating files:  77% (4168/5412)\rUpdating files:  78% (4222/5412)\rUpdating files:  79% (4276/5412)\rUpdating files:  80% (4330/5412)\rUpdating files:  81% (4384/5412)\rUpdating files:  82% (4438/5412)\rUpdating files:  83% (4492/5412)\rUpdating files:  84% (4547/5412)\rUpdating files:  85% (4601/5412)\rUpdating files:  86% (4655/5412)\rUpdating files:  87% (4709/5412)\rUpdating files:  88% (4763/5412)\rUpdating files:  89% (4817/5412)\rUpdating files:  90% (4871/5412)\rUpdating files:  91% (4925/5412)\rUpdating files:  92% (4980/5412)\rUpdating files:  93% (5034/5412)\rUpdating files:  94% (5088/5412)\rUpdating files:  95% (5142/5412)\rUpdating files:  96% (5196/5412)\rUpdating files:  97% (5250/5412)\rUpdating files:  98% (5304/5412)\rUpdating files:  99% (5358/5412)\rUpdating files: 100% (5412/5412)\rUpdating files: 100% (5412/5412), done.\n+if [ -d .venv ] || [ -f dist-eggs.ini ]; then GALAXY_VIRTUAL_ENV=.venv; else GALAXY_VIRTUAL_ENV=/home/rstudio/.planemo/gx_venv_3; fi && export GALAXY_VIRTUAL_ENV && if [ ! -e "$GALAXY_VIRTUAL_ENV" ]; then /home/rstudio/venv/bin/virtualenv -p /home/rstudio/venv/bin/python3 $GALAXY_VIRTUAL_ENV; echo "Created virtualenv"; fi && if [ -e "$GALAXY_VIRTUAL_ENV" ]; then . "$GALAXY_VIRTUAL_ENV"/bin/activate; echo "Activated a virtualenv for Galaxy"; echo "$VIRTUAL_ENV"; else echo "Failed to activate virtualenv."; fi && COMMON_STARTUP_ARGS=; $(grep -q \'skip-venv\' run_tests.sh) && COMMON_STARTUP_ARGS="--dev-wheels"; export COMMON_STARTUP_ARGS; echo "Set COMMON_STARTUP_ARGS to ${COMMON_STARTUP_ARGS}" && ./scripts/common_startup.sh ${COMMON_STARTUP_ARGS}\n+galaxy.util.commands WARNING: Passing program arguments as a string may be a security hazard if combined with untrusted input\n+Activated a virtualenv for Galaxy\n+/home/rstudio/.planemo/gx_venv_3\n+Set COMMON_STARTUP_ARGS to --dev-wheels\n+Initializing tool-data/shared/ucsc/builds.txt from builds.txt.sample\n+Initializing tool-data/shared/ucsc/manual_builds.txt from manual_builds.txt.sample\n+Initializing static/welcome.html from welcome.html.sample\n+Activating virtualenv at /home/rstudio/.planemo/gx_venv_3\n+Requirement already satisfied: pip>=8.1 in /home/rstudio/.planemo/gx_venv_3/lib/pytho'..b'521\')" ] || {\n+MAX_TRIES=3\n+COUNT=0\n+while [ $COUNT -lt $MAX_TRIES ]; do\n+    . \'/home/rstudio/miniconda3/bin/activate\' \'/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521\' > conda_activate.log 2>&1\n+    if [ $? -eq 0 ];then\n+        break\n+    else\n+        let COUNT=COUNT+1\n+        if [ $COUNT -eq $MAX_TRIES ];then\n+            echo "Failed to activate conda environment! Error was:"\n+            cat conda_activate.log\n+            exit 1\n+        fi\n+        sleep 10s\n+    fi\n+done\n+} ; unset R_HOME; if [ \'medoid\' == \'medoid\' -a \'zero\' == \'none\' ]; then (echo \'medoid\' centering may not be chosen with imputation \'none\' 1>&2); [ ! 1 ]; else Rscript /home/rstudio/.planemo/planemo_tmp_ahme9v2m/w4mclassfilter_wrapper.R dataMatrix_in         \'/tmp/tmp0krucrv3/files/d/e/b/dataset_deb04e85-d7f8-481d-b03c-5189ce9b2a9f.dat\' sampleMetadata_in     \'/tmp/tmp0krucrv3/files/c/7/7/dataset_c772a3d6-a6ef-49e0-a8f7-d3dc057cdba4.dat\' variableMetadata_in   \'/tmp/tmp0krucrv3/files/a/f/a/dataset_afad8efa-19e8-47e7-a6bd-6d55e0539a44.dat\' sampleclassNames      \'\' inclusive             \'FALSE\' wildcards             \'TRUE\' classnameColumn       \'pcgroup\' samplenameColumn      \'sampleMetadata\' variable_range_filter \'\' transformation        \'none\' imputation            \'zero\' dataMatrix_out        \'/tmp/tmp0krucrv3/files/7/1/1/dataset_711ba603-0791-41a7-ac7d-6bc401054381.dat\' sampleMetadata_out    \'/tmp/tmp0krucrv3/files/e/7/3/dataset_e73aa99b-e412-4c7f-acd6-808e6f83e083.dat\' variableMetadata_out  \'/tmp/tmp0krucrv3/files/d/b/f/dataset_dbf8bc47-81f4-4c87-8511-0bc876a46927.dat\' order_vrbl            \'sample\' order_smpl            \'pcgroup\' centering             \'medoid\'; fi]\n+ok\n+\n+----------------------------------------------------------------------\n+XML: /tmp/tmp0krucrv3/xunit.xml\n+----------------------------------------------------------------------\n+Ran 13 tests in 363.871s\n+\n+OK\n+2021-03-11 20:18:22,641 INFO  [test_driver] Shutting down\n+2021-03-11 20:18:22,642 INFO  [test_driver] Shutting down embedded galaxy web server\n+2021-03-11 20:18:22,644 INFO  [test_driver] Embedded web server galaxy stopped\n+2021-03-11 20:18:22,644 INFO  [test_driver] Stopping application galaxy\n+2021-03-11 20:18:23,634 INFO  [galaxy.queue_worker] Sending reconfigure_watcher control task.\n+2021-03-11 20:18:23,679 INFO  [galaxy.jobs.handler] sending stop signal to worker thread\n+2021-03-11 20:18:23,680 INFO  [galaxy.jobs.handler] job handler queue stopped\n+2021-03-11 20:18:23,680 INFO  [galaxy.jobs.runners] LocalRunner: Sending stop signal to 4 job worker threads\n+2021-03-11 20:18:23,680 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...\n+2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly\n+2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] TaskRunner: Sending stop signal to 2 job worker threads\n+2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...\n+2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly\n+2021-03-11 20:18:23,681 INFO  [galaxy.jobs.handler] sending stop signal to worker thread\n+2021-03-11 20:18:23,682 INFO  [galaxy.jobs.handler] job handler stop queue stopped\n+2021-03-11 20:18:23,682 INFO  [test_driver] Application galaxy stopped.\n+Testing complete. HTML report is in "/home/rstudio/src/w4mclassfilter_galaxy_wrapper/tools/w4mclassfilter/tool_test_output.html".\n+All 13 test(s) executed passed.\n+w4mclassfilter (Test #1): passed\n+w4mclassfilter (Test #2): passed\n+w4mclassfilter (Test #3): passed\n+w4mclassfilter (Test #4): passed\n+w4mclassfilter (Test #5): passed\n+w4mclassfilter (Test #6): passed\n+w4mclassfilter (Test #7): passed\n+w4mclassfilter (Test #8): passed\n+w4mclassfilter (Test #9): passed\n+w4mclassfilter (Test #10): passed\n+w4mclassfilter (Test #11): passed\n+w4mclassfilter (Test #12): passed\n+w4mclassfilter (Test #13): passed\n'
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/w4mclassfilter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/w4mclassfilter.xml Thu Mar 11 20:44:23 2021 +0000
[
b'@@ -0,0 +1,1114 @@\n+<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.19">\n+    <description>Filter W4M data by values or metadata</description>\n+    <requirements>\n+        <requirement type="package" version="4.0.3">r-base</requirement>\n+        <requirement type="package" version="1.1_5">r-batch</requirement>\n+        <requirement type="package" version="0.98.19">w4mclassfilter</requirement>\n+    </requirements>\n+    <command detect_errors="aggressive"><![CDATA[\n+    unset R_HOME;\n+    if [ \'$centering\' == \'medoid\' -a \'$imputation\' == \'none\' ]; then\n+    (echo \'medoid\' centering may not be chosen with imputation \'none\' 1>&2);\n+        [ ! 1 ];\n+    else\n+        Rscript\n+        $__tool_directory__/w4mclassfilter_wrapper.R\n+        dataMatrix_in         \'$dataMatrix_in\'\n+        sampleMetadata_in     \'$sampleMetadata_in\'\n+        variableMetadata_in   \'$variableMetadata_in\'\n+        sampleclassNames      \'$sampleclassNames\'\n+        inclusive             \'$inclusive\'\n+        wildcards             \'$wildcards\'\n+        classnameColumn       \'$classnameColumn\'\n+        samplenameColumn      \'sampleMetadata\'\n+        variable_range_filter \'$variableRangeFilter\'\n+        transformation        \'$transformation\'\n+        imputation            \'$imputation\'\n+        dataMatrix_out        \'$dataMatrix_out\'\n+        sampleMetadata_out    \'$sampleMetadata_out\'\n+        variableMetadata_out  \'$variableMetadata_out\'\n+        order_vrbl            \'$order_vrbl\'\n+        order_smpl            \'$order_smpl\'\n+        centering             \'$centering\';\n+    fi\n+    ]]></command>\n+    <inputs>\n+        <param name="dataMatrix_in" format="tabular" label="Data matrix" type="data"\n+            help="Choose data-matrix file (tab-separated values with sample names in first row and feature names in first column)." />\n+        <param name="sampleMetadata_in" format="tabular" label="Sample metadata" type="data"\n+            help="Choose sample-metadata file (tab-separated values with one row per sample, sample name in first column)." />\n+        <param name="variableMetadata_in" format="tabular" label="Variable metadata" type="data"\n+            help="Choose variable-metadata file (tab-separated values with one row per feature, feature name in first column)." />\n+        <param name="classnameColumn" label="Column containing the sample-class names (or treatment names)" type="text" value = "class"\n+            help="Name the column in \'Sample metadata\' that has the values to be referenced by \'Sample-class names\' and \'Compute centers for classes\'. [default: \'class\']">\n+            <sanitizer>\n+                <valid initial="string.letters">\n+                    <add preset="string.digits"/>\n+                    <add value="&#46;"    /> <!-- dot, period -->\n+                    <add value="&#95;"    /> <!-- underscore -->\n+                </valid>\n+            </sanitizer>\n+        </param>\n+        <param name="sampleclassNames" label="Sample-class names (or patterns)" type="text" value = ""\n+            help="List of names (or patterns to match names) of sample classes to include or exclude.  List should be comma-separated with no stray space characters. (Leave this empty to match no names.) [default: empty]">\n+            <sanitizer>\n+                <valid initial="string.letters">\n+                    <add preset="string.digits"/>\n+                    <add value="&#123;"   /> <!-- l-curb, left-curly-bracket -->\n+                    <add value="&#124;"   /> <!-- pipe -->\n+                    <add value="&#125;"   /> <!-- r-curb, right-curly-bracket -->\n+                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->\n+                    <add value="&#40;"    /> <!-- left-paren -->\n+                    <add value="&#41;"    /> <!-- right-paren -->\n+                    <add value="&#42;"    /> <!-- splat, asterisk -->\n+                    <add value="&#43;"    /> <!-- plus -->\n+                    <add value="&#45;"    /> <'..b'+\n+\n+--------------------------------\n+Example with Treatment-Centering\n+--------------------------------\n+\n+This example retains only the samples that are medoids for their gender.\n+\n+**Input parameters**\n+\n++---------------------------------------------+-----------------------------------+\n+| Input Parameter                             | Value                             |\n++=============================================+===================================+\n+| Column that names the sample class          | gender                            |\n++---------------------------------------------+-----------------------------------+\n+| Sample-class names                          | (Leave this field empty.)         |\n++---------------------------------------------+-----------------------------------+\n+| Exclude/include named classes               | filter-out                        |\n++---------------------------------------------+-----------------------------------+\n+| Use \'wild-cards\' or \'regular expressions\'   | wild-cards                        |\n++---------------------------------------------+-----------------------------------+\n+| Variable range-filters                      | (Leave this field empty.)         |\n++---------------------------------------------+-----------------------------------+\n+| Data transformation                         | none                              |\n++---------------------------------------------+-----------------------------------+\n+| Missing-value imputation                    | zero                              |\n++---------------------------------------------+-----------------------------------+\n+| Sample-sort column                          | gender                            |\n++---------------------------------------------+-----------------------------------+\n+| Feature-sort column                         | rt                                |\n++---------------------------------------------+-----------------------------------+\n+| Compute centers for classes                 | medoid                            |\n++---------------------------------------------+-----------------------------------+\n+\n+**Expected outputs**\n+\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Expected Output   | Download from URL                                                                                        |\n++===================+==========================================================================================================+\n+| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_dm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_sm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_vm.tsv |\n++-------------------+----------------------------------------------------------------------------------------------------------+\n+    ]]></help>\n+    <citations>\n+        <!-- Giacomoni_2014 W4M 2.5 -->\n+        <citation type="doi">10.1093/bioinformatics/btu813</citation>\n+        <!-- Guitton_2017 W4M 3.0 -->\n+        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>\n+        <!-- Kuhl_2012 CAMERA -->\n+        <citation type="doi">10.1021/ac202450g</citation>\n+        <!-- Smith_2006 XCMS -->\n+        <citation type="doi">10.1021/ac051437y</citation>\n+        <!-- Thevenot_2015 Urinary metabolome statistics -->\n+        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>\n+    </citations>\n+    <!--\n+     vim:noet:sw=4:ts=4\n+--> </tool>\n'
b
diff -r b24ca78a425b -r 1d36ecf93e67 tools/w4mclassfilter/w4mclassfilter_wrapper.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/w4mclassfilter/w4mclassfilter_wrapper.R Thu Mar 11 20:44:23 2021 +0000
[
@@ -0,0 +1,233 @@
+#!/usr/bin/env Rscript
+
+library(batch) ## parseCommandArgs
+
+########
+# MAIN #
+########
+
+argVc <- unlist(parseCommandArgs(evaluate=FALSE))
+
+##------------------------------
+## Initializing
+##------------------------------
+
+## options
+##--------
+
+strAsFacL <- options()$stringsAsFactors
+options(stringsAsFactors = FALSE)
+
+## libraries
+##----------
+
+suppressMessages(library(w4mclassfilter))
+
+expected_version <- "0.98.18"
+actual_version <- packageVersion("w4mclassfilter")
+if(packageVersion("w4mclassfilter") < expected_version) {
+    stop(
+         sprintf(
+             "Unrecoverable error: Version %s of the 'w4mclassfilter' R package was loaded instead of expected version %s",
+             actual_version, expected_version
+         )
+    )
+}
+
+## constants
+##----------
+
+modNamC <- "w4mclassfilter" ## 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
+##---------
+
+my_print <- function(x, ...) { cat(c(x, ...))}
+
+my_print("\nStart of the '", modNamC, "' Galaxy module call: ",
+    format(Sys.time(), "%a %d %b %Y %X"), "\n", sep="")
+
+## arguments
+##----------
+
+# files
+
+dataMatrix_in <- as.character(argVc["dataMatrix_in"])
+dataMatrix_out <- as.character(argVc["dataMatrix_out"])
+
+sampleMetadata_in <- as.character(argVc["sampleMetadata_in"])
+sampleMetadata_out <- as.character(argVc["sampleMetadata_out"])
+
+variableMetadata_in <- as.character(argVc["variableMetadata_in"])
+variableMetadata_out <- as.character(argVc["variableMetadata_out"])
+
+# other parameters
+
+transformation <- as.character(argVc["transformation"])
+my_imputation_label <- as.character(argVc["imputation"])
+my_imputation_function <- if (my_imputation_label == "zero") {
+  w4m_filter_zero_imputation
+} else if (my_imputation_label == "center") {
+  w4m_filter_median_imputation
+} else if (my_imputation_label == "none") {
+  w4m_filter_no_imputation
+} else {
+  stop(sprintf("Unknown value %s supplied for 'imputation' parameter.  Expected one of {zero,center,none}."))
+}
+wildcards <- as.logical(argVc["wildcards"])
+sampleclassNames <- as.character(argVc["sampleclassNames"])
+sampleclassNames <- strsplit(x = sampleclassNames, split = ",", fixed = TRUE)[[1]]
+if (wildcards) {
+  sampleclassNames <- gsub("[.]", "[.]", sampleclassNames)
+  sampleclassNames <- utils::glob2rx(sampleclassNames, trim.tail = FALSE)
+}
+inclusive <- as.logical(argVc["inclusive"])
+classnameColumn <- as.character(argVc["classnameColumn"])
+samplenameColumn <- as.character(argVc["samplenameColumn"])
+
+order_vrbl <- as.character(argVc["order_vrbl"])
+centering <- as.character(argVc["centering"])
+order_smpl <-
+  if (centering == 'centroid' || centering == 'median') {
+    "sampleMetadata"
+  } else {
+    as.character(argVc["order_smpl"])
+  }
+
+variable_range_filter <- as.character(argVc["variable_range_filter"])
+variable_range_filter <- strsplit(x = variable_range_filter, split = ",", fixed = TRUE)[[1]]
+
+## -----------------------------
+## Transformation and imputation
+## -----------------------------
+my_transformation_and_imputation <- if (transformation == "log10") {
+  function(m) {
+    # convert negative intensities to missing values
+    m[m < 0] <- NA
+    if (!is.matrix(m))
+      stop("Cannot transform and impute data - the supplied data is not in matrix form")
+    if (nrow(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no rows")
+    if (ncol(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no columns")
+    suppressWarnings({
+      # suppress warnings here since non-positive values will produce NaN's that will be fixed in the next step
+      m <- log10(m)
+      m[is.na(m)] <- NA
+    })
+    return ( my_imputation_function(m) )
+  }
+} else if (transformation == "log2") {
+  function(m) {
+    # convert negative intensities to missing values
+    m[m < 0] <- NA
+    if (!is.matrix(m))
+      stop("Cannot transform and impute data - the supplied data is not in matrix form")
+    if (nrow(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no rows")
+    if (ncol(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no columns")
+    suppressWarnings({
+      # suppress warnings here since non-positive values will produce NaN's that will be fixed in the next step
+      m <- log2(m)
+      m[is.na(m)] <- NA
+    })
+    return ( my_imputation_function(m) )
+  }
+} else {
+  function(m) {
+    # convert negative intensities to missing values
+    m[m < 0] <- NA
+    if (!is.matrix(m))
+      stop("Cannot transform and impute data - the supplied data is not in matrix form")
+    if (nrow(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no rows")
+    if (ncol(m) == 0)
+      stop("Cannot transform and impute data - data matrix has no columns")
+    suppressWarnings({
+      # suppress warnings here since non-positive values will produce NaN's that will be fixed in the next step
+      m[is.na(m)] <- NA
+    })
+    return ( my_imputation_function(m) )
+  }
+}
+
+##------------------------------
+## Computation
+##------------------------------
+
+result <- w4m_filter_by_sample_class(
+  dataMatrix_in         = dataMatrix_in
+, sampleMetadata_in     = sampleMetadata_in
+, variableMetadata_in   = variableMetadata_in
+, dataMatrix_out        = dataMatrix_out
+, sampleMetadata_out    = sampleMetadata_out
+, variableMetadata_out  = variableMetadata_out
+, classes               = sampleclassNames
+, include               = inclusive
+, class_column          = classnameColumn
+, samplename_column     = samplenameColumn
+, order_vrbl            = order_vrbl
+, order_smpl            = order_smpl
+, centering             = centering
+, variable_range_filter = variable_range_filter
+, failure_action        = my_print
+, data_imputation       = my_transformation_and_imputation
+)
+
+my_print("\nResult of '", modNamC, "' Galaxy module call to 'w4mclassfilter::w4m_filter_by_sample_class' R function: ",
+    as.character(result), "\n", sep = "")
+
+##--------
+## Closing
+##--------
+
+my_print("\nEnd of '", modNamC, "' Galaxy module call: ",
+    as.character(Sys.time()), "\n", sep = "")
+
+#sink()
+
+if (!file.exists(dataMatrix_out)) {
+  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, dataMatrix_out))
+}# else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, dataMatrix_out)) }
+
+if (!file.exists(variableMetadata_out)) {
+  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, variableMetadata_out))
+} # else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, variableMetadata_out)) }
+
+if (!file.exists(sampleMetadata_out)) {
+  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, sampleMetadata_out))
+} # else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, sampleMetadata_out)) }
+
+if( !result ) {
+  stop(sprintf("ERROR %s::w4m_filter_by_sample_class - method failed", modNamC))
+}
+
+rm(list = ls())
b
diff -r b24ca78a425b -r 1d36ecf93e67 w4mclassfilter.xml
--- a/w4mclassfilter.xml Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,820 +0,0 @@\n-<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.11">\n-    <description>Filter W4m data by values or metadata</description>\n-    <!-- Here is the hyphenation standard that I *try* to apply consistently in my documentation: http://www.sandranoonan.com/dont-let-hyphenation-drive-crazy/ -->\n-    <requirements>\n-        <!-- <requirement type="package" version="6.2">readline</requirement> -->\n-        <requirement type="package" version="3.4.1">r-base</requirement>\n-        <requirement type="package" version="1.1_4">r-batch</requirement>\n-        <requirement type="package" version="0.98.8">w4mclassfilter</requirement>\n-    </requirements>\n-    <command detect_errors="aggressive"><![CDATA[\n-    Rscript $__tool_directory__/w4mclassfilter_wrapper.R\n-    dataMatrix_in \'$dataMatrix_in\'\n-    sampleMetadata_in \'$sampleMetadata_in\'\n-    variableMetadata_in \'$variableMetadata_in\'\n-    sampleclassNames \'$sampleclassNames\'\n-    inclusive \'$inclusive\'\n-    wildcards \'$wildcards\'\n-    classnameColumn \'$classnameColumn\'\n-    samplenameColumn \'sampleMetadata\'\n-    variable_range_filter \'$variableRangeFilter\'\n-    transformation \'$transformation\'\n-    dataMatrix_out \'$dataMatrix_out\'\n-    sampleMetadata_out \'$sampleMetadata_out\'\n-    variableMetadata_out \'$variableMetadata_out\'\n-    ]]></command>\n-    <inputs>\n-        <param name="dataMatrix_in" format="tabular" label="Data matrix file" type="data"\n-            help="variables &#10006; samples" />\n-        <param name="sampleMetadata_in" format="tabular" label="Sample metadata file" type="data"\n-            help="sample metadata, one row per sample" />\n-        <param name="variableMetadata_in" format="tabular" label="Variable metadata file" type="data"\n-            help="variable metadata, one row per variable" />\n-        <param name="classnameColumn" label="Column that names the sample-class" type="text" value = "class"\n-            help="name of the column in sample metadata that has the values to be tested against the \'Names of sample-classes\' input parameter - defaults to \'class\'">\n-            <sanitizer>\n-                <valid initial="string.letters">\n-                    <add preset="string.digits"/>\n-                    <add value="&#46;"    /> <!-- dot, period -->\n-                    <add value="&#95;"    /> <!-- underscore -->\n-                </valid>\n-            </sanitizer>\n-        </param>\n-        <param name="sampleclassNames" label="Names of sample-classes" type="text" value = ""\n-            help="comma-separated names (or regular expressions to match names) of sample-classes to filter in or out; defaults to no names">\n-            <sanitizer>\n-                <valid initial="string.letters">\n-                    <add preset="string.digits"/>\n-                    <add value="&#123;"   /> <!-- l-cube, left-curly-bracket -->\n-                    <add value="&#124;"   /> <!-- pipe -->\n-                    <add value="&#125;"   /> <!-- r-cube, right-curly-bracket -->\n-                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->\n-                    <add value="&#40;"    /> <!-- left-paren -->\n-                    <add value="&#41;"    /> <!-- right-paren -->\n-                    <add value="&#42;"    /> <!-- splat, asterisk -->\n-                    <add value="&#43;"    /> <!-- plus -->\n-                    <add value="&#45;"    /> <!-- dash, hyphen -->\n-                    <add value="&#44;"    /> <!-- comma -->\n-                    <add value="&#46;"    /> <!-- dot, period -->\n-                    <add value="&#58;"    /> <!-- colon -->\n-                    <add value="&#59;"    /> <!-- semi, semicolon -->\n-                    <add value="&#63;"    /> <!-- what, question mark -->\n-                    <add value="&#91;"    /> <!-- l-squib, left-squre-bracket -->\n-                    <add value="&#92;"    /> <!-- whack, backslash -->\n-                    <add value="&#93;"    /> <!-- r-squib, right-squre-bracket -->\n-         '..b'---------+\n-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv  |\n-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+\n-\n-.. class:: infomark\n-\n-----------------------------\n-Running With Range-Filtering\n-----------------------------\n-\n-This example retains only features whose mz is greater than 200, whose rt is less than 800, and whose maximum intensity across all samples is 2,000,000.\n-This example retains all samples (except those having zero variance for all feature), although it would be possible to filter on samples as well.\n-\n-**Input parameters**\n-\n-+------------------------------------+------------------------------------+\n-| Input Parameter                    | Value                              |\n-+====================================+====================================+\n-| Names of sample-classes            | (Leave this field empty.)          |\n-+------------------------------------+------------------------------------+\n-| Include named classes              | filter-out                         |\n-+------------------------------------+------------------------------------+\n-| Column that names the sample-class | gender                             |\n-+------------------------------------+------------------------------------+\n-| Variable range-filters             | FEATMAX:20.93157:,mz:200:,rt::800  |\n-+------------------------------------+------------------------------------+\n-| Data transforamtion                | log2                               |\n-+------------------------------------+------------------------------------+\n-\n-**Expected outputs**\n-\n-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+\n-| Expected Output   | Download from URL                                                                                                                                 |\n-+===================+===================================================================================================================================================+\n-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv       |\n-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+\n-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv   |\n-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+\n-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv |\n-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+\n-    ]]></help>\n-    <citations>\n-        <!-- Giacomoni_2014 W4m 2.5 -->\n-        <citation type="doi">10.1093/bioinformatics/btu813</citation>\n-        <!-- Guitton_2017 W4m 3.0 -->\n-        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>\n-        <!-- Kuhl_2012 CAMERA -->\n-        <citation type="doi">10.1021/ac202450g</citation>\n-        <!-- Smith_2006 XCMS -->\n-        <citation type="doi">10.1021/ac051437y</citation>\n-        <!-- Thevenot_2015 Urinary metabolome statistics -->\n-        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>\n-    </citations>\n-    <!--\n-     vim:noet:sw=4:ts=4\n---> </tool>\n'
b
diff -r b24ca78a425b -r 1d36ecf93e67 w4mclassfilter_wrapper.R
--- a/w4mclassfilter_wrapper.R Mon Sep 03 22:28:03 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,184 +0,0 @@
-#!/usr/bin/env Rscript
-
-library(batch) ## parseCommandArgs
-
-########
-# MAIN #
-########
-
-argVc <- unlist(parseCommandArgs(evaluate=FALSE))
-
-##------------------------------
-## Initializing
-##------------------------------
-
-## options
-##--------
-
-strAsFacL <- options()$stringsAsFactors
-options(stringsAsFactors = FALSE)
-
-## libraries
-##----------
-
-suppressMessages(library(w4mclassfilter))
-
-if(packageVersion("w4mclassfilter") < "0.98.0")
-    stop("Please use 'w4mclassfilter' versions of 0.98.0 and above")
-
-## constants
-##----------
-
-modNamC <- "w4mclassfilter" ## 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
-##---------
-
-my_print <- function(x, ...) { cat(c(x, ...))}
-
-my_print("\nStart of the '", modNamC, "' Galaxy module call: ",
-    format(Sys.time(), "%a %d %b %Y %X"), "\n", sep="")
-
-## arguments
-##----------
-
-# files
-
-dataMatrix_in <- as.character(argVc["dataMatrix_in"])
-dataMatrix_out <- as.character(argVc["dataMatrix_out"])
-
-sampleMetadata_in <- as.character(argVc["sampleMetadata_in"])
-sampleMetadata_out <- as.character(argVc["sampleMetadata_out"])
-
-variableMetadata_in <- as.character(argVc["variableMetadata_in"])
-variableMetadata_out <- as.character(argVc["variableMetadata_out"])
-
-# other parameters
-
-transformation <- as.character(argVc["transformation"])
-wildcards <- as.logical(argVc["wildcards"])
-sampleclassNames <- as.character(argVc["sampleclassNames"])
-sampleclassNames <- strsplit(x = sampleclassNames, split = ",", fixed = TRUE)[[1]]
-if (wildcards) {
-  sampleclassNames <- gsub("[.]", "[.]", sampleclassNames)
-  sampleclassNames <- utils::glob2rx(sampleclassNames, trim.tail = FALSE)
-}
-inclusive <- as.logical(argVc["inclusive"])
-classnameColumn <- as.character(argVc["classnameColumn"])
-samplenameColumn <- as.character(argVc["samplenameColumn"])
-
-variable_range_filter <- as.character(argVc["variable_range_filter"])
-variable_range_filter <- strsplit(x = variable_range_filter, split = ",", fixed = TRUE)[[1]]
-
-## -----------------------------
-## Transformation and imputation
-## -----------------------------
-my_w4m_filter_imputation <- if (transformation == "log10") {
-  function(m) {
-    if (!is.matrix(m))
-      stop("Cannot impute and transform data - the supplied data is not in matrix form")
-    if (nrow(m) == 0)
-      stop("Cannot impute and transform data - data matrix has no rows")
-    if (ncol(m) == 0)
-      stop("Cannot impute and transform data - data matrix has no columns")
-    suppressWarnings(
-      # suppress warnings here since non-positive values will produce NaN's that will be fixed in the next step
-      m <- log10(m)
-    )
-    return ( w4m_filter_imputation(m) )
-  }
-} else if (transformation == "log2") {
-  function(m) {
-    if (!is.matrix(m))
-      stop("Cannot impute and transform data - the supplied data is not in matrix form")
-    if (nrow(m) == 0)
-      stop("Cannot impute and transform data - data matrix has no rows")
-    if (ncol(m) == 0)
-      stop("Cannot impute and transform data - data matrix has no columns")
-    suppressWarnings(
-      # suppress warnings here since non-positive values will produce NaN's that will be fixed in the next step
-      m <- log2(m)
-    )
-    return ( w4m_filter_imputation(m) )
-  }
-} else {
-  # use the method from the w4mclassfilter class
-  w4m_filter_imputation
-}
-
-##------------------------------
-## Computation
-##------------------------------
-
-result <- w4m_filter_by_sample_class(
-  dataMatrix_in         = dataMatrix_in
-, sampleMetadata_in     = sampleMetadata_in
-, variableMetadata_in   = variableMetadata_in
-, dataMatrix_out        = dataMatrix_out
-, sampleMetadata_out    = sampleMetadata_out
-, variableMetadata_out  = variableMetadata_out
-, classes               = sampleclassNames
-, include               = inclusive
-, class_column          = classnameColumn
-, samplename_column     = samplenameColumn
-, variable_range_filter = variable_range_filter
-, failure_action        = my_print
-, data_imputation       = my_w4m_filter_imputation
-)
-
-my_print("\nResult of '", modNamC, "' Galaxy module call to 'w4mclassfilter::w4m_filter_by_sample_class' R function: ",
-    as.character(result), "\n", sep = "")
-
-##--------
-## Closing
-##--------
-
-my_print("\nEnd of '", modNamC, "' Galaxy module call: ",
-    as.character(Sys.time()), "\n", sep = "")
-
-#sink()
-
-if (!file.exists(dataMatrix_out)) {
-  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, dataMatrix_out))
-}# else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, dataMatrix_out)) }
-
-if (!file.exists(variableMetadata_out)) {
-  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, variableMetadata_out))
-} # else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, variableMetadata_out)) }
-
-if (!file.exists(sampleMetadata_out)) {
-  print(sprintf("ERROR %s::w4m_filter_by_sample_class - file '%s' was not created", modNamC, sampleMetadata_out))
-} # else { print(sprintf("INFO %s::w4m_filter_by_sample_class - file '%s' was exists", modNamC, sampleMetadata_out)) }
-
-if( !result ) {
-  stop(sprintf("ERROR %s::w4m_filter_by_sample_class - method failed", modNamC))
-}
-
-rm(list = ls())