changeset 15:08d4ca8bc6dd draft

"planemo upload for repository https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper/tree/master commit 9639dde5737c9aa2330bb603c2299345939407cf"
author eschen42
date Thu, 11 Mar 2021 20:46:26 +0000
parents 1d36ecf93e67
children c0bb5667f5cd
files LICENSE README README.md docker_container_postbuild_setup_run.txt planemo_install_history.txt 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 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 w4mclassfilter.xml w4mclassfilter_wrapper.R
diffstat 43 files changed, 1508 insertions(+), 4748 deletions(-) [+]
line wrap: on
line diff
--- a/LICENSE	Thu Mar 11 20:44:23 2021 +0000
+++ b/LICENSE	Thu Mar 11 20:46:26 2021 +0000
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2017 Hegeman Lab
+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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- a/README.md	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-[![DOI](https://zenodo.org/badge/90571457.svg)](https://zenodo.org/badge/latestdoi/90571457) Latest public release
-
-[![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
-
-[Repository 'w4mclassfilter' in Galaxy Toolshed](https://toolshed.g2.bx.psu.edu/repository?repository_id=5f24951d82ab40fa)
-
-# W4M Data Subset
-
-#### A Galaxy tool to select a subset of Workflow4Metabolomics data
-
-*W4M Data Subset* is [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/).
-This tool was developed and tested with [planemo](http://planemo.readthedocs.io/en/latest/).
-
-#### Author
-
-Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
-
-#### R package wrapped by this tool
-
-The *w4mclassfilter* package is available from the Hegeman lab github repository [https://github.com/HegemanLab/w4mclassfilter/releases](https://github.com/HegemanLab/w4mclassfilter/releases).
-
-#### Tool in Galaxy Toolshed
-
-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)
-
-#### Tool updates
-
-See the **NEWS** section at the bottom of this page
-
-## Motivation
-
-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").
-(If a chemical is fragmented or may have a variety of adducts, several features will result.)
-Data for a sample are collected as mass-spectral intensities, each of
-which is associated with a position on a 2D plane with dimensions of rt
-and *m/z*. Ideally, features would be sufficiently reproducible among
-sample-runs to distinguish features that are similar among samples from
-those that differ.
-
-For liquid chromatography, the retention time for a species can vary considerably from one chromatography
-run to the next.  The Workflow4Metabolomics suite of Galaxy tools
-(W4M, [Giacomoni *et al.*, 2014, Guitton *et al.* 2017])
-uses the XCMS preprocessing tools [Smith *et al.*, 2006] for "retention-time correction" to
-align features among samples. Features may be better aligned if pooled
-samples and blanks are included.
-
-Multivariate statistical tools may be used to discover clusters of
-similar samples [Thévenot *et al.*, 2015].
-However, once retention-time alignment of features has been achieved
-among samples in LC-MS datasets:
-
-- The presence of pools and blanks may confound identification and separation of sample clusters.
-- Multivariate statistical algorithms may be impacted by missing values or dimensions that have zero variance.
-
-
-## Description
-
-The W4M Data Subset tool selects subsets of samples, features, or data values and conditions the data for further analysis.
-
-- The tool takes as input the *dataMatrix*, *sampleMetadata*, and *variableMetadata* datasets produced by W4M\'s XCMS and CAMERA [Kuhl *et al.*, 2012] tools.
-- The tool produces the same trio of output datasets, modified as described below.
-
-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):
-
-- *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.
-- *Feature filtering:* Features may be selected by specifying minimum or maximum value (or both) allowable in columns of *variableMetadata*.
-- *Intensity filtering:* To exclude minimal features from consideration, a lower bound may be specified for the maximum intensity for a feature across all samples (i.e., for a row in *dataMatrix*).
-
-This tool also conditions data for statistical analysis:
-
-- Samples that are missing from either *sampleMetadata* or *dataMatrix* are eliminated.
-- Features that are missing from either *variableMetadata* or *dataMatrix* are eliminated.
-- Features and samples that have zero variance are eliminated.
-- Samples and features are ordered consistently in *variableMetadata*, *sampleMetadata*, and *dataMatrix*. (The columns for sorting *variableMetadata* or *sampleMetadata* may be specified.)
-- The names of the first columns of *variableMetadata* and *sampleMetadata* are set respectively to "variableMetadata" and "sampleMetadata".
-- If desired, the values in the *dataMatrix* may be log-transformed.
-- Negative intensities become missing values (before missing-value replacement is performed).
-- If desired, each missing value in *dataMatrix* may be replaced with zero or the median value observed for the corresponding feature.
-- If desired, a "center" for each treatment can be computed in lieu of the samples for that treatment.
-
-This tool may be applied several times sequentially, which may be useful for:
-
-- analyzing subsets of samples for progressively smaller sets of treatment levels, or
-- choosing subsets of samples or features, respectively based on criteria in columns of *sampleMetadata* or *variableMetadata*.
-
-## NEWS
-
-### Changes in version 0.98.18
-
-#### New features
-
-* Enhancement: Added option "compute center for each treatment" [https://github.com/HegemanLab/w4mclassfilter/issues/6](https://github.com/HegemanLab/w4mclassfilter/issues/6).
-* Enhancement: Added option "enable sorting on multiple columns of metadata" [https://github.com/HegemanLab/w4mclassfilter/issues/7](https://github.com/HegemanLab/w4mclassfilter/issues/7).
-* Enhancement: Added option "always treat negative intensities as missing values" [https://github.com/HegemanLab/w4mclassfilter\_galaxy\_wrapper/issues/7](https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper/issues/7).
-
-#### Internal modifications
-
-* Use v0.98.18 of the [w4mclassfilter bioconda package](https://bioconda.github.io/recipes/w4mclassfilter/README.html).
-
-
-### (Version numbers 0.98.15-0.98.17 skipped)
-
-
-### Changes in version 0.98.14
-
-#### New features
-
-* Enhancement [https://github.com/HegemanLab/w4mclassfilter\_galaxy\_wrapper/issues/6](https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper/issues/6) - "Provide sort options for features and samples".
-
-#### Internal modifications
-
-* Use v0.98.14 of the [w4mclassfilter bioconda package](https://bioconda.github.io/recipes/w4mclassfilter/README.html).
-
-### Changes in version 0.98.13
-
-#### New features
-
-* Support enhancement https://github.com/HegemanLab/w4mclassfilter/issues/4 - "add and test no-imputation and centering-imputation functions":
-  - Support no imputation.
-  - Support imputing missing feature-intensities as median intensity for the corresponding feature.
-
-#### Internal modifications
-
-* Use v0.98.13 of the [w4mclassfilter bioconda package](https://bioconda.github.io/recipes/w4mclassfilter/README.html).
-
-
-### (Version number 0.98.12 skipped)
-
-
-### Changes in version 0.98.11
-
-#### New features
-
-* none
-
-#### Internal modifications
-
-* Use v0.98.8 of the [w4mclassfilter bioconda package](https://bioconda.github.io/recipes/w4mclassfilter/README.html).
-
-### Changes in version 0.98.10
-
-#### New features
-
-* none
-
-#### Internal modifications
-
-* Quality-assurance improvements - Changes for IUC conformance and automated Planemo testing on Travis CI.
-* Forbid hyphens in sample and variable names because R does not permit them.
-
-### Changes in version 0.98.9
-
-#### New features
-
-* none
-
-#### Internal modifications
-
-* Added missing support for hyphen character in regular expressions
-
-### Changes in version 0.98.8
-
-#### New features
-
-* The tool now appears in Galaxy with a new, more representative name: "W4M Data Subset". (Earlier versions of this tool appeared in Galaxy with the name "Sample Subset".)
-* Option was added to log-transform data matrix values.
-* Output datasets are named in conformance with the W4M convention of appending the name of each preprocessing tool to the input dataset name.
-* Superfluous "Column that names the sample" input parameter was eliminated.
-* Some documentation was updated or clarified.
-
-#### Internal modifications
-
-* None
-
-### Changes in version 0.98.7
-
-#### New features
-
-* First column of output variableMetadata (that has feature names) now is always named "variableMetadata"
-* First column of output sampleMetadata now (that has sample names) is always named "sampleMetadata"
-
-#### Internal modifications
-
-* Now uses w4mclassfilter R package v0.98.7.
-
-### Changes in version 0.98.6
-
-#### New features
-
-* Added support for filtering out features whose attributes fall outside specified ranges. For more detail, see "Variable-range filters" above.
-
-#### Internal modifications
-
-* Now uses w4mclassfilter R package v0.98.6.
-* 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.
-
-### Changes in version 0.98.3
-
-#### New features
-
-* Improved reference-list.
-
-#### Internal modifications
-
-* Improved input handling.
-* Now uses w4mclassfilter R package v0.98.3, although that version has no functional implications for this tool.
-
-### Changes in version 0.98.1
-
-#### New features
-
-* First release - Wrap the w4mclassfilter R package that implements filtering of W4M data matrix, variable metadata, and sample metadata by class of sample.
-* *dataMatrix* *is* modified by the tool, so it *does* appear as an output file
-* *sampleMetadata* *is* modified by the tool, so it *does* appear as an output file
-* *variableMetadata* *is* modified by the tool, so it *does* appear as an output file
-
-#### Internal modifications
-
-* none
-
-## Citations
-
-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)
-
-Kuhl, Carsten and Tautenhahn, Ralf and Bö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)
-
-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–1495.* [doi:10.1093/bioinformatics/btu813](http://dx.doi.org/10.1093/bioinformatics/btu813)
-
-Guitton, Yann and Tremblay-Franco, Marie and Le Corguillé, Gildas and Martin, Jean-François and Pétéra, Mélanie and Roger-Mele, Pierrick and Delabrière, Alexis and Goulitquer, Sophie and Monsoor, Misharl and Duperier, Christophe and *et al.* (2017). **Create, run, share, publish, and reference your LC–MS, FIA–MS, GC–MS, and NMR data analysis workflows with the Workflow4Metabolomics 3.0 Galaxy online infrastructure for metabolomics.** In *The International Journal of Biochemistry & Cell Biology, pp. 89-101.* [doi:10.1016/j.biocel.2017.07.002](http://dx.doi.org/10.1016/j.biocel.2017.07.002)
-
-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–787.* [doi:10.1021/ac051437y](http://dx.doi.org/10.1021/ac051437y)
-
-Thévenot, Etienne A. and Roux, Auré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–3335.* [doi:10.1021/acs.jproteome.5b00354](http://dx.doi.org/10.1021/acs.jproteome.5b00354)
-
-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)
--- a/docker_container_postbuild_setup_run.txt	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-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
--- a/planemo_install_history.txt	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/expected_dataMatrix.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/expected_sampleMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/expected_variableMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input_dataMatrix.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input_nofilter_dataMatrix.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input_sampleMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input_variableMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rangefilter_dataMatrix.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rangefilter_sampleMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rangefilter_variableMetadata.tsv	Thu Mar 11 20:46:26 2021 +0000
@@ -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
--- a/test_repositories.list	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-tools/w4mclassfilter
--- a/tools/old_w4mclassfilter.xml	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1146 +0,0 @@
-<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.19">
-    <description>Filter W4M data by values or metadata</description>
-    <requirements>
-        <requirement type="package" version="4.0.3">r-base</requirement>
-        <requirement type="package" version="1.1_5">r-batch</requirement>
-        <requirement type="package" version="0.98.19">w4mclassfilter</requirement>
-    </requirements>
-    <command detect_errors="aggressive"><![CDATA[
-    unset R_HOME;
-    if [ '$centering' == 'medoid' -a '$imputation' == 'none' ]; then
-    (echo 'medoid' centering may not be chosen with imputation 'none' 1>&2);
-        [ ! 1 ];
-    else
-        Rscript
-        $__tool_directory__/w4mclassfilter_wrapper.R
-        dataMatrix_in         '$dataMatrix_in'
-        sampleMetadata_in     '$sampleMetadata_in'
-        variableMetadata_in   '$variableMetadata_in'
-        sampleclassNames      '$sampleclassNames'
-        inclusive             '$inclusive'
-        wildcards             '$wildcards'
-        classnameColumn       '$classnameColumn'
-        samplenameColumn      'sampleMetadata'
-        variable_range_filter '$variableRangeFilter'
-        transformation        '$transformation'
-        imputation            '$imputation'
-        dataMatrix_out        '$dataMatrix_out'
-        sampleMetadata_out    '$sampleMetadata_out'
-        variableMetadata_out  '$variableMetadata_out'
-        order_vrbl            '$order_vrbl'
-        order_smpl            '$order_smpl'
-        centering             '$centering';
-    fi
-    ]]></command>
-    <inputs>
-        <param name="dataMatrix_in" format="tabular" label="Data matrix" type="data"
-            help="Choose data-matrix file (tab-separated values with sample names in first row and feature names in first column)." />
-        <param name="sampleMetadata_in" format="tabular" label="Sample metadata" type="data"
-            help="Choose sample-metadata file (tab-separated values with one row per sample, sample name in first column)." />
-        <param name="variableMetadata_in" format="tabular" label="Variable metadata" type="data"
-            help="Choose variable-metadata file (tab-separated values with one row per feature, feature name in first column)." />
-        <param name="classnameColumn" label="Column containing the sample-class names (or treatment names)" type="text" value = "class"
-            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']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="sampleclassNames" label="Sample-class names (or patterns)" type="text" value = ""
-            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]">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#123;"   /> <!-- l-curb, left-curly-bracket -->
-                    <add value="&#124;"   /> <!-- pipe -->
-                    <add value="&#125;"   /> <!-- r-curb, right-curly-bracket -->
-                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->
-                    <add value="&#40;"    /> <!-- left-paren -->
-                    <add value="&#41;"    /> <!-- right-paren -->
-                    <add value="&#42;"    /> <!-- splat, asterisk -->
-                    <add value="&#43;"    /> <!-- plus -->
-                    <add value="&#45;"    /> <!-- dash, hyphen -->
-                    <add value="&#44;"    /> <!-- comma -->
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#58;"    /> <!-- colon -->
-                    <add value="&#59;"    /> <!-- semi, semicolon -->
-                    <add value="&#63;"    /> <!-- what, question mark -->
-                    <add value="&#91;"    /> <!-- l-squib, left-square-bracket -->
-                    <add value="&#92;"    /> <!-- whack, backslash -->
-                    <add value="&#93;"    /> <!-- r-squib, right-square-bracket -->
-                    <add value="&#94;"    /> <!-- hat, caret -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="inclusive" label="Exclude/include named (or matched) sample classes" type="select" help="Indicate meaning of preceding list: either to identify classes to exclude from output or to identify classes to include in output. [default: 'filter-out']">
-            <option value="TRUE">filter-in: &#160;&#160; Include only the named sample classes.</option>
-            <option value="FALSE" selected="true">filter-out: &#160;&#160; Exclude only the named sample classes.</option>
-        </param>
-        <param name="wildcards" label="Use 'wild card patterns' or 'regular expression patterns' to match sample-class names" type="select"
-            help="See '&lt;i&gt;Wild-card patterns to match class names&lt;/i&gt;' and '&lt;i&gt;Regular-expression patterns to match sample-class names&lt;/i&gt;' sections below. [default: 'wild-card patterns']">
-            <option value="TRUE" selected="true">wild-card patterns: &#160;&#160; Use '*' and '?' to match sample-class names.</option>
-            <option value="FALSE">regular-expression patterns: &#160;&#160; Use regular expressions to match sample-class names.</option>
-        </param>
-        <param name="variableRangeFilter" label="Variable-range filters" type="text" value = ""
-            help="List of filters, each specifying the range of permitted values in a column of 'Variable metadata' (specified as 'column:min:max'), as described in '&lt;i&gt;Variable-range filters&lt;/i&gt;' section below.  List should be comma-separated with no stray space characters.  (Leave this empty for no filtering.) [default: empty]">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#44;"    /> <!-- comma -->
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#58;"    /> <!-- colon -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="transformation" label="Data transformation" type="select"
-            help="Choose transformation.  In all cases, negative intensities become missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'none']">
-            <option value="none" selected="true">none: &#160;&#160; Do not transform data.</option>
-            <option value="log2">log2: &#160;&#160; Perform log base 2 transformation of data.</option>
-            <option value="log10">log10: &#160;&#160; Perform log base 10 transformation of data.</option>
-        </param>
-        <param name="imputation" label="Imputation of missing values" type="select"
-            help="Choose imputation for missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'zero']">
-            <option value="zero" selected="true">zero: &#160;&#160; Replace missing values with zero.</option>
-            <option value="center">center: &#160;&#160; Replace missing values with feature-median.</option>
-            <option value="none">none: &#160;&#160; Perform no imputation.  Note that 'compute centers' cannot be set to 'medoid'.</option>
-        </param>
-        <param name="order_smpl" label="Columns that specify order for samples" type="text" value = "sampleMetadata"
-            help="List of sample-metadata column names for sorting samples.  List should be comma-separated with no stray space characters.  (This is ignored when 'Compute centers for classes' is set to either 'centroid' or 'median'.) [default: 'sampleMetadata']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                    <add value="&#44;"    /> <!-- comma -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="order_vrbl" label="Columns that specify order for features" type="text" value = "variableMetadata"
-            help="List of feature-metadata column names for sorting features.  List should be comma-separated with no stray space characters. [default: 'variableMetadata']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                    <add value="&#44;"    /> <!-- comma -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="centering" label="Compute centers for classes (e.g., treatments)" type="select" help="[default: 'none']">
-            <option value="none" selected="true">none: &#160;&#160; Do not compute centers for classes/treatments.</option>
-            <option value="centroid">centroid: &#160;&#160; For each class, compute the mean for each feature.</option>
-            <option value="median">median: &#160;&#160; For each class, compute the median for each feature.</option>
-            <option value="medoid">medoid: &#160;&#160; For each class, select only the most central member. Note that 'Imputation of missing values' cannot be 'none'.</option>
-        </param>
-    </inputs>
-    <outputs>
-        <data name="dataMatrix_out" format="tabular" label="${dataMatrix_in.name}.subset" ></data>
-        <data name="sampleMetadata_out" format="tabular" label="${sampleMetadata_in.name}.subset" ></data>
-        <data name="variableMetadata_out" format="tabular" label="${variableMetadata_in.name}.subset" ></data>
-    </outputs>
-    <tests>
-      <!-- test 13 -->
-      <test>
-        <param name="dataMatrix_in" value="input_med1_dm.tsv"/>
-        <param name="sampleMetadata_in" value="input_med1_sm.tsv"/>
-        <param name="variableMetadata_in" value="input_med1_vm.tsv"/>
-        <param name="classnameColumn" value="pcgroup"/>
-        <param name="sampleclassNames" value=""/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="FALSE"/>
-        <param name="imputation" value="zero"/>
-        <param name="order_vrbl" value="sample"/>
-        <param name="order_smpl" value="pcgroup"/>
-        <param name="centering" value="medoid"/>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <has_text text="747080" />
-            <not_has_text text="13420742" />
-            <not_has_text text="47259" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-          </assert_contents>
-        </output>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB13189" />
-            <not_has_text text="HMDB00191" />
-            <not_has_text text="HMDB00251" />
-            <not_has_text text="HMDB00299" />
-            <not_has_text text="HMDB00512" />
-            <not_has_text text="HMDB00518" />
-            <not_has_text text="HMDB00715" />
-            <not_has_text text="HMDB00822" />
-            <not_has_text text="HMDB03193" />
-            <not_has_text text="HMDB04824" />
-            <not_has_text text="HMDB10348" />
-            <not_has_text text="HMDB59717" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 1 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="variableRangeFilter" value="FEATMAX:2e6:,mz:200:,rt::800"/>
-        <param name="transformation" value="none"/>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <has_text text="747080" />
-            <not_has_text text="13420742" />
-            <not_has_text text="47259" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-          </assert_contents>
-        </output>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB13189" />
-            <not_has_text text="HMDB00191" />
-            <not_has_text text="HMDB00251" />
-            <not_has_text text="HMDB00299" />
-            <not_has_text text="HMDB00512" />
-            <not_has_text text="HMDB00518" />
-            <not_has_text text="HMDB00715" />
-            <not_has_text text="HMDB00822" />
-            <not_has_text text="HMDB03193" />
-            <not_has_text text="HMDB04824" />
-            <not_has_text text="HMDB10348" />
-            <not_has_text text="HMDB59717" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 2 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <!-- test that hyphens in regular expressions work -->
-        <param name="sampleclassNames" value="HU_[0-9][0-9][0-9]"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="classnameColumn" value="sampleMetadata"/>
-        <!-- test that variableRangeFilter works with tranformation -->
-        <param name="variableRangeFilter" value="FEATMAX:6.30103:,mz:200:,rt::800"/>
-        <param name="transformation" value="log10"/>
-        <param name="imputation" value="zero"/>
-        <output name="dataMatrix_out" md5="5644d2ea01d072ee1d0c40e29e9d0089">
-          <assert_contents>
-            <has_text text="5.8733671" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_017" />
-            <has_text text="HU_028" />
-            <has_text text="HU_034" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_110" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <has_text text="HU_208" />
-            <not_has_text text="HU_204" />
-          </assert_contents>
-        </output>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB13189" />
-            <not_has_text text="HMDB00251" />
-            <not_has_text text="HMDB00299" />
-            <not_has_text text="HMDB00512" />
-            <not_has_text text="HMDB00518" />
-            <not_has_text text="HMDB00715" />
-            <not_has_text text="HMDB00822" />
-            <not_has_text text="HMDB03193" />
-            <not_has_text text="HMDB04824" />
-            <not_has_text text="HMDB10348" />
-            <not_has_text text="HMDB59717" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 3 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="transformation" value="none"/>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-            <has_text     text="HU_017" />
-            <has_text     text="HU_034" />
-            <has_text     text="HU_078" />
-            <has_text     text="HU_091" />
-            <has_text     text="HU_093" />
-            <has_text     text="HU_099" />
-            <has_text     text="HU_130" />
-            <has_text     text="HU_134" />
-            <has_text     text="HU_138" />
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <has_text     text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 4 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="zero"/>
-        <output name="dataMatrix_out" md5="b2eac4946d3803a07606286b50451af4">
-          <assert_contents>
-            <not_has_text text="NA" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 5 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-            <has_text     text="HU_017" />
-            <has_text     text="HU_034" />
-            <has_text     text="HU_078" />
-            <has_text     text="HU_091" />
-            <has_text     text="HU_093" />
-            <has_text     text="HU_099" />
-            <has_text     text="HU_130" />
-            <has_text     text="HU_134" />
-            <has_text     text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 6 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <has_text     text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 7 -->
-      <test>
-        <param name="dataMatrix_in" value="input_nofilter_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <not_has_text text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 8 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="[Mm],[fF]"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 9 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value=""/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 10 - extends test4 with no imputation rather than zero imputation -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="none"/>
-        <output name="dataMatrix_out" md5="6200dfa77d09c56e434f80b1a23b3393">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="NA" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 11 - extends test4 with center imputation rather than zero imputation -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="center"/>
-        <output name="dataMatrix_out" md5="a404278c5c9ffd5bdadf346c4f8a0184">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <not_has_text text="NA" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 12 - select medoid for class -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value=""/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="FALSE"/>
-        <param name="imputation" value="zero"/>
-        <param name="order_vrbl" value="rt"/>
-        <param name="order_smpl" value="gender"/>
-        <param name="centering" value="medoid"/>
-        <output name="dataMatrix_out" md5="c91bbfbf30004fa24b05a67ec479bfb1">
-          <assert_contents>
-            <not_has_text text="1013302" />
-            <has_text text="4763576" />
-            <has_text text="2003278" />
-            <has_text text="26222916" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_099" />
-            <not_has_text text="HU_185" />
-            <has_text text="HU_110" />
-            <has_text text="HU_078" />
-          </assert_contents>
-        </output>
-      </test>
-    </tests>
-    <!-- Here is the hyphenation standard that I *try* to apply consistently in my documentation: 
-         https://web.archive.org/web/20161014025757/http://www.sandranoonan.com/dont-let-hyphenation-drive-crazy/
-    -->
-    <help><![CDATA[
-
-
-**Author** Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
-
---------------------------------------------------------------------------
-
-
-**R package**
-
-The *w4mclassfilter* package (which is used by the W4M Data Subset tool) is available from the Hegeman lab GitHub repository (https://github.com/HegemanLab/w4mclassfilter/releases).
-
------------------------------------------------------------------------------------------------------------------------------------------
-
-
-**Tool updates**
-
-See https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper#news
-
----------------------------------------------------
-
-======================================================
-"W4M Data Subset" - Filter Workflow4Metabolomics data 
-======================================================
-
-----------
-Motivation
-----------
-
-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").
-(If a chemical is fragmented or may have a variety of adducts, several features will result.)
-Data for a sample are collected as mass-spectral intensities, each of which is associated with a position on a 2D plane with dimensions of rt and *m/z*.
-Ideally, features would be sufficiently reproducible among sample-runs to distinguish features that are similar among samples from those that differ.
-
-For liquid chromatography, the retention time for a species can vary considerably from one chromatography run to the next.
-The Workflow4Metabolomics suite of Galaxy tools (W4M, [Giacomoni *et al.*, 2014, Guitton *et al.* 2017])
-uses the XCMS preprocessing tools [Smith *et al.*, 2006]
-for "retention-time correction" to align features among samples.
-Features may be better aligned if pooled samples and blanks are included.
-
-Multivariate statistical tools may be used to discover clusters of similar samples [Th]]>&#233;<![CDATA[venot *et al.*, 2015].
-However, once retention-time alignment of features has been achieved among samples in LC-MS datasets:
-
-- The presence of pools and blanks may confound identification and separation of sample clusters.
-- Multivariate statistical algorithms may be impacted by missing values or dimensions that have zero variance.
-
------------
-Description
------------
-
-The **W4M Data Subset** tool **selects subsets of samples, features, or data values** and **conditions the data** for further analysis.
-
-- The tool takes as input the *dataMatrix*, *sampleMetadata*, and *variableMetadata* datasets produced by W4M's XCMS and CAMERA [Kuhl *et al.*, 2012] tools.
-- The tool produces the same trio of output datasets, modified as described below.
-
-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):
-
-- *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.
-- *Feature filtering:* Features may be selected by specifying minimum or maximum value (or both) allowable in columns of *variableMetadata*.
-- *Intensity filtering:* To exclude minimal features from consideration, a lower bound may be specified for the maximum intensity for a feature across all samples (i.e., for a row in *dataMatrix*).
-
-This tool also conditions data for statistical analysis:
-
-- Samples that are missing from either *sampleMetadata* or *dataMatrix* are eliminated.
-- Features that are missing from either *variableMetadata* or *dataMatrix* are eliminated.
-- Features and samples that have zero variance are eliminated.
-- Samples and features are ordered consistently in *variableMetadata*, *sampleMetadata*, and *dataMatrix*.
-  (The columns for sorting *variableMetadata* or *sampleMetadata* may be specified.)
-- The names of the first columns of *variableMetadata* and *sampleMetadata* are set respectively to "variableMetadata" and "sampleMetadata".
-- If desired, the values in *dataMatrix* may be log-transformed.
-- Negative intensities become missing values (before missing-value replacement is performed).
-- If desired, each missing value in *dataMatrix* may be replaced with zero or the median value observed for the corresponding feature.
-- If desired, a "center" for each treatment can be computed in lieu of the samples for that treatment.
-
-This tool may be applied several times sequentially, which may be useful for:
-
-- analyzing subsets of samples for progressively smaller sets of treatment levels, or
-- choosing subsets of samples or features, respectively based on criteria in columns of *sampleMetadata* or *variableMetadata*.
-
------------------
-Workflow Position
------------------
-
-This tool can be used at any point downstream of Preprocessing.
-
-- Possible upstream tool categories: Preprocessing, Quality Control, Statistical Analysis, Filter and Sort
-- Possible downstream tool categories: Normalisation, Statistical Analysis, Quality Control, Filter and Sort
-
------------
-Input files
------------
-
-+------------------------+---------------------------------------+------------+
-| File                   | Contents                              |   Format   |
-+========================+=======================================+============+
-|     Data matrix        | per-feature, per-sample intensities   |   tabular  |
-+------------------------+---------------------------------------+------------+
-|     Sample metadata    | metadata for samples                  |   tabular  |
-+------------------------+---------------------------------------+------------+
-|     Variable metadata  | metadata for features                 |   tabular  |
-+------------------------+---------------------------------------+------------+
-
-
-----------
-Parameters
-----------
-
-Data matrix
-	| feature x sample **dataMatrix** (tab-separated values) file of the numeric data matrix, with period-character ('.') as decimal, and 'NA' for missing values.
-	| The file must not contain metadata apart from the required row and column names.
-	|
-
-Sample metadata
-	| sample x metadata **sampleMetadata** (tab-separated values) file of the numeric and/or character sample metadata, with period-character ('.') as decimal, and 'NA' for missing values.
-	|
-
-Variable metadata
-	| variable x metadata **variableMetadata** (tab-separated values) file of the numeric and/or character variable metadata, with period-character ('.') as decimal, and 'NA' for missing values.
-	|
-
-Column containing the sample-class names (default = '``class``')
-	| name of the column in **sampleMetadata** that has the values to be tested against the '``Sample-class names``' input parameter or to be referenced by the '``Compute centers for classes``' input parameter.
-	| Only letters, digits, periods, and underscores are permitted.
-	|
-
-Sample-class names (default = no names)
-	| names (or regular expressions to match names) of sample-classes to include or exclude
-	| (Separate names with commas, without any extra space characters.)
-	|
-
-Exclude/include named (or matched) classes (default = '``filter-out``')
-	| '``filter-in``' - include only the named sample-classes
-	| '``filter-out``' - exclude only the named sample-classes
-	|
-
-Use 'wild card patterns' or 'regular expression patterns' (default = '``wild-card patterns``')
-	| '``wild-card patterns``' - use wild cards to match names of sample-classes (see the *'Wild-card patterns to match class names'* section below.)
-	| '``regular-expression patterns``' - use regular expressions to match the named sample-classes (see the *'Regular-expression patterns to match class names'* section below.)
-	|
-
-Variable-range filters (default = no filters)
-	| variable-range filters (see the *'Variable-range filters'* section below)
-	| (Separate filter expressions with commas, without any extra space characters.)
-	|
-
-Data transformation (default = '``none``')
-	| '``none``' - Do not transform data matrix values.
-	| '``log2``' - Take the log base 2 of the values in the data matrix.
-	| '``log10``' - Take the log base 10 of the values in the data matrix.
-	|
-	| Note that negative intensities become missing values regardless of the choice made here.
-	|
-
-Imputation of missing values (default = '``zero``')
-	| '``none``' - Do not impute data matrix values.
-	| '``zero``' - Negative and missing values are imputed to zero.
-	| '``center``' - For each feature, negative and missing values are imputed to the median of other values.
-	|
-	| Note well: For '``none``' option, '``Compute centers for classes``' cannot be set to '``medoid``'.
-	|
-
-Columns that specify order for samples (default = '``sampleMetadata``')
-	| names of the columns in **sampleMetadata** that is used to sort samples; only letters, digits, periods, and underscores are permitted.
-	| (Separate column names with commas, without any extra space characters.)
-	|
-
-Columns that specify order for features (default = '``variableMetadata``')
-	| names of the columns in **variableMetadata** that is used to sort features; only letters, digits, periods, and underscores are permitted.
-	| (Separate column names with commas, without any extra space characters.)
-	|
-
-Compute centers for classes, e.g., treatments (default = '``none``')
-	| '``none``' - Return all samples; do not compute centers for classes/treatments.
-	| '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
-	| '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
-	| '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).
-	|
-	| Note well: For '``medoid``' option, '``Imputation of missing values``' cannot be set to '``none``'.
-	|
-
-------------
-Output files
-------------
-
-sampleMetadata
-	| (tab-separated values) file.
-	| If centering is '``none``' or  '``medoid``', this will be identical to the **sampleMetadata** file given as an input argument, excepting lacking rows for samples that have been filtered out (by the sample-class filter, or because of zero variance, or because they were missing in the input data matrix)
-	| If centering is '``centroid``' or  '``median``', most columns will be replaced with the treatment name and the number of samples for that treatment.
-	|
-
-variableMetadata
-	| (tab-separated values) file identical to the **variableMetadata** file given as an input argument, excepting lacking rows for variables (LC-MS features) that have been filtered out (by the variable-range filter, or because of zero variance, or because they were missing in the input data matrix)
-	|
-
-dataMatrix
-	| (tab-separated values) file identical to the **dataMatrix** file given as an input argument, excepting lacking rows and columns for variables and samples that have been filtered out, respectively
-	|
-
-
------------------------------------------
-Wild-card patterns to match class names
------------------------------------------
-
-W4M Data Subset supports use of "wild card" patterns to select class-names.
-
-- use '``?``' to match a single character
-- use '``*``' to match zero or more characters
-- the entire pattern must match the sample name
-
-For example
-
-- '``??.samp*``' matches '``my.sample``' but not '``my.own.sample``'
-- '``*.sample``' matches '``my.sample``' and '``my.own.sample``'
-- '``*.sampl``' matches neither '``my.sample``' nor '``my.own.sample``'
-
---------------------------------------------------
-Regular-expression patterns to match class names
---------------------------------------------------
-
-W4M Data Subset supports use of R "extended regular expression" patterns to select class-names.
-
-R extended regular expressions, which allow precise pattern-matching and are exhaustively defined at
-https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html
-
-However, only a few basic building blocks of regular expressions need to be mastered for most cases:
-
-- '``^``' matches the beginning of a class-name
-- '``$``' matches the end of a class-name
-- '``.``' outside of square brackets matches a single character
-- '``*``' matches character specified immediately before zero or more times
-- square brackets specify a set of characters to be matched.
-
-Within square brackets
-
-- '``^``' as the first character specifies that the list of characters are those that should **not** be matched.
-- '``-``' is used to specify ranges of characters
-
-Caveat: The tool wrapper uses the comma ('``,``') to split a list of sample-class names, so **commas may not be used within regular expressions for this tool**
-
-First Example: Consider a field of class-names consisting of '``marq3,marq6,marq9,marq12,front3,front6,front9,front12``'
-
-- The regular expression '``^front[0-9][0-9]*$``' will match the same sample-classes as '``front3,front6,front9,front12``'
-- The regular expression '``^[a-z][a-z]3$``' will match the same sample-classes as '``front3,marq3``'
-- The regular expression '``^[a-z][a-z]12$``' will match the same sample-classes as '``front12,marq12``'
-- The regular expression '``^[a-z][a-z][0-9]$``' will match the same sample-classes as '``front3,front6,front9,marq3,marq6,marq9``'
-
-Second Example: Consider these regular expression patterns as possible matches to a sample-class name '``AB0123``':
-
-- '``^[A-Z][A-Z][0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
-- '``^[A-Z][A-Z]*[0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
-- '``^[A-Z][0-9]*``' MATCHES '``**^A** B0123$``' - first character is a letter, '``*``' can specify zero characters, and end of line did not need to be matched.
-- '``^[A-Z][A-Z][0-9]``' MATCHES '``**^AB0** 123$``' - first two characters are letters aind the third is a digit.
-- '``^[A-Z][A-Z]*[0-9][0-9]$``' DOES NOT MATCH - the name does not end with the pattern '``[A-Z][0-9][0-9]$``', i.e., it ends with four digits, not two.
-- '``^[A-Z][0-9]*$``' DOES NOT MATCH - the pattern specifies that second character and all those that follow, if present, must be digits.
-
-----------------------
-Variable-range filters
-----------------------
-
-An array of range-specification strings may be supplied in the '``Variable-range filters``'
-argument.  If supplied, only features having numerical values in the specified column
-of **variableMetadata** that fall within the specified ranges will be retained
-in the output.  Each range is a string of three colon-separated values (e.g., '``mz:200:800``') in the
-following order:
-
-- the **name of a column** of **variableMetadata** which must have numerical data (only letters, digits, periods, and underscores are permitted in the name itself), e.g., '``mz``';
-- the **minimum allowed value** in that column for the feature to be retained, e.g., '``200``';
-- the **maximum allowed value**, e.g., '``800``'.
-
-Note for the range specification strings:
-
-- **If the "maximum" is less than the "minimum", then the range is exclusive**  (e.g., '``mz:800:200``' means retain only features whose mz is NOT in the range 200-800)
-- **If the name supplied in the first field** is '``FEATMAX``',  then the string is defining the **threshold for the maximum intensity** for each feature in the dataMatrix.
-
-  - For example, '``FEATMAX:1e6:``' would specify  that any feature would be excluded if no sample had an intensity for that feature greater than 1,000,000.
-  - Although a maximum may be specified, it seems unlikely that this would be useful. Note that when the "maximum" is less than the "minimum" for the FEATMAX range specification, then the specification is ignored.
-
-----------------------------------
-Data transformation and imputation
-----------------------------------
-
-Data may optionally be log2- or log10-transformed.
-
-Negative intensities are always substituted with missing values before imputation, even when no transformation is chosen.
-
-Missing intensity data values may optionally be imputed.  Missing values may be substituted:
-
-- with zeros (as may be appropriate for univariate analysis)
-- with the median for the feature (as may be appropriate for multivariate analysis).
-
-  - Note that the median feature-intensity is computed for the samples *before* variable-range filters are applied.
-
------------------------------------------
-Optional Computation of Treatment Centers
------------------------------------------
-
-A "center" for each treatment may be computed in lieu of all the samples for each treatment.
-
-- '``none``' - Return all samples; do not compute centers.
-- '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
-- '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
-- '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).  This choice requires that the '``Imputation of missing values``' argument must not be set to '``none``'.
-
-The medoid is the sample having the smallest sum of its distances from other samples in the treatment:
-
-- Because principal components are uncorrelated, distances are computed in the space defined by the principal-component scores to minimize the distortion of computed distances by correlated features.
-- Because principal components are used to compute distances, no missing values are permitted, which is why the '``Imputation of missing values``' argument must not be set to '``none``'.
-- The distances are used to identify the medoid using code adapted from https://web.archive.org/web/20191231012914/https://www.biostars.org/p/11987/#11989
-
------------------------------------------------------------------------------
-
-----------------
-WORKING EXAMPLES
-----------------
-
------------
-Input Files
------------
-
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Input File URL                                                                                                                                       |
-+======================================================================================================================================================+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_dataMatrix.tsv                |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_sampleMetadata.tsv            |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_variableMetadata.tsv          |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-
--------------------------------
-Example without Range-Filtering
--------------------------------
-
-This example retains only samples whose '``gender``' attribute is '``M``'.
-
-**Input parameters**
-
-+---------------------------------------------+-------------------------------+
-| Input Parameter                             | Value                         |
-+=============================================+===============================+
-| Column that names the sample class          | gender                        |
-+---------------------------------------------+-------------------------------+
-| Sample-class names                          | M                             |
-+---------------------------------------------+-------------------------------+
-| Exclude/include named classes               | filter-in                     |
-+---------------------------------------------+-------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | wild-cards                    |
-+---------------------------------------------+-------------------------------+
-| Variable range-filters                      | (Leave this field empty.)     |
-+---------------------------------------------+-------------------------------+
-| Data transformation                         | none                          |
-+---------------------------------------------+-------------------------------+
-| Missing-value imputation                    | center                        |
-+---------------------------------------------+-------------------------------+
-| Sample-sort column                          | sampleMetadata                |
-+---------------------------------------------+-------------------------------+
-| Feature-sort column                         | variableMetadata              |
-+---------------------------------------------+-------------------------------+
-| Compute centers for classes                 | none                          |
-+---------------------------------------------+-------------------------------+
-
-**Expected outputs**
-
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                                                               |
-+===================+=================================================================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_dataMatrix.tsv        |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv    |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv  |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-
-----------------------------
-Example with Range-Filtering
-----------------------------
-
-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.
-This example retains all samples (except those having zero variance for all feature), although it would be possible to filter on samples as well.
-
-**Input parameters**
-
-+---------------------------------------------+-----------------------------------+
-| Input Parameter                             | Value                             |
-+=============================================+===================================+
-| Column that names the sample class          | sampleMetadata                    |
-+---------------------------------------------+-----------------------------------+
-| Sample-class names                          | HU_13[48]                         |
-+---------------------------------------------+-----------------------------------+
-| Exclude/include named classes               | filter-out                        |
-+---------------------------------------------+-----------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | regular-expressions               |
-+---------------------------------------------+-----------------------------------+
-| Variable range-filters                      | FEATMAX:20.93157:,mz:200:,rt::800 |
-+---------------------------------------------+-----------------------------------+
-| Data transformation                         | log2                              |
-+---------------------------------------------+-----------------------------------+
-| Missing-value imputation                    | zero                              |
-+---------------------------------------------+-----------------------------------+
-| Sample-sort column                          | sampleMetadata                    |
-+---------------------------------------------+-----------------------------------+
-| Feature-sort column                         | variableMetadata                  |
-+---------------------------------------------+-----------------------------------+
-| Compute centers for classes                 | none                              |
-+---------------------------------------------+-----------------------------------+
-
-**Expected outputs**
-
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                                                                 |
-+===================+===================================================================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv       |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv   |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-
---------------------------------
-Example with Treatment-Centering
---------------------------------
-
-This example retains only the samples that are medoids for their gender.
-
-**Input parameters**
-
-+---------------------------------------------+-----------------------------------+
-| Input Parameter                             | Value                             |
-+=============================================+===================================+
-| Column that names the sample class          | gender                            |
-+---------------------------------------------+-----------------------------------+
-| Sample-class names                          | (Leave this field empty.)         |
-+---------------------------------------------+-----------------------------------+
-| Exclude/include named classes               | filter-out                        |
-+---------------------------------------------+-----------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | wild-cards                        |
-+---------------------------------------------+-----------------------------------+
-| Variable range-filters                      | (Leave this field empty.)         |
-+---------------------------------------------+-----------------------------------+
-| Data transformation                         | none                              |
-+---------------------------------------------+-----------------------------------+
-| Missing-value imputation                    | zero                              |
-+---------------------------------------------+-----------------------------------+
-| Sample-sort column                          | gender                            |
-+---------------------------------------------+-----------------------------------+
-| Feature-sort column                         | rt                                |
-+---------------------------------------------+-----------------------------------+
-| Compute centers for classes                 | medoid                            |
-+---------------------------------------------+-----------------------------------+
-
-**Expected outputs**
-
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                        |
-+===================+==========================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_dm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_sm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_vm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-    ]]></help>
-    <citations>
-        <!-- Giacomoni_2014 W4M 2.5 -->
-        <citation type="doi">10.1093/bioinformatics/btu813</citation>
-        <!-- Guitton_2017 W4M 3.0 -->
-        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>
-        <!-- Kuhl_2012 CAMERA -->
-        <citation type="doi">10.1021/ac202450g</citation>
-        <!-- Smith_2006 XCMS -->
-        <citation type="doi">10.1021/ac051437y</citation>
-        <!-- Thevenot_2015 Urinary metabolome statistics -->
-        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>
-    </citations>
-    <!--
-     vim:noet:sw=4:ts=4
---> </tool>
--- a/tools/w4mclassfilter/LICENSE	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-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.
--- a/tools/w4mclassfilter/README	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +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
-https://workflow4metabolomics.org
-
-flavor of Galaxy
-https://galaxyproject.org
-
-The tool is tested and deployed with Planemo
-https://planemo.readthedocs.io/en/latest
--- a/tools/w4mclassfilter/quick_test.sh	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/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"
--- a/tools/w4mclassfilter/run_serve.sh	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#!/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 .
-
--- a/tools/w4mclassfilter/run_test.sh	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/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"
--- a/tools/w4mclassfilter/test-data/exp_med1_medoid_dm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-	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
--- a/tools/w4mclassfilter/test-data/exp_med1_medoid_sm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-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
--- a/tools/w4mclassfilter/test-data/exp_med1_medoid_vm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-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
--- a/tools/w4mclassfilter/test-data/expected_dataMatrix.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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	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
--- a/tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/input_dataMatrix.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/input_med1_dm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-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
--- a/tools/w4mclassfilter/test-data/input_med1_sm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-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
--- a/tools/w4mclassfilter/test-data/input_med1_vm.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-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
--- a/tools/w4mclassfilter/test-data/input_nofilter_dataMatrix.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/input_sampleMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/input_variableMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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_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
--- a/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +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_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
--- a/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
--- a/tools/w4mclassfilter/test_log.txt	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1670 +0,0 @@
-git --git-dir /home/rstudio/.planemo/gx_repo config remote.origin.fetch '+refs/*:refs/*'
-git --git-dir /home/rstudio/.planemo/gx_repo config remote.origin.mirror true
-git --git-dir /home/rstudio/.planemo/gx_repo remote update >/dev/null 2>&1
-galaxy.util.commands WARNING: Passing program arguments as a string may be a security hazard if combined with untrusted input
-git clone --branch master /home/rstudio/.planemo/gx_repo /tmp/tmp0krucrv3/galaxy-dev
-Cloning into '/tmp/tmp0krucrv3/galaxy-dev'...
-done.
-Updating files:  39% (2112/5412)
Updating files:  40% (2165/5412)
Updating files:  41% (2219/5412)
Updating files:  42% (2274/5412)
Updating files:  43% (2328/5412)
Updating files:  44% (2382/5412)
Updating files:  45% (2436/5412)
Updating files:  46% (2490/5412)
Updating files:  47% (2544/5412)
Updating files:  48% (2598/5412)
Updating files:  49% (2652/5412)
Updating files:  50% (2706/5412)
Updating files:  51% (2761/5412)
Updating files:  52% (2815/5412)
Updating files:  53% (2869/5412)
Updating files:  54% (2923/5412)
Updating files:  55% (2977/5412)
Updating files:  56% (3031/5412)
Updating files:  57% (3085/5412)
Updating files:  57% (3097/5412)
Updating files:  58% (3139/5412)
Updating files:  59% (3194/5412)
Updating files:  60% (3248/5412)
Updating files:  61% (3302/5412)
Updating files:  62% (3356/5412)
Updating files:  63% (3410/5412)
Updating files:  64% (3464/5412)
Updating files:  65% (3518/5412)
Updating files:  66% (3572/5412)
Updating files:  67% (3627/5412)
Updating files:  68% (3681/5412)
Updating files:  69% (3735/5412)
Updating files:  70% (3789/5412)
Updating files:  71% (3843/5412)
Updating files:  72% (3897/5412)
Updating files:  73% (3951/5412)
Updating files:  74% (4005/5412)
Updating files:  75% (4059/5412)
Updating files:  76% (4114/5412)
Updating files:  77% (4168/5412)
Updating files:  78% (4222/5412)
Updating files:  79% (4276/5412)
Updating files:  80% (4330/5412)
Updating files:  81% (4384/5412)
Updating files:  82% (4438/5412)
Updating files:  83% (4492/5412)
Updating files:  84% (4547/5412)
Updating files:  85% (4601/5412)
Updating files:  86% (4655/5412)
Updating files:  87% (4709/5412)
Updating files:  88% (4763/5412)
Updating files:  89% (4817/5412)
Updating files:  90% (4871/5412)
Updating files:  91% (4925/5412)
Updating files:  92% (4980/5412)
Updating files:  93% (5034/5412)
Updating files:  94% (5088/5412)
Updating files:  95% (5142/5412)
Updating files:  96% (5196/5412)
Updating files:  97% (5250/5412)
Updating files:  98% (5304/5412)
Updating files:  99% (5358/5412)
Updating files: 100% (5412/5412)
Updating files: 100% (5412/5412), done.
-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}
-galaxy.util.commands WARNING: Passing program arguments as a string may be a security hazard if combined with untrusted input
-Activated a virtualenv for Galaxy
-/home/rstudio/.planemo/gx_venv_3
-Set COMMON_STARTUP_ARGS to --dev-wheels
-Initializing tool-data/shared/ucsc/builds.txt from builds.txt.sample
-Initializing tool-data/shared/ucsc/manual_builds.txt from manual_builds.txt.sample
-Initializing static/welcome.html from welcome.html.sample
-Activating virtualenv at /home/rstudio/.planemo/gx_venv_3
-Requirement already satisfied: pip>=8.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (21.0.1)
-Looking in indexes: https://wheels.galaxyproject.org/simple, https://pypi.python.org/simple
-Ignoring importlib-metadata: markers 'python_version < "3.8"' don't match your environment
-Ignoring importlib-resources: markers 'python_version < "3.7"' don't match your environment
-Ignoring pathlib2: markers 'python_version < "3.6"' don't match your environment
-Ignoring ruamel.yaml.clib: markers 'platform_python_implementation == "CPython" and python_version < "3.8"' don't match your environment
-Ignoring typing: markers 'python_version < "3.5"' don't match your environment
-Ignoring zipp: markers 'python_version < "3.8"' don't match your environment
-Ignoring importlib-metadata: markers 'python_version < "3.8"' don't match your environment
-Ignoring pathlib2: markers 'python_version < "3.6"' don't match your environment
-Ignoring zipp: markers 'python_version < "3.8"' don't match your environment
-Requirement already satisfied: adal==1.2.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (1.2.4)
-Requirement already satisfied: amqp==2.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 4)) (2.6.0)
-Requirement already satisfied: appdirs==1.4.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 5)) (1.4.4)
-Requirement already satisfied: attmap==0.12.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 6)) (0.12.11)
-Requirement already satisfied: attrs==19.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 7)) (19.3.0)
-Requirement already satisfied: azure-common==1.1.14 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 8)) (1.1.14)
-Requirement already satisfied: azure-cosmosdb-nspkg==2.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 9)) (2.0.2)
-Requirement already satisfied: azure-cosmosdb-table==1.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 10)) (1.0.4)
-Requirement already satisfied: azure-mgmt-compute==4.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 11)) (4.0.1)
-Requirement already satisfied: azure-mgmt-devtestlabs==2.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 12)) (2.2.0)
-Requirement already satisfied: azure-mgmt-network==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 13)) (2.1.0)
-Requirement already satisfied: azure-mgmt-nspkg==3.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 14)) (3.0.2)
-Requirement already satisfied: azure-mgmt-resource==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 15)) (2.0.0)
-Requirement already satisfied: azure-mgmt-storage==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 16)) (2.0.0)
-Requirement already satisfied: azure-nspkg==3.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 17)) (3.0.2)
-Requirement already satisfied: azure-storage-blob==1.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 18)) (1.3.1)
-Requirement already satisfied: azure-storage-common==1.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 19)) (1.4.2)
-Requirement already satisfied: azure-storage-nspkg==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 20)) (3.1.0)
-Requirement already satisfied: babel==2.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 21)) (2.8.0)
-Requirement already satisfied: bagit==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 22)) (1.7.0)
-Requirement already satisfied: bcrypt==3.1.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 23)) (3.1.7)
-Requirement already satisfied: bdbag==1.5.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 24)) (1.5.6)
-Requirement already satisfied: beaker==1.11.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 25)) (1.11.0)
-Requirement already satisfied: bioblend==0.13.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 26)) (0.13.0)
-Requirement already satisfied: bleach==3.1.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 27)) (3.1.5)
-Requirement already satisfied: boltons==20.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 28)) (20.2.0)
-Requirement already satisfied: boto3==1.9.114 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 29)) (1.9.114)
-Requirement already satisfied: boto==2.49.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 30)) (2.49.0)
-Requirement already satisfied: botocore==1.12.253 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 31)) (1.12.253)
-Requirement already satisfied: bx-python==0.8.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 32)) (0.8.9)
-Requirement already satisfied: cachecontrol==0.11.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 33)) (0.11.7)
-Requirement already satisfied: cachetools==4.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 34)) (4.1.0)
-Requirement already satisfied: certifi==2020.6.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 35)) (2020.6.20)
-Requirement already satisfied: cffi==1.14.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 36)) (1.14.0)
-Requirement already satisfied: chardet==3.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 37)) (3.0.4)
-Requirement already satisfied: cheetah3==3.2.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 38)) (3.2.5)
-Requirement already satisfied: cliff==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 39)) (3.1.0)
-Requirement already satisfied: cloudauthz==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 40)) (0.6.0)
-Requirement already satisfied: cloudbridge==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 41)) (2.0.0)
-Requirement already satisfied: cmd2==0.8.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 42)) (0.8.9)
-Requirement already satisfied: coloredlogs==14.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 43)) (14.0)
-Requirement already satisfied: cryptography==3.2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 44)) (3.2.1)
-Requirement already satisfied: cwltool==1.0.20191225192155 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 45)) (1.0.20191225192155)
-Requirement already satisfied: debtcollector==1.22.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 46)) (1.22.0)
-Requirement already satisfied: decorator==4.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 47)) (4.4.2)
-Requirement already satisfied: defusedxml==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 48)) (0.6.0)
-Requirement already satisfied: deprecated==1.2.10 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 49)) (1.2.10)
-Requirement already satisfied: deprecation==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 50)) (2.1.0)
-Requirement already satisfied: dictobj==0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 51)) (0.4)
-Requirement already satisfied: docopt==0.6.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 52)) (0.6.2)
-Requirement already satisfied: docutils==0.15.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 53)) (0.15.2)
-Requirement already satisfied: dogpile.cache==0.9.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 54)) (0.9.2)
-Requirement already satisfied: ecdsa==0.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 55)) (0.15)
-Requirement already satisfied: fabric3==1.14.post1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 56)) (1.14.post1)
-Requirement already satisfied: future==0.18.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 57)) (0.18.2)
-Requirement already satisfied: futures==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 58)) (3.1.1)
-Requirement already satisfied: galaxy-sequence-utils==1.1.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 59)) (1.1.5)
-Requirement already satisfied: google-api-python-client==1.7.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 60)) (1.7.8)
-Requirement already satisfied: google-auth-httplib2==0.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 61)) (0.0.3)
-Requirement already satisfied: google-auth==1.18.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 62)) (1.18.0)
-Requirement already satisfied: gxformat2==0.11.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 63)) (0.11.3)
-Requirement already satisfied: h5py==2.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 64)) (2.10.0)
-Requirement already satisfied: httplib2==0.18.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 65)) (0.18.1)
-Requirement already satisfied: humanfriendly==8.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 66)) (8.2)
-Requirement already satisfied: idna==2.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 67)) (2.9)
-Requirement already satisfied: isa-rwval==0.10.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 70)) (0.10.9)
-Requirement already satisfied: iso8601==0.1.12 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 71)) (0.1.12)
-Requirement already satisfied: isodate==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 72)) (0.6.0)
-Requirement already satisfied: jmespath==0.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 73)) (0.10.0)
-Requirement already satisfied: jsonpatch==1.26 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 74)) (1.26)
-Requirement already satisfied: jsonpointer==2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 75)) (2.0)
-Requirement already satisfied: jsonschema==3.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 76)) (3.2.0)
-Requirement already satisfied: keystoneauth1==4.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 77)) (4.1.0)
-Requirement already satisfied: kombu==4.6.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 78)) (4.6.11)
-Requirement already satisfied: lockfile==0.12.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 79)) (0.12.2)
-Requirement already satisfied: lxml==4.6.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 80)) (4.6.2)
-Requirement already satisfied: mako==1.1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 81)) (1.1.3)
-Requirement already satisfied: markdown==3.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 82)) (3.2.2)
-Requirement already satisfied: markupsafe==1.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 83)) (1.1.1)
-Requirement already satisfied: mercurial==5.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 84)) (5.4.1)
-Requirement already satisfied: mistune==0.8.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 85)) (0.8.4)
-Requirement already satisfied: msgpack==1.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 86)) (1.0.0)
-Requirement already satisfied: msrest==0.5.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 87)) (0.5.5)
-Requirement already satisfied: msrestazure==0.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 88)) (0.5.0)
-Requirement already satisfied: munch==2.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 89)) (2.5.0)
-Requirement already satisfied: mypy-extensions==0.4.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 90)) (0.4.3)
-Requirement already satisfied: netaddr==0.7.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 91)) (0.7.20)
-Requirement already satisfied: netifaces==0.10.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 92)) (0.10.9)
-Requirement already satisfied: networkx==1.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 93)) (1.11)
-Requirement already satisfied: nodeenv==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 94)) (1.4.0)
-Requirement already satisfied: nose==1.3.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 95)) (1.3.7)
-Requirement already satisfied: numpy==1.18.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 96)) (1.18.5)
-Requirement already satisfied: oauth2client==4.1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 97)) (4.1.3)
-Requirement already satisfied: oauthlib==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 98)) (3.1.0)
-Requirement already satisfied: openstacksdk==0.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 99)) (0.17.0)
-Requirement already satisfied: os-client-config==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 100)) (2.1.0)
-Requirement already satisfied: os-service-types==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 101)) (1.7.0)
-Requirement already satisfied: osc-lib==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 102)) (2.0.0)
-Requirement already satisfied: oslo.config==7.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 103)) (7.0.0)
-Requirement already satisfied: oslo.context==2.23.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 104)) (2.23.1)
-Requirement already satisfied: oslo.i18n==3.25.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 105)) (3.25.1)
-Requirement already satisfied: oslo.log==3.45.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 106)) (3.45.2)
-Requirement already satisfied: oslo.serialization==2.29.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 107)) (2.29.2)
-Requirement already satisfied: oslo.utils==3.42.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 108)) (3.42.1)
-Requirement already satisfied: oyaml==0.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 109)) (0.9)
-Requirement already satisfied: packaging==20.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 110)) (20.4)
-Requirement already satisfied: paramiko==2.7.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 111)) (2.7.1)
-Requirement already satisfied: parsley==1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 112)) (1.3)
-Requirement already satisfied: paste==3.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 113)) (3.4.1)
-Requirement already satisfied: pastedeploy==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 114)) (2.1.0)
-Requirement already satisfied: pastescript==3.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 115)) (3.2.0)
-Requirement already satisfied: pbr==5.4.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 117)) (5.4.5)
-Requirement already satisfied: prettytable==0.7.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 118)) (0.7.2)
-Requirement already satisfied: prov==1.5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 119)) (1.5.1)
-Requirement already satisfied: psutil==5.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 120)) (5.7.0)
-Requirement already satisfied: pulsar-galaxy-lib==0.14.0.dev4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 121)) (0.14.0.dev4)
-Requirement already satisfied: pyasn1-modules==0.2.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 122)) (0.2.8)
-Requirement already satisfied: pyasn1==0.4.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 123)) (0.4.8)
-Requirement already satisfied: pycparser==2.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 124)) (2.20)
-Requirement already satisfied: pycryptodome==3.9.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 125)) (3.9.7)
-Requirement already satisfied: pyeventsystem==0.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 126)) (0.1.0)
-Requirement already satisfied: pyinotify==0.9.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 127)) (0.9.6)
-Requirement already satisfied: pyjwt==1.7.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 128)) (1.7.1)
-Requirement already satisfied: pykwalify==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 129)) (1.7.0)
-Requirement already satisfied: pynacl==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 130)) (1.4.0)
-Requirement already satisfied: pyopenssl==19.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 131)) (19.1.0)
-Requirement already satisfied: pyparsing==2.4.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 132)) (2.4.7)
-Requirement already satisfied: pyperclip==1.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 133)) (1.8.0)
-Requirement already satisfied: pyrsistent==0.16.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 134)) (0.16.0)
-Requirement already satisfied: pysam==0.16.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 135)) (0.16.0.1)
-Requirement already satisfied: pysftp==0.2.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 136)) (0.2.9)
-Requirement already satisfied: python-cinderclient==4.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 137)) (4.0.0)
-Requirement already satisfied: python-dateutil==2.8.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 138)) (2.8.1)
-Requirement already satisfied: python-glanceclient==2.12.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 139)) (2.12.0)
-Requirement already satisfied: python-jose==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 140)) (3.1.0)
-Requirement already satisfied: python-keystoneclient==3.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 141)) (3.17.0)
-Requirement already satisfied: python-neutronclient==6.9.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 142)) (6.9.0)
-Requirement already satisfied: python-novaclient==11.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 143)) (11.0.0)
-Requirement already satisfied: python-swiftclient==3.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 144)) (3.6.0)
-Requirement already satisfied: python3-openid==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 145)) (3.1.0)
-Requirement already satisfied: pytz==2020.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 146)) (2020.1)
-Requirement already satisfied: pyuwsgi==2.0.19.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 147)) (2.0.19.1)
-Requirement already satisfied: pyyaml==5.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 148)) (5.3.1)
-Requirement already satisfied: rdflib-jsonld==0.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 149)) (0.4.0)
-Requirement already satisfied: rdflib==4.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 150)) (4.2.2)
-Requirement already satisfied: refgenconf==0.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 151)) (0.7.0)
-Requirement already satisfied: repoze.lru==0.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 152)) (0.7)
-Requirement already satisfied: requests-oauthlib==1.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 153)) (1.3.0)
-Requirement already satisfied: requests-toolbelt==0.9.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 154)) (0.9.1)
-Requirement already satisfied: requests==2.24.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 155)) (2.24.0)
-Requirement already satisfied: requestsexceptions==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 156)) (1.4.0)
-Requirement already satisfied: rfc3986==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 157)) (1.4.0)
-Requirement already satisfied: routes==2.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 158)) (2.4.1)
-Requirement already satisfied: rsa==4.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 159)) (4.6)
-Requirement already satisfied: ruamel.yaml==0.16.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 161)) (0.16.0)
-Requirement already satisfied: s3transfer==0.2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 162)) (0.2.1)
-Requirement already satisfied: scandir==1.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 163)) (1.10.0)
-Requirement already satisfied: schema-salad==4.5.20191229160203 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 164)) (4.5.20191229160203)
-Requirement already satisfied: setuptools-scm==4.1.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 165)) (4.1.2)
-Requirement already satisfied: shellescape==3.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 166)) (3.4.1)
-Requirement already satisfied: simplejson==3.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 167)) (3.17.0)
-Requirement already satisfied: six==1.15.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 168)) (1.15.0)
-Requirement already satisfied: social-auth-core[openidconnect]==3.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 169)) (3.3.0)
-Requirement already satisfied: sortedcontainers==2.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 170)) (2.2.2)
-Requirement already satisfied: sqlalchemy-migrate==0.13.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 171)) (0.13.0)
-Requirement already satisfied: sqlalchemy-utils==0.36.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 172)) (0.36.6)
-Requirement already satisfied: sqlalchemy==1.3.17 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 173)) (1.3.17)
-Requirement already satisfied: sqlitedict==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 174)) (1.7.0)
-Requirement already satisfied: sqlparse==0.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 175)) (0.3.1)
-Requirement already satisfied: stevedore==1.32.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 176)) (1.32.0)
-Requirement already satisfied: svgwrite==1.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 177)) (1.3.1)
-Requirement already satisfied: tempita==0.5.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 178)) (0.5.2)
-Requirement already satisfied: tenacity==4.12.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 179)) (4.12.0)
-Requirement already satisfied: tqdm==4.46.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 180)) (4.46.1)
-Requirement already satisfied: typing-extensions==3.7.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 181)) (3.7.4.2)
-Requirement already satisfied: tzlocal==2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 183)) (2.1)
-Requirement already satisfied: ubiquerg==0.5.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 184)) (0.5.2)
-Requirement already satisfied: unidecode==1.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 185)) (1.1.1)
-Requirement already satisfied: uritemplate==3.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 186)) (3.0.1)
-Requirement already satisfied: urllib3==1.25.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 187)) (1.25.9)
-Requirement already satisfied: vine==1.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 188)) (1.3.0)
-Requirement already satisfied: warlock==1.3.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 189)) (1.3.3)
-Requirement already satisfied: wcwidth==0.2.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 190)) (0.2.5)
-Requirement already satisfied: webencodings==0.5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 191)) (0.5.1)
-Requirement already satisfied: webob==1.8.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 192)) (1.8.6)
-Requirement already satisfied: whoosh==2.7.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 193)) (2.7.4)
-Requirement already satisfied: wrapt==1.12.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 194)) (1.12.1)
-Requirement already satisfied: yacman==0.6.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 195)) (0.6.7)
-Requirement already satisfied: alabaster==0.7.12 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 3)) (0.7.12)
-Requirement already satisfied: commonmark==0.9.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 8)) (0.9.1)
-Requirement already satisfied: coverage==5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 9)) (5.1)
-Requirement already satisfied: gunicorn==20.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 12)) (20.0.4)
-Requirement already satisfied: imagesize==1.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 14)) (1.2.0)
-Requirement already satisfied: jinja2==2.11.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 16)) (2.11.2)
-Requirement already satisfied: mirakuru==2.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 20)) (2.0.2)
-Requirement already satisfied: mock==3.0.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 21)) (3.0.5)
-Requirement already satisfied: more-itertools==8.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 22)) (8.4.0)
-Requirement already satisfied: nosehtml==0.4.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 24)) (0.4.6)
-Requirement already satisfied: pathtools==0.1.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 27)) (0.1.2)
-Requirement already satisfied: pluggy==0.13.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 28)) (0.13.1)
-Requirement already satisfied: port-for==0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 29)) (0.4)
-Requirement already satisfied: py==1.8.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 32)) (1.8.2)
-Requirement already satisfied: pygithub==1.51 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 33)) (1.51)
-Requirement already satisfied: pygments==2.6.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 34)) (2.6.1)
-Requirement already satisfied: pytest-cov==2.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 37)) (2.10.0)
-Requirement already satisfied: pytest-html==1.22.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 38)) (1.22.1)
-Requirement already satisfied: pytest-metadata==1.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 39)) (1.8.0)
-Requirement already satisfied: pytest-mock==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 40)) (3.1.1)
-Requirement already satisfied: pytest-postgresql==2.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 41)) (2.3.0)
-Requirement already satisfied: pytest-pythonpath==0.7.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 42)) (0.7.3)
-Requirement already satisfied: pytest==5.4.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 43)) (5.4.3)
-Requirement already satisfied: python-irodsclient==0.8.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 44)) (0.8.3)
-Requirement already satisfied: recommonmark==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 46)) (0.6.0)
-Requirement already satisfied: responses==0.10.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 48)) (0.10.15)
-Requirement already satisfied: selenium==3.141.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 49)) (3.141.0)
-Requirement already satisfied: snowballstemmer==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 51)) (2.0.0)
-Requirement already satisfied: sphinx-markdown-tables==0.0.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 52)) (0.0.15)
-Requirement already satisfied: sphinx-rtd-theme==0.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 53)) (0.5.0)
-Requirement already satisfied: sphinx==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 54)) (3.1.1)
-Requirement already satisfied: sphinxcontrib-applehelp==1.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 55)) (1.0.2)
-Requirement already satisfied: sphinxcontrib-devhelp==1.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 56)) (1.0.2)
-Requirement already satisfied: sphinxcontrib-htmlhelp==1.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 57)) (1.0.3)
-Requirement already satisfied: sphinxcontrib-jsmath==1.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 58)) (1.0.1)
-Requirement already satisfied: sphinxcontrib-qthelp==1.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 59)) (1.0.3)
-Requirement already satisfied: sphinxcontrib-serializinghtml==1.1.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 60)) (1.1.4)
-Requirement already satisfied: testfixtures==6.14.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 61)) (6.14.1)
-Requirement already satisfied: twill==2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 62)) (2.0)
-Requirement already satisfied: watchdog==0.10.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 64)) (0.10.2)
-Requirement already satisfied: xmlrunner==1.7.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 67)) (1.7.7)
-Requirement already satisfied: setuptools in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from cwltool==1.0.20191225192155->-r requirements.txt (line 45)) (52.0.0)
-Requirement already satisfied: pathlib2!=2.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from cwltool==1.0.20191225192155->-r requirements.txt (line 45)) (2.3.5)
-The Galaxy client build is being skipped due to the SKIP_CLIENT_BUILD environment variable.
-Testing using galaxy_root /tmp/tmp0krucrv3/galaxy-dev
-Testing tools with command [cd /tmp/tmp0krucrv3/galaxy-dev && 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 && ./run_tests.sh $COMMON_STARTUP_ARGS --report_file /home/rstudio/src/w4mclassfilter_galaxy_wrapper/tools/w4mclassfilter/tool_test_output.html --xunit_report_file /tmp/tmp0krucrv3/xunit.xml --structured_data_report_file /home/rstudio/src/w4mclassfilter_galaxy_wrapper/tools/w4mclassfilter/tool_test_output.json functional.test_toolbox]
-galaxy.util.commands WARNING: Passing program arguments as a string may be a security hazard if combined with untrusted input
-Activated a virtualenv for Galaxy
-/home/rstudio/.planemo/gx_venv_3
-Activating virtualenv at /home/rstudio/.planemo/gx_venv_3
-Requirement already satisfied: pip>=8.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (21.0.1)
-Looking in indexes: https://wheels.galaxyproject.org/simple, https://pypi.python.org/simple
-Ignoring importlib-metadata: markers 'python_version < "3.8"' don't match your environment
-Ignoring importlib-resources: markers 'python_version < "3.7"' don't match your environment
-Ignoring pathlib2: markers 'python_version < "3.6"' don't match your environment
-Ignoring ruamel.yaml.clib: markers 'platform_python_implementation == "CPython" and python_version < "3.8"' don't match your environment
-Ignoring typing: markers 'python_version < "3.5"' don't match your environment
-Ignoring zipp: markers 'python_version < "3.8"' don't match your environment
-Ignoring importlib-metadata: markers 'python_version < "3.8"' don't match your environment
-Ignoring pathlib2: markers 'python_version < "3.6"' don't match your environment
-Ignoring zipp: markers 'python_version < "3.8"' don't match your environment
-Requirement already satisfied: adal==1.2.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (1.2.4)
-Requirement already satisfied: amqp==2.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 4)) (2.6.0)
-Requirement already satisfied: appdirs==1.4.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 5)) (1.4.4)
-Requirement already satisfied: attmap==0.12.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 6)) (0.12.11)
-Requirement already satisfied: attrs==19.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 7)) (19.3.0)
-Requirement already satisfied: azure-common==1.1.14 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 8)) (1.1.14)
-Requirement already satisfied: azure-cosmosdb-nspkg==2.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 9)) (2.0.2)
-Requirement already satisfied: azure-cosmosdb-table==1.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 10)) (1.0.4)
-Requirement already satisfied: azure-mgmt-compute==4.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 11)) (4.0.1)
-Requirement already satisfied: azure-mgmt-devtestlabs==2.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 12)) (2.2.0)
-Requirement already satisfied: azure-mgmt-network==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 13)) (2.1.0)
-Requirement already satisfied: azure-mgmt-nspkg==3.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 14)) (3.0.2)
-Requirement already satisfied: azure-mgmt-resource==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 15)) (2.0.0)
-Requirement already satisfied: azure-mgmt-storage==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 16)) (2.0.0)
-Requirement already satisfied: azure-nspkg==3.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 17)) (3.0.2)
-Requirement already satisfied: azure-storage-blob==1.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 18)) (1.3.1)
-Requirement already satisfied: azure-storage-common==1.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 19)) (1.4.2)
-Requirement already satisfied: azure-storage-nspkg==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 20)) (3.1.0)
-Requirement already satisfied: babel==2.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 21)) (2.8.0)
-Requirement already satisfied: bagit==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 22)) (1.7.0)
-Requirement already satisfied: bcrypt==3.1.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 23)) (3.1.7)
-Requirement already satisfied: bdbag==1.5.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 24)) (1.5.6)
-Requirement already satisfied: beaker==1.11.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 25)) (1.11.0)
-Requirement already satisfied: bioblend==0.13.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 26)) (0.13.0)
-Requirement already satisfied: bleach==3.1.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 27)) (3.1.5)
-Requirement already satisfied: boltons==20.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 28)) (20.2.0)
-Requirement already satisfied: boto3==1.9.114 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 29)) (1.9.114)
-Requirement already satisfied: boto==2.49.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 30)) (2.49.0)
-Requirement already satisfied: botocore==1.12.253 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 31)) (1.12.253)
-Requirement already satisfied: bx-python==0.8.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 32)) (0.8.9)
-Requirement already satisfied: cachecontrol==0.11.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 33)) (0.11.7)
-Requirement already satisfied: cachetools==4.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 34)) (4.1.0)
-Requirement already satisfied: certifi==2020.6.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 35)) (2020.6.20)
-Requirement already satisfied: cffi==1.14.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 36)) (1.14.0)
-Requirement already satisfied: chardet==3.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 37)) (3.0.4)
-Requirement already satisfied: cheetah3==3.2.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 38)) (3.2.5)
-Requirement already satisfied: cliff==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 39)) (3.1.0)
-Requirement already satisfied: cloudauthz==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 40)) (0.6.0)
-Requirement already satisfied: cloudbridge==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 41)) (2.0.0)
-Requirement already satisfied: cmd2==0.8.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 42)) (0.8.9)
-Requirement already satisfied: coloredlogs==14.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 43)) (14.0)
-Requirement already satisfied: cryptography==3.2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 44)) (3.2.1)
-Requirement already satisfied: cwltool==1.0.20191225192155 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 45)) (1.0.20191225192155)
-Requirement already satisfied: debtcollector==1.22.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 46)) (1.22.0)
-Requirement already satisfied: decorator==4.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 47)) (4.4.2)
-Requirement already satisfied: defusedxml==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 48)) (0.6.0)
-Requirement already satisfied: deprecated==1.2.10 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 49)) (1.2.10)
-Requirement already satisfied: deprecation==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 50)) (2.1.0)
-Requirement already satisfied: dictobj==0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 51)) (0.4)
-Requirement already satisfied: docopt==0.6.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 52)) (0.6.2)
-Requirement already satisfied: docutils==0.15.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 53)) (0.15.2)
-Requirement already satisfied: dogpile.cache==0.9.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 54)) (0.9.2)
-Requirement already satisfied: ecdsa==0.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 55)) (0.15)
-Requirement already satisfied: fabric3==1.14.post1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 56)) (1.14.post1)
-Requirement already satisfied: future==0.18.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 57)) (0.18.2)
-Requirement already satisfied: futures==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 58)) (3.1.1)
-Requirement already satisfied: galaxy-sequence-utils==1.1.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 59)) (1.1.5)
-Requirement already satisfied: google-api-python-client==1.7.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 60)) (1.7.8)
-Requirement already satisfied: google-auth-httplib2==0.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 61)) (0.0.3)
-Requirement already satisfied: google-auth==1.18.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 62)) (1.18.0)
-Requirement already satisfied: gxformat2==0.11.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 63)) (0.11.3)
-Requirement already satisfied: h5py==2.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 64)) (2.10.0)
-Requirement already satisfied: httplib2==0.18.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 65)) (0.18.1)
-Requirement already satisfied: humanfriendly==8.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 66)) (8.2)
-Requirement already satisfied: idna==2.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 67)) (2.9)
-Requirement already satisfied: isa-rwval==0.10.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 70)) (0.10.9)
-Requirement already satisfied: iso8601==0.1.12 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 71)) (0.1.12)
-Requirement already satisfied: isodate==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 72)) (0.6.0)
-Requirement already satisfied: jmespath==0.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 73)) (0.10.0)
-Requirement already satisfied: jsonpatch==1.26 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 74)) (1.26)
-Requirement already satisfied: jsonpointer==2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 75)) (2.0)
-Requirement already satisfied: jsonschema==3.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 76)) (3.2.0)
-Requirement already satisfied: keystoneauth1==4.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 77)) (4.1.0)
-Requirement already satisfied: kombu==4.6.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 78)) (4.6.11)
-Requirement already satisfied: lockfile==0.12.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 79)) (0.12.2)
-Requirement already satisfied: lxml==4.6.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 80)) (4.6.2)
-Requirement already satisfied: mako==1.1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 81)) (1.1.3)
-Requirement already satisfied: markdown==3.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 82)) (3.2.2)
-Requirement already satisfied: markupsafe==1.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 83)) (1.1.1)
-Requirement already satisfied: mercurial==5.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 84)) (5.4.1)
-Requirement already satisfied: mistune==0.8.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 85)) (0.8.4)
-Requirement already satisfied: msgpack==1.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 86)) (1.0.0)
-Requirement already satisfied: msrest==0.5.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 87)) (0.5.5)
-Requirement already satisfied: msrestazure==0.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 88)) (0.5.0)
-Requirement already satisfied: munch==2.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 89)) (2.5.0)
-Requirement already satisfied: mypy-extensions==0.4.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 90)) (0.4.3)
-Requirement already satisfied: netaddr==0.7.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 91)) (0.7.20)
-Requirement already satisfied: netifaces==0.10.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 92)) (0.10.9)
-Requirement already satisfied: networkx==1.11 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 93)) (1.11)
-Requirement already satisfied: nodeenv==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 94)) (1.4.0)
-Requirement already satisfied: nose==1.3.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 95)) (1.3.7)
-Requirement already satisfied: numpy==1.18.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 96)) (1.18.5)
-Requirement already satisfied: oauth2client==4.1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 97)) (4.1.3)
-Requirement already satisfied: oauthlib==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 98)) (3.1.0)
-Requirement already satisfied: openstacksdk==0.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 99)) (0.17.0)
-Requirement already satisfied: os-client-config==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 100)) (2.1.0)
-Requirement already satisfied: os-service-types==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 101)) (1.7.0)
-Requirement already satisfied: osc-lib==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 102)) (2.0.0)
-Requirement already satisfied: oslo.config==7.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 103)) (7.0.0)
-Requirement already satisfied: oslo.context==2.23.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 104)) (2.23.1)
-Requirement already satisfied: oslo.i18n==3.25.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 105)) (3.25.1)
-Requirement already satisfied: oslo.log==3.45.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 106)) (3.45.2)
-Requirement already satisfied: oslo.serialization==2.29.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 107)) (2.29.2)
-Requirement already satisfied: oslo.utils==3.42.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 108)) (3.42.1)
-Requirement already satisfied: oyaml==0.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 109)) (0.9)
-Requirement already satisfied: packaging==20.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 110)) (20.4)
-Requirement already satisfied: paramiko==2.7.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 111)) (2.7.1)
-Requirement already satisfied: parsley==1.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 112)) (1.3)
-Requirement already satisfied: paste==3.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 113)) (3.4.1)
-Requirement already satisfied: pastedeploy==2.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 114)) (2.1.0)
-Requirement already satisfied: pastescript==3.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 115)) (3.2.0)
-Requirement already satisfied: pbr==5.4.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 117)) (5.4.5)
-Requirement already satisfied: prettytable==0.7.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 118)) (0.7.2)
-Requirement already satisfied: prov==1.5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 119)) (1.5.1)
-Requirement already satisfied: psutil==5.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 120)) (5.7.0)
-Requirement already satisfied: pulsar-galaxy-lib==0.14.0.dev4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 121)) (0.14.0.dev4)
-Requirement already satisfied: pyasn1-modules==0.2.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 122)) (0.2.8)
-Requirement already satisfied: pyasn1==0.4.8 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 123)) (0.4.8)
-Requirement already satisfied: pycparser==2.20 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 124)) (2.20)
-Requirement already satisfied: pycryptodome==3.9.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 125)) (3.9.7)
-Requirement already satisfied: pyeventsystem==0.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 126)) (0.1.0)
-Requirement already satisfied: pyinotify==0.9.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 127)) (0.9.6)
-Requirement already satisfied: pyjwt==1.7.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 128)) (1.7.1)
-Requirement already satisfied: pykwalify==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 129)) (1.7.0)
-Requirement already satisfied: pynacl==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 130)) (1.4.0)
-Requirement already satisfied: pyopenssl==19.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 131)) (19.1.0)
-Requirement already satisfied: pyparsing==2.4.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 132)) (2.4.7)
-Requirement already satisfied: pyperclip==1.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 133)) (1.8.0)
-Requirement already satisfied: pyrsistent==0.16.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 134)) (0.16.0)
-Requirement already satisfied: pysam==0.16.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 135)) (0.16.0.1)
-Requirement already satisfied: pysftp==0.2.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 136)) (0.2.9)
-Requirement already satisfied: python-cinderclient==4.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 137)) (4.0.0)
-Requirement already satisfied: python-dateutil==2.8.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 138)) (2.8.1)
-Requirement already satisfied: python-glanceclient==2.12.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 139)) (2.12.0)
-Requirement already satisfied: python-jose==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 140)) (3.1.0)
-Requirement already satisfied: python-keystoneclient==3.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 141)) (3.17.0)
-Requirement already satisfied: python-neutronclient==6.9.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 142)) (6.9.0)
-Requirement already satisfied: python-novaclient==11.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 143)) (11.0.0)
-Requirement already satisfied: python-swiftclient==3.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 144)) (3.6.0)
-Requirement already satisfied: python3-openid==3.1.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 145)) (3.1.0)
-Requirement already satisfied: pytz==2020.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 146)) (2020.1)
-Requirement already satisfied: pyuwsgi==2.0.19.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 147)) (2.0.19.1)
-Requirement already satisfied: pyyaml==5.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 148)) (5.3.1)
-Requirement already satisfied: rdflib-jsonld==0.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 149)) (0.4.0)
-Requirement already satisfied: rdflib==4.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 150)) (4.2.2)
-Requirement already satisfied: refgenconf==0.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 151)) (0.7.0)
-Requirement already satisfied: repoze.lru==0.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 152)) (0.7)
-Requirement already satisfied: requests-oauthlib==1.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 153)) (1.3.0)
-Requirement already satisfied: requests-toolbelt==0.9.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 154)) (0.9.1)
-Requirement already satisfied: requests==2.24.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 155)) (2.24.0)
-Requirement already satisfied: requestsexceptions==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 156)) (1.4.0)
-Requirement already satisfied: rfc3986==1.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 157)) (1.4.0)
-Requirement already satisfied: routes==2.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 158)) (2.4.1)
-Requirement already satisfied: rsa==4.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 159)) (4.6)
-Requirement already satisfied: ruamel.yaml==0.16.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 161)) (0.16.0)
-Requirement already satisfied: s3transfer==0.2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 162)) (0.2.1)
-Requirement already satisfied: scandir==1.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 163)) (1.10.0)
-Requirement already satisfied: schema-salad==4.5.20191229160203 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 164)) (4.5.20191229160203)
-Requirement already satisfied: setuptools-scm==4.1.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 165)) (4.1.2)
-Requirement already satisfied: shellescape==3.4.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 166)) (3.4.1)
-Requirement already satisfied: simplejson==3.17.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 167)) (3.17.0)
-Requirement already satisfied: six==1.15.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 168)) (1.15.0)
-Requirement already satisfied: social-auth-core[openidconnect]==3.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 169)) (3.3.0)
-Requirement already satisfied: sortedcontainers==2.2.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 170)) (2.2.2)
-Requirement already satisfied: sqlalchemy-migrate==0.13.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 171)) (0.13.0)
-Requirement already satisfied: sqlalchemy-utils==0.36.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 172)) (0.36.6)
-Requirement already satisfied: sqlalchemy==1.3.17 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 173)) (1.3.17)
-Requirement already satisfied: sqlitedict==1.7.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 174)) (1.7.0)
-Requirement already satisfied: sqlparse==0.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 175)) (0.3.1)
-Requirement already satisfied: stevedore==1.32.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 176)) (1.32.0)
-Requirement already satisfied: svgwrite==1.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 177)) (1.3.1)
-Requirement already satisfied: tempita==0.5.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 178)) (0.5.2)
-Requirement already satisfied: tenacity==4.12.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 179)) (4.12.0)
-Requirement already satisfied: tqdm==4.46.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 180)) (4.46.1)
-Requirement already satisfied: typing-extensions==3.7.4.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 181)) (3.7.4.2)
-Requirement already satisfied: tzlocal==2.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 183)) (2.1)
-Requirement already satisfied: ubiquerg==0.5.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 184)) (0.5.2)
-Requirement already satisfied: unidecode==1.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 185)) (1.1.1)
-Requirement already satisfied: uritemplate==3.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 186)) (3.0.1)
-Requirement already satisfied: urllib3==1.25.9 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 187)) (1.25.9)
-Requirement already satisfied: vine==1.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 188)) (1.3.0)
-Requirement already satisfied: warlock==1.3.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 189)) (1.3.3)
-Requirement already satisfied: wcwidth==0.2.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 190)) (0.2.5)
-Requirement already satisfied: webencodings==0.5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 191)) (0.5.1)
-Requirement already satisfied: webob==1.8.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 192)) (1.8.6)
-Requirement already satisfied: whoosh==2.7.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 193)) (2.7.4)
-Requirement already satisfied: wrapt==1.12.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 194)) (1.12.1)
-Requirement already satisfied: yacman==0.6.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r requirements.txt (line 195)) (0.6.7)
-Requirement already satisfied: alabaster==0.7.12 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 3)) (0.7.12)
-Requirement already satisfied: commonmark==0.9.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 8)) (0.9.1)
-Requirement already satisfied: coverage==5.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 9)) (5.1)
-Requirement already satisfied: gunicorn==20.0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 12)) (20.0.4)
-Requirement already satisfied: imagesize==1.2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 14)) (1.2.0)
-Requirement already satisfied: jinja2==2.11.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 16)) (2.11.2)
-Requirement already satisfied: mirakuru==2.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 20)) (2.0.2)
-Requirement already satisfied: mock==3.0.5 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 21)) (3.0.5)
-Requirement already satisfied: more-itertools==8.4.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 22)) (8.4.0)
-Requirement already satisfied: nosehtml==0.4.6 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 24)) (0.4.6)
-Requirement already satisfied: pathtools==0.1.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 27)) (0.1.2)
-Requirement already satisfied: pluggy==0.13.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 28)) (0.13.1)
-Requirement already satisfied: port-for==0.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 29)) (0.4)
-Requirement already satisfied: py==1.8.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 32)) (1.8.2)
-Requirement already satisfied: pygithub==1.51 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 33)) (1.51)
-Requirement already satisfied: pygments==2.6.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 34)) (2.6.1)
-Requirement already satisfied: pytest-cov==2.10.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 37)) (2.10.0)
-Requirement already satisfied: pytest-html==1.22.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 38)) (1.22.1)
-Requirement already satisfied: pytest-metadata==1.8.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 39)) (1.8.0)
-Requirement already satisfied: pytest-mock==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 40)) (3.1.1)
-Requirement already satisfied: pytest-postgresql==2.3.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 41)) (2.3.0)
-Requirement already satisfied: pytest-pythonpath==0.7.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 42)) (0.7.3)
-Requirement already satisfied: pytest==5.4.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 43)) (5.4.3)
-Requirement already satisfied: python-irodsclient==0.8.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 44)) (0.8.3)
-Requirement already satisfied: recommonmark==0.6.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 46)) (0.6.0)
-Requirement already satisfied: responses==0.10.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 48)) (0.10.15)
-Requirement already satisfied: selenium==3.141.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 49)) (3.141.0)
-Requirement already satisfied: snowballstemmer==2.0.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 51)) (2.0.0)
-Requirement already satisfied: sphinx-markdown-tables==0.0.15 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 52)) (0.0.15)
-Requirement already satisfied: sphinx-rtd-theme==0.5.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 53)) (0.5.0)
-Requirement already satisfied: sphinx==3.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 54)) (3.1.1)
-Requirement already satisfied: sphinxcontrib-applehelp==1.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 55)) (1.0.2)
-Requirement already satisfied: sphinxcontrib-devhelp==1.0.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 56)) (1.0.2)
-Requirement already satisfied: sphinxcontrib-htmlhelp==1.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 57)) (1.0.3)
-Requirement already satisfied: sphinxcontrib-jsmath==1.0.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 58)) (1.0.1)
-Requirement already satisfied: sphinxcontrib-qthelp==1.0.3 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 59)) (1.0.3)
-Requirement already satisfied: sphinxcontrib-serializinghtml==1.1.4 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 60)) (1.1.4)
-Requirement already satisfied: testfixtures==6.14.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 61)) (6.14.1)
-Requirement already satisfied: twill==2.0 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 62)) (2.0)
-Requirement already satisfied: watchdog==0.10.2 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 64)) (0.10.2)
-Requirement already satisfied: xmlrunner==1.7.7 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r ./lib/galaxy/dependencies/dev-requirements.txt (line 67)) (1.7.7)
-Requirement already satisfied: setuptools in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from cwltool==1.0.20191225192155->-r requirements.txt (line 45)) (52.0.0)
-Requirement already satisfied: pathlib2!=2.3.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from cwltool==1.0.20191225192155->-r requirements.txt (line 45)) (2.3.5)
-Looking in indexes: https://wheels.galaxyproject.org/simple, https://pypi.python.org/simple
-Requirement already satisfied: watchdog in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from -r /dev/stdin (line 1)) (0.10.2)
-Requirement already satisfied: pathtools>=0.1.1 in /home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages (from watchdog->-r /dev/stdin (line 1)) (0.1.2)
-The Galaxy client build is being skipped due to the SKIP_CLIENT_BUILD environment variable.
-Activating virtualenv at /home/rstudio/.planemo/gx_venv_3
-2021-03-11 20:11:21,978 INFO  [galaxy.queue_worker] Initializing main Galaxy Queue Worker on sqlalchemy+sqlite:////tmp/tmplk7fd25x/tmpvfh2m4rj/tmp5ie9b69s/database/control.sqlite?isolation_level=IMMEDIATE
-2021-03-11 20:11:22,004 INFO  [galaxy.model.migrate.check] Creating database for URI [sqlite:////tmp/tmp0krucrv3/galaxy.sqlite?isolation_level=IMMEDIATE]
-2021-03-11 20:11:22,279 INFO  [galaxy.model.migrate.check] Creating new database from scratch, skipping migrations
-2021-03-11 20:12:14,824 INFO  [galaxy.config] Install database targetting Galaxy's database configuration.
-2021-03-11 20:12:14,834 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/all_fasta.loc, reading sample
-2021-03-11 20:12:14,835 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/bfast_indexes.loc, reading sample
-2021-03-11 20:12:14,835 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/blastdb.loc, reading sample
-2021-03-11 20:12:14,836 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/blastdb_p.loc, reading sample
-2021-03-11 20:12:14,836 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/blastdb_d.loc, reading sample
-2021-03-11 20:12:14,836 WARNI [galaxy.tools.data] Cannot find index file 'bwa_index.loc' for tool data table 'bwa_indexes'
-2021-03-11 20:12:14,837 WARNI [galaxy.tools.data] Cannot find index file 'bwa_index_color.loc' for tool data table 'bwa_indexes_color'
-2021-03-11 20:12:14,837 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/maf_index.loc, reading sample
-2021-03-11 20:12:14,837 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/ngs_sim_fasta.loc, reading sample
-2021-03-11 20:12:14,838 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/perm_base_index.loc, reading sample
-2021-03-11 20:12:14,838 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/perm_color_index.loc, reading sample
-2021-03-11 20:12:14,838 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/picard_index.loc, reading sample
-2021-03-11 20:12:14,839 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/picard_index.loc, reading sample
-2021-03-11 20:12:14,839 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/mosaik_index.loc, reading sample
-2021-03-11 20:12:14,840 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/twobit.loc, reading sample
-2021-03-11 20:12:15,049 WARNI [galaxy.tools.data] Line 1 in tool data table 'igv_broad_genomes' is invalid (HINT: '<TAB>' characters must be used to separate fields):
-<Server-Side Genome List>
-2021-03-11 20:12:15,050 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/liftOver.loc, reading sample
-2021-03-11 20:12:15,051 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/bam_iobio.loc, reading sample
-2021-03-11 20:12:15,051 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/vcf_iobio.loc, reading sample
-2021-03-11 20:12:15,052 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/biom_simple_display.loc, reading sample
-2021-03-11 20:12:15,052 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/intermine_simple_display.loc, reading sample
-2021-03-11 20:12:15,052 INFO  [galaxy.tools.data] Could not find tool data /tmp/tmp0krucrv3/galaxy-dev/tool-data/icn3d_simple_display.loc, reading sample
-2021-03-11 20:12:15,123 INFO  [galaxy.web_stack.handlers] JobConfiguration: No job handler assignment method is set, defaulting to 'db-preassign', set the `assign_with` attribute on <handlers> to override the default
-2021-03-11 20:12:15,123 INFO  [galaxy.jobs] Job handler assignment methods set to: db-preassign
-2021-03-11 20:12:15,123 INFO  [galaxy.jobs] Tag [_default_] handlers: main
-2021-03-11 20:12:15,406 WARNI [galaxy.tools] The default shed tool config file (/tmp/tmp0krucrv3/galaxy-dev/lib/galaxy/config/sample/shed_tool_conf.xml) has been added to the tool_config_file option, if this is not the desired behavior, please set shed_tool_config_file to your primary shed-enabled tool config file
-2021-03-11 20:12:15,406 INFO  [galaxy.tools.toolbox.base] Parsing the tool configuration /tmp/tmp0krucrv3/tool_conf.xml
-2021-03-11 20:12:15,431 WARNI [galaxy.tools] The default shed tool config file (/tmp/tmp0krucrv3/galaxy-dev/lib/galaxy/config/sample/shed_tool_conf.xml) has been added to the tool_config_file option, if this is not the desired behavior, please set shed_tool_config_file to your primary shed-enabled tool config file
-2021-03-11 20:12:15,432 INFO  [galaxy.tools.toolbox.base] Parsing the tool configuration /tmp/tmp0krucrv3/shed_tools_conf.xml
-2021-03-11 20:12:15,432 WARNI [galaxy.tools] The default shed tool config file (/tmp/tmp0krucrv3/galaxy-dev/lib/galaxy/config/sample/shed_tool_conf.xml) has been added to the tool_config_file option, if this is not the desired behavior, please set shed_tool_config_file to your primary shed-enabled tool config file
-2021-03-11 20:12:15,432 INFO  [galaxy.tools.toolbox.base] Parsing the tool configuration /tmp/tmp0krucrv3/empty_tool_conf.xml
-Error loading a set of Dynamic Display Application links: A format or a metadata can be defined for a DisplayApplicationParameter, but not both.
-Error loading a set of Dynamic Display Application links: A format or a metadata can be defined for a DisplayApplicationParameter, but not both.
-2021-03-11 20:12:15,923 INFO  [galaxy.jobs] Handler 'main' will load all configured runner plugins
-2021-03-11 20:12:15,978 INFO  [galaxy.jobs.handler] job handler stop queue started
-2021-03-11 20:12:15,992 INFO  [galaxy.jobs.handler] job handler queue started
-2021-03-11 20:12:15,996 INFO  [galaxy.jobs.handler] job handler stop queue started
-2021-03-11 20:12:16,015 INFO  [galaxy.workflow.scheduling_manager] No workflow schedulers plugin config file defined, using default scheduler.
-2021-03-11 20:12:16,032 INFO  [galaxy.queue_worker] Binding and starting galaxy control worker for main
-2021-03-11 20:12:16,045 INFO  [galaxy.queue_worker] Queuing async task rebuild_toolbox_search_index for main.
-2021-03-11 20:12:16,738 INFO  [galaxy.app] Galaxy app startup finished (55061.985 ms)
-2021-03-11 20:12:16,858 INFO  [galaxy.queue_worker] Instance 'main' received 'rebuild_toolbox_search_index' task, executing now.
-2021-03-11 20:12:17,628 INFO  [galaxy.web_stack] Galaxy server instance 'main' is running
-/home/rstudio/.planemo/gx_venv_3/lib/python3.8/site-packages/sqlalchemy/sql/sqltypes.py:660: SAWarning: Dialect sqlite+pysqlite does *not* support Decimal objects natively, and SQLAlchemy must convert from floating point - rounding errors and other issues may occur. Please consider storing Decimal numbers as strings or integers on this platform for lossless storage.
-  util.warn(
-2021-03-11 20:12:18,358 INFO  [galaxy.webapps.base.webapp] Session authenticated using Galaxy master api key
-2021-03-11 20:12:18,369 INFO  [galaxy.webapps.base.webapp] Session authenticated using Galaxy master api key
-2021-03-11 20:12:18,667 INFO  [galaxy.webapps.base.webapp] Session authenticated using Galaxy master api key
-( w4mclassfilter ) > Test-1 ... 2021-03-11 20:12:19,013 INFO  [galaxy.tools] Validated and populated state for tool request (19.948 ms)
-2021-03-11 20:12:19,522 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 1
-2021-03-11 20:12:19,617 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=1,tool_id=upload1] (65.859 ms)
-2021-03-11 20:12:19,617 INFO  [galaxy.web_stack.handlers] (Job[id=1,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:19,629 INFO  [galaxy.web_stack.handlers] (Job[id=1,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:20,668 INFO  [galaxy.jobs.handler] (1) Job dispatched
-2021-03-11 20:12:20,916 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/1/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/1/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/1/upload_params.json' '1:/tmp/tmp0krucrv3/job_working_directory/000/1/working/dataset_b7ba21f9-2372-4dd9-8201-a5806573af43_files:/tmp/tmp0krucrv3/files/b/7/b/dataset_b7ba21f9-2372-4dd9-8201-a5806573af43.dat']
-2021-03-11 20:12:25,989 INFO  [galaxy.tools] Validated and populated state for tool request (17.857 ms)
-2021-03-11 20:12:26,433 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 2
-2021-03-11 20:12:26,523 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=2,tool_id=upload1] (62.146 ms)
-2021-03-11 20:12:26,523 INFO  [galaxy.web_stack.handlers] (Job[id=2,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:26,531 INFO  [galaxy.web_stack.handlers] (Job[id=2,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:27,205 INFO  [galaxy.jobs.handler] (2) Job dispatched
-2021-03-11 20:12:27,435 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/2/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/2/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/2/upload_params.json' '2:/tmp/tmp0krucrv3/job_working_directory/000/2/working/dataset_c409b99b-2a57-403a-8125-083ca48b8faa_files:/tmp/tmp0krucrv3/files/c/4/0/dataset_c409b99b-2a57-403a-8125-083ca48b8faa.dat']
-2021-03-11 20:12:32,608 INFO  [galaxy.tools] Validated and populated state for tool request (17.505 ms)
-2021-03-11 20:12:33,042 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 3
-2021-03-11 20:12:33,119 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=3,tool_id=upload1] (55.813 ms)
-2021-03-11 20:12:33,119 INFO  [galaxy.web_stack.handlers] (Job[id=3,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:33,130 INFO  [galaxy.web_stack.handlers] (Job[id=3,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:33,848 INFO  [galaxy.jobs.handler] (3) Job dispatched
-2021-03-11 20:12:34,077 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/3/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/3/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/3/upload_params.json' '3:/tmp/tmp0krucrv3/job_working_directory/000/3/working/dataset_35824d47-ff35-4566-8cf2-099777b9144f_files:/tmp/tmp0krucrv3/files/3/5/8/dataset_35824d47-ff35-4566-8cf2-099777b9144f.dat']
-2021-03-11 20:12:39,163 INFO  [galaxy.tools] Validated and populated state for tool request (28.357 ms)
-2021-03-11 20:12:39,248 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (2.345 ms)
-2021-03-11 20:12:39,250 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (1.550 ms)
-2021-03-11 20:12:39,252 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (2.029 ms)
-2021-03-11 20:12:39,252 INFO  [galaxy.tools.actions] Added output datasets to history (0.054 ms)
-2021-03-11 20:12:39,254 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.728 ms)
-2021-03-11 20:12:39,431 INFO  [galaxy.web_stack.handlers] (Job[id=4,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:40,523 INFO  [galaxy.jobs.handler] (4) Job dispatched
-2021-03-11 20:12:40,775 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/4/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/b/7/b/dataset_b7ba21f9-2372-4dd9-8201-a5806573af43.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/c/4/0/dataset_c409b99b-2a57-403a-8125-083ca48b8faa.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/3/5/8/dataset_35824d47-ff35-4566-8cf2-099777b9144f.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter 'FEATMAX:2e6:,mz:200:,rt::800' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/4/a/5/dataset_4a526f7c-d781-428f-86c7-c280810fdada.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/d/5/9/dataset_d5926dee-18f0-43fd-85e3-074664cda8be.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/b/d/c/dataset_bdcc61e1-d3a9-4890-9042-ca11c2c07d1b.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-2 ... 2021-03-11 20:12:47,331 INFO  [galaxy.tools] Validated and populated state for tool request (18.574 ms)
-2021-03-11 20:12:47,741 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 5
-2021-03-11 20:12:47,846 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=5,tool_id=upload1] (81.931 ms)
-2021-03-11 20:12:47,846 INFO  [galaxy.web_stack.handlers] (Job[id=5,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:47,870 INFO  [galaxy.web_stack.handlers] (Job[id=5,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:48,122 INFO  [galaxy.jobs.handler] (5) Job dispatched
-2021-03-11 20:12:48,347 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/5/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/5/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/5/upload_params.json' '7:/tmp/tmp0krucrv3/job_working_directory/000/5/working/dataset_bf876626-ecef-4429-820a-c58971975308_files:/tmp/tmp0krucrv3/files/b/f/8/dataset_bf876626-ecef-4429-820a-c58971975308.dat']
-2021-03-11 20:12:53,344 INFO  [galaxy.tools] Validated and populated state for tool request (25.298 ms)
-2021-03-11 20:12:53,737 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 6
-2021-03-11 20:12:53,822 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=6,tool_id=upload1] (59.673 ms)
-2021-03-11 20:12:53,822 INFO  [galaxy.web_stack.handlers] (Job[id=6,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:53,832 INFO  [galaxy.web_stack.handlers] (Job[id=6,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:12:54,598 INFO  [galaxy.jobs.handler] (6) Job dispatched
-2021-03-11 20:12:54,815 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/6/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/6/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/6/upload_params.json' '8:/tmp/tmp0krucrv3/job_working_directory/000/6/working/dataset_9125c62f-1424-44cd-825d-bd2192b5a7ae_files:/tmp/tmp0krucrv3/files/9/1/2/dataset_9125c62f-1424-44cd-825d-bd2192b5a7ae.dat']
-2021-03-11 20:12:59,663 INFO  [galaxy.tools] Validated and populated state for tool request (17.604 ms)
-2021-03-11 20:13:00,399 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 7
-2021-03-11 20:13:00,553 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=7,tool_id=upload1] (132.015 ms)
-2021-03-11 20:13:00,553 INFO  [galaxy.web_stack.handlers] (Job[id=7,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:00,561 INFO  [galaxy.web_stack.handlers] (Job[id=7,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:01,216 INFO  [galaxy.jobs.handler] (7) Job dispatched
-2021-03-11 20:13:01,394 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/7/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/7/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/7/upload_params.json' '9:/tmp/tmp0krucrv3/job_working_directory/000/7/working/dataset_174e10fa-34b6-43ca-a220-7f9015586991_files:/tmp/tmp0krucrv3/files/1/7/4/dataset_174e10fa-34b6-43ca-a220-7f9015586991.dat']
-2021-03-11 20:13:06,451 INFO  [galaxy.tools] Validated and populated state for tool request (29.066 ms)
-2021-03-11 20:13:06,522 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.863 ms)
-2021-03-11 20:13:06,522 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.561 ms)
-2021-03-11 20:13:06,523 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.598 ms)
-2021-03-11 20:13:06,523 INFO  [galaxy.tools.actions] Added output datasets to history (0.054 ms)
-2021-03-11 20:13:06,525 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.903 ms)
-2021-03-11 20:13:06,728 INFO  [galaxy.web_stack.handlers] (Job[id=8,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:07,666 INFO  [galaxy.jobs.handler] (8) Job dispatched
-2021-03-11 20:13:07,953 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/8/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/b/f/8/dataset_bf876626-ecef-4429-820a-c58971975308.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/9/1/2/dataset_9125c62f-1424-44cd-825d-bd2192b5a7ae.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/1/7/4/dataset_174e10fa-34b6-43ca-a220-7f9015586991.dat' sampleclassNames      'HU_[0-9][0-9][0-9]' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'sampleMetadata' samplenameColumn      'sampleMetadata' variable_range_filter 'FEATMAX:6.30103:,mz:200:,rt::800' transformation        'log10' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/4/e/b/dataset_4ebfd1d6-79d1-41a8-9634-5e7711f8f9ac.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/4/0/9/dataset_409a8bdd-1fb5-4d52-8698-2ce205b370e5.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/2/8/9/dataset_2895c0e9-05a9-4b9b-a037-8c1e4ff59ff5.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-3 ... 2021-03-11 20:13:14,797 INFO  [galaxy.tools] Validated and populated state for tool request (18.125 ms)
-2021-03-11 20:13:15,738 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 9
-2021-03-11 20:13:15,881 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=9,tool_id=upload1] (121.748 ms)
-2021-03-11 20:13:15,881 INFO  [galaxy.web_stack.handlers] (Job[id=9,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:15,889 INFO  [galaxy.web_stack.handlers] (Job[id=9,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:16,266 INFO  [galaxy.jobs.handler] (9) Job dispatched
-2021-03-11 20:13:16,562 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/9/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/9/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/9/upload_params.json' '13:/tmp/tmp0krucrv3/job_working_directory/000/9/working/dataset_8d0f2846-333f-46c2-a6c5-45109cd7df19_files:/tmp/tmp0krucrv3/files/8/d/0/dataset_8d0f2846-333f-46c2-a6c5-45109cd7df19.dat']
-2021-03-11 20:13:21,815 INFO  [galaxy.tools] Validated and populated state for tool request (24.255 ms)
-2021-03-11 20:13:22,296 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 10
-2021-03-11 20:13:22,385 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=10,tool_id=upload1] (65.708 ms)
-2021-03-11 20:13:22,385 INFO  [galaxy.web_stack.handlers] (Job[id=10,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:22,393 INFO  [galaxy.web_stack.handlers] (Job[id=10,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:22,763 INFO  [galaxy.jobs.handler] (10) Job dispatched
-2021-03-11 20:13:23,011 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/10/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/10/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/10/upload_params.json' '14:/tmp/tmp0krucrv3/job_working_directory/000/10/working/dataset_070b5281-2739-4cb3-b5f5-9bbcfff88d9b_files:/tmp/tmp0krucrv3/files/0/7/0/dataset_070b5281-2739-4cb3-b5f5-9bbcfff88d9b.dat']
-2021-03-11 20:13:27,856 INFO  [galaxy.tools] Validated and populated state for tool request (17.700 ms)
-2021-03-11 20:13:28,341 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 11
-2021-03-11 20:13:28,422 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=11,tool_id=upload1] (52.774 ms)
-2021-03-11 20:13:28,422 INFO  [galaxy.web_stack.handlers] (Job[id=11,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:28,430 INFO  [galaxy.web_stack.handlers] (Job[id=11,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:29,402 INFO  [galaxy.jobs.handler] (11) Job dispatched
-2021-03-11 20:13:29,569 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/11/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/11/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/11/upload_params.json' '15:/tmp/tmp0krucrv3/job_working_directory/000/11/working/dataset_c0c660b8-7f0e-47ea-99c6-13494f3e2081_files:/tmp/tmp0krucrv3/files/c/0/c/dataset_c0c660b8-7f0e-47ea-99c6-13494f3e2081.dat']
-2021-03-11 20:13:34,782 INFO  [galaxy.tools] Validated and populated state for tool request (31.134 ms)
-2021-03-11 20:13:34,858 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.859 ms)
-2021-03-11 20:13:34,859 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.544 ms)
-2021-03-11 20:13:34,860 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.875 ms)
-2021-03-11 20:13:34,860 INFO  [galaxy.tools.actions] Added output datasets to history (0.054 ms)
-2021-03-11 20:13:34,862 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.957 ms)
-2021-03-11 20:13:34,980 INFO  [galaxy.web_stack.handlers] (Job[id=12,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:35,873 INFO  [galaxy.jobs.handler] (12) Job dispatched
-2021-03-11 20:13:36,153 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/12/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/8/d/0/dataset_8d0f2846-333f-46c2-a6c5-45109cd7df19.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/0/7/0/dataset_070b5281-2739-4cb3-b5f5-9bbcfff88d9b.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/c/0/c/dataset_c0c660b8-7f0e-47ea-99c6-13494f3e2081.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'TRUE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/f/c/8/dataset_fc8561d1-b75d-4100-b4ce-962299c8beb6.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/b/8/2/dataset_b8264a33-9369-436d-b271-4f5dba90a0e3.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/0/e/4/dataset_0e419622-0880-415e-b3fe-0dd1c16d9275.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-4 ... 2021-03-11 20:13:42,704 INFO  [galaxy.tools] Validated and populated state for tool request (19.348 ms)
-2021-03-11 20:13:43,095 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 13
-2021-03-11 20:13:43,181 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=13,tool_id=upload1] (59.225 ms)
-2021-03-11 20:13:43,182 INFO  [galaxy.web_stack.handlers] (Job[id=13,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:43,190 INFO  [galaxy.web_stack.handlers] (Job[id=13,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:43,566 INFO  [galaxy.jobs.handler] (13) Job dispatched
-2021-03-11 20:13:43,826 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/13/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/13/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/13/upload_params.json' '19:/tmp/tmp0krucrv3/job_working_directory/000/13/working/dataset_84bc78f7-1268-4dcf-b746-febd17d7317b_files:/tmp/tmp0krucrv3/files/8/4/b/dataset_84bc78f7-1268-4dcf-b746-febd17d7317b.dat']
-2021-03-11 20:13:48,667 INFO  [galaxy.tools] Validated and populated state for tool request (23.579 ms)
-2021-03-11 20:13:49,130 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 14
-2021-03-11 20:13:49,209 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=14,tool_id=upload1] (56.240 ms)
-2021-03-11 20:13:49,209 INFO  [galaxy.web_stack.handlers] (Job[id=14,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:49,217 INFO  [galaxy.web_stack.handlers] (Job[id=14,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:50,602 INFO  [galaxy.jobs.handler] (14) Job dispatched
-2021-03-11 20:13:50,834 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/14/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/14/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/14/upload_params.json' '20:/tmp/tmp0krucrv3/job_working_directory/000/14/working/dataset_3651d875-060c-484f-a472-d04b918babc5_files:/tmp/tmp0krucrv3/files/3/6/5/dataset_3651d875-060c-484f-a472-d04b918babc5.dat']
-2021-03-11 20:13:56,096 INFO  [galaxy.tools] Validated and populated state for tool request (18.085 ms)
-2021-03-11 20:13:56,515 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 15
-2021-03-11 20:13:56,595 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=15,tool_id=upload1] (58.474 ms)
-2021-03-11 20:13:56,596 INFO  [galaxy.web_stack.handlers] (Job[id=15,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:56,604 INFO  [galaxy.web_stack.handlers] (Job[id=15,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:13:57,068 INFO  [galaxy.jobs.handler] (15) Job dispatched
-2021-03-11 20:13:57,284 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/15/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/15/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/15/upload_params.json' '21:/tmp/tmp0krucrv3/job_working_directory/000/15/working/dataset_2c5ee32d-b467-4e48-b869-e9d48b917cb0_files:/tmp/tmp0krucrv3/files/2/c/5/dataset_2c5ee32d-b467-4e48-b869-e9d48b917cb0.dat']
-2021-03-11 20:14:02,144 INFO  [galaxy.tools] Validated and populated state for tool request (23.669 ms)
-2021-03-11 20:14:02,215 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.919 ms)
-2021-03-11 20:14:02,216 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.582 ms)
-2021-03-11 20:14:02,216 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.542 ms)
-2021-03-11 20:14:02,217 INFO  [galaxy.tools.actions] Added output datasets to history (0.052 ms)
-2021-03-11 20:14:02,221 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (4.394 ms)
-2021-03-11 20:14:02,431 INFO  [galaxy.web_stack.handlers] (Job[id=16,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:03,768 INFO  [galaxy.jobs.handler] (16) Job dispatched
-2021-03-11 20:14:04,027 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/16/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/8/4/b/dataset_84bc78f7-1268-4dcf-b746-febd17d7317b.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/3/6/5/dataset_3651d875-060c-484f-a472-d04b918babc5.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/2/c/5/dataset_2c5ee32d-b467-4e48-b869-e9d48b917cb0.dat' sampleclassNames      '*' inclusive             'TRUE' wildcards             'TRUE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/e/d/3/dataset_ed370c46-de10-4469-a088-06a51f4fa500.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/e/f/3/dataset_ef35c50b-a6e4-4bd4-a593-438cdf7dc6c1.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/f/7/e/dataset_f7ef0d66-1985-479d-a6bc-e6500447e461.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-5 ... 2021-03-11 20:14:10,473 INFO  [galaxy.tools] Validated and populated state for tool request (18.062 ms)
-2021-03-11 20:14:10,928 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 17
-2021-03-11 20:14:11,001 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=17,tool_id=upload1] (50.629 ms)
-2021-03-11 20:14:11,001 INFO  [galaxy.web_stack.handlers] (Job[id=17,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:11,013 INFO  [galaxy.web_stack.handlers] (Job[id=17,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:11,319 INFO  [galaxy.jobs.handler] (17) Job dispatched
-2021-03-11 20:14:11,617 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/17/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/17/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/17/upload_params.json' '25:/tmp/tmp0krucrv3/job_working_directory/000/17/working/dataset_ffcc5f14-af57-4004-ae24-c839ea0b81aa_files:/tmp/tmp0krucrv3/files/f/f/c/dataset_ffcc5f14-af57-4004-ae24-c839ea0b81aa.dat']
-2021-03-11 20:14:16,862 INFO  [galaxy.tools] Validated and populated state for tool request (18.956 ms)
-2021-03-11 20:14:17,277 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 18
-2021-03-11 20:14:17,351 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=18,tool_id=upload1] (52.542 ms)
-2021-03-11 20:14:17,352 INFO  [galaxy.web_stack.handlers] (Job[id=18,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:17,359 INFO  [galaxy.web_stack.handlers] (Job[id=18,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:18,007 INFO  [galaxy.jobs.handler] (18) Job dispatched
-2021-03-11 20:14:18,264 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/18/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/18/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/18/upload_params.json' '26:/tmp/tmp0krucrv3/job_working_directory/000/18/working/dataset_e44a8663-86d7-44b8-871d-67500b785d34_files:/tmp/tmp0krucrv3/files/e/4/4/dataset_e44a8663-86d7-44b8-871d-67500b785d34.dat']
-2021-03-11 20:14:23,178 INFO  [galaxy.tools] Validated and populated state for tool request (19.653 ms)
-2021-03-11 20:14:23,629 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 19
-2021-03-11 20:14:23,724 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=19,tool_id=upload1] (72.709 ms)
-2021-03-11 20:14:23,724 INFO  [galaxy.web_stack.handlers] (Job[id=19,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:23,733 INFO  [galaxy.web_stack.handlers] (Job[id=19,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:24,709 INFO  [galaxy.jobs.handler] (19) Job dispatched
-2021-03-11 20:14:24,895 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/19/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/19/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/19/upload_params.json' '27:/tmp/tmp0krucrv3/job_working_directory/000/19/working/dataset_8d429121-091d-4d14-b869-efce1ff7b8ea_files:/tmp/tmp0krucrv3/files/8/d/4/dataset_8d429121-091d-4d14-b869-efce1ff7b8ea.dat']
-2021-03-11 20:14:30,148 INFO  [galaxy.tools] Validated and populated state for tool request (23.781 ms)
-2021-03-11 20:14:30,261 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.869 ms)
-2021-03-11 20:14:30,262 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.552 ms)
-2021-03-11 20:14:30,263 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.584 ms)
-2021-03-11 20:14:30,263 INFO  [galaxy.tools.actions] Added output datasets to history (0.051 ms)
-2021-03-11 20:14:30,265 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.976 ms)
-2021-03-11 20:14:30,472 INFO  [galaxy.web_stack.handlers] (Job[id=20,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:31,176 INFO  [galaxy.jobs.handler] (20) Job dispatched
-2021-03-11 20:14:31,440 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/20/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/f/f/c/dataset_ffcc5f14-af57-4004-ae24-c839ea0b81aa.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/e/4/4/dataset_e44a8663-86d7-44b8-871d-67500b785d34.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/8/d/4/dataset_8d429121-091d-4d14-b869-efce1ff7b8ea.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/9/e/2/dataset_9e2415d2-3bc3-4c45-b472-e9e3ef4066cb.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/d/6/3/dataset_d63280b5-3cdb-467a-89c0-151f5cc8d645.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/3/f/9/dataset_3f9a98ae-cf14-4322-bd8b-4f7c46d79c2e.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-6 ... 2021-03-11 20:14:37,916 INFO  [galaxy.tools] Validated and populated state for tool request (18.012 ms)
-2021-03-11 20:14:38,309 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 21
-2021-03-11 20:14:38,391 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=21,tool_id=upload1] (59.834 ms)
-2021-03-11 20:14:38,391 INFO  [galaxy.web_stack.handlers] (Job[id=21,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:38,401 INFO  [galaxy.web_stack.handlers] (Job[id=21,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:38,763 INFO  [galaxy.jobs.handler] (21) Job dispatched
-2021-03-11 20:14:38,961 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/21/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/21/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/21/upload_params.json' '31:/tmp/tmp0krucrv3/job_working_directory/000/21/working/dataset_ca5da58c-6fc6-4fae-b657-0910c5fb87d0_files:/tmp/tmp0krucrv3/files/c/a/5/dataset_ca5da58c-6fc6-4fae-b657-0910c5fb87d0.dat']
-2021-03-11 20:14:44,111 INFO  [galaxy.tools] Validated and populated state for tool request (18.402 ms)
-2021-03-11 20:14:44,494 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 22
-2021-03-11 20:14:44,580 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=22,tool_id=upload1] (63.716 ms)
-2021-03-11 20:14:44,580 INFO  [galaxy.web_stack.handlers] (Job[id=22,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:44,587 INFO  [galaxy.web_stack.handlers] (Job[id=22,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:45,505 INFO  [galaxy.jobs.handler] (22) Job dispatched
-2021-03-11 20:14:45,695 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/22/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/22/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/22/upload_params.json' '32:/tmp/tmp0krucrv3/job_working_directory/000/22/working/dataset_d7eec5b0-8126-4a42-a0df-e75eb6e64bf2_files:/tmp/tmp0krucrv3/files/d/7/e/dataset_d7eec5b0-8126-4a42-a0df-e75eb6e64bf2.dat']
-2021-03-11 20:14:50,803 INFO  [galaxy.tools] Validated and populated state for tool request (17.668 ms)
-2021-03-11 20:14:51,231 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 23
-2021-03-11 20:14:51,312 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=23,tool_id=upload1] (58.541 ms)
-2021-03-11 20:14:51,312 INFO  [galaxy.web_stack.handlers] (Job[id=23,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:51,320 INFO  [galaxy.web_stack.handlers] (Job[id=23,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:52,043 INFO  [galaxy.jobs.handler] (23) Job dispatched
-2021-03-11 20:14:52,249 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/23/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/23/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/23/upload_params.json' '33:/tmp/tmp0krucrv3/job_working_directory/000/23/working/dataset_1eb2fe68-f352-4808-bda8-60ab5a51bd87_files:/tmp/tmp0krucrv3/files/1/e/b/dataset_1eb2fe68-f352-4808-bda8-60ab5a51bd87.dat']
-2021-03-11 20:14:57,192 INFO  [galaxy.tools] Validated and populated state for tool request (23.383 ms)
-2021-03-11 20:14:57,291 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.883 ms)
-2021-03-11 20:14:57,292 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.701 ms)
-2021-03-11 20:14:57,292 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.541 ms)
-2021-03-11 20:14:57,292 INFO  [galaxy.tools.actions] Added output datasets to history (0.060 ms)
-2021-03-11 20:14:57,294 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.745 ms)
-2021-03-11 20:14:57,476 INFO  [galaxy.web_stack.handlers] (Job[id=24,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:14:58,530 INFO  [galaxy.jobs.handler] (24) Job dispatched
-2021-03-11 20:14:58,872 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/24/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/c/a/5/dataset_ca5da58c-6fc6-4fae-b657-0910c5fb87d0.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/d/7/e/dataset_d7eec5b0-8126-4a42-a0df-e75eb6e64bf2.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/1/e/b/dataset_1eb2fe68-f352-4808-bda8-60ab5a51bd87.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/2/a/3/dataset_2a3805e7-3619-441d-b271-4ca4b1fe0252.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/e/2/c/dataset_e2c62718-8cb4-409d-83d1-86bd4797080b.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/d/1/b/dataset_d1b10903-1695-44d3-8c3b-f4b09f030258.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-7 ... 2021-03-11 20:15:05,471 INFO  [galaxy.tools] Validated and populated state for tool request (18.880 ms)
-2021-03-11 20:15:06,079 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 25
-2021-03-11 20:15:06,152 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=25,tool_id=upload1] (50.102 ms)
-2021-03-11 20:15:06,152 INFO  [galaxy.web_stack.handlers] (Job[id=25,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:06,161 INFO  [galaxy.web_stack.handlers] (Job[id=25,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:07,308 INFO  [galaxy.jobs.handler] (25) Job dispatched
-2021-03-11 20:15:07,572 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/25/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/25/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/25/upload_params.json' '37:/tmp/tmp0krucrv3/job_working_directory/000/25/working/dataset_84a59741-f44e-4b5f-97db-8b98fc31981c_files:/tmp/tmp0krucrv3/files/8/4/a/dataset_84a59741-f44e-4b5f-97db-8b98fc31981c.dat']
-2021-03-11 20:15:12,798 INFO  [galaxy.tools] Validated and populated state for tool request (23.031 ms)
-2021-03-11 20:15:13,199 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 26
-2021-03-11 20:15:13,279 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=26,tool_id=upload1] (56.105 ms)
-2021-03-11 20:15:13,279 INFO  [galaxy.web_stack.handlers] (Job[id=26,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:13,287 INFO  [galaxy.web_stack.handlers] (Job[id=26,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:13,795 INFO  [galaxy.jobs.handler] (26) Job dispatched
-2021-03-11 20:15:14,005 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/26/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/26/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/26/upload_params.json' '38:/tmp/tmp0krucrv3/job_working_directory/000/26/working/dataset_90af190f-2986-478e-b589-28a0b4e45db3_files:/tmp/tmp0krucrv3/files/9/0/a/dataset_90af190f-2986-478e-b589-28a0b4e45db3.dat']
-2021-03-11 20:15:18,974 INFO  [galaxy.tools] Validated and populated state for tool request (41.847 ms)
-2021-03-11 20:15:19,413 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 27
-2021-03-11 20:15:19,503 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=27,tool_id=upload1] (66.855 ms)
-2021-03-11 20:15:19,503 INFO  [galaxy.web_stack.handlers] (Job[id=27,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:19,512 INFO  [galaxy.web_stack.handlers] (Job[id=27,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:20,566 INFO  [galaxy.jobs.handler] (27) Job dispatched
-2021-03-11 20:15:20,853 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/27/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/27/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/27/upload_params.json' '39:/tmp/tmp0krucrv3/job_working_directory/000/27/working/dataset_2ac2ab53-bba2-4ca1-be24-068d83216c3b_files:/tmp/tmp0krucrv3/files/2/a/c/dataset_2ac2ab53-bba2-4ca1-be24-068d83216c3b.dat']
-2021-03-11 20:15:26,117 INFO  [galaxy.tools] Validated and populated state for tool request (23.522 ms)
-2021-03-11 20:15:26,193 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.887 ms)
-2021-03-11 20:15:26,194 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.560 ms)
-2021-03-11 20:15:26,194 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.559 ms)
-2021-03-11 20:15:26,195 INFO  [galaxy.tools.actions] Added output datasets to history (0.053 ms)
-2021-03-11 20:15:26,197 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.946 ms)
-2021-03-11 20:15:26,329 INFO  [galaxy.web_stack.handlers] (Job[id=28,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:27,076 INFO  [galaxy.jobs.handler] (28) Job dispatched
-2021-03-11 20:15:27,358 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/28/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/8/4/a/dataset_84a59741-f44e-4b5f-97db-8b98fc31981c.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/9/0/a/dataset_90af190f-2986-478e-b589-28a0b4e45db3.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/2/a/c/dataset_2ac2ab53-bba2-4ca1-be24-068d83216c3b.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/2/b/9/dataset_2b9977ea-cf31-48f3-8748-220a3bd81ae2.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/d/2/2/dataset_d222e264-f29d-4c0f-882a-c5b46caea2ae.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/4/4/9/dataset_449c0e75-3a01-48b5-bc9c-9a42002a0cf1.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-8 ... 2021-03-11 20:15:33,564 INFO  [galaxy.tools] Validated and populated state for tool request (17.705 ms)
-2021-03-11 20:15:34,005 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 29
-2021-03-11 20:15:34,137 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=29,tool_id=upload1] (111.244 ms)
-2021-03-11 20:15:34,138 INFO  [galaxy.web_stack.handlers] (Job[id=29,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:34,146 INFO  [galaxy.web_stack.handlers] (Job[id=29,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:34,683 INFO  [galaxy.jobs.handler] (29) Job dispatched
-2021-03-11 20:15:34,985 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/29/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/29/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/29/upload_params.json' '43:/tmp/tmp0krucrv3/job_working_directory/000/29/working/dataset_3825439a-e350-43c0-88cd-4f2ceb698f9b_files:/tmp/tmp0krucrv3/files/3/8/2/dataset_3825439a-e350-43c0-88cd-4f2ceb698f9b.dat']
-2021-03-11 20:15:40,163 INFO  [galaxy.tools] Validated and populated state for tool request (22.321 ms)
-2021-03-11 20:15:40,923 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 30
-2021-03-11 20:15:41,030 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=30,tool_id=upload1] (76.558 ms)
-2021-03-11 20:15:41,030 INFO  [galaxy.web_stack.handlers] (Job[id=30,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:41,038 INFO  [galaxy.web_stack.handlers] (Job[id=30,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:42,204 INFO  [galaxy.jobs.handler] (30) Job dispatched
-2021-03-11 20:15:42,408 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/30/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/30/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/30/upload_params.json' '44:/tmp/tmp0krucrv3/job_working_directory/000/30/working/dataset_5b5bd9ea-15e4-4b0d-9b8b-ed71505cf953_files:/tmp/tmp0krucrv3/files/5/b/5/dataset_5b5bd9ea-15e4-4b0d-9b8b-ed71505cf953.dat']
-2021-03-11 20:15:47,425 INFO  [galaxy.tools] Validated and populated state for tool request (42.876 ms)
-2021-03-11 20:15:47,875 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 31
-2021-03-11 20:15:47,954 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=31,tool_id=upload1] (56.574 ms)
-2021-03-11 20:15:47,954 INFO  [galaxy.web_stack.handlers] (Job[id=31,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:47,962 INFO  [galaxy.web_stack.handlers] (Job[id=31,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:48,676 INFO  [galaxy.jobs.handler] (31) Job dispatched
-2021-03-11 20:15:48,923 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/31/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/31/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/31/upload_params.json' '45:/tmp/tmp0krucrv3/job_working_directory/000/31/working/dataset_8333b8bd-f93b-4520-a0cb-9bb802d3ab75_files:/tmp/tmp0krucrv3/files/8/3/3/dataset_8333b8bd-f93b-4520-a0cb-9bb802d3ab75.dat']
-2021-03-11 20:15:54,006 INFO  [galaxy.tools] Validated and populated state for tool request (21.360 ms)
-2021-03-11 20:15:54,082 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.813 ms)
-2021-03-11 20:15:54,083 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.593 ms)
-2021-03-11 20:15:54,084 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.540 ms)
-2021-03-11 20:15:54,084 INFO  [galaxy.tools.actions] Added output datasets to history (0.051 ms)
-2021-03-11 20:15:54,088 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (3.968 ms)
-2021-03-11 20:15:54,217 INFO  [galaxy.web_stack.handlers] (Job[id=32,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:15:55,707 INFO  [galaxy.jobs.handler] (32) Job dispatched
-2021-03-11 20:15:56,067 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/32/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/3/8/2/dataset_3825439a-e350-43c0-88cd-4f2ceb698f9b.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/5/b/5/dataset_5b5bd9ea-15e4-4b0d-9b8b-ed71505cf953.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/8/3/3/dataset_8333b8bd-f93b-4520-a0cb-9bb802d3ab75.dat' sampleclassNames      '[Mm],[fF]' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/7/e/3/dataset_7e3d31f2-92c6-4b21-bf6b-e68ba451b5cb.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/c/4/7/dataset_c478b4cb-b6df-405f-8217-48654a1dca74.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/9/a/c/dataset_9ac5e33f-f45f-4f72-a01f-ce3de1402411.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-9 ... 2021-03-11 20:16:02,438 INFO  [galaxy.tools] Validated and populated state for tool request (20.871 ms)
-2021-03-11 20:16:02,887 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 33
-2021-03-11 20:16:03,008 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=33,tool_id=upload1] (99.006 ms)
-2021-03-11 20:16:03,008 INFO  [galaxy.web_stack.handlers] (Job[id=33,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:03,016 INFO  [galaxy.web_stack.handlers] (Job[id=33,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:03,351 INFO  [galaxy.jobs.handler] (33) Job dispatched
-2021-03-11 20:16:03,522 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/33/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/33/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/33/upload_params.json' '49:/tmp/tmp0krucrv3/job_working_directory/000/33/working/dataset_c565d33f-2981-4784-bf4a-1c2967fbed8c_files:/tmp/tmp0krucrv3/files/c/5/6/dataset_c565d33f-2981-4784-bf4a-1c2967fbed8c.dat']
-2021-03-11 20:16:08,725 INFO  [galaxy.tools] Validated and populated state for tool request (23.735 ms)
-2021-03-11 20:16:09,150 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 34
-2021-03-11 20:16:09,229 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=34,tool_id=upload1] (56.778 ms)
-2021-03-11 20:16:09,229 INFO  [galaxy.web_stack.handlers] (Job[id=34,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:09,237 INFO  [galaxy.web_stack.handlers] (Job[id=34,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:09,820 INFO  [galaxy.jobs.handler] (34) Job dispatched
-2021-03-11 20:16:10,018 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/34/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/34/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/34/upload_params.json' '50:/tmp/tmp0krucrv3/job_working_directory/000/34/working/dataset_3eb9049a-14d6-4b99-812e-a39abcc98b28_files:/tmp/tmp0krucrv3/files/3/e/b/dataset_3eb9049a-14d6-4b99-812e-a39abcc98b28.dat']
-2021-03-11 20:16:15,068 INFO  [galaxy.tools] Validated and populated state for tool request (24.349 ms)
-2021-03-11 20:16:16,007 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 35
-2021-03-11 20:16:16,086 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=35,tool_id=upload1] (57.948 ms)
-2021-03-11 20:16:16,087 INFO  [galaxy.web_stack.handlers] (Job[id=35,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:16,105 INFO  [galaxy.web_stack.handlers] (Job[id=35,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:16,443 INFO  [galaxy.jobs.handler] (35) Job dispatched
-2021-03-11 20:16:16,750 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/35/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/35/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/35/upload_params.json' '51:/tmp/tmp0krucrv3/job_working_directory/000/35/working/dataset_6e18a0f1-211d-4e0d-8170-809dd3566b3b_files:/tmp/tmp0krucrv3/files/6/e/1/dataset_6e18a0f1-211d-4e0d-8170-809dd3566b3b.dat']
-2021-03-11 20:16:22,180 INFO  [galaxy.tools] Validated and populated state for tool request (21.444 ms)
-2021-03-11 20:16:22,270 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.875 ms)
-2021-03-11 20:16:22,270 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.555 ms)
-2021-03-11 20:16:22,271 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.818 ms)
-2021-03-11 20:16:22,272 INFO  [galaxy.tools.actions] Added output datasets to history (0.053 ms)
-2021-03-11 20:16:22,274 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.941 ms)
-2021-03-11 20:16:22,442 INFO  [galaxy.web_stack.handlers] (Job[id=36,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:23,170 INFO  [galaxy.jobs.handler] (36) Job dispatched
-2021-03-11 20:16:23,421 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/36/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == '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/c/5/6/dataset_c565d33f-2981-4784-bf4a-1c2967fbed8c.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/3/e/b/dataset_3eb9049a-14d6-4b99-812e-a39abcc98b28.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/6/e/1/dataset_6e18a0f1-211d-4e0d-8170-809dd3566b3b.dat' sampleclassNames      'M' inclusive             'TRUE' wildcards             'FALSE' classnameColumn       '' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/1/f/9/dataset_1f9df5e3-4034-47be-86fd-1505f87bd782.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/3/5/a/dataset_35a5842e-5652-4de8-8652-e837af324847.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/9/9/c/dataset_99c48f69-2e27-49ec-a904-04800f2aa0c5.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-10 ... 2021-03-11 20:16:29,808 INFO  [galaxy.tools] Validated and populated state for tool request (20.731 ms)
-2021-03-11 20:16:30,597 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 37
-2021-03-11 20:16:30,727 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=37,tool_id=upload1] (92.441 ms)
-2021-03-11 20:16:30,727 INFO  [galaxy.web_stack.handlers] (Job[id=37,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:30,735 INFO  [galaxy.web_stack.handlers] (Job[id=37,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:31,894 INFO  [galaxy.jobs.handler] (37) Job dispatched
-2021-03-11 20:16:32,112 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/37/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/37/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/37/upload_params.json' '55:/tmp/tmp0krucrv3/job_working_directory/000/37/working/dataset_fc0f9b8e-b6e7-4017-b7cf-59b48a5af20d_files:/tmp/tmp0krucrv3/files/f/c/0/dataset_fc0f9b8e-b6e7-4017-b7cf-59b48a5af20d.dat']
-2021-03-11 20:16:37,181 INFO  [galaxy.tools] Validated and populated state for tool request (23.289 ms)
-2021-03-11 20:16:37,620 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 38
-2021-03-11 20:16:37,717 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=38,tool_id=upload1] (70.015 ms)
-2021-03-11 20:16:37,717 INFO  [galaxy.web_stack.handlers] (Job[id=38,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:37,726 INFO  [galaxy.web_stack.handlers] (Job[id=38,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:38,387 INFO  [galaxy.jobs.handler] (38) Job dispatched
-2021-03-11 20:16:38,666 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/38/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/38/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/38/upload_params.json' '56:/tmp/tmp0krucrv3/job_working_directory/000/38/working/dataset_7f14d0a0-c31c-4d8d-a380-b08a246037ac_files:/tmp/tmp0krucrv3/files/7/f/1/dataset_7f14d0a0-c31c-4d8d-a380-b08a246037ac.dat']
-2021-03-11 20:16:43,561 INFO  [galaxy.tools] Validated and populated state for tool request (18.436 ms)
-2021-03-11 20:16:44,049 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 39
-2021-03-11 20:16:44,173 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=39,tool_id=upload1] (102.656 ms)
-2021-03-11 20:16:44,174 INFO  [galaxy.web_stack.handlers] (Job[id=39,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:44,182 INFO  [galaxy.web_stack.handlers] (Job[id=39,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:45,070 INFO  [galaxy.jobs.handler] (39) Job dispatched
-2021-03-11 20:16:45,437 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/39/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/39/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/39/upload_params.json' '57:/tmp/tmp0krucrv3/job_working_directory/000/39/working/dataset_f0aaad10-f102-45f3-98fc-bfb82e15e313_files:/tmp/tmp0krucrv3/files/f/0/a/dataset_f0aaad10-f102-45f3-98fc-bfb82e15e313.dat']
-2021-03-11 20:16:50,618 INFO  [galaxy.tools] Validated and populated state for tool request (23.031 ms)
-2021-03-11 20:16:50,691 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.940 ms)
-2021-03-11 20:16:50,692 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.532 ms)
-2021-03-11 20:16:50,693 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.526 ms)
-2021-03-11 20:16:50,693 INFO  [galaxy.tools.actions] Added output datasets to history (0.051 ms)
-2021-03-11 20:16:50,695 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.875 ms)
-2021-03-11 20:16:50,828 INFO  [galaxy.web_stack.handlers] (Job[id=40,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:51,836 INFO  [galaxy.jobs.handler] (40) Job dispatched
-2021-03-11 20:16:52,124 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/40/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == 'medoid' -a 'none' == '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/f/c/0/dataset_fc0f9b8e-b6e7-4017-b7cf-59b48a5af20d.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/7/f/1/dataset_7f14d0a0-c31c-4d8d-a380-b08a246037ac.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/f/0/a/dataset_f0aaad10-f102-45f3-98fc-bfb82e15e313.dat' sampleclassNames      '*' inclusive             'TRUE' wildcards             'TRUE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'none' dataMatrix_out        '/tmp/tmp0krucrv3/files/4/d/a/dataset_4dac97ff-daa7-4232-aedb-1cd3233b1814.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/b/f/1/dataset_bf1700a9-d01e-422e-9e55-546e70f56d49.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/b/8/1/dataset_b819f292-3ec8-49e0-98d0-0b1da99b3294.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-11 ... 2021-03-11 20:16:58,561 INFO  [galaxy.tools] Validated and populated state for tool request (19.145 ms)
-2021-03-11 20:16:59,028 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 41
-2021-03-11 20:16:59,137 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=41,tool_id=upload1] (87.674 ms)
-2021-03-11 20:16:59,138 INFO  [galaxy.web_stack.handlers] (Job[id=41,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:59,146 INFO  [galaxy.web_stack.handlers] (Job[id=41,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:16:59,579 INFO  [galaxy.jobs.handler] (41) Job dispatched
-2021-03-11 20:16:59,805 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/41/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/41/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/41/upload_params.json' '61:/tmp/tmp0krucrv3/job_working_directory/000/41/working/dataset_e1acbbbf-9514-4893-bb09-2336c5ae0f3a_files:/tmp/tmp0krucrv3/files/e/1/a/dataset_e1acbbbf-9514-4893-bb09-2336c5ae0f3a.dat']
-2021-03-11 20:17:05,043 INFO  [galaxy.tools] Validated and populated state for tool request (24.592 ms)
-2021-03-11 20:17:06,102 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 42
-2021-03-11 20:17:06,231 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=42,tool_id=upload1] (100.617 ms)
-2021-03-11 20:17:06,231 INFO  [galaxy.web_stack.handlers] (Job[id=42,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:06,239 INFO  [galaxy.web_stack.handlers] (Job[id=42,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:07,241 INFO  [galaxy.jobs.handler] (42) Job dispatched
-2021-03-11 20:17:07,411 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/42/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/42/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/42/upload_params.json' '62:/tmp/tmp0krucrv3/job_working_directory/000/42/working/dataset_6246ec07-2ddc-4660-b975-99775fa5e1a6_files:/tmp/tmp0krucrv3/files/6/2/4/dataset_6246ec07-2ddc-4660-b975-99775fa5e1a6.dat']
-2021-03-11 20:17:12,542 INFO  [galaxy.tools] Validated and populated state for tool request (17.874 ms)
-2021-03-11 20:17:12,933 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 43
-2021-03-11 20:17:13,022 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=43,tool_id=upload1] (67.071 ms)
-2021-03-11 20:17:13,024 INFO  [galaxy.web_stack.handlers] (Job[id=43,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:13,034 INFO  [galaxy.web_stack.handlers] (Job[id=43,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:13,728 INFO  [galaxy.jobs.handler] (43) Job dispatched
-2021-03-11 20:17:13,962 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/43/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/43/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/43/upload_params.json' '63:/tmp/tmp0krucrv3/job_working_directory/000/43/working/dataset_0423f1ea-b226-49c6-8f07-41111d98d928_files:/tmp/tmp0krucrv3/files/0/4/2/dataset_0423f1ea-b226-49c6-8f07-41111d98d928.dat']
-2021-03-11 20:17:19,025 INFO  [galaxy.tools] Validated and populated state for tool request (21.754 ms)
-2021-03-11 20:17:19,117 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.942 ms)
-2021-03-11 20:17:19,118 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.560 ms)
-2021-03-11 20:17:19,119 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.541 ms)
-2021-03-11 20:17:19,119 INFO  [galaxy.tools.actions] Added output datasets to history (0.051 ms)
-2021-03-11 20:17:19,121 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.911 ms)
-2021-03-11 20:17:19,315 INFO  [galaxy.web_stack.handlers] (Job[id=44,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:20,452 INFO  [galaxy.jobs.handler] (44) Job dispatched
-2021-03-11 20:17:20,732 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/44/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; unset R_HOME; if [ 'none' == 'medoid' -a 'center' == '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/e/1/a/dataset_e1acbbbf-9514-4893-bb09-2336c5ae0f3a.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/6/2/4/dataset_6246ec07-2ddc-4660-b975-99775fa5e1a6.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/0/4/2/dataset_0423f1ea-b226-49c6-8f07-41111d98d928.dat' sampleclassNames      '*' inclusive             'TRUE' wildcards             'TRUE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'center' dataMatrix_out        '/tmp/tmp0krucrv3/files/d/0/6/dataset_d061ceaa-ed95-47e7-9ef5-4c3aeccf7d9d.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/1/0/b/dataset_10b443a1-6fac-4c5c-a6f5-6f6f8a43dd6a.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/d/9/9/dataset_d99c8d72-c5ff-423d-b580-1722082a0da5.dat' order_vrbl            'variableMetadata' order_smpl            'sampleMetadata' centering             'none'; fi]
-ok
-( w4mclassfilter ) > Test-12 ... 2021-03-11 20:17:27,322 INFO  [galaxy.tools] Validated and populated state for tool request (24.887 ms)
-2021-03-11 20:17:27,769 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 45
-2021-03-11 20:17:27,859 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=45,tool_id=upload1] (60.698 ms)
-2021-03-11 20:17:27,859 INFO  [galaxy.web_stack.handlers] (Job[id=45,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:27,867 INFO  [galaxy.web_stack.handlers] (Job[id=45,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:29,040 INFO  [galaxy.jobs.handler] (45) Job dispatched
-2021-03-11 20:17:29,371 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/45/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/45/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/45/upload_params.json' '67:/tmp/tmp0krucrv3/job_working_directory/000/45/working/dataset_fec32c80-a50c-40c5-9ac7-7eb3f548e0ec_files:/tmp/tmp0krucrv3/files/f/e/c/dataset_fec32c80-a50c-40c5-9ac7-7eb3f548e0ec.dat']
-2021-03-11 20:17:34,444 INFO  [galaxy.tools] Validated and populated state for tool request (22.764 ms)
-2021-03-11 20:17:34,827 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 46
-2021-03-11 20:17:34,917 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=46,tool_id=upload1] (68.770 ms)
-2021-03-11 20:17:34,917 INFO  [galaxy.web_stack.handlers] (Job[id=46,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:34,927 INFO  [galaxy.web_stack.handlers] (Job[id=46,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:35,585 INFO  [galaxy.jobs.handler] (46) Job dispatched
-2021-03-11 20:17:35,833 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/46/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/46/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/46/upload_params.json' '68:/tmp/tmp0krucrv3/job_working_directory/000/46/working/dataset_9c9475ac-b54e-457f-97cc-8aa303356f1c_files:/tmp/tmp0krucrv3/files/9/c/9/dataset_9c9475ac-b54e-457f-97cc-8aa303356f1c.dat']
-2021-03-11 20:17:40,882 INFO  [galaxy.tools] Validated and populated state for tool request (31.460 ms)
-2021-03-11 20:17:41,296 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 47
-2021-03-11 20:17:41,380 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=47,tool_id=upload1] (62.340 ms)
-2021-03-11 20:17:41,380 INFO  [galaxy.web_stack.handlers] (Job[id=47,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:41,388 INFO  [galaxy.web_stack.handlers] (Job[id=47,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:42,232 INFO  [galaxy.jobs.handler] (47) Job dispatched
-2021-03-11 20:17:42,484 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/47/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/47/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/47/upload_params.json' '69:/tmp/tmp0krucrv3/job_working_directory/000/47/working/dataset_5d5a49c3-2db3-4439-b7dc-31f6d2a60688_files:/tmp/tmp0krucrv3/files/5/d/5/dataset_5d5a49c3-2db3-4439-b7dc-31f6d2a60688.dat']
-2021-03-11 20:17:47,475 INFO  [galaxy.tools] Validated and populated state for tool request (39.634 ms)
-2021-03-11 20:17:47,551 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.875 ms)
-2021-03-11 20:17:47,552 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.560 ms)
-2021-03-11 20:17:47,553 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.542 ms)
-2021-03-11 20:17:47,553 INFO  [galaxy.tools.actions] Added output datasets to history (0.057 ms)
-2021-03-11 20:17:47,555 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.873 ms)
-2021-03-11 20:17:47,689 INFO  [galaxy.web_stack.handlers] (Job[id=48,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:48,786 INFO  [galaxy.jobs.handler] (48) Job dispatched
-2021-03-11 20:17:49,084 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/48/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; 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/f/e/c/dataset_fec32c80-a50c-40c5-9ac7-7eb3f548e0ec.dat' sampleMetadata_in     '/tmp/tmp0krucrv3/files/9/c/9/dataset_9c9475ac-b54e-457f-97cc-8aa303356f1c.dat' variableMetadata_in   '/tmp/tmp0krucrv3/files/5/d/5/dataset_5d5a49c3-2db3-4439-b7dc-31f6d2a60688.dat' sampleclassNames      '' inclusive             'FALSE' wildcards             'TRUE' classnameColumn       'gender' samplenameColumn      'sampleMetadata' variable_range_filter '' transformation        'none' imputation            'zero' dataMatrix_out        '/tmp/tmp0krucrv3/files/9/e/c/dataset_9ec12057-e344-45c5-948e-b49a88882954.dat' sampleMetadata_out    '/tmp/tmp0krucrv3/files/7/9/5/dataset_795e4bcb-007c-4b55-b116-8ba1d6f290cd.dat' variableMetadata_out  '/tmp/tmp0krucrv3/files/9/6/a/dataset_96addb90-7248-4340-87be-bbd769b3aaba.dat' order_vrbl            'rt' order_smpl            'gender' centering             'medoid'; fi]
-ok
-( w4mclassfilter ) > Test-13 ... 2021-03-11 20:17:55,544 INFO  [galaxy.tools] Validated and populated state for tool request (18.023 ms)
-2021-03-11 20:17:56,086 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 49
-2021-03-11 20:17:56,209 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=49,tool_id=upload1] (96.246 ms)
-2021-03-11 20:17:56,209 INFO  [galaxy.web_stack.handlers] (Job[id=49,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:56,221 INFO  [galaxy.web_stack.handlers] (Job[id=49,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:17:56,463 INFO  [galaxy.jobs.handler] (49) Job dispatched
-2021-03-11 20:17:56,689 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/49/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/49/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/49/upload_params.json' '73:/tmp/tmp0krucrv3/job_working_directory/000/49/working/dataset_deb04e85-d7f8-481d-b03c-5189ce9b2a9f_files:/tmp/tmp0krucrv3/files/d/e/b/dataset_deb04e85-d7f8-481d-b03c-5189ce9b2a9f.dat']
-2021-03-11 20:18:01,857 INFO  [galaxy.tools] Validated and populated state for tool request (18.320 ms)
-2021-03-11 20:18:02,343 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 50
-2021-03-11 20:18:02,439 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=50,tool_id=upload1] (73.807 ms)
-2021-03-11 20:18:02,439 INFO  [galaxy.web_stack.handlers] (Job[id=50,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:18:02,447 INFO  [galaxy.web_stack.handlers] (Job[id=50,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:18:02,896 INFO  [galaxy.jobs.handler] (50) Job dispatched
-2021-03-11 20:18:03,096 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/50/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/50/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/50/upload_params.json' '74:/tmp/tmp0krucrv3/job_working_directory/000/50/working/dataset_c772a3d6-a6ef-49e0-a8f7-d3dc057cdba4_files:/tmp/tmp0krucrv3/files/c/7/7/dataset_c772a3d6-a6ef-49e0-a8f7-d3dc057cdba4.dat']
-2021-03-11 20:18:08,117 INFO  [galaxy.tools] Validated and populated state for tool request (18.717 ms)
-2021-03-11 20:18:08,617 INFO  [galaxy.tools.actions.upload_common] tool upload1 created job id 51
-2021-03-11 20:18:08,811 INFO  [galaxy.web_stack.handlers] Flushed transaction for Job[id=51,tool_id=upload1] (172.238 ms)
-2021-03-11 20:18:08,811 INFO  [galaxy.web_stack.handlers] (Job[id=51,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:18:08,819 INFO  [galaxy.web_stack.handlers] (Job[id=51,tool_id=upload1]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:18:09,485 INFO  [galaxy.jobs.handler] (51) Job dispatched
-2021-03-11 20:18:09,720 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/51/tool_script.sh] for tool command [python '/tmp/tmp0krucrv3/galaxy-dev/tools/data_source/upload.py' '/tmp/tmp0krucrv3/galaxy-dev' '/tmp/tmp0krucrv3/job_working_directory/000/51/registry.xml' '/tmp/tmp0krucrv3/job_working_directory/000/51/upload_params.json' '75:/tmp/tmp0krucrv3/job_working_directory/000/51/working/dataset_afad8efa-19e8-47e7-a6bd-6d55e0539a44_files:/tmp/tmp0krucrv3/files/a/f/a/dataset_afad8efa-19e8-47e7-a6bd-6d55e0539a44.dat']
-2021-03-11 20:18:15,145 INFO  [galaxy.tools] Validated and populated state for tool request (24.130 ms)
-2021-03-11 20:18:15,222 INFO  [galaxy.tools.actions] Handled output named dataMatrix_out for tool w4mclassfilter (0.879 ms)
-2021-03-11 20:18:15,223 INFO  [galaxy.tools.actions] Handled output named sampleMetadata_out for tool w4mclassfilter (0.585 ms)
-2021-03-11 20:18:15,224 INFO  [galaxy.tools.actions] Handled output named variableMetadata_out for tool w4mclassfilter (0.565 ms)
-2021-03-11 20:18:15,224 INFO  [galaxy.tools.actions] Added output datasets to history (0.052 ms)
-2021-03-11 20:18:15,226 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=w4mclassfilter] complete, ready to be enqueued (1.970 ms)
-2021-03-11 20:18:15,573 INFO  [galaxy.web_stack.handlers] (Job[id=52,tool_id=w4mclassfilter]) Handler 'main' assigned using 'db-preassign' assignment method
-2021-03-11 20:18:16,041 INFO  [galaxy.jobs.handler] (52) Job dispatched
-2021-03-11 20:18:16,357 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmp0krucrv3/job_working_directory/000/52/tool_script.sh] for tool command [[ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ "$(basename "$CONDA_DEFAULT_ENV")" = "$(basename '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521')" ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . '/home/rstudio/miniconda3/bin/activate' '/home/rstudio/miniconda3/envs/mulled-v1-132b61d9c88900ff975b44a9aad2b439393214f7dc447ec92cf134b55ae57521' > conda_activate.log 2>&1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo "Failed to activate conda environment! Error was:"
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; 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]
-ok
-
-----------------------------------------------------------------------
-XML: /tmp/tmp0krucrv3/xunit.xml
-----------------------------------------------------------------------
-Ran 13 tests in 363.871s
-
-OK
-2021-03-11 20:18:22,641 INFO  [test_driver] Shutting down
-2021-03-11 20:18:22,642 INFO  [test_driver] Shutting down embedded galaxy web server
-2021-03-11 20:18:22,644 INFO  [test_driver] Embedded web server galaxy stopped
-2021-03-11 20:18:22,644 INFO  [test_driver] Stopping application galaxy
-2021-03-11 20:18:23,634 INFO  [galaxy.queue_worker] Sending reconfigure_watcher control task.
-2021-03-11 20:18:23,679 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2021-03-11 20:18:23,680 INFO  [galaxy.jobs.handler] job handler queue stopped
-2021-03-11 20:18:23,680 INFO  [galaxy.jobs.runners] LocalRunner: Sending stop signal to 4 job worker threads
-2021-03-11 20:18:23,680 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] TaskRunner: Sending stop signal to 2 job worker threads
-2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2021-03-11 20:18:23,681 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2021-03-11 20:18:23,681 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2021-03-11 20:18:23,682 INFO  [galaxy.jobs.handler] job handler stop queue stopped
-2021-03-11 20:18:23,682 INFO  [test_driver] Application galaxy stopped.
-Testing complete. HTML report is in "/home/rstudio/src/w4mclassfilter_galaxy_wrapper/tools/w4mclassfilter/tool_test_output.html".
-All 13 test(s) executed passed.
-w4mclassfilter (Test #1): passed
-w4mclassfilter (Test #2): passed
-w4mclassfilter (Test #3): passed
-w4mclassfilter (Test #4): passed
-w4mclassfilter (Test #5): passed
-w4mclassfilter (Test #6): passed
-w4mclassfilter (Test #7): passed
-w4mclassfilter (Test #8): passed
-w4mclassfilter (Test #9): passed
-w4mclassfilter (Test #10): passed
-w4mclassfilter (Test #11): passed
-w4mclassfilter (Test #12): passed
-w4mclassfilter (Test #13): passed
--- a/tools/w4mclassfilter/w4mclassfilter.xml	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1114 +0,0 @@
-<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.19">
-    <description>Filter W4M data by values or metadata</description>
-    <requirements>
-        <requirement type="package" version="4.0.3">r-base</requirement>
-        <requirement type="package" version="1.1_5">r-batch</requirement>
-        <requirement type="package" version="0.98.19">w4mclassfilter</requirement>
-    </requirements>
-    <command detect_errors="aggressive"><![CDATA[
-    unset R_HOME;
-    if [ '$centering' == 'medoid' -a '$imputation' == 'none' ]; then
-    (echo 'medoid' centering may not be chosen with imputation 'none' 1>&2);
-        [ ! 1 ];
-    else
-        Rscript
-        $__tool_directory__/w4mclassfilter_wrapper.R
-        dataMatrix_in         '$dataMatrix_in'
-        sampleMetadata_in     '$sampleMetadata_in'
-        variableMetadata_in   '$variableMetadata_in'
-        sampleclassNames      '$sampleclassNames'
-        inclusive             '$inclusive'
-        wildcards             '$wildcards'
-        classnameColumn       '$classnameColumn'
-        samplenameColumn      'sampleMetadata'
-        variable_range_filter '$variableRangeFilter'
-        transformation        '$transformation'
-        imputation            '$imputation'
-        dataMatrix_out        '$dataMatrix_out'
-        sampleMetadata_out    '$sampleMetadata_out'
-        variableMetadata_out  '$variableMetadata_out'
-        order_vrbl            '$order_vrbl'
-        order_smpl            '$order_smpl'
-        centering             '$centering';
-    fi
-    ]]></command>
-    <inputs>
-        <param name="dataMatrix_in" format="tabular" label="Data matrix" type="data"
-            help="Choose data-matrix file (tab-separated values with sample names in first row and feature names in first column)." />
-        <param name="sampleMetadata_in" format="tabular" label="Sample metadata" type="data"
-            help="Choose sample-metadata file (tab-separated values with one row per sample, sample name in first column)." />
-        <param name="variableMetadata_in" format="tabular" label="Variable metadata" type="data"
-            help="Choose variable-metadata file (tab-separated values with one row per feature, feature name in first column)." />
-        <param name="classnameColumn" label="Column containing the sample-class names (or treatment names)" type="text" value = "class"
-            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']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="sampleclassNames" label="Sample-class names (or patterns)" type="text" value = ""
-            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]">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#123;"   /> <!-- l-curb, left-curly-bracket -->
-                    <add value="&#124;"   /> <!-- pipe -->
-                    <add value="&#125;"   /> <!-- r-curb, right-curly-bracket -->
-                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->
-                    <add value="&#40;"    /> <!-- left-paren -->
-                    <add value="&#41;"    /> <!-- right-paren -->
-                    <add value="&#42;"    /> <!-- splat, asterisk -->
-                    <add value="&#43;"    /> <!-- plus -->
-                    <add value="&#45;"    /> <!-- dash, hyphen -->
-                    <add value="&#44;"    /> <!-- comma -->
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#58;"    /> <!-- colon -->
-                    <add value="&#59;"    /> <!-- semi, semicolon -->
-                    <add value="&#63;"    /> <!-- what, question mark -->
-                    <add value="&#91;"    /> <!-- l-squib, left-square-bracket -->
-                    <add value="&#92;"    /> <!-- whack, backslash -->
-                    <add value="&#93;"    /> <!-- r-squib, right-square-bracket -->
-                    <add value="&#94;"    /> <!-- hat, caret -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="inclusive" label="Exclude/include named (or matched) sample classes" type="select" help="Indicate meaning of preceding list: either to identify classes to exclude from output or to identify classes to include in output. [default: 'filter-out']">
-            <option value="TRUE">filter-in: &#160;&#160; Include only the named sample classes.</option>
-            <option value="FALSE" selected="true">filter-out: &#160;&#160; Exclude only the named sample classes.</option>
-        </param>
-        <param name="wildcards" label="Use 'wild card patterns' or 'regular expression patterns' to match sample-class names" type="select"
-            help="See '&lt;i&gt;Wild-card patterns to match class names&lt;/i&gt;' and '&lt;i&gt;Regular-expression patterns to match sample-class names&lt;/i&gt;' sections below. [default: 'wild-card patterns']">
-            <option value="TRUE" selected="true">wild-card patterns: &#160;&#160; Use '*' and '?' to match sample-class names.</option>
-            <option value="FALSE">regular-expression patterns: &#160;&#160; Use regular expressions to match sample-class names.</option>
-        </param>
-        <param name="variableRangeFilter" label="Variable-range filters" type="text" value = ""
-            help="List of filters, each specifying the range of permitted values in a column of 'Variable metadata' (specified as 'column:min:max'), as described in '&lt;i&gt;Variable-range filters&lt;/i&gt;' section below.  List should be comma-separated with no stray space characters.  (Leave this empty for no filtering.) [default: empty]">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#44;"    /> <!-- comma -->
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#58;"    /> <!-- colon -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="transformation" label="Data transformation" type="select"
-            help="Choose transformation.  In all cases, negative intensities become missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'none']">
-            <option value="none" selected="true">none: &#160;&#160; Do not transform data.</option>
-            <option value="log2">log2: &#160;&#160; Perform log base 2 transformation of data.</option>
-            <option value="log10">log10: &#160;&#160; Perform log base 10 transformation of data.</option>
-        </param>
-        <param name="imputation" label="Imputation of missing values" type="select"
-            help="Choose imputation for missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'zero']">
-            <option value="zero" selected="true">zero: &#160;&#160; Replace missing values with zero.</option>
-            <option value="center">center: &#160;&#160; Replace missing values with feature-median.</option>
-            <option value="none">none: &#160;&#160; Perform no imputation.  Note that 'compute centers' cannot be set to 'medoid'.</option>
-        </param>
-        <param name="order_smpl" label="Columns that specify order for samples" type="text" value = "sampleMetadata"
-            help="List of sample-metadata column names for sorting samples.  List should be comma-separated with no stray space characters.  (This is ignored when 'Compute centers for classes' is set to either 'centroid' or 'median'.) [default: 'sampleMetadata']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                    <add value="&#44;"    /> <!-- comma -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="order_vrbl" label="Columns that specify order for features" type="text" value = "variableMetadata"
-            help="List of feature-metadata column names for sorting features.  List should be comma-separated with no stray space characters. [default: 'variableMetadata']">
-            <sanitizer>
-                <valid initial="string.letters">
-                    <add preset="string.digits"/>
-                    <add value="&#46;"    /> <!-- dot, period -->
-                    <add value="&#95;"    /> <!-- underscore -->
-                    <add value="&#44;"    /> <!-- comma -->
-                </valid>
-            </sanitizer>
-        </param>
-        <param name="centering" label="Compute centers for classes (e.g., treatments)" type="select" help="[default: 'none']">
-            <option value="none" selected="true">none: &#160;&#160; Do not compute centers for classes/treatments.</option>
-            <option value="centroid">centroid: &#160;&#160; For each class, compute the mean for each feature.</option>
-            <option value="median">median: &#160;&#160; For each class, compute the median for each feature.</option>
-            <option value="medoid">medoid: &#160;&#160; For each class, select only the most central member. Note that 'Imputation of missing values' cannot be 'none'.</option>
-        </param>
-    </inputs>
-    <outputs>
-        <data name="dataMatrix_out" format="tabular" label="${dataMatrix_in.name}.subset" ></data>
-        <data name="sampleMetadata_out" format="tabular" label="${sampleMetadata_in.name}.subset" ></data>
-        <data name="variableMetadata_out" format="tabular" label="${variableMetadata_in.name}.subset" ></data>
-    </outputs>
-    <tests>
-      <!-- test 1 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="variableRangeFilter" value="FEATMAX:2e6:,mz:200:,rt::800"/>
-        <param name="transformation" value="none"/>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <has_text text="747080" />
-            <not_has_text text="13420742" />
-            <not_has_text text="47259" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-          </assert_contents>
-        </output>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB13189" />
-            <not_has_text text="HMDB00191" />
-            <not_has_text text="HMDB00251" />
-            <not_has_text text="HMDB00299" />
-            <not_has_text text="HMDB00512" />
-            <not_has_text text="HMDB00518" />
-            <not_has_text text="HMDB00715" />
-            <not_has_text text="HMDB00822" />
-            <not_has_text text="HMDB03193" />
-            <not_has_text text="HMDB04824" />
-            <not_has_text text="HMDB10348" />
-            <not_has_text text="HMDB59717" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 2 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <!-- test that hyphens in regular expressions work -->
-        <param name="sampleclassNames" value="HU_[0-9][0-9][0-9]"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="classnameColumn" value="sampleMetadata"/>
-        <!-- test that variableRangeFilter works with tranformation -->
-        <param name="variableRangeFilter" value="FEATMAX:6.30103:,mz:200:,rt::800"/>
-        <param name="transformation" value="log10"/>
-        <param name="imputation" value="zero"/>
-        <output name="dataMatrix_out" md5="5644d2ea01d072ee1d0c40e29e9d0089">
-          <assert_contents>
-            <has_text text="5.8733671" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_017" />
-            <has_text text="HU_028" />
-            <has_text text="HU_034" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_110" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <has_text text="HU_208" />
-            <not_has_text text="HU_204" />
-          </assert_contents>
-        </output>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB13189" />
-            <not_has_text text="HMDB00251" />
-            <not_has_text text="HMDB00299" />
-            <not_has_text text="HMDB00512" />
-            <not_has_text text="HMDB00518" />
-            <not_has_text text="HMDB00715" />
-            <not_has_text text="HMDB00822" />
-            <not_has_text text="HMDB03193" />
-            <not_has_text text="HMDB04824" />
-            <not_has_text text="HMDB10348" />
-            <not_has_text text="HMDB59717" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 3 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="transformation" value="none"/>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-            <has_text     text="HU_017" />
-            <has_text     text="HU_034" />
-            <has_text     text="HU_078" />
-            <has_text     text="HU_091" />
-            <has_text     text="HU_093" />
-            <has_text     text="HU_099" />
-            <has_text     text="HU_130" />
-            <has_text     text="HU_134" />
-            <has_text     text="HU_138" />
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <has_text     text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 4 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="zero"/>
-        <output name="dataMatrix_out" md5="b2eac4946d3803a07606286b50451af4">
-          <assert_contents>
-            <not_has_text text="NA" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 5 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_028" />
-            <not_has_text text="HU_051" />
-            <not_has_text text="HU_060" />
-            <not_has_text text="HU_110" />
-            <not_has_text text="HU_149" />
-            <not_has_text text="HU_152" />
-            <not_has_text text="HU_175" />
-            <not_has_text text="HU_178" />
-            <not_has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <not_has_text text="HU_208" />
-            <has_text     text="HU_017" />
-            <has_text     text="HU_034" />
-            <has_text     text="HU_078" />
-            <has_text     text="HU_091" />
-            <has_text     text="HU_093" />
-            <has_text     text="HU_099" />
-            <has_text     text="HU_130" />
-            <has_text     text="HU_134" />
-            <has_text     text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 6 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <has_text     text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 7 -->
-      <test>
-        <param name="dataMatrix_in" value="input_nofilter_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="variableMetadata_out">
-          <assert_contents>
-            <has_text     text="HMDB03193" />
-            <not_has_text text="HMDB00822" />
-            <has_text     text="HMDB01101" />
-            <has_text     text="HMDB01101.1" />
-            <has_text     text="HMDB10348" />
-            <has_text     text="HMDB59717" />
-            <not_has_text text="HMDB13189" />
-            <has_text     text="HMDB00299" />
-            <has_text     text="HMDB00191" />
-            <has_text     text="HMDB00518" />
-            <has_text     text="HMDB00715" />
-            <has_text     text="HMDB01032" />
-            <has_text     text="HMDB00208" />
-            <has_text     text="HMDB04824" />
-            <has_text     text="HMDB00512" />
-            <has_text     text="HMDB00251" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 8 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="[Mm],[fF]"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 9 -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value=""/>
-        <param name="sampleclassNames" value="M"/>
-        <param name="wildcards" value="FALSE"/>
-        <param name="inclusive" value="TRUE"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="HU_028" />
-            <has_text text="HU_051" />
-            <has_text text="HU_060" />
-            <has_text text="HU_110" />
-            <has_text text="HU_149" />
-            <has_text text="HU_152" />
-            <has_text text="HU_175" />
-            <has_text text="HU_178" />
-            <has_text text="HU_185" />
-            <not_has_text text="HU_204" />
-            <has_text text="HU_208" />
-            <has_text text="HU_017" />
-            <has_text text="HU_034" />
-            <has_text text="HU_078" />
-            <has_text text="HU_091" />
-            <has_text text="HU_093" />
-            <has_text text="HU_099" />
-            <has_text text="HU_130" />
-            <has_text text="HU_134" />
-            <has_text text="HU_138" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 10 - extends test4 with no imputation rather than zero imputation -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="none"/>
-        <output name="dataMatrix_out" md5="6200dfa77d09c56e434f80b1a23b3393">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="NA" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 11 - extends test4 with center imputation rather than zero imputation -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value="*"/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="TRUE"/>
-        <param name="imputation" value="center"/>
-        <output name="dataMatrix_out" md5="a404278c5c9ffd5bdadf346c4f8a0184">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <not_has_text text="NA" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_204" />
-            <has_text text="HU_028" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 12 - select medoid for class -->
-      <test>
-        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
-        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
-        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
-        <param name="classnameColumn" value="gender"/>
-        <param name="sampleclassNames" value=""/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="FALSE"/>
-        <param name="imputation" value="zero"/>
-        <param name="order_vrbl" value="rt"/>
-        <param name="order_smpl" value="gender"/>
-        <param name="centering" value="medoid"/>
-        <output name="dataMatrix_out" md5="c91bbfbf30004fa24b05a67ec479bfb1">
-          <assert_contents>
-            <not_has_text text="1013302" />
-            <has_text text="4763576" />
-            <has_text text="2003278" />
-            <has_text text="26222916" />
-          </assert_contents>
-        </output>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <not_has_text text="HU_099" />
-            <not_has_text text="HU_185" />
-            <has_text text="HU_110" />
-            <has_text text="HU_078" />
-          </assert_contents>
-        </output>
-      </test>
-      <!-- test 13 -->
-      <test>
-        <param name="dataMatrix_in" value="input_med1_dm.tsv"/>
-        <param name="sampleMetadata_in" value="input_med1_sm.tsv"/>
-        <param name="variableMetadata_in" value="input_med1_vm.tsv"/>
-        <param name="classnameColumn" value="pcgroup"/>
-        <param name="sampleclassNames" value=""/>
-        <param name="wildcards" value="TRUE"/>
-        <param name="inclusive" value="FALSE"/>
-        <param name="imputation" value="zero"/>
-        <param name="order_vrbl" value="sample"/>
-        <param name="order_smpl" value="pcgroup"/>
-        <param name="centering" value="medoid"/>
-        <output name="sampleMetadata_out">
-          <assert_contents>
-            <has_text text="X10" />
-            <has_text text="M70T1043" />
-            <has_text text="70.01229" />
-            <has_text text="1042.837" />
-            <has_text text="X345" />
-            <has_text text="M74T33" />
-            <not_has_text text="M70T1042_1" />
-            <not_has_text text="M74T34" />
-          </assert_contents>
-        </output>
-        <output name="dataMatrix_out">
-          <assert_contents>
-            <has_text text="X10" />
-            <has_text text="X345" />
-          </assert_contents>
-        </output>
-      </test>
-    </tests>
-    <!-- Here is the hyphenation standard that I *try* to apply consistently in my documentation:
-         https://web.archive.org/web/20161014025757/http://www.sandranoonan.com/dont-let-hyphenation-drive-crazy/
-    -->
-    <help><![CDATA[
-
-
-**Author** Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
-
---------------------------------------------------------------------------
-
-
-**R package**
-
-The *w4mclassfilter* package (which is used by the W4M Data Subset tool) is available from the Hegeman lab GitHub repository (https://github.com/HegemanLab/w4mclassfilter/releases).
-
------------------------------------------------------------------------------------------------------------------------------------------
-
-
-**Tool updates**
-
-See https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper#news
-
----------------------------------------------------
-
-======================================================
-"W4M Data Subset" - Filter Workflow4Metabolomics data
-======================================================
-
-----------
-Motivation
-----------
-
-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").
-(If a chemical is fragmented or may have a variety of adducts, several features will result.)
-Data for a sample are collected as mass-spectral intensities, each of which is associated with a position on a 2D plane with dimensions of rt and *m/z*.
-Ideally, features would be sufficiently reproducible among sample-runs to distinguish features that are similar among samples from those that differ.
-
-For liquid chromatography, the retention time for a species can vary considerably from one chromatography run to the next.
-The Workflow4Metabolomics suite of Galaxy tools (W4M, [Giacomoni *et al.*, 2014, Guitton *et al.* 2017])
-uses the XCMS preprocessing tools [Smith *et al.*, 2006]
-for "retention-time correction" to align features among samples.
-Features may be better aligned if pooled samples and blanks are included.
-
-Multivariate statistical tools may be used to discover clusters of similar samples [Th]]>&#233;<![CDATA[venot *et al.*, 2015].
-However, once retention-time alignment of features has been achieved among samples in LC-MS datasets:
-
-- The presence of pools and blanks may confound identification and separation of sample clusters.
-- Multivariate statistical algorithms may be impacted by missing values or dimensions that have zero variance.
-
------------
-Description
------------
-
-The **W4M Data Subset** tool **selects subsets of samples, features, or data values** and **conditions the data** for further analysis.
-
-- The tool takes as input the *dataMatrix*, *sampleMetadata*, and *variableMetadata* datasets produced by W4M's XCMS and CAMERA [Kuhl *et al.*, 2012] tools.
-- The tool produces the same trio of output datasets, modified as described below.
-
-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):
-
-- *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.
-- *Feature filtering:* Features may be selected by specifying minimum or maximum value (or both) allowable in columns of *variableMetadata*.
-- *Intensity filtering:* To exclude minimal features from consideration, a lower bound may be specified for the maximum intensity for a feature across all samples (i.e., for a row in *dataMatrix*).
-
-This tool also conditions data for statistical analysis:
-
-- Samples that are missing from either *sampleMetadata* or *dataMatrix* are eliminated.
-- Features that are missing from either *variableMetadata* or *dataMatrix* are eliminated.
-- Features and samples that have zero variance are eliminated.
-- Samples and features are ordered consistently in *variableMetadata*, *sampleMetadata*, and *dataMatrix*.
-  (The columns for sorting *variableMetadata* or *sampleMetadata* may be specified.)
-- The names of the first columns of *variableMetadata* and *sampleMetadata* are set respectively to "variableMetadata" and "sampleMetadata".
-- If desired, the values in *dataMatrix* may be log-transformed.
-- Negative intensities become missing values (before missing-value replacement is performed).
-- If desired, each missing value in *dataMatrix* may be replaced with zero or the median value observed for the corresponding feature.
-- If desired, a "center" for each treatment can be computed in lieu of the samples for that treatment.
-
-This tool may be applied several times sequentially, which may be useful for:
-
-- analyzing subsets of samples for progressively smaller sets of treatment levels, or
-- choosing subsets of samples or features, respectively based on criteria in columns of *sampleMetadata* or *variableMetadata*.
-
------------------
-Workflow Position
------------------
-
-This tool can be used at any point downstream of Preprocessing.
-
-- Possible upstream tool categories: Preprocessing, Quality Control, Statistical Analysis, Filter and Sort
-- Possible downstream tool categories: Normalisation, Statistical Analysis, Quality Control, Filter and Sort
-
------------
-Input files
------------
-
-+------------------------+---------------------------------------+------------+
-| File                   | Contents                              |   Format   |
-+========================+=======================================+============+
-|     Data matrix        | per-feature, per-sample intensities   |   tabular  |
-+------------------------+---------------------------------------+------------+
-|     Sample metadata    | metadata for samples                  |   tabular  |
-+------------------------+---------------------------------------+------------+
-|     Variable metadata  | metadata for features                 |   tabular  |
-+------------------------+---------------------------------------+------------+
-
-
-----------
-Parameters
-----------
-
-Data matrix
-	| feature x sample **dataMatrix** (tab-separated values) file of the numeric data matrix, with period-character ('.') as decimal, and 'NA' for missing values.
-	| The file must not contain metadata apart from the required row and column names.
-	|
-
-Sample metadata
-	| sample x metadata **sampleMetadata** (tab-separated values) file of the numeric and/or character sample metadata, with period-character ('.') as decimal, and 'NA' for missing values.
-	|
-
-Variable metadata
-	| variable x metadata **variableMetadata** (tab-separated values) file of the numeric and/or character variable metadata, with period-character ('.') as decimal, and 'NA' for missing values.
-	|
-
-Column containing the sample-class names (default = '``class``')
-	| name of the column in **sampleMetadata** that has the values to be tested against the '``Sample-class names``' input parameter or to be referenced by the '``Compute centers for classes``' input parameter.
-	| Only letters, digits, periods, and underscores are permitted.
-	|
-
-Sample-class names (default = no names)
-	| names (or regular expressions to match names) of sample-classes to include or exclude
-	| (Separate names with commas, without any extra space characters.)
-	|
-
-Exclude/include named (or matched) classes (default = '``filter-out``')
-	| '``filter-in``' - include only the named sample-classes
-	| '``filter-out``' - exclude only the named sample-classes
-	|
-
-Use 'wild card patterns' or 'regular expression patterns' (default = '``wild-card patterns``')
-	| '``wild-card patterns``' - use wild cards to match names of sample-classes (see the *'Wild-card patterns to match class names'* section below.)
-	| '``regular-expression patterns``' - use regular expressions to match the named sample-classes (see the *'Regular-expression patterns to match class names'* section below.)
-	|
-
-Variable-range filters (default = no filters)
-	| variable-range filters (see the *'Variable-range filters'* section below)
-	| (Separate filter expressions with commas, without any extra space characters.)
-	|
-
-Data transformation (default = '``none``')
-	| '``none``' - Do not transform data matrix values.
-	| '``log2``' - Take the log base 2 of the values in the data matrix.
-	| '``log10``' - Take the log base 10 of the values in the data matrix.
-	|
-	| Note that negative intensities become missing values regardless of the choice made here.
-	|
-
-Imputation of missing values (default = '``zero``')
-	| '``none``' - Do not impute data matrix values.
-	| '``zero``' - Negative and missing values are imputed to zero.
-	| '``center``' - For each feature, negative and missing values are imputed to the median of other values.
-	|
-	| Note well: For '``none``' option, '``Compute centers for classes``' cannot be set to '``medoid``'.
-	|
-
-Columns that specify order for samples (default = '``sampleMetadata``')
-	| names of the columns in **sampleMetadata** that is used to sort samples; only letters, digits, periods, and underscores are permitted.
-	| (Separate column names with commas, without any extra space characters.)
-	|
-
-Columns that specify order for features (default = '``variableMetadata``')
-	| names of the columns in **variableMetadata** that is used to sort features; only letters, digits, periods, and underscores are permitted.
-	| (Separate column names with commas, without any extra space characters.)
-	|
-
-Compute centers for classes, e.g., treatments (default = '``none``')
-	| '``none``' - Return all samples; do not compute centers for classes/treatments.
-	| '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
-	| '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
-	| '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).
-	|
-	| Note well: For '``medoid``' option, '``Imputation of missing values``' cannot be set to '``none``'.
-	|
-
-------------
-Output files
-------------
-
-sampleMetadata
-	| (tab-separated values) file.
-	| If centering is '``none``' or  '``medoid``', this will be identical to the **sampleMetadata** file given as an input argument, excepting lacking rows for samples that have been filtered out (by the sample-class filter, or because of zero variance, or because they were missing in the input data matrix)
-	| If centering is '``centroid``' or  '``median``', most columns will be replaced with the treatment name and the number of samples for that treatment.
-	|
-
-variableMetadata
-	| (tab-separated values) file identical to the **variableMetadata** file given as an input argument, excepting lacking rows for variables (LC-MS features) that have been filtered out (by the variable-range filter, or because of zero variance, or because they were missing in the input data matrix)
-	|
-
-dataMatrix
-	| (tab-separated values) file identical to the **dataMatrix** file given as an input argument, excepting lacking rows and columns for variables and samples that have been filtered out, respectively
-	|
-
-
------------------------------------------
-Wild-card patterns to match class names
------------------------------------------
-
-W4M Data Subset supports use of "wild card" patterns to select class-names.
-
-- use '``?``' to match a single character
-- use '``*``' to match zero or more characters
-- the entire pattern must match the sample name
-
-For example
-
-- '``??.samp*``' matches '``my.sample``' but not '``my.own.sample``'
-- '``*.sample``' matches '``my.sample``' and '``my.own.sample``'
-- '``*.sampl``' matches neither '``my.sample``' nor '``my.own.sample``'
-
---------------------------------------------------
-Regular-expression patterns to match class names
---------------------------------------------------
-
-W4M Data Subset supports use of R "extended regular expression" patterns to select class-names.
-
-R extended regular expressions, which allow precise pattern-matching and are exhaustively defined at
-https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html
-
-However, only a few basic building blocks of regular expressions need to be mastered for most cases:
-
-- '``^``' matches the beginning of a class-name
-- '``$``' matches the end of a class-name
-- '``.``' outside of square brackets matches a single character
-- '``*``' matches character specified immediately before zero or more times
-- square brackets specify a set of characters to be matched.
-
-Within square brackets
-
-- '``^``' as the first character specifies that the list of characters are those that should **not** be matched.
-- '``-``' is used to specify ranges of characters
-
-Caveat: The tool wrapper uses the comma ('``,``') to split a list of sample-class names, so **commas may not be used within regular expressions for this tool**
-
-First Example: Consider a field of class-names consisting of '``marq3,marq6,marq9,marq12,front3,front6,front9,front12``'
-
-- The regular expression '``^front[0-9][0-9]*$``' will match the same sample-classes as '``front3,front6,front9,front12``'
-- The regular expression '``^[a-z][a-z]3$``' will match the same sample-classes as '``front3,marq3``'
-- The regular expression '``^[a-z][a-z]12$``' will match the same sample-classes as '``front12,marq12``'
-- The regular expression '``^[a-z][a-z][0-9]$``' will match the same sample-classes as '``front3,front6,front9,marq3,marq6,marq9``'
-
-Second Example: Consider these regular expression patterns as possible matches to a sample-class name '``AB0123``':
-
-- '``^[A-Z][A-Z][0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
-- '``^[A-Z][A-Z]*[0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
-- '``^[A-Z][0-9]*``' MATCHES '``**^A** B0123$``' - first character is a letter, '``*``' can specify zero characters, and end of line did not need to be matched.
-- '``^[A-Z][A-Z][0-9]``' MATCHES '``**^AB0** 123$``' - first two characters are letters aind the third is a digit.
-- '``^[A-Z][A-Z]*[0-9][0-9]$``' DOES NOT MATCH - the name does not end with the pattern '``[A-Z][0-9][0-9]$``', i.e., it ends with four digits, not two.
-- '``^[A-Z][0-9]*$``' DOES NOT MATCH - the pattern specifies that second character and all those that follow, if present, must be digits.
-
-----------------------
-Variable-range filters
-----------------------
-
-An array of range-specification strings may be supplied in the '``Variable-range filters``'
-argument.  If supplied, only features having numerical values in the specified column
-of **variableMetadata** that fall within the specified ranges will be retained
-in the output.  Each range is a string of three colon-separated values (e.g., '``mz:200:800``') in the
-following order:
-
-- the **name of a column** of **variableMetadata** which must have numerical data (only letters, digits, periods, and underscores are permitted in the name itself), e.g., '``mz``';
-- the **minimum allowed value** in that column for the feature to be retained, e.g., '``200``';
-- the **maximum allowed value**, e.g., '``800``'.
-
-Note for the range specification strings:
-
-- **If the "maximum" is less than the "minimum", then the range is exclusive**  (e.g., '``mz:800:200``' means retain only features whose mz is NOT in the range 200-800)
-- **If the name supplied in the first field** is '``FEATMAX``',  then the string is defining the **threshold for the maximum intensity** for each feature in the dataMatrix.
-
-  - For example, '``FEATMAX:1e6:``' would specify  that any feature would be excluded if no sample had an intensity for that feature greater than 1,000,000.
-  - Although a maximum may be specified, it seems unlikely that this would be useful. Note that when the "maximum" is less than the "minimum" for the FEATMAX range specification, then the specification is ignored.
-
-----------------------------------
-Data transformation and imputation
-----------------------------------
-
-Data may optionally be log2- or log10-transformed.
-
-Negative intensities are always substituted with missing values before imputation, even when no transformation is chosen.
-
-Missing intensity data values may optionally be imputed.  Missing values may be substituted:
-
-- with zeros (as may be appropriate for univariate analysis)
-- with the median for the feature (as may be appropriate for multivariate analysis).
-
-  - Note that the median feature-intensity is computed for the samples *before* variable-range filters are applied.
-
------------------------------------------
-Optional Computation of Treatment Centers
------------------------------------------
-
-A "center" for each treatment may be computed in lieu of all the samples for each treatment.
-
-- '``none``' - Return all samples; do not compute centers.
-- '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
-- '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
-- '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).  This choice requires that the '``Imputation of missing values``' argument must not be set to '``none``'.
-
-The medoid is the sample having the smallest sum of its distances from other samples in the treatment:
-
-- Because principal components are uncorrelated, distances are computed in the space defined by the principal-component scores to minimize the distortion of computed distances by correlated features.
-- Because principal components are used to compute distances, no missing values are permitted, which is why the '``Imputation of missing values``' argument must not be set to '``none``'.
-- The distances are used to identify the medoid using code adapted from https://web.archive.org/web/20191231012914/https://www.biostars.org/p/11987/#11989
-
------------------------------------------------------------------------------
-
-----------------
-WORKING EXAMPLES
-----------------
-
------------
-Input Files
------------
-
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Input File URL                                                                                                                                       |
-+======================================================================================================================================================+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_dataMatrix.tsv                |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_sampleMetadata.tsv            |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_variableMetadata.tsv          |
-+------------------------------------------------------------------------------------------------------------------------------------------------------+
-
--------------------------------
-Example without Range-Filtering
--------------------------------
-
-This example retains only samples whose '``gender``' attribute is '``M``'.
-
-**Input parameters**
-
-+---------------------------------------------+-------------------------------+
-| Input Parameter                             | Value                         |
-+=============================================+===============================+
-| Column that names the sample class          | gender                        |
-+---------------------------------------------+-------------------------------+
-| Sample-class names                          | M                             |
-+---------------------------------------------+-------------------------------+
-| Exclude/include named classes               | filter-in                     |
-+---------------------------------------------+-------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | wild-cards                    |
-+---------------------------------------------+-------------------------------+
-| Variable range-filters                      | (Leave this field empty.)     |
-+---------------------------------------------+-------------------------------+
-| Data transformation                         | none                          |
-+---------------------------------------------+-------------------------------+
-| Missing-value imputation                    | center                        |
-+---------------------------------------------+-------------------------------+
-| Sample-sort column                          | sampleMetadata                |
-+---------------------------------------------+-------------------------------+
-| Feature-sort column                         | variableMetadata              |
-+---------------------------------------------+-------------------------------+
-| Compute centers for classes                 | none                          |
-+---------------------------------------------+-------------------------------+
-
-**Expected outputs**
-
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                                                               |
-+===================+=================================================================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_dataMatrix.tsv        |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv    |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv  |
-+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-
-----------------------------
-Example with Range-Filtering
-----------------------------
-
-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.
-This example retains all samples (except those having zero variance for all feature), although it would be possible to filter on samples as well.
-
-**Input parameters**
-
-+---------------------------------------------+-----------------------------------+
-| Input Parameter                             | Value                             |
-+=============================================+===================================+
-| Column that names the sample class          | sampleMetadata                    |
-+---------------------------------------------+-----------------------------------+
-| Sample-class names                          | HU_13[48]                         |
-+---------------------------------------------+-----------------------------------+
-| Exclude/include named classes               | filter-out                        |
-+---------------------------------------------+-----------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | regular-expressions               |
-+---------------------------------------------+-----------------------------------+
-| Variable range-filters                      | FEATMAX:20.93157:,mz:200:,rt::800 |
-+---------------------------------------------+-----------------------------------+
-| Data transformation                         | log2                              |
-+---------------------------------------------+-----------------------------------+
-| Missing-value imputation                    | zero                              |
-+---------------------------------------------+-----------------------------------+
-| Sample-sort column                          | sampleMetadata                    |
-+---------------------------------------------+-----------------------------------+
-| Feature-sort column                         | variableMetadata                  |
-+---------------------------------------------+-----------------------------------+
-| Compute centers for classes                 | none                              |
-+---------------------------------------------+-----------------------------------+
-
-**Expected outputs**
-
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                                                                 |
-+===================+===================================================================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv       |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv   |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv |
-+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-
---------------------------------
-Example with Treatment-Centering
---------------------------------
-
-This example retains only the samples that are medoids for their gender.
-
-**Input parameters**
-
-+---------------------------------------------+-----------------------------------+
-| Input Parameter                             | Value                             |
-+=============================================+===================================+
-| Column that names the sample class          | gender                            |
-+---------------------------------------------+-----------------------------------+
-| Sample-class names                          | (Leave this field empty.)         |
-+---------------------------------------------+-----------------------------------+
-| Exclude/include named classes               | filter-out                        |
-+---------------------------------------------+-----------------------------------+
-| Use 'wild-cards' or 'regular expressions'   | wild-cards                        |
-+---------------------------------------------+-----------------------------------+
-| Variable range-filters                      | (Leave this field empty.)         |
-+---------------------------------------------+-----------------------------------+
-| Data transformation                         | none                              |
-+---------------------------------------------+-----------------------------------+
-| Missing-value imputation                    | zero                              |
-+---------------------------------------------+-----------------------------------+
-| Sample-sort column                          | gender                            |
-+---------------------------------------------+-----------------------------------+
-| Feature-sort column                         | rt                                |
-+---------------------------------------------+-----------------------------------+
-| Compute centers for classes                 | medoid                            |
-+---------------------------------------------+-----------------------------------+
-
-**Expected outputs**
-
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Expected Output   | Download from URL                                                                                        |
-+===================+==========================================================================================================+
-| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_dm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_sm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_vm.tsv |
-+-------------------+----------------------------------------------------------------------------------------------------------+
-    ]]></help>
-    <citations>
-        <!-- Giacomoni_2014 W4M 2.5 -->
-        <citation type="doi">10.1093/bioinformatics/btu813</citation>
-        <!-- Guitton_2017 W4M 3.0 -->
-        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>
-        <!-- Kuhl_2012 CAMERA -->
-        <citation type="doi">10.1021/ac202450g</citation>
-        <!-- Smith_2006 XCMS -->
-        <citation type="doi">10.1021/ac051437y</citation>
-        <!-- Thevenot_2015 Urinary metabolome statistics -->
-        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>
-    </citations>
-    <!--
-     vim:noet:sw=4:ts=4
---> </tool>
--- a/tools/w4mclassfilter/w4mclassfilter_wrapper.R	Thu Mar 11 20:44:23 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +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))
-
-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())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/w4mclassfilter.xml	Thu Mar 11 20:46:26 2021 +0000
@@ -0,0 +1,1114 @@
+<tool id="w4mclassfilter" name="W4m Data Subset" version="0.98.19">
+    <description>Filter W4M data by values or metadata</description>
+    <requirements>
+        <requirement type="package" version="4.0.3">r-base</requirement>
+        <requirement type="package" version="1.1_5">r-batch</requirement>
+        <requirement type="package" version="0.98.19">w4mclassfilter</requirement>
+    </requirements>
+    <command detect_errors="aggressive"><![CDATA[
+    unset R_HOME;
+    if [ '$centering' == 'medoid' -a '$imputation' == 'none' ]; then
+    (echo 'medoid' centering may not be chosen with imputation 'none' 1>&2);
+        [ ! 1 ];
+    else
+        Rscript
+        $__tool_directory__/w4mclassfilter_wrapper.R
+        dataMatrix_in         '$dataMatrix_in'
+        sampleMetadata_in     '$sampleMetadata_in'
+        variableMetadata_in   '$variableMetadata_in'
+        sampleclassNames      '$sampleclassNames'
+        inclusive             '$inclusive'
+        wildcards             '$wildcards'
+        classnameColumn       '$classnameColumn'
+        samplenameColumn      'sampleMetadata'
+        variable_range_filter '$variableRangeFilter'
+        transformation        '$transformation'
+        imputation            '$imputation'
+        dataMatrix_out        '$dataMatrix_out'
+        sampleMetadata_out    '$sampleMetadata_out'
+        variableMetadata_out  '$variableMetadata_out'
+        order_vrbl            '$order_vrbl'
+        order_smpl            '$order_smpl'
+        centering             '$centering';
+    fi
+    ]]></command>
+    <inputs>
+        <param name="dataMatrix_in" format="tabular" label="Data matrix" type="data"
+            help="Choose data-matrix file (tab-separated values with sample names in first row and feature names in first column)." />
+        <param name="sampleMetadata_in" format="tabular" label="Sample metadata" type="data"
+            help="Choose sample-metadata file (tab-separated values with one row per sample, sample name in first column)." />
+        <param name="variableMetadata_in" format="tabular" label="Variable metadata" type="data"
+            help="Choose variable-metadata file (tab-separated values with one row per feature, feature name in first column)." />
+        <param name="classnameColumn" label="Column containing the sample-class names (or treatment names)" type="text" value = "class"
+            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']">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add preset="string.digits"/>
+                    <add value="&#46;"    /> <!-- dot, period -->
+                    <add value="&#95;"    /> <!-- underscore -->
+                </valid>
+            </sanitizer>
+        </param>
+        <param name="sampleclassNames" label="Sample-class names (or patterns)" type="text" value = ""
+            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]">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add preset="string.digits"/>
+                    <add value="&#123;"   /> <!-- l-curb, left-curly-bracket -->
+                    <add value="&#124;"   /> <!-- pipe -->
+                    <add value="&#125;"   /> <!-- r-curb, right-curly-bracket -->
+                    <add value="&#36;"    /> <!-- dollar, dollar-sign -->
+                    <add value="&#40;"    /> <!-- left-paren -->
+                    <add value="&#41;"    /> <!-- right-paren -->
+                    <add value="&#42;"    /> <!-- splat, asterisk -->
+                    <add value="&#43;"    /> <!-- plus -->
+                    <add value="&#45;"    /> <!-- dash, hyphen -->
+                    <add value="&#44;"    /> <!-- comma -->
+                    <add value="&#46;"    /> <!-- dot, period -->
+                    <add value="&#58;"    /> <!-- colon -->
+                    <add value="&#59;"    /> <!-- semi, semicolon -->
+                    <add value="&#63;"    /> <!-- what, question mark -->
+                    <add value="&#91;"    /> <!-- l-squib, left-square-bracket -->
+                    <add value="&#92;"    /> <!-- whack, backslash -->
+                    <add value="&#93;"    /> <!-- r-squib, right-square-bracket -->
+                    <add value="&#94;"    /> <!-- hat, caret -->
+                    <add value="&#95;"    /> <!-- underscore -->
+                </valid>
+            </sanitizer>
+        </param>
+        <param name="inclusive" label="Exclude/include named (or matched) sample classes" type="select" help="Indicate meaning of preceding list: either to identify classes to exclude from output or to identify classes to include in output. [default: 'filter-out']">
+            <option value="TRUE">filter-in: &#160;&#160; Include only the named sample classes.</option>
+            <option value="FALSE" selected="true">filter-out: &#160;&#160; Exclude only the named sample classes.</option>
+        </param>
+        <param name="wildcards" label="Use 'wild card patterns' or 'regular expression patterns' to match sample-class names" type="select"
+            help="See '&lt;i&gt;Wild-card patterns to match class names&lt;/i&gt;' and '&lt;i&gt;Regular-expression patterns to match sample-class names&lt;/i&gt;' sections below. [default: 'wild-card patterns']">
+            <option value="TRUE" selected="true">wild-card patterns: &#160;&#160; Use '*' and '?' to match sample-class names.</option>
+            <option value="FALSE">regular-expression patterns: &#160;&#160; Use regular expressions to match sample-class names.</option>
+        </param>
+        <param name="variableRangeFilter" label="Variable-range filters" type="text" value = ""
+            help="List of filters, each specifying the range of permitted values in a column of 'Variable metadata' (specified as 'column:min:max'), as described in '&lt;i&gt;Variable-range filters&lt;/i&gt;' section below.  List should be comma-separated with no stray space characters.  (Leave this empty for no filtering.) [default: empty]">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add preset="string.digits"/>
+                    <add value="&#44;"    /> <!-- comma -->
+                    <add value="&#46;"    /> <!-- dot, period -->
+                    <add value="&#58;"    /> <!-- colon -->
+                    <add value="&#95;"    /> <!-- underscore -->
+                </valid>
+            </sanitizer>
+        </param>
+        <param name="transformation" label="Data transformation" type="select"
+            help="Choose transformation.  In all cases, negative intensities become missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'none']">
+            <option value="none" selected="true">none: &#160;&#160; Do not transform data.</option>
+            <option value="log2">log2: &#160;&#160; Perform log base 2 transformation of data.</option>
+            <option value="log10">log10: &#160;&#160; Perform log base 10 transformation of data.</option>
+        </param>
+        <param name="imputation" label="Imputation of missing values" type="select"
+            help="Choose imputation for missing values.  See '&lt;i&gt;Data transformation and imputation&lt;/i&gt;' section below. [default: 'zero']">
+            <option value="zero" selected="true">zero: &#160;&#160; Replace missing values with zero.</option>
+            <option value="center">center: &#160;&#160; Replace missing values with feature-median.</option>
+            <option value="none">none: &#160;&#160; Perform no imputation.  Note that 'compute centers' cannot be set to 'medoid'.</option>
+        </param>
+        <param name="order_smpl" label="Columns that specify order for samples" type="text" value = "sampleMetadata"
+            help="List of sample-metadata column names for sorting samples.  List should be comma-separated with no stray space characters.  (This is ignored when 'Compute centers for classes' is set to either 'centroid' or 'median'.) [default: 'sampleMetadata']">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add preset="string.digits"/>
+                    <add value="&#46;"    /> <!-- dot, period -->
+                    <add value="&#95;"    /> <!-- underscore -->
+                    <add value="&#44;"    /> <!-- comma -->
+                </valid>
+            </sanitizer>
+        </param>
+        <param name="order_vrbl" label="Columns that specify order for features" type="text" value = "variableMetadata"
+            help="List of feature-metadata column names for sorting features.  List should be comma-separated with no stray space characters. [default: 'variableMetadata']">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add preset="string.digits"/>
+                    <add value="&#46;"    /> <!-- dot, period -->
+                    <add value="&#95;"    /> <!-- underscore -->
+                    <add value="&#44;"    /> <!-- comma -->
+                </valid>
+            </sanitizer>
+        </param>
+        <param name="centering" label="Compute centers for classes (e.g., treatments)" type="select" help="[default: 'none']">
+            <option value="none" selected="true">none: &#160;&#160; Do not compute centers for classes/treatments.</option>
+            <option value="centroid">centroid: &#160;&#160; For each class, compute the mean for each feature.</option>
+            <option value="median">median: &#160;&#160; For each class, compute the median for each feature.</option>
+            <option value="medoid">medoid: &#160;&#160; For each class, select only the most central member. Note that 'Imputation of missing values' cannot be 'none'.</option>
+        </param>
+    </inputs>
+    <outputs>
+        <data name="dataMatrix_out" format="tabular" label="${dataMatrix_in.name}.subset" ></data>
+        <data name="sampleMetadata_out" format="tabular" label="${sampleMetadata_in.name}.subset" ></data>
+        <data name="variableMetadata_out" format="tabular" label="${variableMetadata_in.name}.subset" ></data>
+    </outputs>
+    <tests>
+      <!-- test 1 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="variableRangeFilter" value="FEATMAX:2e6:,mz:200:,rt::800"/>
+        <param name="transformation" value="none"/>
+        <output name="dataMatrix_out">
+          <assert_contents>
+            <has_text text="747080" />
+            <not_has_text text="13420742" />
+            <not_has_text text="47259" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <has_text text="HU_017" />
+            <has_text text="HU_034" />
+            <has_text text="HU_078" />
+            <has_text text="HU_091" />
+            <has_text text="HU_093" />
+            <has_text text="HU_099" />
+            <has_text text="HU_130" />
+            <has_text text="HU_134" />
+            <has_text text="HU_138" />
+            <not_has_text text="HU_028" />
+            <not_has_text text="HU_051" />
+            <not_has_text text="HU_060" />
+            <not_has_text text="HU_110" />
+            <not_has_text text="HU_149" />
+            <not_has_text text="HU_152" />
+            <not_has_text text="HU_175" />
+            <not_has_text text="HU_178" />
+            <not_has_text text="HU_185" />
+            <not_has_text text="HU_204" />
+            <not_has_text text="HU_208" />
+          </assert_contents>
+        </output>
+        <output name="variableMetadata_out">
+          <assert_contents>
+            <has_text     text="HMDB00208" />
+            <has_text     text="HMDB01032" />
+            <has_text     text="HMDB01101.1" />
+            <has_text     text="HMDB13189" />
+            <not_has_text text="HMDB00191" />
+            <not_has_text text="HMDB00251" />
+            <not_has_text text="HMDB00299" />
+            <not_has_text text="HMDB00512" />
+            <not_has_text text="HMDB00518" />
+            <not_has_text text="HMDB00715" />
+            <not_has_text text="HMDB00822" />
+            <not_has_text text="HMDB03193" />
+            <not_has_text text="HMDB04824" />
+            <not_has_text text="HMDB10348" />
+            <not_has_text text="HMDB59717" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 2 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <!-- test that hyphens in regular expressions work -->
+        <param name="sampleclassNames" value="HU_[0-9][0-9][0-9]"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="classnameColumn" value="sampleMetadata"/>
+        <!-- test that variableRangeFilter works with tranformation -->
+        <param name="variableRangeFilter" value="FEATMAX:6.30103:,mz:200:,rt::800"/>
+        <param name="transformation" value="log10"/>
+        <param name="imputation" value="zero"/>
+        <output name="dataMatrix_out" md5="5644d2ea01d072ee1d0c40e29e9d0089">
+          <assert_contents>
+            <has_text text="5.8733671" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <has_text text="HU_017" />
+            <has_text text="HU_028" />
+            <has_text text="HU_034" />
+            <has_text text="HU_051" />
+            <has_text text="HU_060" />
+            <has_text text="HU_078" />
+            <has_text text="HU_091" />
+            <has_text text="HU_093" />
+            <has_text text="HU_099" />
+            <has_text text="HU_110" />
+            <has_text text="HU_130" />
+            <has_text text="HU_134" />
+            <has_text text="HU_138" />
+            <has_text text="HU_149" />
+            <has_text text="HU_152" />
+            <has_text text="HU_175" />
+            <has_text text="HU_178" />
+            <has_text text="HU_185" />
+            <has_text text="HU_208" />
+            <not_has_text text="HU_204" />
+          </assert_contents>
+        </output>
+        <output name="variableMetadata_out">
+          <assert_contents>
+            <has_text     text="HMDB00191" />
+            <has_text     text="HMDB00208" />
+            <has_text     text="HMDB01032" />
+            <has_text     text="HMDB01101.1" />
+            <has_text     text="HMDB13189" />
+            <not_has_text text="HMDB00251" />
+            <not_has_text text="HMDB00299" />
+            <not_has_text text="HMDB00512" />
+            <not_has_text text="HMDB00518" />
+            <not_has_text text="HMDB00715" />
+            <not_has_text text="HMDB00822" />
+            <not_has_text text="HMDB03193" />
+            <not_has_text text="HMDB04824" />
+            <not_has_text text="HMDB10348" />
+            <not_has_text text="HMDB59717" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 3 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="transformation" value="none"/>
+        <output name="dataMatrix_out">
+          <assert_contents>
+            <not_has_text text="HU_028" />
+            <not_has_text text="HU_051" />
+            <not_has_text text="HU_060" />
+            <not_has_text text="HU_110" />
+            <not_has_text text="HU_149" />
+            <not_has_text text="HU_152" />
+            <not_has_text text="HU_175" />
+            <not_has_text text="HU_178" />
+            <not_has_text text="HU_185" />
+            <not_has_text text="HU_204" />
+            <not_has_text text="HU_208" />
+            <has_text     text="HU_017" />
+            <has_text     text="HU_034" />
+            <has_text     text="HU_078" />
+            <has_text     text="HU_091" />
+            <has_text     text="HU_093" />
+            <has_text     text="HU_099" />
+            <has_text     text="HU_130" />
+            <has_text     text="HU_134" />
+            <has_text     text="HU_138" />
+            <has_text     text="HMDB03193" />
+            <not_has_text text="HMDB00822" />
+            <has_text     text="HMDB01101" />
+            <has_text     text="HMDB01101.1" />
+            <has_text     text="HMDB10348" />
+            <has_text     text="HMDB59717" />
+            <has_text     text="HMDB13189" />
+            <has_text     text="HMDB00299" />
+            <has_text     text="HMDB00191" />
+            <has_text     text="HMDB00518" />
+            <has_text     text="HMDB00715" />
+            <has_text     text="HMDB01032" />
+            <has_text     text="HMDB00208" />
+            <has_text     text="HMDB04824" />
+            <has_text     text="HMDB00512" />
+            <has_text     text="HMDB00251" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 4 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="*"/>
+        <param name="wildcards" value="TRUE"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="imputation" value="zero"/>
+        <output name="dataMatrix_out" md5="b2eac4946d3803a07606286b50451af4">
+          <assert_contents>
+            <not_has_text text="NA" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <not_has_text text="HU_204" />
+            <has_text text="HU_028" />
+            <has_text text="HU_051" />
+            <has_text text="HU_060" />
+            <has_text text="HU_110" />
+            <has_text text="HU_149" />
+            <has_text text="HU_152" />
+            <has_text text="HU_175" />
+            <has_text text="HU_178" />
+            <has_text text="HU_185" />
+            <has_text text="HU_208" />
+            <has_text text="HU_017" />
+            <has_text text="HU_034" />
+            <has_text text="HU_078" />
+            <has_text text="HU_091" />
+            <has_text text="HU_093" />
+            <has_text text="HU_099" />
+            <has_text text="HU_130" />
+            <has_text text="HU_134" />
+            <has_text text="HU_138" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 5 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <not_has_text text="HU_028" />
+            <not_has_text text="HU_051" />
+            <not_has_text text="HU_060" />
+            <not_has_text text="HU_110" />
+            <not_has_text text="HU_149" />
+            <not_has_text text="HU_152" />
+            <not_has_text text="HU_175" />
+            <not_has_text text="HU_178" />
+            <not_has_text text="HU_185" />
+            <not_has_text text="HU_204" />
+            <not_has_text text="HU_208" />
+            <has_text     text="HU_017" />
+            <has_text     text="HU_034" />
+            <has_text     text="HU_078" />
+            <has_text     text="HU_091" />
+            <has_text     text="HU_093" />
+            <has_text     text="HU_099" />
+            <has_text     text="HU_130" />
+            <has_text     text="HU_134" />
+            <has_text     text="HU_138" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 6 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <output name="variableMetadata_out">
+          <assert_contents>
+            <has_text     text="HMDB03193" />
+            <not_has_text text="HMDB00822" />
+            <has_text     text="HMDB01101" />
+            <has_text     text="HMDB01101.1" />
+            <has_text     text="HMDB10348" />
+            <has_text     text="HMDB59717" />
+            <has_text     text="HMDB13189" />
+            <has_text     text="HMDB00299" />
+            <has_text     text="HMDB00191" />
+            <has_text     text="HMDB00518" />
+            <has_text     text="HMDB00715" />
+            <has_text     text="HMDB01032" />
+            <has_text     text="HMDB00208" />
+            <has_text     text="HMDB04824" />
+            <has_text     text="HMDB00512" />
+            <has_text     text="HMDB00251" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 7 -->
+      <test>
+        <param name="dataMatrix_in" value="input_nofilter_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <output name="variableMetadata_out">
+          <assert_contents>
+            <has_text     text="HMDB03193" />
+            <not_has_text text="HMDB00822" />
+            <has_text     text="HMDB01101" />
+            <has_text     text="HMDB01101.1" />
+            <has_text     text="HMDB10348" />
+            <has_text     text="HMDB59717" />
+            <not_has_text text="HMDB13189" />
+            <has_text     text="HMDB00299" />
+            <has_text     text="HMDB00191" />
+            <has_text     text="HMDB00518" />
+            <has_text     text="HMDB00715" />
+            <has_text     text="HMDB01032" />
+            <has_text     text="HMDB00208" />
+            <has_text     text="HMDB04824" />
+            <has_text     text="HMDB00512" />
+            <has_text     text="HMDB00251" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 8 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="[Mm],[fF]"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <has_text text="HU_028" />
+            <has_text text="HU_051" />
+            <has_text text="HU_060" />
+            <has_text text="HU_110" />
+            <has_text text="HU_149" />
+            <has_text text="HU_152" />
+            <has_text text="HU_175" />
+            <has_text text="HU_178" />
+            <has_text text="HU_185" />
+            <not_has_text text="HU_204" />
+            <has_text text="HU_208" />
+            <has_text text="HU_017" />
+            <has_text text="HU_034" />
+            <has_text text="HU_078" />
+            <has_text text="HU_091" />
+            <has_text text="HU_093" />
+            <has_text text="HU_099" />
+            <has_text text="HU_130" />
+            <has_text text="HU_134" />
+            <has_text text="HU_138" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 9 -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value=""/>
+        <param name="sampleclassNames" value="M"/>
+        <param name="wildcards" value="FALSE"/>
+        <param name="inclusive" value="TRUE"/>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <has_text text="HU_028" />
+            <has_text text="HU_051" />
+            <has_text text="HU_060" />
+            <has_text text="HU_110" />
+            <has_text text="HU_149" />
+            <has_text text="HU_152" />
+            <has_text text="HU_175" />
+            <has_text text="HU_178" />
+            <has_text text="HU_185" />
+            <not_has_text text="HU_204" />
+            <has_text text="HU_208" />
+            <has_text text="HU_017" />
+            <has_text text="HU_034" />
+            <has_text text="HU_078" />
+            <has_text text="HU_091" />
+            <has_text text="HU_093" />
+            <has_text text="HU_099" />
+            <has_text text="HU_130" />
+            <has_text text="HU_134" />
+            <has_text text="HU_138" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 10 - extends test4 with no imputation rather than zero imputation -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="*"/>
+        <param name="wildcards" value="TRUE"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="imputation" value="none"/>
+        <output name="dataMatrix_out" md5="6200dfa77d09c56e434f80b1a23b3393">
+          <assert_contents>
+            <not_has_text text="HU_204" />
+            <has_text text="NA" />
+            <has_text text="HU_028" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <not_has_text text="HU_204" />
+            <has_text text="HU_028" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 11 - extends test4 with center imputation rather than zero imputation -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value="*"/>
+        <param name="wildcards" value="TRUE"/>
+        <param name="inclusive" value="TRUE"/>
+        <param name="imputation" value="center"/>
+        <output name="dataMatrix_out" md5="a404278c5c9ffd5bdadf346c4f8a0184">
+          <assert_contents>
+            <not_has_text text="HU_204" />
+            <not_has_text text="NA" />
+            <has_text text="HU_028" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <not_has_text text="HU_204" />
+            <has_text text="HU_028" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 12 - select medoid for class -->
+      <test>
+        <param name="dataMatrix_in" value="input_dataMatrix.tsv"/>
+        <param name="sampleMetadata_in" value="input_sampleMetadata.tsv"/>
+        <param name="variableMetadata_in" value="input_variableMetadata.tsv"/>
+        <param name="classnameColumn" value="gender"/>
+        <param name="sampleclassNames" value=""/>
+        <param name="wildcards" value="TRUE"/>
+        <param name="inclusive" value="FALSE"/>
+        <param name="imputation" value="zero"/>
+        <param name="order_vrbl" value="rt"/>
+        <param name="order_smpl" value="gender"/>
+        <param name="centering" value="medoid"/>
+        <output name="dataMatrix_out" md5="c91bbfbf30004fa24b05a67ec479bfb1">
+          <assert_contents>
+            <not_has_text text="1013302" />
+            <has_text text="4763576" />
+            <has_text text="2003278" />
+            <has_text text="26222916" />
+          </assert_contents>
+        </output>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <not_has_text text="HU_099" />
+            <not_has_text text="HU_185" />
+            <has_text text="HU_110" />
+            <has_text text="HU_078" />
+          </assert_contents>
+        </output>
+      </test>
+      <!-- test 13 -->
+      <test>
+        <param name="dataMatrix_in" value="input_med1_dm.tsv"/>
+        <param name="sampleMetadata_in" value="input_med1_sm.tsv"/>
+        <param name="variableMetadata_in" value="input_med1_vm.tsv"/>
+        <param name="classnameColumn" value="pcgroup"/>
+        <param name="sampleclassNames" value=""/>
+        <param name="wildcards" value="TRUE"/>
+        <param name="inclusive" value="FALSE"/>
+        <param name="imputation" value="zero"/>
+        <param name="order_vrbl" value="sample"/>
+        <param name="order_smpl" value="pcgroup"/>
+        <param name="centering" value="medoid"/>
+        <output name="sampleMetadata_out">
+          <assert_contents>
+            <has_text text="X10" />
+            <has_text text="M70T1043" />
+            <has_text text="70.01229" />
+            <has_text text="1042.837" />
+            <has_text text="X345" />
+            <has_text text="M74T33" />
+            <not_has_text text="M70T1042_1" />
+            <not_has_text text="M74T34" />
+          </assert_contents>
+        </output>
+        <output name="dataMatrix_out">
+          <assert_contents>
+            <has_text text="X10" />
+            <has_text text="X345" />
+          </assert_contents>
+        </output>
+      </test>
+    </tests>
+    <!-- Here is the hyphenation standard that I *try* to apply consistently in my documentation:
+         https://web.archive.org/web/20161014025757/http://www.sandranoonan.com/dont-let-hyphenation-drive-crazy/
+    -->
+    <help><![CDATA[
+
+
+**Author** Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
+
+--------------------------------------------------------------------------
+
+
+**R package**
+
+The *w4mclassfilter* package (which is used by the W4M Data Subset tool) is available from the Hegeman lab GitHub repository (https://github.com/HegemanLab/w4mclassfilter/releases).
+
+-----------------------------------------------------------------------------------------------------------------------------------------
+
+
+**Tool updates**
+
+See https://github.com/HegemanLab/w4mclassfilter_galaxy_wrapper#news
+
+---------------------------------------------------
+
+======================================================
+"W4M Data Subset" - Filter Workflow4Metabolomics data
+======================================================
+
+----------
+Motivation
+----------
+
+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").
+(If a chemical is fragmented or may have a variety of adducts, several features will result.)
+Data for a sample are collected as mass-spectral intensities, each of which is associated with a position on a 2D plane with dimensions of rt and *m/z*.
+Ideally, features would be sufficiently reproducible among sample-runs to distinguish features that are similar among samples from those that differ.
+
+For liquid chromatography, the retention time for a species can vary considerably from one chromatography run to the next.
+The Workflow4Metabolomics suite of Galaxy tools (W4M, [Giacomoni *et al.*, 2014, Guitton *et al.* 2017])
+uses the XCMS preprocessing tools [Smith *et al.*, 2006]
+for "retention-time correction" to align features among samples.
+Features may be better aligned if pooled samples and blanks are included.
+
+Multivariate statistical tools may be used to discover clusters of similar samples [Th]]>&#233;<![CDATA[venot *et al.*, 2015].
+However, once retention-time alignment of features has been achieved among samples in LC-MS datasets:
+
+- The presence of pools and blanks may confound identification and separation of sample clusters.
+- Multivariate statistical algorithms may be impacted by missing values or dimensions that have zero variance.
+
+-----------
+Description
+-----------
+
+The **W4M Data Subset** tool **selects subsets of samples, features, or data values** and **conditions the data** for further analysis.
+
+- The tool takes as input the *dataMatrix*, *sampleMetadata*, and *variableMetadata* datasets produced by W4M's XCMS and CAMERA [Kuhl *et al.*, 2012] tools.
+- The tool produces the same trio of output datasets, modified as described below.
+
+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):
+
+- *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.
+- *Feature filtering:* Features may be selected by specifying minimum or maximum value (or both) allowable in columns of *variableMetadata*.
+- *Intensity filtering:* To exclude minimal features from consideration, a lower bound may be specified for the maximum intensity for a feature across all samples (i.e., for a row in *dataMatrix*).
+
+This tool also conditions data for statistical analysis:
+
+- Samples that are missing from either *sampleMetadata* or *dataMatrix* are eliminated.
+- Features that are missing from either *variableMetadata* or *dataMatrix* are eliminated.
+- Features and samples that have zero variance are eliminated.
+- Samples and features are ordered consistently in *variableMetadata*, *sampleMetadata*, and *dataMatrix*.
+  (The columns for sorting *variableMetadata* or *sampleMetadata* may be specified.)
+- The names of the first columns of *variableMetadata* and *sampleMetadata* are set respectively to "variableMetadata" and "sampleMetadata".
+- If desired, the values in *dataMatrix* may be log-transformed.
+- Negative intensities become missing values (before missing-value replacement is performed).
+- If desired, each missing value in *dataMatrix* may be replaced with zero or the median value observed for the corresponding feature.
+- If desired, a "center" for each treatment can be computed in lieu of the samples for that treatment.
+
+This tool may be applied several times sequentially, which may be useful for:
+
+- analyzing subsets of samples for progressively smaller sets of treatment levels, or
+- choosing subsets of samples or features, respectively based on criteria in columns of *sampleMetadata* or *variableMetadata*.
+
+-----------------
+Workflow Position
+-----------------
+
+This tool can be used at any point downstream of Preprocessing.
+
+- Possible upstream tool categories: Preprocessing, Quality Control, Statistical Analysis, Filter and Sort
+- Possible downstream tool categories: Normalisation, Statistical Analysis, Quality Control, Filter and Sort
+
+-----------
+Input files
+-----------
+
++------------------------+---------------------------------------+------------+
+| File                   | Contents                              |   Format   |
++========================+=======================================+============+
+|     Data matrix        | per-feature, per-sample intensities   |   tabular  |
++------------------------+---------------------------------------+------------+
+|     Sample metadata    | metadata for samples                  |   tabular  |
++------------------------+---------------------------------------+------------+
+|     Variable metadata  | metadata for features                 |   tabular  |
++------------------------+---------------------------------------+------------+
+
+
+----------
+Parameters
+----------
+
+Data matrix
+	| feature x sample **dataMatrix** (tab-separated values) file of the numeric data matrix, with period-character ('.') as decimal, and 'NA' for missing values.
+	| The file must not contain metadata apart from the required row and column names.
+	|
+
+Sample metadata
+	| sample x metadata **sampleMetadata** (tab-separated values) file of the numeric and/or character sample metadata, with period-character ('.') as decimal, and 'NA' for missing values.
+	|
+
+Variable metadata
+	| variable x metadata **variableMetadata** (tab-separated values) file of the numeric and/or character variable metadata, with period-character ('.') as decimal, and 'NA' for missing values.
+	|
+
+Column containing the sample-class names (default = '``class``')
+	| name of the column in **sampleMetadata** that has the values to be tested against the '``Sample-class names``' input parameter or to be referenced by the '``Compute centers for classes``' input parameter.
+	| Only letters, digits, periods, and underscores are permitted.
+	|
+
+Sample-class names (default = no names)
+	| names (or regular expressions to match names) of sample-classes to include or exclude
+	| (Separate names with commas, without any extra space characters.)
+	|
+
+Exclude/include named (or matched) classes (default = '``filter-out``')
+	| '``filter-in``' - include only the named sample-classes
+	| '``filter-out``' - exclude only the named sample-classes
+	|
+
+Use 'wild card patterns' or 'regular expression patterns' (default = '``wild-card patterns``')
+	| '``wild-card patterns``' - use wild cards to match names of sample-classes (see the *'Wild-card patterns to match class names'* section below.)
+	| '``regular-expression patterns``' - use regular expressions to match the named sample-classes (see the *'Regular-expression patterns to match class names'* section below.)
+	|
+
+Variable-range filters (default = no filters)
+	| variable-range filters (see the *'Variable-range filters'* section below)
+	| (Separate filter expressions with commas, without any extra space characters.)
+	|
+
+Data transformation (default = '``none``')
+	| '``none``' - Do not transform data matrix values.
+	| '``log2``' - Take the log base 2 of the values in the data matrix.
+	| '``log10``' - Take the log base 10 of the values in the data matrix.
+	|
+	| Note that negative intensities become missing values regardless of the choice made here.
+	|
+
+Imputation of missing values (default = '``zero``')
+	| '``none``' - Do not impute data matrix values.
+	| '``zero``' - Negative and missing values are imputed to zero.
+	| '``center``' - For each feature, negative and missing values are imputed to the median of other values.
+	|
+	| Note well: For '``none``' option, '``Compute centers for classes``' cannot be set to '``medoid``'.
+	|
+
+Columns that specify order for samples (default = '``sampleMetadata``')
+	| names of the columns in **sampleMetadata** that is used to sort samples; only letters, digits, periods, and underscores are permitted.
+	| (Separate column names with commas, without any extra space characters.)
+	|
+
+Columns that specify order for features (default = '``variableMetadata``')
+	| names of the columns in **variableMetadata** that is used to sort features; only letters, digits, periods, and underscores are permitted.
+	| (Separate column names with commas, without any extra space characters.)
+	|
+
+Compute centers for classes, e.g., treatments (default = '``none``')
+	| '``none``' - Return all samples; do not compute centers for classes/treatments.
+	| '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
+	| '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
+	| '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).
+	|
+	| Note well: For '``medoid``' option, '``Imputation of missing values``' cannot be set to '``none``'.
+	|
+
+------------
+Output files
+------------
+
+sampleMetadata
+	| (tab-separated values) file.
+	| If centering is '``none``' or  '``medoid``', this will be identical to the **sampleMetadata** file given as an input argument, excepting lacking rows for samples that have been filtered out (by the sample-class filter, or because of zero variance, or because they were missing in the input data matrix)
+	| If centering is '``centroid``' or  '``median``', most columns will be replaced with the treatment name and the number of samples for that treatment.
+	|
+
+variableMetadata
+	| (tab-separated values) file identical to the **variableMetadata** file given as an input argument, excepting lacking rows for variables (LC-MS features) that have been filtered out (by the variable-range filter, or because of zero variance, or because they were missing in the input data matrix)
+	|
+
+dataMatrix
+	| (tab-separated values) file identical to the **dataMatrix** file given as an input argument, excepting lacking rows and columns for variables and samples that have been filtered out, respectively
+	|
+
+
+-----------------------------------------
+Wild-card patterns to match class names
+-----------------------------------------
+
+W4M Data Subset supports use of "wild card" patterns to select class-names.
+
+- use '``?``' to match a single character
+- use '``*``' to match zero or more characters
+- the entire pattern must match the sample name
+
+For example
+
+- '``??.samp*``' matches '``my.sample``' but not '``my.own.sample``'
+- '``*.sample``' matches '``my.sample``' and '``my.own.sample``'
+- '``*.sampl``' matches neither '``my.sample``' nor '``my.own.sample``'
+
+--------------------------------------------------
+Regular-expression patterns to match class names
+--------------------------------------------------
+
+W4M Data Subset supports use of R "extended regular expression" patterns to select class-names.
+
+R extended regular expressions, which allow precise pattern-matching and are exhaustively defined at
+https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html
+
+However, only a few basic building blocks of regular expressions need to be mastered for most cases:
+
+- '``^``' matches the beginning of a class-name
+- '``$``' matches the end of a class-name
+- '``.``' outside of square brackets matches a single character
+- '``*``' matches character specified immediately before zero or more times
+- square brackets specify a set of characters to be matched.
+
+Within square brackets
+
+- '``^``' as the first character specifies that the list of characters are those that should **not** be matched.
+- '``-``' is used to specify ranges of characters
+
+Caveat: The tool wrapper uses the comma ('``,``') to split a list of sample-class names, so **commas may not be used within regular expressions for this tool**
+
+First Example: Consider a field of class-names consisting of '``marq3,marq6,marq9,marq12,front3,front6,front9,front12``'
+
+- The regular expression '``^front[0-9][0-9]*$``' will match the same sample-classes as '``front3,front6,front9,front12``'
+- The regular expression '``^[a-z][a-z]3$``' will match the same sample-classes as '``front3,marq3``'
+- The regular expression '``^[a-z][a-z]12$``' will match the same sample-classes as '``front12,marq12``'
+- The regular expression '``^[a-z][a-z][0-9]$``' will match the same sample-classes as '``front3,front6,front9,marq3,marq6,marq9``'
+
+Second Example: Consider these regular expression patterns as possible matches to a sample-class name '``AB0123``':
+
+- '``^[A-Z][A-Z][0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
+- '``^[A-Z][A-Z]*[0-9][0-9]*$``' MATCHES '``**^AB0123$**``'
+- '``^[A-Z][0-9]*``' MATCHES '``**^A** B0123$``' - first character is a letter, '``*``' can specify zero characters, and end of line did not need to be matched.
+- '``^[A-Z][A-Z][0-9]``' MATCHES '``**^AB0** 123$``' - first two characters are letters aind the third is a digit.
+- '``^[A-Z][A-Z]*[0-9][0-9]$``' DOES NOT MATCH - the name does not end with the pattern '``[A-Z][0-9][0-9]$``', i.e., it ends with four digits, not two.
+- '``^[A-Z][0-9]*$``' DOES NOT MATCH - the pattern specifies that second character and all those that follow, if present, must be digits.
+
+----------------------
+Variable-range filters
+----------------------
+
+An array of range-specification strings may be supplied in the '``Variable-range filters``'
+argument.  If supplied, only features having numerical values in the specified column
+of **variableMetadata** that fall within the specified ranges will be retained
+in the output.  Each range is a string of three colon-separated values (e.g., '``mz:200:800``') in the
+following order:
+
+- the **name of a column** of **variableMetadata** which must have numerical data (only letters, digits, periods, and underscores are permitted in the name itself), e.g., '``mz``';
+- the **minimum allowed value** in that column for the feature to be retained, e.g., '``200``';
+- the **maximum allowed value**, e.g., '``800``'.
+
+Note for the range specification strings:
+
+- **If the "maximum" is less than the "minimum", then the range is exclusive**  (e.g., '``mz:800:200``' means retain only features whose mz is NOT in the range 200-800)
+- **If the name supplied in the first field** is '``FEATMAX``',  then the string is defining the **threshold for the maximum intensity** for each feature in the dataMatrix.
+
+  - For example, '``FEATMAX:1e6:``' would specify  that any feature would be excluded if no sample had an intensity for that feature greater than 1,000,000.
+  - Although a maximum may be specified, it seems unlikely that this would be useful. Note that when the "maximum" is less than the "minimum" for the FEATMAX range specification, then the specification is ignored.
+
+----------------------------------
+Data transformation and imputation
+----------------------------------
+
+Data may optionally be log2- or log10-transformed.
+
+Negative intensities are always substituted with missing values before imputation, even when no transformation is chosen.
+
+Missing intensity data values may optionally be imputed.  Missing values may be substituted:
+
+- with zeros (as may be appropriate for univariate analysis)
+- with the median for the feature (as may be appropriate for multivariate analysis).
+
+  - Note that the median feature-intensity is computed for the samples *before* variable-range filters are applied.
+
+-----------------------------------------
+Optional Computation of Treatment Centers
+-----------------------------------------
+
+A "center" for each treatment may be computed in lieu of all the samples for each treatment.
+
+- '``none``' - Return all samples; do not compute centers.
+- '``centroid``' - For each treatment, return only the centroid (the treatment-center computed as the mean intensity for each feature).
+- '``median``' - For each treatment, return only the treatment-center computed as the median intensity for each feature.
+- '``medoid``' - For each treatment, return only the medoid (the sample most similar to the other samples for that treatment).  This choice requires that the '``Imputation of missing values``' argument must not be set to '``none``'.
+
+The medoid is the sample having the smallest sum of its distances from other samples in the treatment:
+
+- Because principal components are uncorrelated, distances are computed in the space defined by the principal-component scores to minimize the distortion of computed distances by correlated features.
+- Because principal components are used to compute distances, no missing values are permitted, which is why the '``Imputation of missing values``' argument must not be set to '``none``'.
+- The distances are used to identify the medoid using code adapted from https://web.archive.org/web/20191231012914/https://www.biostars.org/p/11987/#11989
+
+-----------------------------------------------------------------------------
+
+----------------
+WORKING EXAMPLES
+----------------
+
+-----------
+Input Files
+-----------
+
++------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Input File URL                                                                                                                                       |
++======================================================================================================================================================+
+| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_dataMatrix.tsv                |
++------------------------------------------------------------------------------------------------------------------------------------------------------+
+| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_sampleMetadata.tsv            |
++------------------------------------------------------------------------------------------------------------------------------------------------------+
+| https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/input_variableMetadata.tsv          |
++------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+-------------------------------
+Example without Range-Filtering
+-------------------------------
+
+This example retains only samples whose '``gender``' attribute is '``M``'.
+
+**Input parameters**
+
++---------------------------------------------+-------------------------------+
+| Input Parameter                             | Value                         |
++=============================================+===============================+
+| Column that names the sample class          | gender                        |
++---------------------------------------------+-------------------------------+
+| Sample-class names                          | M                             |
++---------------------------------------------+-------------------------------+
+| Exclude/include named classes               | filter-in                     |
++---------------------------------------------+-------------------------------+
+| Use 'wild-cards' or 'regular expressions'   | wild-cards                    |
++---------------------------------------------+-------------------------------+
+| Variable range-filters                      | (Leave this field empty.)     |
++---------------------------------------------+-------------------------------+
+| Data transformation                         | none                          |
++---------------------------------------------+-------------------------------+
+| Missing-value imputation                    | center                        |
++---------------------------------------------+-------------------------------+
+| Sample-sort column                          | sampleMetadata                |
++---------------------------------------------+-------------------------------+
+| Feature-sort column                         | variableMetadata              |
++---------------------------------------------+-------------------------------+
+| Compute centers for classes                 | none                          |
++---------------------------------------------+-------------------------------+
+
+**Expected outputs**
+
++-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| Expected Output   | Download from URL                                                                                                                               |
++===================+=================================================================================================================================================+
+| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_dataMatrix.tsv        |
++-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_sampleMetadata.tsv    |
++-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/expected_variableMetadata.tsv  |
++-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+
+----------------------------
+Example with Range-Filtering
+----------------------------
+
+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.
+This example retains all samples (except those having zero variance for all feature), although it would be possible to filter on samples as well.
+
+**Input parameters**
+
++---------------------------------------------+-----------------------------------+
+| Input Parameter                             | Value                             |
++=============================================+===================================+
+| Column that names the sample class          | sampleMetadata                    |
++---------------------------------------------+-----------------------------------+
+| Sample-class names                          | HU_13[48]                         |
++---------------------------------------------+-----------------------------------+
+| Exclude/include named classes               | filter-out                        |
++---------------------------------------------+-----------------------------------+
+| Use 'wild-cards' or 'regular expressions'   | regular-expressions               |
++---------------------------------------------+-----------------------------------+
+| Variable range-filters                      | FEATMAX:20.93157:,mz:200:,rt::800 |
++---------------------------------------------+-----------------------------------+
+| Data transformation                         | log2                              |
++---------------------------------------------+-----------------------------------+
+| Missing-value imputation                    | zero                              |
++---------------------------------------------+-----------------------------------+
+| Sample-sort column                          | sampleMetadata                    |
++---------------------------------------------+-----------------------------------+
+| Feature-sort column                         | variableMetadata                  |
++---------------------------------------------+-----------------------------------+
+| Compute centers for classes                 | none                              |
++---------------------------------------------+-----------------------------------+
+
+**Expected outputs**
+
++-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| Expected Output   | Download from URL                                                                                                                                 |
++===================+===================================================================================================================================================+
+| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_dataMatrix.tsv       |
++-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_sampleMetadata.tsv   |
++-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter_galaxy_wrapper/master/tools/w4mclassfilter/test-data/rangefilter_variableMetadata.tsv |
++-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+
+--------------------------------
+Example with Treatment-Centering
+--------------------------------
+
+This example retains only the samples that are medoids for their gender.
+
+**Input parameters**
+
++---------------------------------------------+-----------------------------------+
+| Input Parameter                             | Value                             |
++=============================================+===================================+
+| Column that names the sample class          | gender                            |
++---------------------------------------------+-----------------------------------+
+| Sample-class names                          | (Leave this field empty.)         |
++---------------------------------------------+-----------------------------------+
+| Exclude/include named classes               | filter-out                        |
++---------------------------------------------+-----------------------------------+
+| Use 'wild-cards' or 'regular expressions'   | wild-cards                        |
++---------------------------------------------+-----------------------------------+
+| Variable range-filters                      | (Leave this field empty.)         |
++---------------------------------------------+-----------------------------------+
+| Data transformation                         | none                              |
++---------------------------------------------+-----------------------------------+
+| Missing-value imputation                    | zero                              |
++---------------------------------------------+-----------------------------------+
+| Sample-sort column                          | gender                            |
++---------------------------------------------+-----------------------------------+
+| Feature-sort column                         | rt                                |
++---------------------------------------------+-----------------------------------+
+| Compute centers for classes                 | medoid                            |
++---------------------------------------------+-----------------------------------+
+
+**Expected outputs**
+
++-------------------+----------------------------------------------------------------------------------------------------------+
+| Expected Output   | Download from URL                                                                                        |
++===================+==========================================================================================================+
+| Data matrix       | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_dm.tsv |
++-------------------+----------------------------------------------------------------------------------------------------------+
+| Sample metadata   | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_sm.tsv |
++-------------------+----------------------------------------------------------------------------------------------------------+
+| Variable metadata | https://raw.githubusercontent.com/HegemanLab/w4mclassfilter/master/tests/testthat/exp_cent_medoid_vm.tsv |
++-------------------+----------------------------------------------------------------------------------------------------------+
+    ]]></help>
+    <citations>
+        <!-- Giacomoni_2014 W4M 2.5 -->
+        <citation type="doi">10.1093/bioinformatics/btu813</citation>
+        <!-- Guitton_2017 W4M 3.0 -->
+        <citation type="doi">10.1016/j.biocel.2017.07.002</citation>
+        <!-- Kuhl_2012 CAMERA -->
+        <citation type="doi">10.1021/ac202450g</citation>
+        <!-- Smith_2006 XCMS -->
+        <citation type="doi">10.1021/ac051437y</citation>
+        <!-- Thevenot_2015 Urinary metabolome statistics -->
+        <citation type="doi">10.1021/acs.jproteome.5b00354</citation>
+    </citations>
+    <!--
+     vim:noet:sw=4:ts=4
+--> </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/w4mclassfilter_wrapper.R	Thu Mar 11 20:46:26 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())