changeset 14:a0a8d77a991c draft

Uploaded
author florianbegusch
date Thu, 03 Sep 2020 09:51:29 +0000
parents 887cd4ad8e16
children 276ec629f09a
files qiime2/merge_feature_table_and_taxonomy.xml qiime2/qiime_alignment_mafft-add.xml qiime2/qiime_alignment_mafft.xml qiime2/qiime_alignment_mask.xml qiime2/qiime_citation.xml qiime2/qiime_composition_add-pseudocount.xml qiime2/qiime_composition_ancom.xml qiime2/qiime_cutadapt_demux-paired.xml qiime2/qiime_cutadapt_demux-single.xml qiime2/qiime_cutadapt_trim-paired.xml qiime2/qiime_cutadapt_trim-single.xml qiime2/qiime_dada2_denoise-paired.xml qiime2/qiime_dada2_denoise-pyro.xml qiime2/qiime_dada2_denoise-single.xml qiime2/qiime_deblur_denoise-16S.xml qiime2/qiime_deblur_denoise-other.xml qiime2/qiime_deblur_visualize-stats.xml qiime2/qiime_demux_emp-paired.xml qiime2/qiime_demux_emp-single.xml qiime2/qiime_demux_filter-samples.xml qiime2/qiime_demux_subsample-paired.xml qiime2/qiime_demux_subsample-single.xml qiime2/qiime_demux_summarize.xml qiime2/qiime_diversity-lib_alpha-passthrough.xml qiime2/qiime_diversity-lib_beta-passthrough.xml qiime2/qiime_diversity-lib_beta-phylogenetic-passthrough.xml qiime2/qiime_diversity-lib_bray-curtis.xml qiime2/qiime_diversity-lib_faith-pd.xml qiime2/qiime_diversity-lib_jaccard.xml qiime2/qiime_diversity-lib_observed-features.xml qiime2/qiime_diversity-lib_pielou-evenness.xml qiime2/qiime_diversity-lib_shannon-entropy.xml qiime2/qiime_diversity-lib_unweighted-unifrac.xml qiime2/qiime_diversity-lib_weighted-unifrac.xml qiime2/qiime_diversity_adonis.xml qiime2/qiime_diversity_alpha-correlation.xml qiime2/qiime_diversity_alpha-group-significance.xml qiime2/qiime_diversity_alpha-phylogenetic-alt.xml qiime2/qiime_diversity_alpha-phylogenetic.xml qiime2/qiime_diversity_alpha-rarefaction.xml qiime2/qiime_diversity_alpha.xml qiime2/qiime_diversity_beta-correlation.xml qiime2/qiime_diversity_beta-group-significance.xml qiime2/qiime_diversity_beta-phylogenetic.xml qiime2/qiime_diversity_beta-rarefaction.xml qiime2/qiime_diversity_beta.xml qiime2/qiime_diversity_bioenv.xml qiime2/qiime_diversity_core-metrics-phylogenetic.xml qiime2/qiime_diversity_core-metrics.xml qiime2/qiime_diversity_filter-distance-matrix.xml qiime2/qiime_diversity_mantel.xml qiime2/qiime_diversity_pcoa-biplot.xml qiime2/qiime_diversity_pcoa.xml qiime2/qiime_diversity_procrustes-analysis.xml qiime2/qiime_emperor_biplot.xml qiime2/qiime_emperor_plot.xml qiime2/qiime_emperor_procrustes-plot.xml qiime2/qiime_feature-classifier_classify-consensus-blast.xml qiime2/qiime_feature-classifier_classify-consensus-vsearch.xml qiime2/qiime_feature-classifier_classify-hybrid-vsearch-sklearn.xml qiime2/qiime_feature-classifier_classify-sklearn.xml qiime2/qiime_feature-classifier_extract-reads.xml qiime2/qiime_feature-classifier_fit-classifier-naive-bayes.xml qiime2/qiime_feature-classifier_fit-classifier-sklearn.xml qiime2/qiime_feature-table_core-features.xml qiime2/qiime_feature-table_filter-features.xml qiime2/qiime_feature-table_filter-samples.xml qiime2/qiime_feature-table_filter-seqs.xml qiime2/qiime_feature-table_group.xml qiime2/qiime_feature-table_heatmap.xml qiime2/qiime_feature-table_merge-seqs.xml qiime2/qiime_feature-table_merge-taxa.xml qiime2/qiime_feature-table_merge.xml qiime2/qiime_feature-table_presence-absence.xml qiime2/qiime_feature-table_rarefy.xml qiime2/qiime_feature-table_relative-frequency.xml qiime2/qiime_feature-table_rename-ids.xml qiime2/qiime_feature-table_subsample.xml qiime2/qiime_feature-table_summarize.xml qiime2/qiime_feature-table_tabulate-seqs.xml qiime2/qiime_feature-table_transpose.xml qiime2/qiime_fragment-insertion_classify-otus-experimental.xml qiime2/qiime_fragment-insertion_filter-features.xml qiime2/qiime_fragment-insertion_sepp.xml qiime2/qiime_gneiss_assign-ids.xml qiime2/qiime_gneiss_balance-taxonomy.xml qiime2/qiime_gneiss_correlation-clustering.xml qiime2/qiime_gneiss_dendrogram-heatmap.xml qiime2/qiime_gneiss_gradient-clustering.xml qiime2/qiime_gneiss_ilr-hierarchical.xml qiime2/qiime_gneiss_ilr-phylogenetic.xml qiime2/qiime_gneiss_lme-regression.xml qiime2/qiime_gneiss_ols-regression.xml qiime2/qiime_longitudinal_anova.xml qiime2/qiime_longitudinal_feature-volatility.xml qiime2/qiime_longitudinal_first-differences.xml qiime2/qiime_longitudinal_first-distances.xml qiime2/qiime_longitudinal_linear-mixed-effects.xml qiime2/qiime_longitudinal_maturity-index.xml qiime2/qiime_longitudinal_nmit.xml qiime2/qiime_longitudinal_pairwise-differences.xml qiime2/qiime_longitudinal_pairwise-distances.xml qiime2/qiime_longitudinal_plot-feature-volatility.xml qiime2/qiime_longitudinal_volatility.xml qiime2/qiime_metadata_distance-matrix.xml qiime2/qiime_metadata_tabulate.xml qiime2/qiime_phylogeny_align-to-tree-mafft-fasttree.xml qiime2/qiime_phylogeny_align-to-tree-mafft-iqtree.xml qiime2/qiime_phylogeny_align-to-tree-mafft-raxml.xml qiime2/qiime_phylogeny_fasttree.xml qiime2/qiime_phylogeny_filter-table.xml qiime2/qiime_phylogeny_iqtree-ultrafast-bootstrap.xml qiime2/qiime_phylogeny_iqtree.xml qiime2/qiime_phylogeny_midpoint-root.xml qiime2/qiime_phylogeny_raxml-rapid-bootstrap.xml qiime2/qiime_phylogeny_raxml.xml qiime2/qiime_phylogeny_robinson-foulds.xml qiime2/qiime_quality-control_bowtie2-build.xml qiime2/qiime_quality-control_evaluate-composition.xml qiime2/qiime_quality-control_evaluate-seqs.xml qiime2/qiime_quality-control_evaluate-taxonomy.xml qiime2/qiime_quality-control_exclude-seqs.xml qiime2/qiime_quality-control_filter-reads.xml qiime2/qiime_quality-filter_q-score-joined.xml qiime2/qiime_quality-filter_q-score.xml qiime2/qiime_sample-classifier_classify-samples-from-dist.xml qiime2/qiime_sample-classifier_classify-samples-ncv.xml qiime2/qiime_sample-classifier_classify-samples.xml qiime2/qiime_sample-classifier_confusion-matrix.xml qiime2/qiime_sample-classifier_fit-classifier.xml qiime2/qiime_sample-classifier_fit-regressor.xml qiime2/qiime_sample-classifier_heatmap.xml qiime2/qiime_sample-classifier_metatable.xml qiime2/qiime_sample-classifier_predict-classification.xml qiime2/qiime_sample-classifier_predict-regression.xml qiime2/qiime_sample-classifier_regress-samples-ncv.xml qiime2/qiime_sample-classifier_regress-samples.xml qiime2/qiime_sample-classifier_scatterplot.xml qiime2/qiime_sample-classifier_split-table.xml qiime2/qiime_sample-classifier_summarize.xml qiime2/qiime_taxa_barplot.xml qiime2/qiime_taxa_collapse.xml qiime2/qiime_taxa_filter-seqs.xml qiime2/qiime_taxa_filter-table.xml qiime2/qiime_tools_export.xml qiime2/qiime_tools_export_collection.xml qiime2/qiime_tools_export_paired_collection.xml qiime2/qiime_tools_import.xml qiime2/qiime_vsearch_cluster-features-closed-reference.xml qiime2/qiime_vsearch_cluster-features-de-novo.xml qiime2/qiime_vsearch_cluster-features-open-reference.xml qiime2/qiime_vsearch_dereplicate-sequences.xml qiime2/qiime_vsearch_fastq-stats.xml qiime2/qiime_vsearch_join-pairs.xml qiime2/qiime_vsearch_uchime-denovo.xml qiime2/qiime_vsearch_uchime-ref.xml
diffstat 153 files changed, 11939 insertions(+), 8520 deletions(-) [+]
line wrap: on
line diff
--- a/qiime2/merge_feature_table_and_taxonomy.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="merge_feature_table_and_taxonomy" name="merge feature table and taxonomy" version="2019.7">
-	<description>- Merge features and taxonomy into a single biom file.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command>
-mkdir out;
-
-qiime tools export --input-path $taxonomy_qza --output-path out;
-qiime tools export --input-path $biom_qza --output-path out;
-
-sed -i '1s;^;#;' out/*.tsv;
-sed -i 's/Confidence/confidence/g' out/*.tsv;
-sed -i 's/Taxon/taxonomy/g' out/*.tsv;
-sed -i 's/Feature ID/OTU ID/g' out/*.tsv;
-
-biom add-metadata -i out/*.biom -o table_with_sample_metadata.biom --observation-metadata-fp out/*.tsv
-;
-mv *.biom $biom_and_tax_merged</command>
-	<inputs>
-		<param label="Feature table" name="biom_qza" type="data" format="qza,no_unzip.zip" collection_type="list"/>
-		<param label="Taxonomy" name="taxonomy_qza" type="data" format="qza,no_unzip.zip"/>
-	</inputs>
-	<outputs>
-		<data format="biom2" label="${tool.name} on ${on_string}: biom_and_tax_merged.biom" name="biom_and_tax_merged"/>
-	</outputs>
-	<help>
-	</help>
-<macros>
-	<import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation" />
-</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_alignment_mafft-add.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<tool id="qiime_alignment_mafft-add" name="qiime alignment mafft-add"
+      version="2020.8">
+  <description>Add sequences to multiple sequence alignment with MAFFT.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime alignment mafft-add
+
+--i-alignment=$ialignment
+
+--i-sequences=$isequences
+
+#if str($pnthreads) != 'None':
+--p-n-threads=$pnthreads
+#end if
+
+#if $pparttree:
+ --p-parttree
+#end if
+
+--o-expanded-alignment=oexpandedalignment
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oexpandedalignment.qza $oexpandedalignment
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] The alignment to which sequences should be added. [required]" name="ialignment" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be added.                [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-parttree: --p-parttree: / --p-no-parttree This flag is required if the number of sequences being aligned are larger than 1000000. Disabled by default                             [default: False]" name="pparttree" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: expandedalignment.qza" name="oexpandedalignment" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Add sequences to multiple sequence alignment with MAFFT.
+###############################################################
+
+Add new sequences to an existing alignment with MAFFT.
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    The alignment to which sequences should be added.
+sequences : FeatureData[Sequence]
+    The sequences to be added.
+n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads. (Use `auto` to automatically use all available
+    cores)
+parttree : Bool, optional
+    This flag is required if the number of sequences being aligned are
+    larger than 1000000. Disabled by default
+
+Returns
+-------
+expanded_alignment : FeatureData[AlignedSequence]
+    Alignment containing the provided aligned and unaligned sequences.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_alignment_mafft.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_alignment_mafft" name="qiime alignment mafft"
-      version="2020.8">
-  <description>De novo multiple sequence alignment with MAFFT</description>
-  <requirements>
-    <requirement type="package" version="2020.8">qiime2</requirement>
-  </requirements>
-  <command><![CDATA[
-qiime alignment mafft
-
---i-sequences=$isequences
-
-#if str($pnthreads) != 'None':
---p-n-threads=$pnthreads
-#end if
-
-#if $pparttree:
- --p-parttree
-#end if
-
---o-alignment=oalignment
-
-#if str($examples) != 'None':
---examples=$examples
-#end if
-
-;
-cp oalignment.qza $oalignment
-
-  ]]></command>
-  <inputs>
-    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be aligned.              [required]" name="isequences" optional="False" type="data" />
-    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
-      <option selected="True" value="None">Selection is Optional</option>
-      <option value="Int % Range(1">Int % Range(1</option>
-      <option value="None">None</option>
-    </param>
-    <param label="--p-parttree: --p-parttree: / --p-no-parttree This flag is required if the number of sequences being aligned are larger than 1000000. Disabled by default                             [default: False]" name="pparttree" selected="False" type="boolean" />
-    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
-    
-  </inputs>
-
-  <outputs>
-    <data format="qza" label="${tool.name} on ${on_string}: alignment.qza" name="oalignment" />
-    
-  </outputs>
-
-  <help><![CDATA[
-De novo multiple sequence alignment with MAFFT
-###############################################################
-
-Perform de novo multiple sequence alignment using MAFFT.
-
-Parameters
-----------
-sequences : FeatureData[Sequence]
-    The sequences to be aligned.
-n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
-    The number of threads. (Use `auto` to automatically use all available
-    cores)
-parttree : Bool, optional
-    This flag is required if the number of sequences being aligned are
-    larger than 1000000. Disabled by default
-
-Returns
--------
-alignment : FeatureData[AlignedSequence]
-    The aligned sequences.
-  ]]></help>
-  <macros>
-    <import>qiime_citation.xml</import>
-  </macros>
-  <expand macro="qiime_citation"/>
-</tool>
\ No newline at end of file
--- a/qiime2/qiime_alignment_mask.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_alignment_mask.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,38 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_alignment_mask" name="qiime alignment mask" version="2019.7">
-	<description> - Positional conservation and gap filtering.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_alignment_mask" name="qiime alignment mask"
+      version="2020.8">
+  <description>Positional conservation and gap filtering.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime alignment mask
 
 --i-alignment=$ialignment
 
+--p-max-gap-frequency=$pmaxgapfrequency
+
+--p-min-conservation=$pminconservation
+
 --o-masked-alignment=omaskedalignment
 
-#if $pmaxgapfrequency:
- --p-max-gap-frequency=$pmaxgapfrequency
-#end if
-
-#if $pminconservation:
- --p-min-conservation=$pminconservation
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
 ;
 cp omaskedalignment.qza $omaskedalignment
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] The alignment to be masked.               [required]" name="ialignment" optional="False" type="data"/>
-		<param label="--p-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns regardless of gap character frequency. [default: 1.0]" name="pmaxgapfrequency" optional="True" type="float" min="0" max="1" exclude_max="False" value="1.0"/>
-		<param label="--p-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of 0.4 is provided, a column will only be retained if it contains at least one character that is present in at least 40% of the sequences. [default: 0.4]" name="pminconservation" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.4"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] The alignment to be masked.               [required]" name="ialignment" optional="False" type="data" />
+    <param exclude_max="False" label="--p-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns regardless of gap character frequency. [default: 1.0]" max="1" min="0" name="pmaxgapfrequency" optional="True" type="float" value="1.0" />
+    <param exclude_max="False" label="--p-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of 0.4 is provided, a column will only be retained if it contains at least one character that is present in at least 40% of the sequences. [default: 0.4]" max="1" min="0" name="pminconservation" optional="True" type="float" value="0.4" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Positional conservation and gap filtering.
-##########################################
+###############################################################
 
 Mask (i.e., filter) unconserved and highly gapped columns from an
 alignment. Default min_conservation was chosen to reproduce the mask
@@ -59,9 +66,9 @@
 -------
 masked_alignment : FeatureData[AlignedSequence]
     The masked alignment.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_citation.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<macros>
-  <xml name="qiime_citation">
-    <citations>
-      <citation type="bibtex">
-        @article{10.7287/peerj.preprints.27295v2,
-         title = {QIIME 2: Reproducible, interactive, scalable, and extensible microbiome data science},
-         author = {Bolyen, Evan and Rideout, Jai Ram and Dillon, Matthew R and Bokulich, Nicholas A and Abnet, Christian and Al-Ghalith, Gabriel A and Alexander, Harriet and Alm, Eric J and Arumugam, Manimozhiyan and Asnicar, Francesco and Bai, Yang and Bisanz, Jordan E and Bittinger, Kyle and Brejnrod, Asker and Brislawn, Colin J and Brown, C Titus and Callahan, Benjamin J and Caraballo-Rodríguez, Andrés Mauricio and Chase, John and Cope, Emily and Da Silva, Ricardo and Dorrestein, Pieter C and Douglas, Gavin M and Durall, Daniel M and Duvallet, Claire and Edwardson, Christian F and Ernst, Madeleine and Estaki, Mehrbod and Fouquier, Jennifer and Gauglitz, Julia M and Gibson, Deanna L and Gonzalez, Antonio and Gorlick, Kestrel and Guo, Jiarong and Hillmann, Benjamin and Holmes, Susan and Holste, Hannes and Huttenhower, Curtis and Huttley, Gavin and Janssen, Stefan and Jarmusch, Alan K and Jiang, Lingjing and Kaehler, Benjamin and Kang, Kyo Bin and Keefe, Christopher R and Keim, Paul and Kelley, Scott T and Knights, Dan and Koester, Irina and Kosciolek, Tomasz and Kreps, Jorden and Langille, Morgan GI and Lee, Joslynn and Ley, Ruth and Liu, Yong-Xin and Loftfield, Erikka and Lozupone, Catherine and Maher, Massoud and Marotz, Clarisse and Martin, Bryan D and McDonald, Daniel and McIver, Lauren J and Melnik, Alexey V and Metcalf, Jessica L and Morgan, Sydney C and Morton, Jamie and Naimey, Ahmad Turan and Navas-Molina, Jose A and Nothias, Louis Felix and Orchanian, Stephanie B and Pearson, Talima and Peoples, Samuel L and Petras, Daniel and Preuss, Mary Lai and Pruesse, Elmar and Rasmussen, Lasse Buur and Rivers, Adam and Robeson, II, Michael S and Rosenthal, Patrick and Segata, Nicola and Shaffer, Michael and Shiffer, Arron and Sinha, Rashmi and Song, Se Jin and Spear, John R and Swafford, Austin D and Thompson, Luke R and Torres, Pedro J and Trinh, Pauline and Tripathi, Anupriya and Turnbaugh, Peter J and Ul-Hasan, Sabah and van der Hooft, Justin JJ and Vargas, Fernando and Vázquez-Baeza, Yoshiki and Vogtmann, Emily and von Hippel, Max and Walters, William and Wan, Yunhu and Wang, Mingxun and Warren, Jonathan and Weber, Kyle C and Williamson, Chase HD and Willis, Amy D and Xu, Zhenjiang Zech and Zaneveld, Jesse R and Zhang, Yilong and Zhu, Qiyun and Knight, Rob and Caporaso, J Gregory},
-         year = 2018,
-         month = dec,
-         keywords = {microbiome, bioinformatics, data science, software, microbial ecology, reproducibility},
-         abstract = {
-                We present QIIME 2, an open-source microbiome data science platform accessible to users spanning the microbiome research ecosystem, from scientists and engineers to clinicians and policy makers. QIIME 2 provides new features that will drive the next generation of microbiome research. These include interactive spatial and temporal analysis and visualization tools, support for metabolomics and shotgun metagenomics analysis, and automated data provenance tracking to ensure reproducible, transparent microbiome data science.
-              },
-         volume = 6,
-         pages = {e27295v2},
-         journal = {PeerJ Preprints},
-         issn = {2167-9843},
-         url = {https://doi.org/10.7287/peerj.preprints.27295v2},
-         doi = {10.7287/peerj.preprints.27295v2}
-        }
-       </citation>
-    </citations>
-  </xml>
-</macros>
--- a/qiime2/qiime_composition_add-pseudocount.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_composition_add-pseudocount.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,31 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_composition_add-pseudocount" name="qiime composition add-pseudocount" version="2019.7">
-	<description> - Add pseudocount to table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_composition_add-pseudocount" name="qiime composition add-pseudocount"
+      version="2020.8">
+  <description>Add pseudocount to table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime composition add-pseudocount
 
 --i-table=$itable
+
+--p-pseudocount=$ppseudocount
+
 --o-composition-table=ocompositiontable
 
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
+#if str($examples) != 'None':
+--examples=$examples
 #end if
+
 ;
 cp ocompositiontable.qza $ocompositiontable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to which pseudocounts should be added.                                       [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-pseudocount: INTEGER The value to add to all counts in the feature table. [default: 1]" name="ppseudocount" optional="True" type="integer" value="1"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: compositiontable.qza" name="ocompositiontable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to which pseudocounts should be added.                                       [required]" name="itable" optional="False" type="data" />
+    <param label="--p-pseudocount: INTEGER The value to add to all counts in the feature table. [default: 1]" name="ppseudocount" optional="True" type="integer" value="1" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: compositiontable.qza" name="ocompositiontable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Add pseudocount to table
-########################
+###############################################################
 
 Increment all counts in table by pseudocount.
 
@@ -40,9 +51,9 @@
 -------
 composition_table : FeatureTable[Composition]
     The resulting feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_composition_ancom.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_composition_ancom.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,64 +1,102 @@
 <?xml version="1.0" ?>
-<tool id="qiime_composition_ancom" name="qiime composition ancom" version="2019.7">
-	<description> - Apply ANCOM to identify features that differ in abundance.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_composition_ancom" name="qiime composition ancom"
+      version="2020.8">
+  <description>Apply ANCOM to identify features that differ in abundance.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime composition ancom
 
 --i-table=$itable
-
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-
-
---m-metadata-column="$mmetadatacolumn"
+--m-metadata-column=$mmetadatacolumn
 
-#if str($pdifferencefunction) != 'None':
---p-difference-function=$pdifferencefunction
-#end if
 
 #if str($ptransformfunction) != 'None':
 --p-transform-function=$ptransformfunction
 #end if
 
---o-visualization=ovisualization;
+#if str($pdifferencefunction) != 'None':
+--p-difference-function=$pdifferencefunction
+#end if
+
+--o-visualization=ovisualization
 
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ocompositiontable.qza $ocompositiontable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-  ]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: FeatureTable[Composition] - The feature table to be used for ANCOM computation.  [required]" name="itable" optional="False" type="data"/>
-
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" optional="True" />
-
 
-		<param label="--m-metadata-column: MetadataColumn[Categorical] - Column from metadata file or artifact viewable as metadata. The categorical sample metadata column to test for differential abundance across.  [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-difference-function: " name="pdifferencefunction" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="mean_difference">mean_difference</option>
-			<option value="f_statistic">f_statistic</option>
-		</param>
-		<param label="--cmd-config: Use config file for command options" name="cmdconfig" optional="True" type="data"/>
-		<param label="--p-transform-function: " name="ptransformfunction" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="log">log</option>
-			<option value="clr">clr</option>
-			<option value="sqrt">sqrt</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Composition] The feature table to be used for ANCOM computation. [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] The categorical sample metadata column to test for differential abundance across.               [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-transform-function: " name="ptransformfunction" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="sqrt">sqrt</option>
+      <option value="log">log</option>
+      <option value="clr">clr</option>
+    </param>
+    <param label="--p-difference-function: " name="pdifferencefunction" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="mean_difference">mean_difference</option>
+      <option value="f_statistic">f_statistic</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Apply ANCOM to identify features that differ in abundance.
-##########################################################
+###############################################################
 
 Apply Analysis of Composition of Microbiomes (ANCOM) to identify features
 that are differentially abundant across groups.
@@ -80,9 +118,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_cutadapt_demux-paired.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_cutadapt_demux-paired.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,125 +1,130 @@
 <?xml version="1.0" ?>
-<tool id="qiime_cutadapt_demux-paired" name="qiime cutadapt demux-paired" version="2019.7">
-	<description> - Demultiplex paired-end sequence data with barcodes in- sequence.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_cutadapt_demux-paired" name="qiime cutadapt demux-paired"
+      version="2020.8">
+  <description>Demultiplex paired-end sequence data with barcodes in- sequence.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime cutadapt demux-paired
---i-seqs=$iseqs
-
-
-#if $input_files_mforwardbarcodesfile:
-#def list_dict_to_string_forward(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-forward-barcodes-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
---m-forward-barcodes-file=$list_dict_to_string_forward($input_files_mforwardbarcodesfile)
-#end if
 
-#if $input_files_mreversebarcodesfile:
-#def list_dict_to_string_reverse(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-reverse-barcodes-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
---m-reverse-barcodes-file=$list_dict_to_string_reverse($input_files_mreversebarcodesfile)
-#end if
-
+--i-seqs=$iseqs
+# if $input_files_mforwardbarcodesfile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-forward-barcodes-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-forward-barcodes-file=$list_dict_to_string($input_files_mforwardbarcodesfile)
+# end if
 
-
-#if str($pbatchsize):
-  --p-batch-size $pbatchsize
+#if '__ob__' in str($mforwardbarcodescolumn):
+  #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('__ob__', '[')
+  #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
 #end if
-
-#if str($pminimumlength):
-  --p-minimum-length $pminimumlength
+#if '__cb__' in str($mforwardbarcodescolumn):
+  #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('__cb__', ']')
+  #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
 #end if
-
-
-
-
+#if 'X' in str($mforwardbarcodescolumn):
+  #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('X', '\\')
+  #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
+#end if
 #if '__sq__' in str($mforwardbarcodescolumn):
   #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('__sq__', "'")
   #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
 #end if
-
 #if '__db__' in str($mforwardbarcodescolumn):
   #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('__db__', '"')
   #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
 #end if
 
+--m-forward-barcodes-column=$mforwardbarcodescolumn
 
+# if $input_files_mreversebarcodesfile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-reverse-barcodes-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-reverse-barcodes-file=$list_dict_to_string($input_files_mreversebarcodesfile)
+# end if
 
-
+#if '__ob__' in str($mreversebarcodescolumn):
+  #set $mreversebarcodescolumn_temp = $mreversebarcodescolumn.replace('__ob__', '[')
+  #set $mreversebarcodescolumn = $mreversebarcodescolumn_temp
+#end if
+#if '__cb__' in str($mreversebarcodescolumn):
+  #set $mreversebarcodescolumn_temp = $mreversebarcodescolumn.replace('__cb__', ']')
+  #set $mreversebarcodescolumn = $mreversebarcodescolumn_temp
+#end if
+#if 'X' in str($mreversebarcodescolumn):
+  #set $mreversebarcodescolumn_temp = $mreversebarcodescolumn.replace('X', '\\')
+  #set $mreversebarcodescolumn = $mreversebarcodescolumn_temp
+#end if
 #if '__sq__' in str($mreversebarcodescolumn):
   #set $mreversebarcodescolumn_temp = $mreversebarcodescolumn.replace('__sq__', "'")
   #set $mreversebarcodescolumn = $mreversebarcodescolumn_temp
 #end if
-
 #if '__db__' in str($mreversebarcodescolumn):
   #set $mreversebarcodescolumn_temp = $mreversebarcodescolumn.replace('__db__', '"')
   #set $mreversebarcodescolumn = $mreversebarcodescolumn_temp
 #end if
 
-
-
-#if str($mforwardbarcodescolumn):
---m-forward-barcodes-column="$mforwardbarcodescolumn"
+#if str($mreversebarcodescolumn):
+  --m-reverse-barcodes-column=$mreversebarcodescolumn
 #end if
 
-#if str($mreversebarcodescolumn):
- --m-reverse-barcodes-column="$mreversebarcodescolumn"
-#end if
+--p-error-rate=$perrorrate
 
-
+--p-minimum-length=$pminimumlength
 
-#if str($perrorrate):
- --p-error-rate=$perrorrate
+#if $pmixedorientation:
+ --p-mixed-orientation
 #end if
 
-
-
 --o-per-sample-sequences=opersamplesequences
+
 --o-untrimmed-sequences=ountrimmedsequences
-;
-
-cp opersamplesequences.qza $opersamplesequences;
-cp ountrimmedsequences.qza $ountrimmedsequences
-	]]></command>
-	<inputs>
 
-		<param label="--p-batch-size:  INTEGER  The number of samples cutadapt demultiplexes Range(0, None) concurrently. Demultiplexing in smaller batches will yield the same result with marginal speed loss, and may solve 'too many files' errors related to sample quantity. Set to '0' to process all samples at once. [default: 0]" name="pbatchsize" optional="True" type="integer" value="0" min="0"/>
-		<param label="--p-minimum-length: INTEGER  Range(1, None) Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records.  [default: 1]" name="pminimumlength" optional="True" type="integer" value="1" min="1"/>
-
+#if str($examples) != 'None':
+--examples=$examples
+#end if
 
-
-		<param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT MultiplexedPairedEndBarcodeInSequence The paired-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data"/>
-		<param label="--m-forward-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes for the forward reads.           [required]" name="mforwardbarcodescolumn" optional="False" type="text"/>
-		<param label="--m-reverse-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes for the reverse reads.           [optional]" name="mreversebarcodescolumn" optional="True" type="text"/>
+;
+cp ountrimmedsequences.qza $ountrimmedsequences
 
-		<repeat name="input_files_mforwardbarcodesfile" optional="False" title="--m-forward-barcodes-file">
-			<param label="--m-forward-barcodes-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-
-		<repeat name="input_files_mreversebarcodesfile" optional="False" title="--m-reverse-barcodes-file">
-			<param label="--m-reverse-barcodes-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT MultiplexedPairedEndBarcodeInSequence The paired-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data" />
+    <repeat name="input_files_mforwardbarcodesfile" optional="True" title="--m-forward-barcodes-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-forward-barcodes-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-forward-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes for the forward reads.           [required]" name="mforwardbarcodescolumn" optional="False" type="text" />
+    <repeat name="input_files_mreversebarcodesfile" optional="True" title="--m-reverse-barcodes-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-reverse-barcodes-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-reverse-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes for the reverse reads.           [optional]" name="mreversebarcodescolumn" optional="False" type="text" />
+    <param exclude_max="False" label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) The level of error tolerance, specified as the maximum allowable error rate.         [default: 0.1]" max="1" min="0" name="perrorrate" optional="True" type="float" value="0.1" />
+    <param label="--p-minimum-length: INTEGER Range(1, None)        Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" min="1" name="pminimumlength" optional="True" type="integer" value="1" />
+    <param label="--p-mixed-orientation: --p-mixed-orientation: / --p-no-mixed-orientation Handle demultiplexing of mixed orientation reads (i.e. when forward and reverse reads coexist in the same file).                         [default: False]" name="pmixedorientation" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) The level of error tolerance, specified as the maximum allowable error rate.         [default: 0.1]" name="perrorrate" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.1"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: untrimmedsequences.qza" name="ountrimmedsequences"/>
-	</outputs>
-	<help><![CDATA[
-Demultiplex paired-end sequence data with barcodes in-sequence.
-################################################################
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: untrimmedsequences.qza" name="ountrimmedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Demultiplex paired-end sequence data with barcodes in- sequence.
+###############################################################
 
 Demultiplex sequence data (i.e., map barcode reads to sample ids). Barcodes
 are expected to be located within the sequence data (versus the header, or
@@ -147,6 +152,9 @@
     Discard reads shorter than specified value. Note, the cutadapt default
     of 0 has been overridden, because that value produces empty sequence
     records.
+mixed_orientation : Bool, optional
+    Handle demultiplexing of mixed orientation reads (i.e. when forward and
+    reverse reads coexist in the same file).
 
 Returns
 -------
@@ -154,9 +162,9 @@
     The resulting demultiplexed sequences.
 untrimmed_sequences : MultiplexedPairedEndBarcodeInSequence
     The sequences that were unmatched to barcodes.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_cutadapt_demux-single.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_cutadapt_demux-single.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,80 +1,85 @@
 <?xml version="1.0" ?>
-<tool id="qiime_cutadapt_demux-single" name="qiime cutadapt demux-single" version="2019.7">
-	<description> - Demultiplex single-end sequence data with barcodes in- sequence.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_cutadapt_demux-single" name="qiime cutadapt demux-single"
+      version="2020.8">
+  <description>Demultiplex single-end sequence data with barcodes in- sequence.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime cutadapt demux-single
 
 --i-seqs=$iseqs
-
-
-#if str($pbatchsize):
-  --p-batch-size $pbatchsize
-#end if
-
-#if str($pminimumlength):
-  --p-minimum-length $pminimumlength
-#end if
-
-
-
-
+# if $input_files_mbarcodesfile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+# end if
 
-#if $input_files_mbarcodesfile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+#if '__ob__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__ob__', '[')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
 #end if
-
-
-
+#if '__cb__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__cb__', ']')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if 'X' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('X', '\\')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
 #if '__sq__' in str($mbarcodescolumn):
   #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__sq__', "'")
   #set $mbarcodescolumn = $mbarcodescolumn_temp
 #end if
+#if '__db__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__db__', '"')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
 
---m-barcodes-column="$mbarcodescolumn"
-
+--m-barcodes-column=$mbarcodescolumn
 
 
-#if str($perrorrate):
- --p-error-rate=$perrorrate
-#end if
+--p-error-rate=$perrorrate
 
+--p-minimum-length=$pminimumlength
 
 --o-per-sample-sequences=opersamplesequences
+
 --o-untrimmed-sequences=ountrimmedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-
-cp opersamplesequences.qza $opersamplesequences;
 cp ountrimmedsequences.qza $ountrimmedsequences
-	]]></command>
-	<inputs>
-
-		<param label="--p-batch-size:  INTEGER  The number of samples cutadapt demultiplexes Range(0, None) concurrently. Demultiplexing in smaller batches will yield the same result with marginal speed loss, and may solve 'too many files' errors related to sample quantity. Set to '0' to process all samples at once. [default: 0]" name="pbatchsize" optional="True" type="integer" value="0" min="0"/>
-		<param label="--p-minimum-length: INTEGER  Range(1, None) Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records.  [default: 1]" name="pminimumlength" optional="True" type="integer" value="1" min="1"/>
-
 
-		<param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT MultiplexedSingleEndBarcodeInSequence The single-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data"/>
-		<repeat name="input_files_mbarcodesfile" optional="False" title="--m-barcodes-file">
-			<param label="--m-barcodes-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-		<param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes.                                 [required]" name="mbarcodescolumn" optional="False" type="text"/>
-		<param label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) The level of error tolerance, specified as the maximum allowable error rate. The default value specified by cutadapt is 0.1 (=10%), which is greater than `demux emp-*`, which is 0.0 (=0%). [default: 0.1]" name="perrorrate" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.1"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: untrimmedsequences.qza" name="ountrimmedsequences"/>
-	</outputs>
-	<help><![CDATA[
-Demultiplex single-end sequence data with barcodes in-sequence.
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT MultiplexedSingleEndBarcodeInSequence The single-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data" />
+    <repeat name="input_files_mbarcodesfile" optional="True" title="--m-barcodes-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-barcodes-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column listing the per-sample barcodes.                                 [required]" name="mbarcodescolumn" optional="False" type="text" />
+    <param exclude_max="False" label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) The level of error tolerance, specified as the maximum allowable error rate. The default value specified by cutadapt is 0.1 (=10%), which is greater than `demux emp-*`, which is 0.0 (=0%). [default: 0.1]" max="1" min="0" name="perrorrate" optional="True" type="float" value="0.1" />
+    <param label="--p-minimum-length: INTEGER Range(1, None)        Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" min="1" name="pminimumlength" optional="True" type="integer" value="1" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: untrimmedsequences.qza" name="ountrimmedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Demultiplex single-end sequence data with barcodes in- sequence.
 ###############################################################
 
 Demultiplex sequence data (i.e., map barcode reads to sample ids). Barcodes
@@ -107,9 +112,9 @@
     The resulting demultiplexed sequences.
 untrimmed_sequences : MultiplexedSingleEndBarcodeInSequence
     The sequences that were unmatched to barcodes.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_cutadapt_trim-paired.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_cutadapt_trim-paired.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,116 +1,88 @@
 <?xml version="1.0" ?>
-<tool id="qiime_cutadapt_trim-paired" name="qiime cutadapt trim-paired" version="2019.7">
-	<description> - Find and remove adapters in demultiplexed paired-end sequences.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_cutadapt_trim-paired" name="qiime cutadapt trim-paired"
+      version="2020.8">
+  <description>Find and remove adapters in demultiplexed paired-end sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime cutadapt trim-paired
 
 --i-demultiplexed-sequences=$idemultiplexedsequences
 
-#set $pcores = '${GALAXY_SLOTS:-4}'
-#if str($pcores):
 --p-cores=$pcores
-#end if
-
-
-
-#if '__sq__' in str($padapterf):
-  #set $padapterf_temp = $padapterf.replace('__sq__', "'")
-  #set $padapterf = $padapterf_temp
-#end if
-
-#if 'X' in str($padapterf):
-  #set $padapterf_temp = $padapterf.replace('X', "$")
-  #set $padapterf = $padapterf_temp
-#end if
 
 #if str($padapterf):
- --p-adapter-f="$padapterf"
+  --p-adapter-f=$padapterf
+#end if
+#if str($pfrontf):
+  --p-front-f=$pfrontf
+#end if
+#if '__ob__' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('__ob__', '[')
+  #set $panywheref = $panywheref_temp
 #end if
-
-
-
-
-#if '__sq__' in str($pfrontf):
-  #set $pfrontf_temp = $pfrontf.replace('__sq__', "'")
-  #set $pfrontf = $pfrontf_temp
+#if '__cb__' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('__cb__', ']')
+  #set $panywheref = $panywheref_temp
 #end if
-
-#if str($pfrontf):
- --p-front-f="$pfrontf"
+#if 'X' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('X', '\\')
+  #set $panywheref = $panywheref_temp
 #end if
-
-
-
-
 #if '__sq__' in str($panywheref):
   #set $panywheref_temp = $panywheref.replace('__sq__', "'")
   #set $panywheref = $panywheref_temp
 #end if
-
-#if str($panywheref):
- --p-anywhere-f="$panywheref"
+#if '__db__' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('__db__', '"')
+  #set $panywheref = $panywheref_temp
 #end if
 
-
-
-
-
-#if '__sq__' in str($padapterr):
-  #set $padapterr_temp = $padapterr.replace('__sq__', "'")
-  #set $padapterr = $padapterr_temp
-#end if
-
-#if 'X' in str($padapterr):
-  #set $padapterr_temp = $padapterr.replace('X', "$")
-  #set $padapterr = $padapterr_temp
+#if str($panywheref):
+  --p-anywhere-f=$panywheref
 #end if
 
 #if str($padapterr):
- --p-adapter-r="$padapterr"
+  --p-adapter-r=$padapterr
+#end if
+#if str($pfrontr):
+  --p-front-r=$pfrontr
+#end if
+#if '__ob__' in str($panywherer):
+  #set $panywherer_temp = $panywherer.replace('__ob__', '[')
+  #set $panywherer = $panywherer_temp
 #end if
-
-
-
-#if '__sq__' in str($pfrontr):
-  #set $pfrontr_temp = $pfrontr.replace('__sq__', "'")
-  #set $pfrontr = $pfrontr_temp
+#if '__cb__' in str($panywherer):
+  #set $panywherer_temp = $panywherer.replace('__cb__', ']')
+  #set $panywherer = $panywherer_temp
 #end if
-
-#if str($pfrontr):
- --p-front-r="$pfrontr"
+#if 'X' in str($panywherer):
+  #set $panywherer_temp = $panywherer.replace('X', '\\')
+  #set $panywherer = $panywherer_temp
 #end if
-
-
-
 #if '__sq__' in str($panywherer):
   #set $panywherer_temp = $panywherer.replace('__sq__', "'")
   #set $panywherer = $panywherer_temp
 #end if
-
-#if str($panywherer):
- --p-anywhere-r="$panywherer"
+#if '__db__' in str($panywherer):
+  #set $panywherer_temp = $panywherer.replace('__db__', '"')
+  #set $panywherer = $panywherer_temp
 #end if
 
-
+#if str($panywherer):
+  --p-anywhere-r=$panywherer
+#end if
 
-#if str($perrorrate):
- --p-error-rate=$perrorrate
-#end if
+--p-error-rate=$perrorrate
 
 #if $pnoindels:
  --p-no-indels
 #end if
 
-#if $ptimes:
- --p-times=$ptimes
-#end if
+--p-times=$ptimes
 
-#if str($poverlap):
- --p-overlap=$poverlap
-#end if
+--p-overlap=$poverlap
 
 #if $pmatchreadwildcards:
  --p-match-read-wildcards
@@ -120,40 +92,48 @@
  --p-no-match-adapter-wildcards
 #end if
 
-#if $pminimumlength:
- --p-minimum-length=$pminimumlength
-#end if
+--p-minimum-length=$pminimumlength
 
 #if $pdiscarduntrimmed:
  --p-discard-untrimmed
 #end if
 
 --o-trimmed-sequences=otrimmedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-
 cp otrimmedsequences.qza $otrimmedsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-sequences: ARTIFACT SampleData[PairedEndSequencesWithQuality] The paired-end sequences to be trimmed.   [required]" name="idemultiplexedsequences" optional="False" type="data"/>
-		<param label="--p-adapter-f: TEXT...   Sequence of an adapter ligated to the 3' end. The List[Str]             adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. Search in forward read. If your sequence of interest is 'framed' by a 5' and a 3' adapter, use this parameter to define a 'linked' primer - see https://cutadapt.readthedocs.io for complete details.                         [optional]" name="padapterf" optional="True" type="text"/>
-		<param label="--p-front-f: TEXT...     Sequence of an adapter ligated to the 5' end. The List[Str]             adapter and any preceding bases are trimmed. Partial matches at the 5' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read. Search in forward read.                             [optional]" name="pfrontf" optional="True" type="text"/>
-		<param label="--p-anywhere-f: TEXT...  Sequence of an adapter that may be ligated to the List[Str]             5' or 3' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to. Search in forward read.                                     [optional]" name="panywheref" optional="True" type="text"/>
-		<param label="--p-adapter-r: TEXT...   Sequence of an adapter ligated to the 3' end. The List[Str]             adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. Search in reverse read. If your sequence of interest is 'framed' by a 5' and a 3' adapter, use this parameter to define a 'linked' primer - see https://cutadapt.readthedocs.io for complete details.                         [optional]" name="padapterr" optional="True" type="text"/>
-		<param label="--p-front-r: TEXT...     Sequence of an adapter ligated to the 5' end. The List[Str]             adapter and any preceding bases are trimmed. Partial matches at the 5' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read. Search in reverse read.                             [optional]" name="pfrontr" optional="True" type="text"/>
-		<param label="--p-anywhere-r: TEXT...  Sequence of an adapter that may be ligated to the List[Str]             5' or 3' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to. Search in reverse read.                                     [optional]" name="panywherer" optional="True" type="text"/>
-		<param label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) Maximum allowed error rate.           [default: 0.1]" name="perrorrate" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.1"/>
-		<param label="--p-no-indels: Do not allow insertions or deletions of bases when matching adapters.                   [default: False]" name="pnoindels" selected="False" type="boolean"/>
-		<param label="--p-times: INTEGER       Remove multiple occurrences of an adapter if it is Range(1, None)        repeated, up to `times` times.          [default: 1]" name="ptimes" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-overlap: INTEGER     Require at least `overlap` bases of overlap between Range(1, None)        read and adapter for an adapter to be found. [default: 3]" name="poverlap" optional="True" type="integer" min="1" value="3"/>
-		<param label="--p-match-read-wildcards: --p-no-match-read-wildcards Interpret IUPAC wildcards (e.g., N) in reads. [default: False]" name="pmatchreadwildcards" selected="False" type="boolean"/>
-		<param label="--p-no-match-adapter-wildcards: Do not interpret IUPAC wildcards (e.g., N) in adapters. [default: False]" name="pnomatchadapterwildcards" selected="False" type="boolean"/>
-		<param label="--p-minimum-length: INTEGER Range(1, None)        Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" name="pminimumlength" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-discard-untrimmed: --p-no-discard-untrimmed Discard reads in which no adapter was found. [default: False]" name="pdiscarduntrimmed" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: trimmedsequences.qza" name="otrimmedsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-sequences: ARTIFACT SampleData[PairedEndSequencesWithQuality] The paired-end sequences to be trimmed.   [required]" name="idemultiplexedsequences" optional="False" type="data" />
+    <param label="--p-adapter-f: TEXT...   Sequence of an adapter ligated to the 3\' end. The List[Str]             adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. Search in forward read. If your sequence of interest is \'framed\' by a 5\' and a 3\' adapter, use this parameter to define a \'linked\' primer - see https://cutadapt.readthedocs.io for complete details.                         [optional]" name="padapterf" optional="False" type="text" value="False" />
+    <param label="--p-front-f: TEXT...     Sequence of an adapter ligated to the 5\' end. The List[Str]             adapter and any preceding bases are trimmed. Partial matches at the 5\' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read. Search in forward read.                             [optional]" name="pfrontf" optional="False" type="text" />
+    <param label="--p-anywhere-f: TEXT...  Sequence of an adapter that may be ligated to the List[Str]             5\' or 3\' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to. Search in forward read.                                     [optional]" name="panywheref" optional="False" type="text" />
+    <param label="--p-adapter-r: TEXT...   Sequence of an adapter ligated to the 3\' end. The List[Str]             adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. Search in reverse read. If your sequence of interest is \'framed\' by a 5\' and a 3\' adapter, use this parameter to define a \'linked\' primer - see https://cutadapt.readthedocs.io for complete details.                         [optional]" name="padapterr" optional="False" type="text" value="False" />
+    <param label="--p-front-r: TEXT...     Sequence of an adapter ligated to the 5\' end. The List[Str]             adapter and any preceding bases are trimmed. Partial matches at the 5\' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read. Search in reverse read.                             [optional]" name="pfrontr" optional="False" type="text" />
+    <param label="--p-anywhere-r: TEXT...  Sequence of an adapter that may be ligated to the List[Str]             5\' or 3\' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to. Search in reverse read.                                     [optional]" name="panywherer" optional="False" type="text" />
+    <param exclude_max="False" label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) Maximum allowed error rate.           [default: 0.1]" max="1" min="0" name="perrorrate" optional="True" type="float" value="0.1" />
+    <param label="--p-no-indels: Do not allow insertions or deletions of bases when matching adapters.                   [default: True]" name="pnoindels" selected="False" type="boolean" />
+    <param label="--p-times: INTEGER       Remove multiple occurrences of an adapter if it is Range(1, None)        repeated, up to `times` times.          [default: 1]" min="1" name="ptimes" optional="True" type="integer" value="1" />
+    <param label="--p-overlap: INTEGER     Require at least `overlap` bases of overlap between Range(1, None)        read and adapter for an adapter to be found. [default: 3]" min="1" name="poverlap" optional="True" type="integer" value="3" />
+    <param label="--p-match-read-wildcards: --p-match-read-wildcards: / --p-no-match-read-wildcards Interpret IUPAC wildcards (e.g., N) in reads. [default: False]" name="pmatchreadwildcards" selected="False" type="boolean" />
+    <param label="--p-no-match-adapter-wildcards: Do not interpret IUPAC wildcards (e.g., N) in adapters. [default: True]" name="pnomatchadapterwildcards" selected="False" type="boolean" />
+    <param label="--p-minimum-length: INTEGER Range(1, None)        Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" min="1" name="pminimumlength" optional="True" type="integer" value="1" />
+    <param label="--p-discard-untrimmed: --p-discard-untrimmed: / --p-no-discard-untrimmed Discard reads in which no adapter was found. [default: False]" name="pdiscarduntrimmed" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: trimmedsequences.qza" name="otrimmedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Find and remove adapters in demultiplexed paired-end sequences.
 ###############################################################
 
@@ -166,6 +146,8 @@
 ----------
 demultiplexed_sequences : SampleData[PairedEndSequencesWithQuality]
     The paired-end sequences to be trimmed.
+cores : Int % Range(1, None), optional
+    Number of CPU cores to use.
 adapter_f : List[Str], optional
     Sequence of an adapter ligated to the 3' end. The adapter and any
     subsequent bases are trimmed. If a `$` is appended, the adapter is only
@@ -229,9 +211,9 @@
 -------
 trimmed_sequences : SampleData[PairedEndSequencesWithQuality]
     The resulting trimmed sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_cutadapt_trim-single.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_cutadapt_trim-single.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,77 +1,58 @@
 <?xml version="1.0" ?>
-<tool id="qiime_cutadapt_trim-single" name="qiime cutadapt trim-single" version="2019.7">
-	<description> - Find and remove adapters in demultiplexed single-end sequences.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_cutadapt_trim-single" name="qiime cutadapt trim-single"
+      version="2020.8">
+  <description>Find and remove adapters in demultiplexed single-end sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime cutadapt trim-single
+
 --i-demultiplexed-sequences=$idemultiplexedsequences
 
-#set $pcores = '${GALAXY_SLOTS:-4}'
-#if str($pcores):
 --p-cores=$pcores
-#end if
-
-
-#if '__sq__' in str($padapter):
-  #set $padapter_temp = $padapter.replace('__sq__', "'")
-  #set $padapter = $padapter_temp
-#end if
 
-#if 'X' in str($padapter):
-  #set $padapter_temp = $padapter.replace('X', "$")
-  #set $padapter = $padapter_temp
-#end if
-
-#if str($padapter):
- --p-adapter="$padapter"
-#end if
-
-
-
-
-
-#if '__sq__' in str($pfront):
-  #set $pfront_temp = $pfront.replace('__sq__', "'")
-  #set $pfront = $pfront_temp
+#if $padapter:
+ --p-adapter
 #end if
 
 #if str($pfront):
- --p-front="$pfront"
+  --p-front=$pfront
+#end if
+#if '__ob__' in str($panywhere):
+  #set $panywhere_temp = $panywhere.replace('__ob__', '[')
+  #set $panywhere = $panywhere_temp
 #end if
-
-
-
-
-
+#if '__cb__' in str($panywhere):
+  #set $panywhere_temp = $panywhere.replace('__cb__', ']')
+  #set $panywhere = $panywhere_temp
+#end if
+#if 'X' in str($panywhere):
+  #set $panywhere_temp = $panywhere.replace('X', '\\')
+  #set $panywhere = $panywhere_temp
+#end if
 #if '__sq__' in str($panywhere):
   #set $panywhere_temp = $panywhere.replace('__sq__', "'")
   #set $panywhere = $panywhere_temp
 #end if
-
-#if str($panywhere):
- --p-anywhere="$panywhere"
+#if '__db__' in str($panywhere):
+  #set $panywhere_temp = $panywhere.replace('__db__', '"')
+  #set $panywhere = $panywhere_temp
 #end if
 
-
-
+#if str($panywhere):
+  --p-anywhere=$panywhere
+#end if
 
-#if str($perrorrate):
- --p-error-rate=$perrorrate
-#end if
+--p-error-rate=$perrorrate
 
 #if $pnoindels:
  --p-no-indels
 #end if
 
-#if str($ptimes):
- --p-times=$ptimes
-#end if
+--p-times=$ptimes
 
-#if str($poverlap):
- --p-overlap=$poverlap
-#end if
+--p-overlap=$poverlap
 
 #if $pmatchreadwildcards:
  --p-match-read-wildcards
@@ -81,9 +62,7 @@
  --p-no-match-adapter-wildcards
 #end if
 
-#if str($pminimumlength):
- --p-minimum-length=$pminimumlength
-#end if
+--p-minimum-length=$pminimumlength
 
 #if $pdiscarduntrimmed:
  --p-discard-untrimmed
@@ -91,28 +70,37 @@
 
 --o-trimmed-sequences=otrimmedsequences
 
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otrimmedsequences.qza $otrimmedsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-sequences: ARTIFACT SampleData[SequencesWithQuality] The single-end sequences to be trimmed.     [required]" name="idemultiplexedsequences" optional="False" type="data"/>
-		<param label="--p-adapter: TEXT...   Sequence of an adapter ligated to the 3' end. The List[Str]           adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. If your sequence of interest is 'framed' by a 5' and a 3' adapter, use this parameter to define a 'linked' primer - see https://cutadapt.readthedocs.io for complete details. [optional]" name="padapter" optional="True" type="text"/>
-		<param label="--p-front: TEXT...     Sequence of an adapter ligated to the 5' end. The List[Str]           adapter and any preceding bases are trimmed. Partial matches at the 5' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read.                  [optional]" name="pfront" optional="True" type="text"/>
-		<param label="--p-anywhere: TEXT...  Sequence of an adapter that may be ligated to the 5' List[Str]           or 3' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to.                                 [optional]" name="panywhere" optional="True" type="text"/>
 
-		<param label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) Maximum allowed error rate.             [default: 0.1]" name="perrorrate" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.1"/>
-		<param label="--p-no-indels: Do not allow insertions or deletions of bases when matching adapters.                              [default: False]" name="pnoindels" selected="False" type="boolean"/>
-		<param label="--p-times: INTEGER     Remove multiple occurrences of an adapter if it is Range(1, None)      repeated, up to `times` times.            [default: 1]" name="ptimes" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-overlap: INTEGER   Require at least `overlap` bases of overlap between Range(1, None)      read and adapter for an adapter to be found. [default: 3]" name="poverlap" optional="True" type="integer" min="1" value="3"/>
-		<param label="--p-match-read-wildcards: --p-no-match-read-wildcards Interpret IUPAC wildcards (e.g., N) in reads. [default: False]" name="pmatchreadwildcards" selected="False" type="boolean"/>
-		<param label="--p-no-match-adapter-wildcards: Do not interpret IUPAC wildcards (e.g., N) in adapters. [default: False]" name="pnomatchadapterwildcards" selected="False" type="boolean"/>
-		<param label="--p-minimum-length: INTEGER Range(1, None)      Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" name="pminimumlength" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-discard-untrimmed: --p-no-discard-untrimmed Discard reads in which no adapter was found. [default: False]" name="pdiscarduntrimmed" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: trimmedsequences.qza" name="otrimmedsequences"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-sequences: ARTIFACT SampleData[SequencesWithQuality] The single-end sequences to be trimmed.     [required]" name="idemultiplexedsequences" optional="False" type="data" />
+    <param label="--p-adapter: --p-adapter: TEXT...   Sequence of an adapter ligated to the 3\' end. The List[Str]           adapter and any subsequent bases are trimmed. If a `$` is appended, the adapter is only found if it is at the end of the read. If your sequence of interest is \'framed\' by a 5\' and a 3\' adapter, use this parameter to define a \'linked\' primer - see https://cutadapt.readthedocs.io for complete details. [optional]" name="padapter" selected="False" type="boolean" />
+    <param label="--p-front: TEXT...     Sequence of an adapter ligated to the 5\' end. The List[Str]           adapter and any preceding bases are trimmed. Partial matches at the 5\' end are allowed. If a `^` character is prepended, the adapter is only found if it is at the beginning of the read.                  [optional]" name="pfront" optional="False" type="text" />
+    <param label="--p-anywhere: TEXT...  Sequence of an adapter that may be ligated to the 5\' List[Str]           or 3\' end. Both types of matches as described under `adapter` and `front` are allowed. If the first base of the read is part of the match, the behavior is as with `front`, otherwise as with `adapter`. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to.                                 [optional]" name="panywhere" optional="False" type="text" />
+    <param exclude_max="False" label="--p-error-rate: PROPORTION Range(0, 1, inclusive_end=True) Maximum allowed error rate.             [default: 0.1]" max="1" min="0" name="perrorrate" optional="True" type="float" value="0.1" />
+    <param label="--p-no-indels: Do not allow insertions or deletions of bases when matching adapters.                              [default: True]" name="pnoindels" selected="False" type="boolean" />
+    <param label="--p-times: INTEGER     Remove multiple occurrences of an adapter if it is Range(1, None)      repeated, up to `times` times.            [default: 1]" min="1" name="ptimes" optional="True" type="integer" value="1" />
+    <param label="--p-overlap: INTEGER   Require at least `overlap` bases of overlap between Range(1, None)      read and adapter for an adapter to be found. [default: 3]" min="1" name="poverlap" optional="True" type="integer" value="3" />
+    <param label="--p-match-read-wildcards: --p-match-read-wildcards: / --p-no-match-read-wildcards Interpret IUPAC wildcards (e.g., N) in reads. [default: False]" name="pmatchreadwildcards" selected="False" type="boolean" />
+    <param label="--p-no-match-adapter-wildcards: Do not interpret IUPAC wildcards (e.g., N) in adapters. [default: True]" name="pnomatchadapterwildcards" selected="False" type="boolean" />
+    <param label="--p-minimum-length: INTEGER Range(1, None)      Discard reads shorter than specified value. Note, the cutadapt default of 0 has been overridden, because that value produces empty sequence records. [default: 1]" min="1" name="pminimumlength" optional="True" type="integer" value="1" />
+    <param label="--p-discard-untrimmed: --p-discard-untrimmed: / --p-no-discard-untrimmed Discard reads in which no adapter was found. [default: False]" name="pdiscarduntrimmed" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: trimmedsequences.qza" name="otrimmedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Find and remove adapters in demultiplexed single-end sequences.
 ###############################################################
 
@@ -125,6 +113,8 @@
 ----------
 demultiplexed_sequences : SampleData[SequencesWithQuality]
     The single-end sequences to be trimmed.
+cores : Int % Range(1, None), optional
+    Number of CPU cores to use.
 adapter : List[Str], optional
     Sequence of an adapter ligated to the 3' end. The adapter and any
     subsequent bases are trimmed. If a `$` is appended, the adapter is only
@@ -169,9 +159,9 @@
 -------
 trimmed_sequences : SampleData[SequencesWithQuality]
     The resulting trimmed sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_dada2_denoise-paired.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_dada2_denoise-paired.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,172 +1,98 @@
 <?xml version="1.0" ?>
-<tool id="qiime_dada2_denoise-paired" name="qiime dada2 denoise-paired" version="2019.7">
-	<description> - Denoise and dereplicate paired-end sequences</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-
-#def parse_file(file):
-	#import csv
-	#set $read = csv.reader(open($file, "r"))
-	#set $qc = 0
-	#for l in $read:
-	#if "50%" in l:
-	#set $num = 0.0
-	#for i in l[1:]:
-	#if float(i) <= 25.0
-	#set $num = i
-	#set $qc = l.index($num) - 1
-	#break
-	#end if
-	#end for
-	#end if
-#end for
-#return $qc
-#end def
-
-#def find_QC(file):
-	#set $f_file_path=str(file).split(".dat")[0] + '_files/forward-seven-number-summaries.csv'
-	#set $r_file_path=str(file).split(".dat")[0] + '_files/reverse-seven-number-summaries.csv'
-	#set $qc_f = $parse_file($f_file_path)
-	#set $qc_r = $parse_file($r_file_path)
-	#return $qc_f, $qc_r
-#end def
-
-#def find_adapters(mapping_fp):
-	#import csv
-	#set $forward = 0
-	#set $reversed = 0
-	#set $reader = csv.reader(open(str(mapping_fp)), delimiter='\t')
-	#for row in $reader:
-	#if "#" not in str(row[0]):
-	#set $forward = len(row[2])
-	#set $reversed = len(row[3])
-	#break
-	#end if
-	#end for
-#return int($forward), int($reversed)
-#end def
-
-#if str($mapping_fp) != 'None' and (int($ptrimleftf) == -1 or int($ptrimleftr) == -1):
-	#set $both_adapters = $find_adapters($mapping_fp)
-	#set $ptrimleftf=$both_adapters[0]
-	#set $ptrimleftr=$both_adapters[1]
-#end if
-
-#if str($sum_fp) != 'None' and (int($ptrunclenf) == -1 or int($ptrunclenr) == -1):
-	#set $both_qc = $find_QC($sum_fp)
-	#set $ptrunclenf=$both_qc[0]
-	#set $ptrunclenr=$both_qc[1]
-#end if
-
-
+<tool id="qiime_dada2_denoise-paired" name="qiime dada2 denoise-paired"
+      version="2020.8">
+  <description>Denoise and dereplicate paired-end sequences</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime dada2 denoise-paired
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
 
+--p-trunc-len-f=$ptrunclenf
 
-#if str($ptrunclenf):
- --p-trunc-len-f="$ptrunclenf"
-#end if
+--p-trunc-len-r=$ptrunclenr
 
-#if str($ptrunclenf):
- --p-trunc-len-r="$ptrunclenr"
-#end if
+--p-trim-left-f=$ptrimleftf
 
-#if str($ptrimleftf):
- --p-trim-left-f=$ptrimleftf
-#end if
-
-#if str($ptrimleftr):
- --p-trim-left-r=$ptrimleftr
-#end if
+--p-trim-left-r=$ptrimleftr
 
-
-
+--p-max-ee-f=$pmaxeef
 
-#if str($pmaxeef):
- --p-max-ee-f=$pmaxeef
-#end if
+--p-max-ee-r=$pmaxeer
 
-#if str($pmaxeer):
- --p-max-ee-r=$pmaxeer
-#end if
-
+--p-trunc-q=$ptruncq
 
-
-
-#if str($ptruncq):
- --p-trunc-q=$ptruncq
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
 #end if
 
 #if str($pchimeramethod) != 'None':
- --p-chimera-method=$pchimeramethod
-#end if
-
-#if str($pminfoldparentoverabundance):
- --p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+--p-chimera-method=$pchimeramethod
 #end if
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
 
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
-#end if
+--p-n-threads=$pnthreads
 
-
-#if str($pnreadslearn):
- --p-n-reads-learn=$pnreadslearn
-#end if
+--p-n-reads-learn=$pnreadslearn
 
 #if $pnohashedfeatureids:
  --p-no-hashed-feature-ids
 #end if
 
 --o-table=otable
+
 --o-representative-sequences=orepresentativesequences
+
 --o-denoising-stats=odenoisingstats
-;
-cp otable.qza $otable;
-cp orepresentativesequences.qza $orepresentativesequences;
-cp odenoisingstats.qza $odenoisingstats
-	]]></command>
-	<inputs>
-		<param format="tabular" label="Mapping file where 3rd and 4th columns must be forward and reverse primers respectively" name="mapping_fp" optional="True" type="data"/>
-		<param format="html" label="Summary file" name="sum_fp" optional="True" type="data"/>
 
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[PairedEndSequencesWithQuality] The paired-end demultiplexed sequences to be denoised.                                  [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param label="--p-trunc-len-f: INTEGER Position at which forward read sequences should be truncated due to decrease in quality. This truncates the 3' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. After this parameter is applied there must still be at least a 20 nucleotide overlap between the forward and reverse reads. If 0 is provided, no truncation or length filtering will be performed [required]" name="ptrunclenf" optional="False" value="" type="integer"/>
-		<param label="--p-trunc-len-r: INTEGER Position at which reverse read sequences should be truncated due to decrease in quality. This truncates the 3' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. After this parameter is applied there must still be at least a 20 nucleotide overlap between the forward and reverse reads. If 0 is provided, no truncation or length filtering will be performed [required]" name="ptrunclenr" optional="False" value="" type="integer"/>
-		<param label="--p-trim-left-f: INTEGER Position at which forward read sequences should be trimmed due to low quality. This trims the 5' end of the input sequences, which will be the bases that were sequenced in the first cycles.      [default: 0]" name="ptrimleftf" optional="True" type="integer" value="0"/>
-		<param label="--p-trim-left-r: INTEGER Position at which reverse read sequences should be trimmed due to low quality. This trims the 5' end of the input sequences, which will be the bases that were sequenced in the first cycles.      [default: 0]" name="ptrimleftr" optional="True" type="integer" value="0"/>
+#if str($examples) != 'None':
+--examples=$examples
+#end if
 
-
-
-		<param label="--p-max-ee-f: NUMBER      Forward reads with number of expected errors higher than this value will be discarded.     [default: 2.0]" name="pmaxeef" optional="True" type="float" value="2.0"/>
-		<param label="--p-max-ee-r: NUMBER      Reverse reads with number of expected errors higher than this value will be discarded.     [default: 2.0]" name="pmaxeer" optional="True" type="float" value="2.0"/>
+;
+cp odenoisingstats.qza $odenoisingstats
 
-
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[PairedEndSequencesWithQuality] The paired-end demultiplexed sequences to be denoised.                                  [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param label="--p-trunc-len-f: INTEGER Position at which forward read sequences should be truncated due to decrease in quality. This truncates the 3\' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. After this parameter is applied there must still be at least a 12 nucleotide overlap between the forward and reverse reads. If 0 is provided, no truncation or length filtering will be performed [required]" name="ptrunclenf" optional="False" type="text" />
+    <param label="--p-trunc-len-r: INTEGER Position at which reverse read sequences should be truncated due to decrease in quality. This truncates the 3\' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. After this parameter is applied there must still be at least a 12 nucleotide overlap between the forward and reverse reads. If 0 is provided, no truncation or length filtering will be performed [required]" name="ptrunclenr" optional="False" type="text" />
+    <param label="--p-trim-left-f: INTEGER Position at which forward read sequences should be trimmed due to low quality. This trims the 5\' end of the input sequences, which will be the bases that were sequenced in the first cycles.      [default: 0]" name="ptrimleftf" optional="True" type="integer" value="0" />
+    <param label="--p-trim-left-r: INTEGER Position at which reverse read sequences should be trimmed due to low quality. This trims the 5\' end of the input sequences, which will be the bases that were sequenced in the first cycles.      [default: 0]" name="ptrimleftr" optional="True" type="integer" value="0" />
+    <param label="--p-max-ee-f: NUMBER    Forward reads with number of expected errors higher than this value will be discarded.     [default: 2.0]" name="pmaxeef" optional="True" type="float" value="2.0" />
+    <param label="--p-max-ee-r: NUMBER    Reverse reads with number of expected errors higher than this value will be discarded.     [default: 2.0]" name="pmaxeer" optional="True" type="float" value="2.0" />
+    <param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len-f` or `trunc-len-r` (depending on the direction of the read) it is discarded.                   [default: 2]" name="ptruncq" optional="True" type="integer" value="2" />
+    <param label="--p-pooling-method: " name="ppoolingmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="independent">independent</option>
+      <option value="pseudo">pseudo</option>
+    </param>
+    <param label="--p-chimera-method: " name="pchimeramethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="none">none</option>
+      <option value="consensus">consensus</option>
+      <option value="pooled">pooled</option>
+    </param>
+    <param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is \'none\'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0" />
+    <param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 1000000]" name="pnreadslearn" optional="True" type="integer" value="1000000" />
+    <param label="--p-no-hashed-feature-ids: Do not if true, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: True]" name="pnohashedfeatureids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len-f` or `trunc-len-r` (depending on the direction of the read) it is discarded.                   [default: 2]" name="ptruncq" optional="True" type="integer" value="2"/>
-		<param label="--p-chimera-method: " name="pchimeramethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="consensus">consensus</option>
-			<option value="pooled">pooled</option>
-			<option value="none">none</option>
-		</param>
-		<param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is 'none'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0"/>
-		<param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 1000000]" name="pnreadslearn" optional="True" type="integer" value="1000000"/>
-		<param label="--p-no-hashed-feature-ids: If false, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: False]" name="pnohashedfeatureids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable" />
+    <data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Denoise and dereplicate paired-end sequences
-#############################################
+###############################################################
 
 This method denoises paired-end sequences, dereplicates them, and filters
 chimeras.
@@ -180,7 +106,7 @@
     decrease in quality. This truncates the 3' end of the of the input
     sequences, which will be the bases that were sequenced in the last
     cycles. Reads that are shorter than this value will be discarded. After
-    this parameter is applied there must still be at least a 20 nucleotide
+    this parameter is applied there must still be at least a 12 nucleotide
     overlap between the forward and reverse reads. If 0 is provided, no
     truncation or length filtering will be performed
 trunc_len_r : Int
@@ -188,7 +114,7 @@
     decrease in quality. This truncates the 3' end of the of the input
     sequences, which will be the bases that were sequenced in the last
     cycles. Reads that are shorter than this value will be discarded. After
-    this parameter is applied there must still be at least a 20 nucleotide
+    this parameter is applied there must still be at least a 12 nucleotide
     overlap between the forward and reverse reads. If 0 is provided, no
     truncation or length filtering will be performed
 trim_left_f : Int, optional
@@ -210,6 +136,14 @@
     or equal to this value. If the resulting read is then shorter than
     `trunc_len_f` or `trunc_len_r` (depending on the direction of the read)
     it is discarded.
+pooling_method : Str % Choices('independent', 'pseudo'), optional
+    The method used to pool samples for denoising. "independent": Samples
+    are denoised indpendently. "pseudo": The pseudo-pooling method is used
+    to approximate pooling of samples. In short, samples are denoised
+    independently once, ASVs detected in at least 2 samples are recorded,
+    and samples are denoised independently a second time, but this time
+    with prior knowledge of the recorded ASVs and thus higher sensitivity
+    to those ASVs.
 chimera_method : Str % Choices('consensus', 'none', 'pooled'), optional
     The method used to remove chimeras. "none": No chimera removal is
     performed. "pooled": All reads are pooled prior to chimera detection.
@@ -222,6 +156,9 @@
     sequence being tested. Values should be greater than or equal to 1
     (i.e. parents should be more abundant than the sequence being tested).
     This parameter has no effect if chimera_method is "none".
+n_threads : Int, optional
+    The number of threads to use for multithreaded processing. If 0 is
+    provided, all available cores will be used.
 n_reads_learn : Int, optional
     The number of reads to use when training the error model. Smaller
     numbers will result in a shorter run time but a less reliable error
@@ -242,9 +179,9 @@
     be represented by exactly one sequence, and these sequences will be the
     joined paired-end sequences.
 denoising_stats : SampleData[DADA2Stats]
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_dada2_denoise-pyro.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_dada2_denoise-pyro.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,89 +1,92 @@
 <?xml version="1.0" ?>
-<tool id="qiime_dada2_denoise-pyro" name="qiime dada2 denoise-pyro" version="2019.7">
-	<description> - Denoise and dereplicate single-end pyrosequences</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_dada2_denoise-pyro" name="qiime dada2 denoise-pyro"
+      version="2020.8">
+  <description>Denoise and dereplicate single-end pyrosequences</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime dada2 denoise-pyro
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
 
-#if str($ptrunclen):
- --p-trunc-len="$ptrunclen"
-#end if
+--p-trunc-len=$ptrunclen
 
-#if str($ptrimleft):
- --p-trim-left=$ptrimleft
-#end if
+--p-trim-left=$ptrimleft
+
+--p-max-ee=$pmaxee
 
-#if str($pmaxee):
- --p-max-ee=$pmaxee
-#end if
+--p-trunc-q=$ptruncq
 
-#if str($ptruncq):
- --p-trunc-q=$ptruncq
-#end if
+--p-max-len=$pmaxlen
 
-#if str($pmaxlen):
- --p-max-len=$pmaxlen
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
 #end if
 
 #if str($pchimeramethod) != 'None':
- --p-chimera-method=$pchimeramethod
-#end if
-
-#if str($pminfoldparentoverabundance):
- --p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+--p-chimera-method=$pchimeramethod
 #end if
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
-#end if
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
 
+--p-n-threads=$pnthreads
 
-#if str($pnreadslearn):
- --p-n-reads-learn=$pnreadslearn
-#end if
+--p-n-reads-learn=$pnreadslearn
 
-#if str($pnohashedfeatureids):
+#if $pnohashedfeatureids:
  --p-no-hashed-feature-ids
 #end if
 
 --o-table=otable
+
 --o-representative-sequences=orepresentativesequences
+
 --o-denoising-stats=odenoisingstats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otable.qza $otable;
-cp orepresentativesequences.qza $orepresentativesequences;
-cp odenoisingstats.qza $odenoisingstats 
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality] The single-end demultiplexed pyrosequencing sequences (e.g. 454, IonTorrent) to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param label="--p-trunc-len: INTEGER  Position at which sequences should be truncated due to decrease in quality. This truncates the 3' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. If 0 is prov#ided, no truncation or length filtering will be performed                               [required]" name="ptrunclen" optional="False" value="" type="integer"/>
-		<param label="--p-trim-left: INTEGER  Position at which sequences should be trimmed due to low quality. This trims the 5' end of the of the input sequences, which will be the bases that were sequenced in the first cycles.           [default: 0]" name="ptrimleft" optional="True" type="integer" value="0"/>
-		<param label="--p-max-ee: NUMBER      Reads with number of expected errors higher than this value will be discarded.          [default: 2.0]" name="pmaxee" optional="True" type="float" value="2.0"/>
-		<param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len`, it is discarded.                         [default: 2]" name="ptruncq" optional="True" type="integer" value="2"/>
-		<param label="--p-max-len: INTEGER    Remove reads prior to trimming or truncation which are longer than this value. If 0 is provided no reads will be removed based on length.         [default: 0]" name="pmaxlen" optional="True" type="integer" value="0"/>
-		<param label="--p-chimera-method: The method used to remove chimeras. 'none': No chimera removal is performed. 'pooled': All reads are pooled prior to chimera detection. 'consensus': Chimeras are detected in samples individually, and sequences found chimeric in a sufficient fraction of samples are removed." name="pchimeramethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="consensus">consensus</option>
-			<option value="pooled">pooled</option>
-			<option value="none">none</option>
-		</param>
-		<param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is 'none'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0"/>
-		<param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 250000]" name="pnreadslearn" optional="True" type="integer" value="250000"/>
-		<param label="--p-no-hashed-feature-ids: If false, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: False]" name="pnohashedfeatureids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats"/>
-	</outputs>
-	<help><![CDATA[
+cp odenoisingstats.qza $odenoisingstats
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality] The single-end demultiplexed pyrosequencing sequences (e.g. 454, IonTorrent) to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param label="--p-trunc-len: INTEGER  Position at which sequences should be truncated due to decrease in quality. This truncates the 3\' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. If 0 is provided, no truncation or length filtering will be performed                               [required]" name="ptrunclen" optional="False" type="text" />
+    <param label="--p-trim-left: INTEGER  Position at which sequences should be trimmed due to low quality. This trims the 5\' end of the of the input sequences, which will be the bases that were sequenced in the first cycles.           [default: 0]" name="ptrimleft" optional="True" type="integer" value="0" />
+    <param label="--p-max-ee: NUMBER      Reads with number of expected errors higher than this value will be discarded.          [default: 2.0]" name="pmaxee" optional="True" type="float" value="2.0" />
+    <param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len`, it is discarded.                         [default: 2]" name="ptruncq" optional="True" type="integer" value="2" />
+    <param label="--p-max-len: INTEGER    Remove reads prior to trimming or truncation which are longer than this value. If 0 is provided no reads will be removed based on length.         [default: 0]" name="pmaxlen" optional="True" type="integer" value="0" />
+    <param label="--p-pooling-method: " name="ppoolingmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="independent">independent</option>
+      <option value="pseudo">pseudo</option>
+    </param>
+    <param label="--p-chimera-method: " name="pchimeramethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="none">none</option>
+      <option value="consensus">consensus</option>
+      <option value="pooled">pooled</option>
+    </param>
+    <param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is \'none\'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0" />
+    <param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 250000]" name="pnreadslearn" optional="True" type="integer" value="250000" />
+    <param label="--p-no-hashed-feature-ids: Do not if true, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: True]" name="pnohashedfeatureids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable" />
+    <data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Denoise and dereplicate single-end pyrosequences
-################################################
+###############################################################
 
 This method denoises single-end pyrosequencing sequences, dereplicates
 them, and filters chimeras.
@@ -113,7 +116,15 @@
 max_len : Int, optional
     Remove reads prior to trimming or truncation which are longer than this
     value. If 0 is provided no reads will be removed based on length.
-chimera_method : Str % Choices('consensus', 'pooled', 'none'), optional
+pooling_method : Str % Choices('independent', 'pseudo'), optional
+    The method used to pool samples for denoising. "independent": Samples
+    are denoised indpendently. "pseudo": The pseudo-pooling method is used
+    to approximate pooling of samples. In short, samples are denoised
+    independently once, ASVs detected in at least 2 samples are recorded,
+    and samples are denoised independently a second time, but this time
+    with prior knowledge of the recorded ASVs and thus higher sensitivity
+    to those ASVs.
+chimera_method : Str % Choices('consensus', 'none', 'pooled'), optional
     The method used to remove chimeras. "none": No chimera removal is
     performed. "pooled": All reads are pooled prior to chimera detection.
     "consensus": Chimeras are detected in samples individually, and
@@ -125,6 +136,9 @@
     sequence being tested. Values should be greater than or equal to 1
     (i.e. parents should be more abundant than the sequence being tested).
     This parameter has no effect if chimera_method is "none".
+n_threads : Int, optional
+    The number of threads to use for multithreaded processing. If 0 is
+    provided, all available cores will be used.
 n_reads_learn : Int, optional
     The number of reads to use when training the error model. Smaller
     numbers will result in a shorter run time but a less reliable error
@@ -144,10 +158,9 @@
     The resulting feature sequences. Each feature in the feature table will
     be represented by exactly one sequence.
 denoising_stats : SampleData[DADA2Stats]
-	\
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_dada2_denoise-single.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_dada2_denoise-single.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,84 +1,89 @@
 <?xml version="1.0" ?>
-<tool id="qiime_dada2_denoise-single" name="qiime dada2 denoise-single" version="2019.7">
-	<description> - Denoise and dereplicate single-end sequences</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_dada2_denoise-single" name="qiime dada2 denoise-single"
+      version="2020.8">
+  <description>Denoise and dereplicate single-end sequences</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime dada2 denoise-single
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
 
-#if str($ptrunclen):
- --p-trunc-len="$ptrunclen"
-#end if
+--p-trunc-len=$ptrunclen
+
+--p-trim-left=$ptrimleft
 
-#if str($ptrimleft):
- --p-trim-left=$ptrimleft
-#end if
+--p-max-ee=$pmaxee
 
-#if str($pmaxee):
- --p-max-ee=$pmaxee
-#end if
+--p-trunc-q=$ptruncq
 
-#if str($ptruncq):
- --p-trunc-q=$ptruncq
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
 #end if
 
 #if str($pchimeramethod) != 'None':
- --p-chimera-method=$pchimeramethod
-#end if
-
-#if str($pminfoldparentoverabundance):
- --p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+--p-chimera-method=$pchimeramethod
 #end if
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
-#end if
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
 
+--p-n-threads=$pnthreads
 
-#if str($pnreadslearn):
- --p-n-reads-learn=$pnreadslearn
-#end if
+--p-n-reads-learn=$pnreadslearn
 
-#if str($pnohashedfeatureids):
+#if $pnohashedfeatureids:
  --p-no-hashed-feature-ids
 #end if
 
 --o-table=otable
+
 --o-representative-sequences=orepresentativesequences
+
 --o-denoising-stats=odenoisingstats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otable.qza $otable;
-cp orepresentativesequences.qza $orepresentativesequences;
 cp odenoisingstats.qza $odenoisingstats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] The single-end demultiplexed sequences to be denoised.                                  [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param label="--p-trunc-len: INTEGER  Position at which sequences should be truncated due to decrease in quality. This truncates the 3' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. If 0 is provided, no truncation or length filtering will be performed                               [required]" name="ptrunclen" optional="False" value="" type="integer"/>
-		<param label="--p-trim-left: INTEGER  Position at which sequences should be trimmed due to low quality. This trims the 5' end of the of the input sequences, which will be the bases that were sequenced in the first cycles.           [default: 0]" name="ptrimleft" optional="True" type="integer" value="0"/>
-		<param label="--p-max-ee: NUMBER      Reads with number of expected errors higher than this value will be discarded.          [default: 2.0]" name="pmaxee" optional="True" type="float" value="2.0"/>
-		<param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len`, it is discarded.                         [default: 2]" name="ptruncq" optional="True" type="integer" value="2"/>
-		<param label="--p-chimera-method: " name="pchimeramethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="consensus">consensus</option>
-			<option value="pooled">pooled</option>
-			<option value="none">none</option>
-		</param>
-		<param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is 'none'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0"/>
-		<param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 1000000]" name="pnreadslearn" optional="True" type="integer" value="1000000"/>
-		<param label="--p-no-hashed-feature-ids: If false, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: False]" name="pnohashedfeatureids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] The single-end demultiplexed sequences to be denoised.                                  [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param label="--p-trunc-len: INTEGER  Position at which sequences should be truncated due to decrease in quality. This truncates the 3\' end of the of the input sequences, which will be the bases that were sequenced in the last cycles. Reads that are shorter than this value will be discarded. If 0 is provided, no truncation or length filtering will be performed                               [required]" name="ptrunclen" optional="False" type="text" />
+    <param label="--p-trim-left: INTEGER  Position at which sequences should be trimmed due to low quality. This trims the 5\' end of the of the input sequences, which will be the bases that were sequenced in the first cycles.           [default: 0]" name="ptrimleft" optional="True" type="integer" value="0" />
+    <param label="--p-max-ee: NUMBER      Reads with number of expected errors higher than this value will be discarded.          [default: 2.0]" name="pmaxee" optional="True" type="float" value="2.0" />
+    <param label="--p-trunc-q: INTEGER    Reads are truncated at the first instance of a quality score less than or equal to this value. If the resulting read is then shorter than `trunc-len`, it is discarded.                         [default: 2]" name="ptruncq" optional="True" type="integer" value="2" />
+    <param label="--p-pooling-method: " name="ppoolingmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="independent">independent</option>
+      <option value="pseudo">pseudo</option>
+    </param>
+    <param label="--p-chimera-method: " name="pchimeramethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="none">none</option>
+      <option value="consensus">consensus</option>
+      <option value="pooled">pooled</option>
+    </param>
+    <param label="--p-min-fold-parent-over-abundance: NUMBER The minimum abundance of potential parents of a sequence being tested as chimeric, expressed as a fold-change versus the abundance of the sequence being tested. Values should be greater than or equal to 1 (i.e. parents should be more abundant than the sequence being tested). This parameter has no effect if chimera-method is \'none\'.           [default: 1.0]" name="pminfoldparentoverabundance" optional="True" type="float" value="1.0" />
+    <param label="--p-n-reads-learn: INTEGER The number of reads to use when training the error model. Smaller numbers will result in a shorter run time but a less reliable error model. [default: 1000000]" name="pnreadslearn" optional="True" type="integer" value="1000000" />
+    <param label="--p-no-hashed-feature-ids: Do not if true, the feature ids in the resulting table will be presented as hashes of the sequences defining each feature. The hash will always be the same for the same sequence so this allows feature tables to be merged across runs of this method. You should only merge tables if the exact same parameters are used for each run.                         [default: True]" name="pnohashedfeatureids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable" />
+    <data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: denoisingstats.qza" name="odenoisingstats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Denoise and dereplicate single-end sequences
-############################################
+###############################################################
 
 This method denoises single-end sequences, dereplicates them, and filters
 chimeras.
@@ -104,7 +109,15 @@
     Reads are truncated at the first instance of a quality score less than
     or equal to this value. If the resulting read is then shorter than
     `trunc_len`, it is discarded.
-chimera_method : Str % Choices('consensus', 'pooled', 'none'), optional
+pooling_method : Str % Choices('independent', 'pseudo'), optional
+    The method used to pool samples for denoising. "independent": Samples
+    are denoised independently. "pseudo": The pseudo-pooling method is used
+    to approximate pooling of samples. In short, samples are denoised
+    independently once, ASVs detected in at least 2 samples are recorded,
+    and samples are denoised independently a second time, but this time
+    with prior knowledge of the recorded ASVs and thus higher sensitivity
+    to those ASVs.
+chimera_method : Str % Choices('consensus', 'none', 'pooled'), optional
     The method used to remove chimeras. "none": No chimera removal is
     performed. "pooled": All reads are pooled prior to chimera detection.
     "consensus": Chimeras are detected in samples individually, and
@@ -116,6 +129,9 @@
     sequence being tested. Values should be greater than or equal to 1
     (i.e. parents should be more abundant than the sequence being tested).
     This parameter has no effect if chimera_method is "none".
+n_threads : Int, optional
+    The number of threads to use for multithreaded processing. If 0 is
+    provided, all available cores will be used.
 n_reads_learn : Int, optional
     The number of reads to use when training the error model. Smaller
     numbers will result in a shorter run time but a less reliable error
@@ -135,9 +151,9 @@
     The resulting feature sequences. Each feature in the feature table will
     be represented by exactly one sequence.
 denoising_stats : SampleData[DADA2Stats]
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_deblur_denoise-16S.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_deblur_denoise-16S.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,87 +1,78 @@
 <?xml version="1.0" ?>
-<tool id="qiime_deblur_denoise-16S" name="qiime deblur denoise-16S" version="2019.7">
-	<description> - Deblur sequences using a 16S positive filter.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_deblur_denoise-16S" name="qiime deblur denoise-16S"
+      version="2020.8">
+  <description>Deblur sequences using a 16S positive filter.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime deblur denoise-16S
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
 
-
-
-#if str($ptrimlength):
- --p-trim-length=$ptrimlength
-#end if
+--p-trim-length=$ptrimlength
 
-#if str($plefttrimlen):
- --p-left-trim-len=$plefttrimlen
-#end if
+--p-left-trim-len=$plefttrimlen
 
-#if str($psamplestats):
+#if $psamplestats:
  --p-sample-stats
 #end if
 
-#if str($pmeanerror):
- --p-mean-error=$pmeanerror
-#end if
+--p-mean-error=$pmeanerror
 
-#if str($pindelprob):
- --p-indel-prob=$pindelprob
-#end if
+--p-indel-prob=$pindelprob
 
-#if str($pindelmax):
- --p-indel-max=$pindelmax
-#end if
+--p-indel-max=$pindelmax
 
-#if str($pminreads):
- --p-min-reads=$pminreads
-#end if
+--p-min-reads=$pminreads
 
-#if str($pminsize):
- --p-min-size=$pminsize
-#end if
+--p-min-size=$pminsize
 
-#set $pjobstostart = '${GALAXY_SLOTS:-4}'
+--p-jobs-to-start=$pjobstostart
 
-#if str($pjobstostart):
- --p-jobs-to-start="$pjobstostart"
-#end if
-
-
-#if str($pnohashedfeatureids):
+#if $pnohashedfeatureids:
  --p-no-hashed-feature-ids
 #end if
 
 --o-table=otable
+
 --o-representative-sequences=orepresentativesequences
+
 --o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otable.qza $otable;
-cp orepresentativesequences.qza $orepresentativesequences;
 cp ostats.qza $ostats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param label="--p-trim-length: INTEGER Sequence trim length, specify -1 to disable trimming.                                  [required]" name="ptrimlength" optional="False" value="" type="integer"/>
-		<param label="--p-left-trim-len: INTEGER Range(0, None)       Sequence trimming from the 5' end. A value of 0 will disable this trim.                       [default: 0]" name="plefttrimlen" optional="True" type="integer" min="0" value="0"/>
-		<param label="--p-sample-stats: --p-no-sample-stats If true, gather stats per sample.    [default: False]" name="psamplestats" selected="False" type="boolean"/>
-		<param label="--p-mean-error: NUMBER  The mean per nucleotide error, used for original sequence estimate.                   [default: 0.005]" name="pmeanerror" optional="True" type="float" value="0.005"/>
-		<param label="--p-indel-prob: NUMBER  Insertion/deletion (indel) probability (same for N indels).                              [default: 0.01]" name="pindelprob" optional="True" type="float" value="0.01"/>
-		<param label="--p-indel-max: INTEGER  Maximum number of insertion/deletions.   [default: 3]" name="pindelmax" optional="True" type="integer" value="3"/>
-		<param label="--p-min-reads: INTEGER  Retain only features appearing at least min-reads times across all samples in the resulting feature table.                                  [default: 10]" name="pminreads" optional="True" type="integer" value="10"/>
-		<param label="--p-min-size: INTEGER   In each sample, discard all features with an abundance less than min-size.            [default: 2]" name="pminsize" optional="True" type="integer" value="2"/>
-		<param label="--p-no-hashed-feature-ids: If false, hash the feature IDs.        [default: False]" name="pnohashedfeatureids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param label="--p-trim-length: INTEGER Sequence trim length, specify -1 to disable trimming.                                  [required]" name="ptrimlength" optional="False" type="text" />
+    <param label="--p-left-trim-len: INTEGER Range(0, None)       Sequence trimming from the 5\' end. A value of 0 will disable this trim.                       [default: 0]" min="0" name="plefttrimlen" optional="True" type="integer" value="0" />
+    <param label="--p-sample-stats: --p-sample-stats: / --p-no-sample-stats If true, gather stats per sample.    [default: False]" name="psamplestats" selected="False" type="boolean" />
+    <param label="--p-mean-error: NUMBER  The mean per nucleotide error, used for original sequence estimate.                   [default: 0.005]" name="pmeanerror" optional="True" type="float" value="0.005" />
+    <param label="--p-indel-prob: NUMBER  Insertion/deletion (indel) probability (same for N indels).                              [default: 0.01]" name="pindelprob" optional="True" type="float" value="0.01" />
+    <param label="--p-indel-max: INTEGER  Maximum number of insertion/deletions.   [default: 3]" name="pindelmax" optional="True" type="integer" value="3" />
+    <param label="--p-min-reads: INTEGER  Retain only features appearing at least min-reads times across all samples in the resulting feature table.                                  [default: 10]" name="pminreads" optional="True" type="integer" value="10" />
+    <param label="--p-min-size: INTEGER   In each sample, discard all features with an abundance less than min-size.            [default: 2]" name="pminsize" optional="True" type="integer" value="2" />
+    <param label="--p-no-hashed-feature-ids: Do not if true, hash the feature IDs.        [default: True]" name="pnohashedfeatureids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable" />
+    <data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Deblur sequences using a 16S positive filter.
-#############################################
+###############################################################
 
 Perform sequence quality control for Illumina data using the Deblur
 workflow with a 16S reference as a positive filter. Only forward reads are
@@ -114,6 +105,8 @@
 min_size : Int, optional
     In each sample, discard all features with an abundance less than
     min_size.
+jobs_to_start : Int, optional
+    Number of jobs to start (if to run in parallel).
 hashed_feature_ids : Bool, optional
     If true, hash the feature IDs.
 
@@ -125,9 +118,9 @@
     The resulting feature sequences.
 stats : DeblurStats
     Per-sample stats if requested.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_deblur_denoise-other.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_deblur_denoise-other.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,87 +1,81 @@
 <?xml version="1.0" ?>
-<tool id="qiime_deblur_denoise-other" name="qiime deblur denoise-other" version="2019.7">
-	<description> - Deblur sequences using a user-specified positive filter.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_deblur_denoise-other" name="qiime deblur denoise-other"
+      version="2020.8">
+  <description>Deblur sequences using a user-specified positive filter.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime deblur denoise-other
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
+
 --i-reference-seqs=$ireferenceseqs
 
-#if str($ptrimlength):
- --p-trim-length="$ptrimlength"
-#end if
+--p-trim-length=$ptrimlength
 
-#if str($plefttrimlen):
- --p-left-trim-len=$plefttrimlen
-#end if
+--p-left-trim-len=$plefttrimlen
 
-#if str($psamplestats):
+#if $psamplestats:
  --p-sample-stats
 #end if
 
-#if str($pmeanerror):
- --p-mean-error=$pmeanerror
-#end if
+--p-mean-error=$pmeanerror
 
-#if str($pindelprob):
- --p-indel-prob=$pindelprob
-#end if
+--p-indel-prob=$pindelprob
 
-#if str($pindelmax):
- --p-indel-max=$pindelmax
-#end if
+--p-indel-max=$pindelmax
 
-#if str($pminreads):
- --p-min-reads=$pminreads
-#end if
+--p-min-reads=$pminreads
 
-#if str($pminsize):
- --p-min-size=$pminsize
-#end if
+--p-min-size=$pminsize
 
-#set $pjobstostart = '${GALAXY_SLOTS:-4}'
+--p-jobs-to-start=$pjobstostart
 
-#if str($pjobstostart):
- --p-jobs-to-start="$pjobstostart"
-#end if
-
-
-#if str($pnohashedfeatureids):
+#if $pnohashedfeatureids:
  --p-no-hashed-feature-ids
 #end if
 
 --o-table=otable
+
 --o-representative-sequences=orepresentativesequences
+
 --o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otable.qza $otable;
-cp orepresentativesequences.qza $orepresentativesequences;
 cp ostats.qza $ostats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-seqs: ARTIFACT FeatureData[Sequence] Positive filtering database. Keep all sequences aligning to these sequences.               [required]" name="ireferenceseqs" optional="False" type="data"/>
-		<param label="--p-trim-length: INTEGER Sequence trim length, specify -1 to disable trimming.                                  [required]" name="ptrimlength" optional="False" value="" type="integer"/>
-		<param label="--p-left-trim-len: INTEGER Range(0, None)       Sequence trimming from the 5' end. A value of 0 will disable this trim.                       [default: 0]" name="plefttrimlen" optional="True" type="integer" min="0" value="0"/>
-		<param label="--p-sample-stats: --p-no-sample-stats If true, gather stats per sample.    [default: False]" name="psamplestats" selected="False" type="boolean"/>
-		<param label="--p-mean-error: NUMBER  The mean per nucleotide error, used for original sequence estimate.                   [default: 0.005]" name="pmeanerror" optional="True" type="float" value="0.005"/>
-		<param label="--p-indel-prob: NUMBER  Insertion/deletion (indel) probability (same for N indels).                              [default: 0.01]" name="pindelprob" optional="True" type="float" value="0.01"/>
-		<param label="--p-indel-max: INTEGER  Maximum number of insertion/deletions.   [default: 3]" name="pindelmax" optional="True" type="integer" value="3"/>
-		<param label="--p-min-reads: INTEGER  Retain only features appearing at least min-reads times across all samples in the resulting feature table.                                  [default: 10]" name="pminreads" optional="True" type="integer" value="10"/>
-		<param label="--p-min-size: INTEGER   In each sample, discard all features with an abundance less than min-size.            [default: 2]" name="pminsize" optional="True" type="integer" value="2"/>
-		<param label="--p-no-hashed-feature-ids: If false, hash the feature IDs.        [default: False]" name="pnohashedfeatureids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be denoised. [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-seqs: ARTIFACT FeatureData[Sequence] Positive filtering database. Keep all sequences aligning to these sequences.               [required]" name="ireferenceseqs" optional="False" type="data" />
+    <param label="--p-trim-length: INTEGER Sequence trim length, specify -1 to disable trimming.                                  [required]" name="ptrimlength" optional="False" type="text" />
+    <param label="--p-left-trim-len: INTEGER Range(0, None)       Sequence trimming from the 5\' end. A value of 0 will disable this trim.                       [default: 0]" min="0" name="plefttrimlen" optional="True" type="integer" value="0" />
+    <param label="--p-sample-stats: --p-sample-stats: / --p-no-sample-stats If true, gather stats per sample.    [default: False]" name="psamplestats" selected="False" type="boolean" />
+    <param label="--p-mean-error: NUMBER  The mean per nucleotide error, used for original sequence estimate.                   [default: 0.005]" name="pmeanerror" optional="True" type="float" value="0.005" />
+    <param label="--p-indel-prob: NUMBER  Insertion/deletion (indel) probability (same for N indels).                              [default: 0.01]" name="pindelprob" optional="True" type="float" value="0.01" />
+    <param label="--p-indel-max: INTEGER  Maximum number of insertion/deletions.   [default: 3]" name="pindelmax" optional="True" type="integer" value="3" />
+    <param label="--p-min-reads: INTEGER  Retain only features appearing at least min-reads times across all samples in the resulting feature table.                                  [default: 10]" name="pminreads" optional="True" type="integer" value="10" />
+    <param label="--p-min-size: INTEGER   In each sample, discard all features with an abundance less than min-size.            [default: 2]" name="pminsize" optional="True" type="integer" value="2" />
+    <param label="--p-no-hashed-feature-ids: Do not if true, hash the feature IDs.        [default: True]" name="pnohashedfeatureids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: table.qza" name="otable" />
+    <data format="qza" label="${tool.name} on ${on_string}: representativesequences.qza" name="orepresentativesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Deblur sequences using a user-specified positive filter.
-########################################################
+###############################################################
 
 Perform sequence quality control for Illumina data using the Deblur
 workflow, including positive alignment-based filtering. Only forward reads
@@ -117,6 +111,8 @@
 min_size : Int, optional
     In each sample, discard all features with an abundance less than
     min_size.
+jobs_to_start : Int, optional
+    Number of jobs to start (if to run in parallel).
 hashed_feature_ids : Bool, optional
     If true, hash the feature IDs.
 
@@ -128,9 +124,9 @@
     The resulting feature sequences.
 stats : DeblurStats
     Per-sample stats if requested.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_deblur_visualize-stats.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_deblur_visualize-stats.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_deblur_visualize-stats" name="qiime deblur visualize-stats" version="2019.7">
-	<description> - Visualize Deblur stats per sample.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_deblur_visualize-stats" name="qiime deblur visualize-stats"
+      version="2020.8">
+  <description>Visualize Deblur stats per sample.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime deblur visualize-stats
 
 --i-deblur-stats=$ideblurstats
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp ostats.qza $ostats
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-deblur-stats: ARTIFACT DeblurStats        Summary statistics of the Deblur process.    [required]" name="ideblurstats" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-deblur-stats: ARTIFACT DeblurStats        Summary statistics of the Deblur process.    [required]" name="ideblurstats" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Visualize Deblur stats per sample.
-##################################
+###############################################################
 
 Display Deblur statistics per sample
 
@@ -35,9 +51,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_emp-paired.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_emp-paired.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,26 +1,47 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_emp-paired" name="qiime demux emp-paired" version="2019.7">
-	<description> - Demultiplex paired-end sequence data generated with the EMP protocol.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_demux_emp-paired" name="qiime demux emp-paired"
+      version="2020.8">
+  <description>Demultiplex paired-end sequence data generated with the EMP protocol.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime demux emp-paired
 
 --i-seqs=$iseqs
---m-barcodes-column="$mbarcodescolumn"
-
+# if $input_files_mbarcodesfile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+# end if
 
-#if $input_files_mbarcodesfile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+#if '__ob__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__ob__', '[')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__cb__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__cb__', ']')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
 #end if
+#if 'X' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('X', '\\')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__sq__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__sq__', "'")
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__db__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__db__', '"')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+
+--m-barcodes-column=$mbarcodescolumn
 
 
 #if $pnogolayerrorcorrection:
@@ -36,28 +57,39 @@
 #end if
 
 --o-per-sample-sequences=opersamplesequences
+
 --o-error-correction-details=oerrorcorrectiondetails
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opersamplesequences.qza $opersamplesequences;
 cp oerrorcorrectiondetails.qza $oerrorcorrectiondetails
-	]]></command>
-	<inputs>
-		<repeat name="input_files_mbarcodesfile" optional="False" title="--m-barcodes-file">
-			<param label="--m-barcodes-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-		<param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT EMPPairedEndSequences The paired-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data"/>
-		<param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column containing the per-sample barcodes.                                    [required]" name="mbarcodescolumn" optional="False" type="text"/>
-		<param label="--p-no-golay-error-correction: Do not perform 12nt Golay error correction on the barcode reads.                                  [default: False]" name="pnogolayerrorcorrection" selected="False" type="boolean"/>
-		<param label="--p-rev-comp-barcodes: --p-no-rev-comp-barcodes If provided, the barcode sequence reads will be reverse complemented prior to demultiplexing. [default: False]" name="prevcompbarcodes" selected="False" type="boolean"/>
-		<param label="--p-rev-comp-mapping-barcodes: --p-no-rev-comp-mapping-barcodes If provided, the barcode sequences in the sample metadata will be reverse complemented prior to demultiplexing.                        [default: False]" name="prevcompmappingbarcodes" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: errorcorrectiondetails.qza" name="oerrorcorrectiondetails"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT EMPPairedEndSequences The paired-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data" />
+    <repeat name="input_files_mbarcodesfile" optional="True" title="--m-barcodes-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-barcodes-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column containing the per-sample barcodes.                                    [required]" name="mbarcodescolumn" optional="False" type="text" />
+    <param label="--p-no-golay-error-correction: Do not perform 12nt Golay error correction on the barcode reads.                                  [default: True]" name="pnogolayerrorcorrection" selected="False" type="boolean" />
+    <param format="tabular,qza,no_unzip.zip" label="--p-rev-comp-barcodes: --p-rev-comp-barcodes: / --p-no-rev-comp-barcodes If provided, the barcode sequence reads will be reverse complemented prior to demultiplexing. [default: False]" name="prevcompbarcodes" selected="False" type="boolean" />
+    <param format="tabular,qza,no_unzip.zip" label="--p-rev-comp-mapping-barcodes: --p-rev-comp-mapping-barcodes: / --p-no-rev-comp-mapping-barcodes If provided, the barcode sequences in the sample metadata will be reverse complemented prior to demultiplexing.                        [default: False]" name="prevcompmappingbarcodes" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: errorcorrectiondetails.qza" name="oerrorcorrectiondetails" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Demultiplex paired-end sequence data generated with the EMP protocol.
-#####################################################################
+###############################################################
 
 Demultiplex paired-end sequence data (i.e., map barcode reads to sample
 ids) for data generated with the Earth Microbiome Project (EMP) amplicon
@@ -85,9 +117,9 @@
     The resulting demultiplexed sequences.
 error_correction_details : ErrorCorrectionDetails
     Detail about the barcode error corrections.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_emp-single.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_emp-single.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,26 +1,47 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_emp-single" name="qiime demux emp-single" version="2019.7">
-	<description> - Demultiplex sequence data generated with the EMP protocol.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_demux_emp-single" name="qiime demux emp-single"
+      version="2020.8">
+  <description>Demultiplex sequence data generated with the EMP protocol.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime demux emp-single
 
 --i-seqs=$iseqs
---m-barcodes-column="$mbarcodescolumn"
-
+# if $input_files_mbarcodesfile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+# end if
 
-#if $input_files_mbarcodesfile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-barcodes-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-barcodes-file=$list_dict_to_string($input_files_mbarcodesfile)
+#if '__ob__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__ob__', '[')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__cb__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__cb__', ']')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
 #end if
+#if 'X' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('X', '\\')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__sq__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__sq__', "'")
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+#if '__db__' in str($mbarcodescolumn):
+  #set $mbarcodescolumn_temp = $mbarcodescolumn.replace('__db__', '"')
+  #set $mbarcodescolumn = $mbarcodescolumn_temp
+#end if
+
+--m-barcodes-column=$mbarcodescolumn
 
 
 #if $pnogolayerrorcorrection:
@@ -36,29 +57,39 @@
 #end if
 
 --o-per-sample-sequences=opersamplesequences
+
 --o-error-correction-details=oerrorcorrectiondetails
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opersamplesequences.qza $opersamplesequences;
 cp oerrorcorrectiondetails.qza $oerrorcorrectiondetails
-	]]></command>
-	<inputs>
-		<repeat name="input_files_mbarcodesfile" optional="True" title="--m-barcodes-file [optional]">
-			<param label="--m-barcodes-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip"/>
-		</repeat>
 
-		<param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT RawSequences | EMPSingleEndSequences | EMPPairedEndSequences The single-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data"/>
-		<param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column containing the per-sample barcodes.                                    [required]" name="mbarcodescolumn" optional="False" type="text"/>
-		<param label="--p-no-golay-error-correction: Do not perform 12nt Golay error correction on the barcode reads.                                  [default: False]" name="pnogolayerrorcorrection" selected="False" type="boolean"/>
-		<param label="--p-rev-comp-barcodes: --p-no-rev-comp-barcodes If provided, the barcode sequence reads will be reverse complemented prior to demultiplexing. [default: False]" name="prevcompbarcodes" selected="False" type="boolean"/>
-		<param label="--p-rev-comp-mapping-barcodes: --p-no-rev-comp-mapping-barcodes If provided, the barcode sequences in the sample metadata will be reverse complemented prior to demultiplexing.                        [default: False]" name="prevcompmappingbarcodes" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: errorcorrectiondetails.qza" name="oerrorcorrectiondetails"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-seqs: ARTIFACT RawSequences | EMPSingleEndSequences | EMPPairedEndSequences The single-end sequences to be demultiplexed. [required]" name="iseqs" optional="False" type="data" />
+    <repeat name="input_files_mbarcodesfile" optional="True" title="--m-barcodes-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-barcodes-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-barcodes-column: COLUMN  MetadataColumn[Categorical] The sample metadata column containing the per-sample barcodes.                                    [required]" name="mbarcodescolumn" optional="False" type="text" />
+    <param label="--p-no-golay-error-correction: Do not perform 12nt Golay error correction on the barcode reads.                                  [default: True]" name="pnogolayerrorcorrection" selected="False" type="boolean" />
+    <param format="tabular,qza,no_unzip.zip" label="--p-rev-comp-barcodes: --p-rev-comp-barcodes: / --p-no-rev-comp-barcodes If provided, the barcode sequence reads will be reverse complemented prior to demultiplexing. [default: False]" name="prevcompbarcodes" selected="False" type="boolean" />
+    <param format="tabular,qza,no_unzip.zip" label="--p-rev-comp-mapping-barcodes: --p-rev-comp-mapping-barcodes: / --p-no-rev-comp-mapping-barcodes If provided, the barcode sequences in the sample metadata will be reverse complemented prior to demultiplexing.                        [default: False]" name="prevcompmappingbarcodes" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: persamplesequences.qza" name="opersamplesequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: errorcorrectiondetails.qza" name="oerrorcorrectiondetails" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Demultiplex sequence data generated with the EMP protocol.
-##########################################################
+###############################################################
 
 Demultiplex sequence data (i.e., map barcode reads to sample ids) for data
 generated with the Earth Microbiome Project (EMP) amplicon sequencing
@@ -86,9 +117,9 @@
     The resulting demultiplexed sequences.
 error_correction_details : ErrorCorrectionDetails
     Detail about the barcode error corrections.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_filter-samples.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_filter-samples.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,65 +1,83 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_filter-samples" name="qiime demux filter-samples" version="2019.7">
-	<description> - Filter samples out of demultiplexed data.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime demux filter-samples 
-    
---i-demux=$idemux
-
+<tool id="qiime_demux_filter-samples" name="qiime demux filter-samples"
+      version="2020.8">
+  <description>Filter samples out of demultiplexed data.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime demux filter-samples
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-  #set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-  #for d in list_dict[1:]:
-	  #set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-  #end for
-  #return $file_list
-#end def
-  --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+--i-demux=$idemux
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__ob__', '[')
+  #set $pwhere = $pwhere_temp
 #end if
-
-
-
+#if '__cb__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__cb__', ']')
+  #set $pwhere = $pwhere_temp
+#end if
+#if 'X' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('X', '\\')
+  #set $pwhere = $pwhere_temp
+#end if
 #if '__sq__' in str($pwhere):
   #set $pwhere_temp = $pwhere.replace('__sq__', "'")
   #set $pwhere = $pwhere_temp
 #end if
-
+#if '__db__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__db__', '"')
+  #set $pwhere = $pwhere_temp
+#end if
 
 #if str($pwhere):
- --p-where="$pwhere"
+  --p-where=$pwhere
 #end if
 
-
 #if $pexcludeids:
  --p-exclude-ids
 #end if
 
+--o-filtered-demux=ofiltereddemux
 
---o-filtered-demux=ofiltereddemux
+#if str($examples) != 'None':
+--examples=$examples
+#end if
 
 ;
 cp ofiltereddemux.qza $ofiltereddemux
-	]]></command>
-	<inputs>
-
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. Sample metadata file containing individual_id_column.  [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
 
-		<param format="qza,no_unzip.zip" label="--i-demux: ARTIFACT SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality² | JoinedSequencesWithQuality³] The demultiplexed data from which samples should be filtered.                                    [required]" name="idemux" optional="False" type="data"/>
-		<param label="--p-where: TEXT       Optional SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered data. If not provided, all samples in `metadata` that are also in the demultiplexed data will be retained.                                 [optional]" name="pwhere" optional="True" type="text"/>
-		<param label="--p-exclude-ids: --p-no-exclude-ids Defaults to False. If True, the samples selected by the `metadata` and optional `where` parameter will be excluded from the filtered data.       [default: False]" name="pexcludeids" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filtereddemux.qza" name="ofiltereddemux"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demux: ARTIFACT SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality² | JoinedSequencesWithQuality³] The demultiplexed data from which samples should be filtered.                                    [required]" name="idemux" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Sample metadata indicating which sample ids to filter. arguments will    The optional `where` parameter may be used to filter be merged)        ids based on specified conditions in the metadata. The optional `exclude-ids` parameter may be used to exclude the ids specified in the metadata from the filter. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-where: TEXT       Optional SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered data. If not provided, all samples in `metadata` that are also in the demultiplexed data will be retained.                                 [optional]" name="pwhere" optional="False" type="text" />
+    <param label="--p-exclude-ids: --p-exclude-ids: / --p-no-exclude-ids Defaults to False. If True, the samples selected by the `metadata` and optional `where` parameter will be excluded from the filtered data.       [default: False]" name="pexcludeids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filtereddemux.qza" name="ofiltereddemux" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter samples out of demultiplexed data.
-#########################################
+###############################################################
 
 Filter samples indicated in given metadata out of demultiplexed data.
 Specific samples can be further selected with the WHERE clause, and the
@@ -87,9 +105,9 @@
 -------
 filtered_demux : SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality² | JoinedSequencesWithQuality³]
     Filtered demultiplexed data.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_subsample-paired.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_subsample-paired.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_subsample-paired" name="qiime demux subsample-paired" version="2019.7">
-	<description> - Subsample paired-end sequences without replacement.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_demux_subsample-paired" name="qiime demux subsample-paired"
+      version="2020.8">
+  <description>Subsample paired-end sequences without replacement.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime demux subsample-paired
 
 --i-sequences=$isequences
---p-fraction="$pfraction"
+
+--p-fraction=$pfraction
 
 --o-subsampled-sequences=osubsampledsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp osubsampledsequences.qza $osubsampledsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[PairedEndSequencesWithQuality] The demultiplexed sequences to be subsampled. [required]" name="isequences" optional="False" type="data"/>
-		<param label="--p-fraction: PROPORTION Range(0, 1, inclusive_start=False) The fraction of sequences to retain in subsample. [required]" name="pfraction" optional="False" exclude_min="True" min="0" max="1" value="" type="float"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: subsampledsequences.qza" name="osubsampledsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[PairedEndSequencesWithQuality] The demultiplexed sequences to be subsampled. [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-fraction: PROPORTION Range(0, 1, inclusive_start=False) The fraction of sequences to retain in subsample. [required]" name="pfraction" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: subsampledsequences.qza" name="osubsampledsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Subsample paired-end sequences without replacement.
-###################################################
+###############################################################
 
 Generate a random subsample of paired-end sequences containing
 approximately the fraction of input sequences specified by the fraction
@@ -42,9 +55,9 @@
 -------
 subsampled_sequences : SampleData[PairedEndSequencesWithQuality]
     The subsampled sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_subsample-single.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_subsample-single.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_subsample-single" name="qiime demux subsample-single" version="2019.7">
-	<description> - Subsample single-end sequences without replacement.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_demux_subsample-single" name="qiime demux subsample-single"
+      version="2020.8">
+  <description>Subsample single-end sequences without replacement.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime demux subsample-single
 
 --i-sequences=$isequences
---p-fraction="$pfraction"
+
+--p-fraction=$pfraction
 
 --o-subsampled-sequences=osubsampledsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp osubsampledsequences.qza $osubsampledsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] The demultiplexed sequences to be subsampled. [required]" name="isequences" optional="False" type="data"/>
-		<param label="--p-fraction: PROPORTION Range(0, 1, inclusive_start=False) The fraction of sequences to retain in subsample. [required]" name="pfraction" optional="False" exclude_min="True" min="0" max="1" value="" type="float"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: subsampledsequences.qza" name="osubsampledsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] The demultiplexed sequences to be subsampled. [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-fraction: PROPORTION Range(0, 1, inclusive_start=False) The fraction of sequences to retain in subsample. [required]" name="pfraction" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: subsampledsequences.qza" name="osubsampledsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Subsample single-end sequences without replacement.
-###################################################
+###############################################################
 
 Generate a random subsample of single-end sequences containing
 approximately the fraction of input sequences specified by the fraction
@@ -42,9 +55,9 @@
 -------
 subsampled_sequences : SampleData[SequencesWithQuality]
     The subsampled sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_demux_summarize.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_demux_summarize.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,34 +1,58 @@
 <?xml version="1.0" ?>
-<tool id="qiime_demux_summarize" name="qiime demux summarize" version="2019.7">
-	<description> - Summarize counts per sample.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_demux_summarize" name="qiime demux summarize"
+      version="2020.8">
+  <description>Summarize counts per sample.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime demux summarize
-
---i-data=$idata
+# if $input_files_idata:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-data=$list_dict_to_string($input_files_idata)
+# end if
 
-#if str($pn):
- --p-n=$pn
-#end if
+--p-n=$pn
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp osubsampledsequences.qza $osubsampledsequences
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-data: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be summarized. [required]" name="idata" optional="False" type="data"/>
-		<param label="--p-n: INTEGER        The number of sequences that should be selected at random for quality score plots. The quality plots will present the average positional qualities across all of the sequences selected. If input sequences are paired end, plots will be generated for both forward and reverse reads for the same `n` sequences. [default: 10000]" name="pn" optional="True" type="integer" value="10000"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_idata" optional="False" title="--i-data">
+      <param format="qza,no_unzip.zip" label="--i-data: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality] The demultiplexed sequences to be summarized. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-n: INTEGER        The number of sequences that should be selected at random for quality score plots. The quality plots will present the average positional qualities across all of the sequences selected. If input sequences are paired end, plots will be generated for both forward and reverse reads for the same `n` sequences. [default: 10000]" name="pn" optional="True" type="integer" value="10000" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Summarize counts per sample.
-############################
+###############################################################
 
 Summarize counts per sample for all samples, and generate interactive
 positional quality plots based on `n` randomly selected sequences.
@@ -47,9 +71,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_alpha-passthrough.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_alpha-passthrough" name="qiime diversity-lib alpha-passthrough"
+      version="2020.8">
+  <description>Alpha Passthrough (non-phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib alpha-passthrough
+
+--i-table=$itable
+
+--p-metric=$pmetric
+
+--o-vector=ovector
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ovector.qza $ovector
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples for which a selected metric should be computed.          [required]" name="itable" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="gini_index">gini_index</option>
+      <option value="simpson_e">simpson_e</option>
+      <option value="osd">osd</option>
+      <option value="mcintosh_e">mcintosh_e</option>
+      <option value="esty_ci">esty_ci</option>
+      <option value="berger_parker_d">berger_parker_d</option>
+      <option value="robbins">robbins</option>
+      <option value="doubles">doubles</option>
+      <option value="michaelis_menten_fit">michaelis_menten_fit</option>
+      <option value="singles">singles</option>
+      <option value="kempton_taylor_q">kempton_taylor_q</option>
+      <option value="fisher_alpha">fisher_alpha</option>
+      <option value="strong">strong</option>
+      <option value="heip_e">heip_e</option>
+      <option value="dominance">dominance</option>
+      <option value="goods_coverage">goods_coverage</option>
+      <option value="ace">ace</option>
+      <option value="enspie">enspie</option>
+      <option value="mcintosh_d">mcintosh_d</option>
+      <option value="chao1_ci">chao1_ci</option>
+      <option value="lladser_pe">lladser_pe</option>
+      <option value="brillouin_d">brillouin_d</option>
+      <option value="menhinick">menhinick</option>
+      <option value="simpson">simpson</option>
+      <option value="margalef">margalef</option>
+      <option value="chao1">chao1</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: vector.qza" name="ovector" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Alpha Passthrough (non-phylogenetic)
+###############################################################
+
+Computes a vector of values (one value for each samples in a feature table)
+using the scikit-bio implementation of the selected alpha diversity metric.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples for which a selected metric
+    should be computed.
+metric : Str % Choices('ace', 'berger_parker_d', 'simpson_e', 'doubles', 'gini_index', 'michaelis_menten_fit', 'chao1_ci', 'dominance', 'robbins', 'lladser_pe', 'brillouin_d', 'goods_coverage', 'mcintosh_e', 'esty_ci', 'chao1', 'margalef', 'heip_e', 'enspie', 'menhinick', 'simpson', 'strong', 'fisher_alpha', 'osd', 'singles', 'kempton_taylor_q', 'mcintosh_d')
+    The alpha diversity metric to be computed.
+
+Returns
+-------
+vector : SampleData[AlphaDiversity]
+    Vector containing per-sample values for the chosen metric.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_beta-passthrough.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,103 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_beta-passthrough" name="qiime diversity-lib beta-passthrough"
+      version="2020.8">
+  <description>Beta Passthrough (non-phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib beta-passthrough
+
+--i-table=$itable
+
+--p-metric=$pmetric
+
+--p-pseudocount=$ppseudocount
+
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which beta diversity should be computed.           [required]" name="itable" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="euclidean">euclidean</option>
+      <option value="cityblock">cityblock</option>
+      <option value="matching">matching</option>
+      <option value="russellrao">russellrao</option>
+      <option value="sokalmichener">sokalmichener</option>
+      <option value="kulsinski">kulsinski</option>
+      <option value="hamming">hamming</option>
+      <option value="chebyshev">chebyshev</option>
+      <option value="yule">yule</option>
+      <option value="dice">dice</option>
+      <option value="canberra_adkins">canberra_adkins</option>
+      <option value="rogerstanimoto">rogerstanimoto</option>
+      <option value="cosine">cosine</option>
+      <option value="minkowski">minkowski</option>
+      <option value="correlation">correlation</option>
+      <option value="sokalsneath">sokalsneath</option>
+      <option value="seuclidean">seuclidean</option>
+      <option value="canberra">canberra</option>
+      <option value="jensenshannon">jensenshannon</option>
+      <option value="sqeuclidean">sqeuclidean</option>
+      <option value="aitchison">aitchison</option>
+    </param>
+    <param label="--p-pseudocount: INTEGER Range(1, None)     A pseudocount to handle zeros for compositional metrics. This is ignored for non-compositional metrics. [default: 1]" min="1" name="ppseudocount" optional="True" type="integer" value="1" />
+    <param label="--p-n-jobs: " name="pnjobs" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Beta Passthrough (non-phylogenetic)
+###############################################################
+
+Computes a distance matrix for all pairs of samples in a feature table
+using the scikit-bio implementation of the selected beta diversity metric.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples over which beta diversity
+    should be computed.
+metric : Str % Choices('yule', 'seuclidean', 'sokalmichener', 'aitchison', 'canberra_adkins', 'sokalsneath', 'hamming', 'canberra', 'jensenshannon', 'cityblock', 'russellrao', 'minkowski', 'euclidean', 'kulsinski', 'cosine', 'sqeuclidean', 'correlation', 'dice', 'rogerstanimoto', 'chebyshev', 'matching')
+    The beta diversity metric to be computed.
+pseudocount : Int % Range(1, None), optional
+    A pseudocount to handle zeros for compositional metrics. This is
+    ignored for non-compositional metrics.
+n_jobs : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of concurrent jobs to use in performing this calculation.
+    May not exceed the number of available physical cores. If n_jobs =
+    'auto', one job will be launched for each identified CPU core on the
+    host.
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    The resulting distance matrix.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_beta-phylogenetic-passthrough.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_beta-phylogenetic-passthrough" name="qiime diversity-lib beta-phylogenetic-passthrough"
+      version="2020.8">
+  <description>Beta Phylogenetic Passthrough</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib beta-phylogenetic-passthrough
+
+--i-table=$itable
+
+--i-phylogeny=$iphylogeny
+
+--p-metric=$pmetric
+
+#if str($pthreads) != 'None':
+--p-threads=$pthreads
+#end if
+
+#if $pvarianceadjusted:
+ --p-variance-adjusted
+#end if
+
+#if str($palpha):
+  --p-alpha=$palpha
+#end if
+#if $pbypasstips:
+ --p-bypass-tips
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which beta diversity should be computed.        [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="weighted_unifrac">weighted_unifrac</option>
+      <option value="unweighted_unifrac">unweighted_unifrac</option>
+      <option value="weighted_normalized_unifrac">weighted_normalized_unifrac</option>
+      <option value="generalized_unifrac">generalized_unifrac</option>
+    </param>
+    <param label="--p-threads: " name="pthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-variance-adjusted: --p-variance-adjusted: / --p-no-variance-adjusted Perform variance adjustment based on Chang et al. BMC Bioinformatics 2011. Weights distances based on the proportion of the relative abundance represented between the samples at a given node under evaluation.                         [default: False]" name="pvarianceadjusted" selected="False" type="boolean" />
+    <param label="--p-alpha: PROPORTION Range(0, 1, inclusive_end=True) This parameter is only used when the choice of metric is generalized_unifrac. The value of alpha controls importance of sample proportions. 1.0 is weighted normalized UniFrac. 0.0 is close to unweighted UniFrac, but only if the sample proportions are dichotomized.             [optional]" name="palpha" optional="False" type="text" />
+    <param label="--p-bypass-tips: --p-bypass-tips: / --p-no-bypass-tips In a bifurcating tree, the tips make up about 50% of the nodes in a tree. By ignoring them, specificity can be traded for reduced compute time. This has the effect of collapsing the phylogeny, and is analogous (in concept) to moving from 99% to 97% OTUs                                [default: False]" name="pbypasstips" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Beta Phylogenetic Passthrough
+###############################################################
+
+Computes a distance matrix for all pairs of samples in a feature table
+using the unifrac implementation of the selected beta diversity metric.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples over which beta diversity
+    should be computed.
+phylogeny : Phylogeny[Rooted]
+    Phylogenetic tree containing tip identifiers that correspond to the
+    feature identifiers in the table. This tree can contain tip ids that
+    are not present in the table, but all feature ids in the table must be
+    present in this tree.
+metric : Str % Choices('unweighted_unifrac', 'generalized_unifrac', 'weighted_normalized_unifrac', 'weighted_unifrac')
+    The beta diversity metric to be computed.
+threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of CPU threads to use in performing this calculation. May
+    not exceed the number of available physical cores. If threads = 'auto',
+    one thread will be created for each identified CPU core on the host.
+variance_adjusted : Bool, optional
+    Perform variance adjustment based on Chang et al. BMC Bioinformatics
+    2011. Weights distances based on the proportion of the relative
+    abundance represented between the samples at a given node under
+    evaluation.
+alpha : Float % Range(0, 1, inclusive_end=True), optional
+    This parameter is only used when the choice of metric is
+    generalized_unifrac. The value of alpha controls importance of sample
+    proportions. 1.0 is weighted normalized UniFrac. 0.0 is close to
+    unweighted UniFrac, but only if the sample proportions are
+    dichotomized.
+bypass_tips : Bool, optional
+    In a bifurcating tree, the tips make up about 50% of the nodes in a
+    tree. By ignoring them, specificity can be traded for reduced compute
+    time. This has the effect of collapsing the phylogeny, and is analogous
+    (in concept) to moving from 99% to 97% OTUs
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    The resulting distance matrix.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_bray-curtis.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_bray-curtis" name="qiime diversity-lib bray-curtis"
+      version="2020.8">
+  <description>Bray-Curtis Dissimilarity</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib bray-curtis
+
+--i-table=$itable
+
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples for which Bray-Curtis dissimilarity should be computed. [required]" name="itable" optional="False" type="data" />
+    <param label="--p-n-jobs: " name="pnjobs" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Bray-Curtis Dissimilarity
+###############################################################
+
+Compute Bray-Curtis dissimilarity for each sample in a feature table. Note:
+Frequency and relative frequency data produce different results unless
+overall sample sizes are identical. Please consider the impact on your
+results if you use Bray-Curtis with count data that has not been adjusted
+(normalized).
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples for which Bray-Curtis
+    dissimilarity should be computed.
+n_jobs : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of concurrent jobs to use in performing this calculation.
+    May not exceed the number of available physical cores. If n_jobs =
+    'auto', one job will be launched for each identified CPU core on the
+    host.
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    Distance matrix for Bray-Curtis dissimilarity
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_faith-pd.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_faith-pd" name="qiime diversity-lib faith-pd"
+      version="2020.8">
+  <description>Faith\'s Phylogenetic Diversity</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib faith-pd
+
+#if $itable:
+ --i-table
+#end if
+
+--i-phylogeny=$iphylogeny
+
+--o-vector=ovector
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ovector.qza $ovector
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: --i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]      The feature table containing the samples for which Faith\'s phylogenetic diversity should be computed. Table values will be converted to presence/absence. [required]" name="itable" selected="False" type="boolean" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: vector.qza" name="ovector" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Faith\'s Phylogenetic Diversity
+###############################################################
+
+Computes Faith's Phylogenetic Diversity for all samples in a feature table.
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples for which Faith's phylogenetic
+    diversity should be computed. Table values will be converted to
+    presence/absence.
+phylogeny : Phylogeny[Rooted]
+    Phylogenetic tree containing tip identifiers that correspond to the
+    feature identifiers in the table. This tree can contain tip ids that
+    are not present in the table, but all feature ids in the table must be
+    present in this tree.
+
+Returns
+-------
+vector : SampleData[AlphaDiversity]
+    Vector containing per-sample values for Faith's Phylogenetic Diversity.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_jaccard.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_jaccard" name="qiime diversity-lib jaccard"
+      version="2020.8">
+  <description>Jaccard Distance</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib jaccard
+
+--i-table=$itable
+
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table containing the samples for which Jaccard distance should be computed.         [required]" name="itable" optional="False" type="data" />
+    <param label="--p-n-jobs: " name="pnjobs" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Jaccard Distance
+###############################################################
+
+Compute Jaccard distance for each sample in a feature table. Jaccard is
+calculated usingpresence/absence data. Data of type FeatureTable[Frequency
+| Relative Frequency] is reducedto presence/absence prior to calculation.
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples for which Jaccard distance
+    should be computed.
+n_jobs : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of concurrent jobs to use in performing this calculation.
+    May not exceed the number of available physical cores. If n_jobs =
+    'auto', one job will be launched for each identified CPU core on the
+    host.
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    Distance matrix for Jaccard index
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_observed-features.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_observed-features" name="qiime diversity-lib observed-features"
+      version="2020.8">
+  <description>Observed Features</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib observed-features
+
+#if $itable:
+ --i-table
+#end if
+
+--o-vector=ovector
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ovector.qza $ovector
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: --i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table containing the samples for which the number of observed features should be calculated. Table values will be converted to presence/absence. [required]" name="itable" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: vector.qza" name="ovector" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Observed Features
+###############################################################
+
+Compute the number of observed features for each sample in a feature table
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples for which the number of
+    observed features should be calculated. Table values will be converted
+    to presence/absence.
+
+Returns
+-------
+vector : SampleData[AlphaDiversity]
+    Vector containing per-sample counts of observed features.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_pielou-evenness.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_pielou-evenness" name="qiime diversity-lib pielou-evenness"
+      version="2020.8">
+  <description>Pielou\'s Evenness</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib pielou-evenness
+
+--i-table=$itable
+
+#if $pdropundefinedsamples:
+ --p-drop-undefined-samples
+#end if
+
+--o-vector=ovector
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ovector.qza $ovector
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency] The feature table containing the samples for which Pielou\'s evenness should be computed.        [required]" name="itable" optional="False" type="data" />
+    <param label="--p-drop-undefined-samples: --p-drop-undefined-samples: / --p-no-drop-undefined-samples Samples with fewer than two observed features produce undefined (NaN) values. If true, these samples are dropped from the output vector.        [default: False]" name="pdropundefinedsamples" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: vector.qza" name="ovector" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Pielou\'s Evenness
+###############################################################
+
+Compute Pielou's Evenness for each sample in a feature table
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency]
+    The feature table containing the samples for which Pielou's evenness
+    should be computed.
+drop_undefined_samples : Bool, optional
+    Samples with fewer than two observed features produce undefined (NaN)
+    values. If true, these samples are dropped from the output vector.
+
+Returns
+-------
+vector : SampleData[AlphaDiversity]
+    Vector containing per-sample values for Pielou's Evenness.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_shannon-entropy.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_shannon-entropy" name="qiime diversity-lib shannon-entropy"
+      version="2020.8">
+  <description>Shannon\'s Entropy</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib shannon-entropy
+
+--i-table=$itable
+
+#if $pdropundefinedsamples:
+ --p-drop-undefined-samples
+#end if
+
+--o-vector=ovector
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ovector.qza $ovector
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency] The feature table containing the samples for which Shannon\'s Entropy should be computed.        [required]" name="itable" optional="False" type="data" />
+    <param label="--p-drop-undefined-samples: --p-drop-undefined-samples: / --p-no-drop-undefined-samples Samples with no observed features produce undefined (NaN) values. If true, these samples are dropped from the output vector.                     [default: False]" name="pdropundefinedsamples" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: vector.qza" name="ovector" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Shannon\'s Entropy
+###############################################################
+
+Compute Shannon's Entropy for each sample in a feature table
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency]
+    The feature table containing the samples for which Shannon's Entropy
+    should be computed.
+drop_undefined_samples : Bool, optional
+    Samples with no observed features produce undefined (NaN) values. If
+    true, these samples are dropped from the output vector.
+
+Returns
+-------
+vector : SampleData[AlphaDiversity]
+    Vector containing per-sample values for Shannon's Entropy.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_unweighted-unifrac.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_unweighted-unifrac" name="qiime diversity-lib unweighted-unifrac"
+      version="2020.8">
+  <description>Unweighted Unifrac</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib unweighted-unifrac
+
+--i-table=$itable
+
+--i-phylogeny=$iphylogeny
+
+#if str($pthreads) != 'None':
+--p-threads=$pthreads
+#end if
+
+#if $pbypasstips:
+ --p-bypass-tips
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]      The feature table containing the samples for which Unweighted Unifrac should be computed.    [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-threads: " name="pthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-bypass-tips: --p-bypass-tips: / --p-no-bypass-tips In a bifurcating tree, the tips make up about 50% of the nodes in a tree. By ignoring them, specificity can be traded for reduced compute time. This has the effect of collapsing the phylogeny, and is analogous (in concept) to moving from 99% to 97% OTUs                                [default: False]" name="pbypasstips" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Unweighted Unifrac
+###############################################################
+
+Compute Unweighted Unifrac for each sample in a feature table
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples for which Unweighted Unifrac
+    should be computed.
+phylogeny : Phylogeny[Rooted]
+    Phylogenetic tree containing tip identifiers that correspond to the
+    feature identifiers in the table. This tree can contain tip ids that
+    are not present in the table, but all feature ids in the table must be
+    present in this tree.
+threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of CPU threads to use in performing this calculation. May
+    not exceed the number of available physical cores. If threads = 'auto',
+    one thread will be created for each identified CPU core on the host.
+bypass_tips : Bool, optional
+    In a bifurcating tree, the tips make up about 50% of the nodes in a
+    tree. By ignoring them, specificity can be traded for reduced compute
+    time. This has the effect of collapsing the phylogeny, and is analogous
+    (in concept) to moving from 99% to 97% OTUs
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    Distance matrix for Unweighted Unifrac.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_diversity-lib_weighted-unifrac.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" ?>
+<tool id="qiime_diversity-lib_weighted-unifrac" name="qiime diversity-lib weighted-unifrac"
+      version="2020.8">
+  <description>Weighted Unifrac</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime diversity-lib weighted-unifrac
+
+--i-table=$itable
+
+--i-phylogeny=$iphylogeny
+
+#if str($pthreads) != 'None':
+--p-threads=$pthreads
+#end if
+
+#if $pbypasstips:
+ --p-bypass-tips
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency] The feature table containing the samples for which Weighted Unifrac should be computed.      [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-threads: " name="pthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-bypass-tips: --p-bypass-tips: / --p-no-bypass-tips In a bifurcating tree, the tips make up about 50% of the nodes in a tree. By ignoring them, specificity can be traded for reduced compute time. This has the effect of collapsing the phylogeny, and is analogous (in concept) to moving from 99% to 97% OTUs                                [default: False]" name="pbypasstips" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Weighted Unifrac
+###############################################################
+
+Compute Weighted Unifrac for each sample in a feature table
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency]
+    The feature table containing the samples for which Weighted Unifrac
+    should be computed.
+phylogeny : Phylogeny[Rooted]
+    Phylogenetic tree containing tip identifiers that correspond to the
+    feature identifiers in the table. This tree can contain tip ids that
+    are not present in the table, but all feature ids in the table must be
+    present in this tree.
+threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of CPU threads to use in performing this calculation. May
+    not exceed the number of available physical cores. If threads = 'auto',
+    one thread will be created for each identified CPU core on the host.
+bypass_tips : Bool, optional
+    In a bifurcating tree, the tips make up about 50% of the nodes in a
+    tree. By ignoring them, specificity can be traded for reduced compute
+    time. This has the effect of collapsing the phylogeny, and is analogous
+    (in concept) to moving from 99% to 97% OTUs
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    Distance matrix for Unweighted Unifrac.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_adonis.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_adonis.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,67 +1,72 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_adonis" name="qiime diversity adonis" version="2019.7">
-	<description> - adonis PERMANOVA test for beta group significance</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_adonis" name="qiime diversity adonis"
+      version="2020.8">
+  <description>adonis PERMANOVA test for beta group significance</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity adonis
 
 --i-distance-matrix=$idistancematrix
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-  #set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-  #for d in list_dict[1:]:
-	  #set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-  #end for
-  #return $file_list
-#end def
---m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
+--p-formula=$pformula
+
+--p-permutations=$ppermutations
 
-
+--p-n-jobs=$pnjobs
 
-#if '__sq__' in str($pformula):
-  #set $pformula_temp = $pformula.replace('__sq__', "'")
-  #set $pformula = $pformula_temp
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---p-formula="$pformula"
-
-
-
-#if str($ppermutations):
- --p-permutations=$ppermutations
-#end if
+;
+cp osubsampledsequences.qza $osubsampledsequences
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
---o-visualization=ovisualization
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--p-formula: TEXT     Model formula containing only independent terms contained in the sample metadata. These can be continuous variables or factors, and they can have interactions as in a typical R formula. E.g., the formula 'treatment+block' would test whether the input distance matrix partitions based on 'treatment' and 'block' sample metadata. The formula 'treatment*block' would test both of those effects as well as their interaction. Enclose formulae in quotes to avoid unpleasant surprises.                        [required]" name="pformula" optional="False" type="text"/>
-		<param label="--p-permutations: INTEGER Range(1, None)     The number of permutations to be run when computing p-values.                                [default: 999]" name="ppermutations" optional="True" min="1" type="integer" value="999"/>
 
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file  [required]">
-			<param format="tabular" label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [required]" name="additional_input" type="data"/>
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Sample metadata containing formula terms. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-formula: TEXT     Model formula containing only independent terms contained in the sample metadata. These can be continuous variables or factors, and they can have interactions as in a typical R formula. E.g., the formula \'treatment+block\' would test whether the input distance matrix partitions based on \'treatment\' and \'block\' sample metadata. The formula \'treatment*block\' would test both of those effects as well as their interaction. Enclose formulae in quotes to avoid unpleasant surprises.                        [required]" name="pformula" optional="False" type="text" />
+    <param label="--p-permutations: INTEGER Range(1, None)     The number of permutations to be run when computing p-values.                                [default: 999]" min="1" name="ppermutations" optional="True" type="integer" value="999" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 adonis PERMANOVA test for beta group significance
-##################################################
+###############################################################
 
 Determine whether groups of samples are significantly different from one
 another using the ADONIS permutation-based statistical test in vegan-R. The
@@ -89,13 +94,15 @@
     surprises.
 permutations : Int % Range(1, None), optional
     The number of permutations to be run when computing p-values.
+n_jobs : Int % Range(1, None), optional
+    Number of parallel processes to run.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_alpha-correlation.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_alpha-correlation.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,53 +1,72 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha-correlation" name="qiime diversity alpha-correlation" version="2019.7">
-	<description> - Alpha diversity correlation</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_alpha-correlation" name="qiime diversity alpha-correlation"
+      version="2020.8">
+  <description>Alpha diversity correlation</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity alpha-correlation
 
 --i-alpha-diversity=$ialphadiversity
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($pmethod) != 'None':
+--p-method=$pmethod
 #end if
 
-#if str($pmethod) != 'None':
- --p-method=$pmethod
+#if $pintersectids:
+ --p-intersect-ids
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp oalphadiversity.qza $oalphadiversity
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alpha-diversity: ARTIFACT SampleData[AlphaDiversity] Vector of alpha diversity values by sample.  [required]" name="ialphadiversity" optional="False" type="data"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="spearman">spearman</option>
-			<option value="pearson">pearson</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alpha-diversity: ARTIFACT SampleData[AlphaDiversity] Vector of alpha diversity values by sample.  [required]" name="ialphadiversity" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="spearman">spearman</option>
+      <option value="pearson">pearson</option>
+    </param>
+    <param label="--p-intersect-ids: --p-intersect-ids: / --p-no-intersect-ids If supplied, IDs that are not found in both the alpha diversity vector and metadata will be discarded before calculating the correlation. Default behavior is to error on any mismatched IDs.           [default: False]" name="pintersectids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Alpha diversity correlation
-###########################
+###############################################################
 
 Determine whether numeric sample metadata columns are correlated with alpha
 diversity.
@@ -60,13 +79,17 @@
     The sample metadata.
 method : Str % Choices('spearman', 'pearson'), optional
     The correlation test to be applied.
+intersect_ids : Bool, optional
+    If supplied, IDs that are not found in both the alpha diversity vector
+    and metadata will be discarded before calculating the correlation.
+    Default behavior is to error on any mismatched IDs.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_alpha-group-significance.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_alpha-group-significance.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,45 +1,64 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha-group-significance" name="qiime diversity alpha-group-significance" version="2019.7">
-	<description> - Alpha diversity comparisons</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_alpha-group-significance" name="qiime diversity alpha-group-significance"
+      version="2020.8">
+  <description>Alpha diversity comparisons</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity alpha-group-significance
 
 --i-alpha-diversity=$ialphadiversity
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
 --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
+# end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp oalphadiversity.qza $oalphadiversity
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alpha-diversity: ARTIFACT SampleData[AlphaDiversity] Vector of alpha diversity values by sample.  [required]" name="ialphadiversity" optional="False" type="data"/>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alpha-diversity: ARTIFACT SampleData[AlphaDiversity] Vector of alpha diversity values by sample.  [required]" name="ialphadiversity" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Alpha diversity comparisons
+###############################################################
 
 Visually and statistically compare groups of alpha diversity values.
 
@@ -53,9 +72,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_alpha-phylogenetic-alt.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha-phylogenetic-alt" name="qiime diversity alpha-phylogenetic-alt" version="2019.7">
-	<description> - Alpha diversity (phylogenetic) - alternative implementation</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime diversity alpha-phylogenetic-alt
-
---i-table=$itable
---i-phylogeny=$iphylogeny
-
---p-metric=$pmetric
-
---o-alpha-diversity=oalphadiversity
-
-;
-cp oalphadiversity.qza $oalphadiversity
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples for which alpha diversity should be computed.       [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="faith_pd">faith_pd</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: alphadiversity.qza" name="oalphadiversity"/>
-	</outputs>
-	<help><![CDATA[
-Alpha diversity (phylogenetic) - alternative implementation
-############################################################
-
-Computes a user-specified phylogenetic alpha diversity metric for all
-samples in a feature table. This implementation is recommended for large
-datasets, otherwise the results are identical to alpha_phylogenetic.   This
-method is an implementation of the Stacked Faith Algorithm (manuscript in
-preparation).
-
-Parameters
-----------
-table : FeatureTable[Frequency]
-    The feature table containing the samples for which alpha diversity
-    should be computed.
-phylogeny : Phylogeny[Rooted]
-    Phylogenetic tree containing tip identifiers that correspond to the
-    feature identifiers in the table. This tree can contain tip ids that
-    are not present in the table, but all feature ids in the table must be
-    present in this tree.
-metric : Str % Choices('faith_pd')
-    The alpha diversity metric to be computed.
-
-Returns
--------
-alpha_diversity : SampleData[AlphaDiversity] % Properties('phylogenetic')
-    Vector containing per-sample alpha diversities.
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_diversity_alpha-phylogenetic.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_alpha-phylogenetic.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,40 +1,54 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha-phylogenetic" name="qiime diversity alpha-phylogenetic" version="2019.7">
-	<description> - Alpha diversity (phylogenetic)</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_alpha-phylogenetic" name="qiime diversity alpha-phylogenetic"
+      version="2020.8">
+  <description>Alpha diversity (phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity alpha-phylogenetic
 
 --i-table=$itable
+
 --i-phylogeny=$iphylogeny
+
 --p-metric=$pmetric
 
 --o-alpha-diversity=oalphadiversity
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oalphadiversity.qza $oalphadiversity
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples for which alpha diversity should be computed.       [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="faith_pd">faith_pd</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: alphadiversity.qza" name="oalphadiversity"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]      The feature table containing the samples for which alpha diversity should be computed.       [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="faith_pd">faith_pd</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: alphadiversity.qza" name="oalphadiversity" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Alpha diversity (phylogenetic)
-##############################
+###############################################################
 
 Computes a user-specified phylogenetic alpha diversity metric for all
 samples in a feature table.
 
 Parameters
 ----------
-table : FeatureTable[Frequency]
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
     The feature table containing the samples for which alpha diversity
     should be computed.
 phylogeny : Phylogeny[Rooted]
@@ -47,11 +61,11 @@
 
 Returns
 -------
-alpha_diversity : SampleData[AlphaDiversity] % Properties('phylogenetic')
+alpha_diversity : SampleData[AlphaDiversity]
     Vector containing per-sample alpha diversities.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_alpha-rarefaction.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_alpha-rarefaction.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,104 +1,107 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha-rarefaction" name="qiime diversity alpha-rarefaction" version="2019.7">
-	<description> - Alpha rarefaction curves</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_alpha-rarefaction" name="qiime diversity alpha-rarefaction"
+      version="2020.8">
+  <description>Alpha rarefaction curves</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity alpha-rarefaction
 
 --i-table=$itable
 
-
-#if str($pmaxdepth):
- --p-max-depth="$pmaxdepth"
-#end if
-
 #if str($iphylogeny) != 'None':
- --i-phylogeny=$iphylogeny
-#end if
-
-#if str($pmetrics) != 'None':
- --p-metrics=$pmetrics
-#end if
-
-
-#if str($pmindepth):
- --p-min-depth=$pmindepth
+--i-phylogeny=$iphylogeny
 #end if
 
-#if str($psteps):
- --p-steps=$psteps
+--p-max-depth=$pmaxdepth
+
+#if str($pmetrics) != 'None':
+--p-metrics=$pmetrics
 #end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($piterations):
- --p-iterations=$piterations
+--p-min-depth=$pmindepth
+
+--p-steps=$psteps
+
+--p-iterations=$piterations
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
+;
+cp oalphadiversity.qza $oalphadiversity
 
---o-visualization=ovisualization
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to compute rarefaction curves from. [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-max-depth: INTEGER   The maximum rarefaction depth. Must be greater than Range(1, None)        min-depth.                                [required]" name="pmaxdepth" optional="False" min="1" value="" type="integer"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Optional phylogeny for phylogenetic metrics. Phylogeny[Rooted]                                               [optional]" name="iphylogeny" optional="True" type="data"/>
-		<param label="--p-metrics: " name="pmetrics" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="dominance">dominance</option>
-			<option value="ace">ace</option>
-			<option value="brillouin_d">brillouin_d</option>
-			<option value="margalef">margalef</option>
-			<option value="menhinick">menhinick</option>
-			<option value="mcintosh_d">mcintosh_d</option>
-			<option value="berger_parker_d">berger_parker_d</option>
-			<option value="enspie">enspie</option>
-			<option value="doubles">doubles</option>
-			<option value="lladser_pe">lladser_pe</option>
-			<option value="observed_otus">observed_otus</option>
-			<option value="faith_pd">faith_pd</option>
-			<option value="simpson_e">simpson_e</option>
-			<option value="robbins">robbins</option>
-			<option value="shannon">shannon</option>
-			<option value="pielou_e">pielou_e</option>
-			<option value="singles">singles</option>
-			<option value="michaelis_menten_fit">michaelis_menten_fit</option>
-			<option value="heip_e">heip_e</option>
-			<option value="mcintosh_e">mcintosh_e</option>
-			<option value="fisher_alpha">fisher_alpha</option>
-			<option value="goods_coverage">goods_coverage</option>
-			<option value="chao1">chao1</option>
-			<option value="gini_index">gini_index</option>
-			<option value="simpson">simpson</option>
-		</param>
-		<param label="--p-min-depth: INTEGER   The minimum rarefaction depth. Range(1, None)                                                [default: 1]" name="pmindepth" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-steps: INTEGER       The number of rarefaction depths to include between Range(2, None)        min-depth and max-depth.               [default: 10]" name="psteps" optional="True" type="integer" min="2" value="10"/>
-		<param label="--p-iterations: INTEGER  The number of rarefied feature tables to compute at Range(1, None)        each step.                             [default: 10]" name="piterations" optional="True" type="integer" min="1" value="10"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. The sample metadata.  [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to compute rarefaction curves from. [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Optional phylogeny for phylogenetic metrics. Phylogeny[Rooted]                                               [optional]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-max-depth: INTEGER   The maximum rarefaction depth. Must be greater than Range(1, None)        min-depth.                                [required]" name="pmaxdepth" optional="False" type="text" />
+    <param label="--p-metrics: " multiple="True" name="pmetrics" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="observed_features">observed_features</option>
+      <option value="heip_e">heip_e</option>
+      <option value="dominance">dominance</option>
+      <option value="goods_coverage">goods_coverage</option>
+      <option value="ace">ace</option>
+      <option value="gini_index">gini_index</option>
+      <option value="simpson_e">simpson_e</option>
+      <option value="pielou_e">pielou_e</option>
+      <option value="mcintosh_e">mcintosh_e</option>
+      <option value="berger_parker_d">berger_parker_d</option>
+      <option value="shannon">shannon</option>
+      <option value="enspie">enspie</option>
+      <option value="mcintosh_d">mcintosh_d</option>
+      <option value="lladser_pe">lladser_pe</option>
+      <option value="brillouin_d">brillouin_d</option>
+      <option value="menhinick">menhinick</option>
+      <option value="simpson">simpson</option>
+      <option value="margalef">margalef</option>
+      <option value="robbins">robbins</option>
+      <option value="doubles">doubles</option>
+      <option value="chao1">chao1</option>
+      <option value="michaelis_menten_fit">michaelis_menten_fit</option>
+      <option value="singles">singles</option>
+      <option value="faith_pd">faith_pd</option>
+      <option value="fisher_alpha">fisher_alpha</option>
+    </param>
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple arguments   The sample metadata. will be merged)                                                [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--p-min-depth: INTEGER   The minimum rarefaction depth. Range(1, None)                                                [default: 1]" min="1" name="pmindepth" optional="True" type="integer" value="1" />
+    <param label="--p-steps: INTEGER       The number of rarefaction depths to include between Range(2, None)        min-depth and max-depth.               [default: 10]" min="2" name="psteps" optional="True" type="integer" value="10" />
+    <param label="--p-iterations: INTEGER  The number of rarefied feature tables to compute at Range(1, None)        each step.                             [default: 10]" min="1" name="piterations" optional="True" type="integer" value="10" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Alpha rarefaction curves
-########################
+###############################################################
 
 Generate interactive alpha rarefaction curves by computing rarefactions
 between `min_depth` and `max_depth`. The number of intermediate depths to
@@ -114,9 +117,9 @@
     The maximum rarefaction depth. Must be greater than min_depth.
 phylogeny : Phylogeny[Rooted], optional
     Optional phylogeny for phylogenetic metrics.
-metrics : Set[Str % Choices('pielou_e', 'simpson_e', 'shannon', 'margalef', 'menhinick', 'brillouin_d', 'mcintosh_e', 'doubles', 'robbins', 'simpson', 'enspie', 'fisher_alpha', 'heip_e', 'singles', 'michaelis_menten_fit', 'observed_otus', 'gini_index', 'dominance', 'goods_coverage', 'mcintosh_d', 'faith_pd', 'ace', 'chao1', 'lladser_pe', 'berger_parker_d')], optional
-    The metrics to be measured. By default computes observed_otus, shannon,
-    and if phylogeny is provided, faith_pd.
+metrics : Set[Str % Choices('mcintosh_e', 'chao1', 'observed_features', 'ace', 'margalef', 'berger_parker_d', 'simpson_e', 'doubles', 'gini_index', 'heip_e', 'michaelis_menten_fit', 'enspie', 'faith_pd', 'menhinick', 'pielou_e', 'shannon', 'singles', 'simpson', 'fisher_alpha', 'dominance', 'robbins', 'lladser_pe', 'mcintosh_d', 'brillouin_d', 'goods_coverage')], optional
+    The metrics to be measured. By default computes observed_features,
+    shannon, and if phylogeny is provided, faith_pd.
 metadata : Metadata, optional
     The sample metadata.
 min_depth : Int % Range(1, None), optional
@@ -130,9 +133,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_alpha.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_alpha.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,79 +1,91 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_alpha" name="qiime diversity alpha" version="2019.7">
-	<description> - Alpha diversity</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_alpha" name="qiime diversity alpha"
+      version="2020.8">
+  <description>Alpha diversity</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity alpha
 
 --i-table=$itable
+
 --p-metric=$pmetric
 
 --o-alpha-diversity=oalphadiversity
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oalphadiversity.qza $oalphadiversity
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples for which alpha diversity should be computed.          [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="menhinick">menhinick</option>
-			<option value="gini_index">gini_index</option>
-			<option value="chao1_ci">chao1_ci</option>
-			<option value="lladser_pe">lladser_pe</option>
-			<option value="observed_otus">observed_otus</option>
-			<option value="lladser_ci">lladser_ci</option>
-			<option value="simpson_e">simpson_e</option>
-			<option value="shannon">shannon</option>
-			<option value="pielou_e">pielou_e</option>
-			<option value="heip_e">heip_e</option>
-			<option value="mcintosh_e">mcintosh_e</option>
-			<option value="osd">osd</option>
-			<option value="fisher_alpha">fisher_alpha</option>
-			<option value="goods_coverage">goods_coverage</option>
-			<option value="strong">strong</option>
-			<option value="simpson">simpson</option>
-			<option value="dominance">dominance</option>
-			<option value="ace">ace</option>
-			<option value="brillouin_d">brillouin_d</option>
-			<option value="margalef">margalef</option>
-			<option value="esty_ci">esty_ci</option>
-			<option value="kempton_taylor_q">kempton_taylor_q</option>
-			<option value="berger_parker_d">berger_parker_d</option>
-			<option value="enspie">enspie</option>
-			<option value="doubles">doubles</option>
-			<option value="robbins">robbins</option>
-			<option value="singles">singles</option>
-			<option value="mcintosh_d">mcintosh_d</option>
-			<option value="chao1">chao1</option>
-			<option value="michaelis_menten_fit">michaelis_menten_fit</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: alphadiversity.qza" name="oalphadiversity"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table containing the samples for which alpha diversity should be computed.          [required]" name="itable" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="strong">strong</option>
+      <option value="observed_features">observed_features</option>
+      <option value="heip_e">heip_e</option>
+      <option value="dominance">dominance</option>
+      <option value="goods_coverage">goods_coverage</option>
+      <option value="ace">ace</option>
+      <option value="gini_index">gini_index</option>
+      <option value="simpson_e">simpson_e</option>
+      <option value="osd">osd</option>
+      <option value="pielou_e">pielou_e</option>
+      <option value="mcintosh_e">mcintosh_e</option>
+      <option value="esty_ci">esty_ci</option>
+      <option value="berger_parker_d">berger_parker_d</option>
+      <option value="shannon">shannon</option>
+      <option value="enspie">enspie</option>
+      <option value="mcintosh_d">mcintosh_d</option>
+      <option value="chao1_ci">chao1_ci</option>
+      <option value="lladser_pe">lladser_pe</option>
+      <option value="brillouin_d">brillouin_d</option>
+      <option value="menhinick">menhinick</option>
+      <option value="simpson">simpson</option>
+      <option value="margalef">margalef</option>
+      <option value="robbins">robbins</option>
+      <option value="doubles">doubles</option>
+      <option value="chao1">chao1</option>
+      <option value="michaelis_menten_fit">michaelis_menten_fit</option>
+      <option value="singles">singles</option>
+      <option value="kempton_taylor_q">kempton_taylor_q</option>
+      <option value="fisher_alpha">fisher_alpha</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: alphadiversity.qza" name="oalphadiversity" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Alpha diversity
-###############
+###############################################################
 
 Computes a user-specified alpha diversity metric for all samples in a
 feature table.
 
 Parameters
 ----------
-table : FeatureTable[Frequency]
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
     The feature table containing the samples for which alpha diversity
     should be computed.
-metric : Str % Choices('pielou_e', 'menhinick', 'mcintosh_e', 'doubles', 'chao1_ci', 'kempton_taylor_q', 'enspie', 'heip_e', 'michaelis_menten_fit', 'observed_otus', 'gini_index', 'dominance', 'osd', 'esty_ci', 'ace', 'berger_parker_d', 'lladser_ci', 'simpson_e', 'shannon', 'margalef', 'brillouin_d', 'robbins', 'simpson', 'fisher_alpha', 'singles', 'goods_coverage', 'mcintosh_d', 'chao1', 'lladser_pe', 'strong')
+metric : Str % Choices('mcintosh_e', 'esty_ci', 'chao1', 'observed_features', 'ace', 'margalef', 'berger_parker_d', 'simpson_e', 'doubles', 'gini_index', 'heip_e', 'michaelis_menten_fit', 'enspie', 'menhinick', 'shannon', 'pielou_e', 'singles', 'simpson', 'chao1_ci', 'strong', 'fisher_alpha', 'osd', 'dominance', 'robbins', 'lladser_pe', 'kempton_taylor_q', 'mcintosh_d', 'brillouin_d', 'goods_coverage')
     The alpha diversity metric to be computed.
 
 Returns
 -------
 alpha_diversity : SampleData[AlphaDiversity]
     Vector containing per-sample alpha diversities.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_beta-correlation.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_beta-correlation.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,100 +1,121 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_beta-correlation" name="qiime diversity beta-correlation" version="2019.7">
-	<description> - Beta diversity correlation</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_beta-correlation" name="qiime diversity beta-correlation"
+      version="2020.8">
+  <description>Beta diversity correlation</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity beta-correlation
 
 --i-distance-matrix=$idistancematrix
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
 #if '__sq__' in str($mmetadatacolumn):
   #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
   #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
 
---m-metadata-column="$mmetadatacolumn"
-
+--m-metadata-column=$mmetadatacolumn
 
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
-#end if
-
-#if str($ppermutations):
- --p-permutations=$ppermutations
+--p-method=$pmethod
 #end if
 
-#if str($pintersectids):
- --p-intersect-ids
-#end if
-
+--p-permutations=$ppermutations
 
-
-
-#if '__sq__' in str($plabel1):
-  #set $plabel1_temp = $plabel1.replace('__sq__', "'")
-  #set $plabel1 = $plabel1_temp
+#if $pintersectids:
+ --p-intersect-ids
 #end if
 
 #if str($plabel1):
- --p-label1="$plabel1"
-#end if
-
-
-
-#if '__sq__' in str($plabel2):
-  #set $plabel2_temp = $plabel2.replace('__sq__', "'")
-  #set $plabel2 = $plabel2_temp
+  --p-label1=$plabel1
 #end if
-
 #if str($plabel2):
- --p-label2="$plabel2"
-#end if
+  --p-label2=$plabel2
+#end if# if $input_files_ometadatadistancematrix:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --o-metadata-distance-matrix=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--o-metadata-distance-matrix=$list_dict_to_string($input_files_ometadatadistancematrix)
+# end if
 
-
+--o-mantel-scatter-visualization=omantelscattervisualization
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
-
+;
+cp odistancematrix.qza $odistancematrix
 
---o-metadata-distance-matrix=ometadatadistancematrix
---o-mantel-scatter-visualization=omantelscattervisualization
 ;
-cp ometadatadistancematrix.qza $ometadatadistancematrix;
-qiime tools export --input-path omantelscattervisualization.qzv --output-path out   && mkdir -p '$omantelscattervisualization.files_path'
+qiime tools export  omantelscattervisualization.qzv --output-path out
+&& mkdir -p '$omantelscattervisualization.files_path'
 && cp -r out/* '$omantelscattervisualization.files_path'
 && mv '$omantelscattervisualization.files_path/index.html' '$omantelscattervisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column from which to compute pairwise Euclidean distances                          [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="spearman">spearman</option>
-			<option value="pearson">pearson</option>
-		</param>
-		<param label="--p-permutations: INTEGER Range(0, None)     The number of permutations to be run when computing p-values. Supplying a value of zero will disable permutation testing and p-values will not be calculated (this results in *much* quicker execution time if p-values are not desired).               [default: 999]" name="ppermutations" optional="True" type="integer" min="0" value="999"/>
-		<param label="--p-intersect-ids: --p-no-intersect-ids If supplied, IDs that are not found in both distance matrices will be discarded before applying the Mantel test. Default behavior is to error on any mismatched IDs.                                   [default: False]" name="pintersectids" selected="False" type="boolean"/>
-		<param label="--p-label1: TEXT      Label for `distance-matrix` in the output visualization.                    [default: 'Metadata']" name="plabel1" optional="True" type="text" value="Metadata"/>
-		<param label="--p-label2: TEXT      Label for `metadata-distance-matrix` in the output visualization.             [default: 'Distance Matrix']" name="plabel2" optional="True" type="text" value="Distance Matrix"/>
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" optional="True" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column from which to compute pairwise Euclidean distances                          [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="spearman">spearman</option>
+      <option value="pearson">pearson</option>
+    </param>
+    <param label="--p-permutations: INTEGER Range(0, None)     The number of permutations to be run when computing p-values. Supplying a value of zero will disable permutation testing and p-values will not be calculated (this results in *much* quicker execution time if p-values are not desired).               [default: 999]" min="0" name="ppermutations" optional="True" type="integer" value="999" />
+    <param label="--p-intersect-ids: --p-intersect-ids: / --p-no-intersect-ids If supplied, IDs that are not found in both distance matrices will be discarded before applying the Mantel test. Default behavior is to error on any mismatched IDs.                                   [default: False]" name="pintersectids" selected="False" type="boolean" />
+    <param label="--p-label1: TEXT      Label for `distance-matrix` in the output visualization.                    [default: \'Metadata\']" name="plabel1" optional="False" type="text" value="\'Metadata\'" />
+    <param label="--p-label2: TEXT      Label for `metadata-distance-matrix` in the output visualization.             [default: \'Distance Matrix\']" name="plabel2" optional="False" type="text" value="\'Distance Matrix\'" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: metadatadistancematrix.qza" name="ometadatadistancematrix"/>
-		<data format="html" label="${tool.name} on ${on_string}: mantelscattervisualization.qzv" name="omantelscattervisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <repeat name="input_files_ometadatadistancematrix" optional="False" title="--o-metadata-distance-matrix">
+      <param format="tabular,qza,no_unzip.zip" label="--o-metadata-distance-matrix: ARTIFACT DistanceMatrix     The Distance Matrix produced from the metadata column and used in the mantel test                  [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <data format="html" label="${tool.name} on ${on_string}: mantelscattervisualization.html" name="omantelscattervisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Beta diversity correlation
-##########################
+###############################################################
 
 Create a distance matrix from a numeric metadata column and apply a two-
 sided Mantel test to identify correlation between two distance matrices.
@@ -131,9 +152,9 @@
     mantel test
 mantel_scatter_visualization : Visualization
     Scatter plot rendering of the manteltest results
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_beta-group-significance.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_beta-group-significance.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,60 +1,107 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_beta-group-significance" name="qiime diversity beta-group-significance" version="2019.7">
-	<description> - Beta diversity group significance</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_beta-group-significance" name="qiime diversity beta-group-significance"
+      version="2020.8">
+  <description>Beta diversity group significance</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity beta-group-significance
 
 --i-distance-matrix=$idistancematrix
---m-metadata-column="$mmetadatacolumn"
-
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+
+--m-metadata-column=$mmetadatacolumn
 
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
 #if $ppairwise:
  --p-pairwise
 #end if
 
-#if str($ppermutations):
- --p-permutations=$ppermutations
+--p-permutations=$ppermutations
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-visualization=ovisualization
+;
+cp odistancematrix.qza $odistancematrix
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  omantelscattervisualization.qzv --output-path out
+&& mkdir -p '$omantelscattervisualization.files_path'
+&& cp -r out/* '$omantelscattervisualization.files_path'
+&& mv '$omantelscattervisualization.files_path/index.html' '$omantelscattervisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical sample metadata column.          [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="permanova">permanova</option>
-			<option value="anosim">anosim</option>
-			<option value="permdisp">permdisp</option>
-		</param>
-		<param label="--p-pairwise: --p-no-pairwise Perform pairwise tests between all pairs of groups in addition to the test across all groups. This can be very slow if there are a lot of groups in the metadata column.                                [default: False]" name="ppairwise" selected="False" type="boolean"/>
-		<param label="--p-permutations: INTEGER The number of permutations to be run when computing p-values.                                [default: 999]" name="ppermutations" optional="True" type="integer" value="999"/>
 
-		<param label="--m-metadata-file METADATA [required]" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" optional="False" />
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical sample metadata column.          [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="permanova">permanova</option>
+      <option value="anosim">anosim</option>
+      <option value="permdisp">permdisp</option>
+    </param>
+    <param label="--p-pairwise: --p-pairwise: / --p-no-pairwise Perform pairwise tests between all pairs of groups in addition to the test across all groups. This can be very slow if there are a lot of groups in the metadata column.                                [default: False]" name="ppairwise" selected="False" type="boolean" />
+    <param label="--p-permutations: INTEGER The number of permutations to be run when computing p-values.                                [default: 999]" name="ppermutations" optional="True" type="integer" value="999" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Beta diversity group significance
-#################################
+###############################################################
 
 Determine whether groups of samples are significantly different from one
 another using a permutation-based statistical test.
@@ -77,9 +124,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_beta-phylogenetic.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_beta-phylogenetic.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,64 +1,80 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_beta-phylogenetic" name="qiime diversity beta-phylogenetic" version="2019.7">
-	<description> - Beta diversity (phylogenetic)</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_beta-phylogenetic" name="qiime diversity beta-phylogenetic"
+      version="2020.8">
+  <description>Beta diversity (phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity beta-phylogenetic
 
 --i-table=$itable
+
 --i-phylogeny=$iphylogeny
+
 --p-metric=$pmetric
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
+#if str($pthreads) != 'None':
+--p-threads=$pthreads
 #end if
 
-
 #if $pvarianceadjusted:
  --p-variance-adjusted
 #end if
 
 #if str($palpha):
- --p-alpha="$palpha"
+  --p-alpha=$palpha
 #end if
-
 #if $pbypasstips:
  --p-bypass-tips
 #end if
 
 --o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp odistancematrix.qza $odistancematrix
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which beta diversity should be computed.        [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="generalized_unifrac">generalized_unifrac</option>
-			<option value="unweighted_unifrac">unweighted_unifrac</option>
-			<option value="weighted_normalized_unifrac">weighted_normalized_unifrac</option>
-			<option value="weighted_unifrac">weighted_unifrac</option>
-		</param>
-		<param label="--p-variance-adjusted: --p-no-variance-adjusted Perform variance adjustment based on Chang et al. BMC Bioinformatics 2011. Weights distances based on the proportion of the relative abundance represented between the samples at a given node under evaluation.                         [default: False]" name="pvarianceadjusted" selected="False" type="boolean"/>
-		<param label="--p-alpha: PROPORTION Range(0, 1, inclusive_end=True) This parameter is only used when the choice of metric is generalized_unifrac. The value of alpha controls importance of sample proportions. 1.0 is weighted normalized UniFrac. 0.0 is close to unweighted UniFrac, but only if the sample proportions are dichotomized.             [optional]" name="palpha" optional="True" min="0" max="1" exclude_max="False"  type="float"/>
-		<param label="--p-bypass-tips: --p-no-bypass-tips In a bifurcating tree, the tips make up about 50% of the nodes in a tree. By ignoring them, specificity can be traded for reduced compute time. This has the effect of collapsing the phylogeny, and is analogous (in concept) to moving from 99% to 97% OTUs                                [default: False]" name="pbypasstips" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]      The feature table containing the samples over which beta diversity should be computed.        [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="weighted_unifrac">weighted_unifrac</option>
+      <option value="unweighted_unifrac">unweighted_unifrac</option>
+      <option value="weighted_normalized_unifrac">weighted_normalized_unifrac</option>
+      <option value="generalized_unifrac">generalized_unifrac</option>
+    </param>
+    <param label="--p-threads: " name="pthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-variance-adjusted: --p-variance-adjusted: / --p-no-variance-adjusted Perform variance adjustment based on Chang et al. BMC Bioinformatics 2011. Weights distances based on the proportion of the relative abundance represented between the samples at a given node under evaluation.                         [default: False]" name="pvarianceadjusted" selected="False" type="boolean" />
+    <param label="--p-alpha: PROPORTION Range(0, 1, inclusive_end=True) This parameter is only used when the choice of metric is generalized_unifrac. The value of alpha controls importance of sample proportions. 1.0 is weighted normalized UniFrac. 0.0 is close to unweighted UniFrac, but only if the sample proportions are dichotomized.             [optional]" name="palpha" optional="False" type="text" />
+    <param label="--p-bypass-tips: --p-bypass-tips: / --p-no-bypass-tips In a bifurcating tree, the tips make up about 50% of the nodes in a tree. By ignoring them, specificity can be traded for reduced compute time. This has the effect of collapsing the phylogeny, and is analogous (in concept) to moving from 99% to 97% OTUs                                [default: False]" name="pbypasstips" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Beta diversity (phylogenetic)
-#############################
+###############################################################
 
 Computes a user-specified phylogenetic beta diversity metric for all pairs
 of samples in a feature table.
 
 Parameters
 ----------
-table : FeatureTable[Frequency]
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
     The feature table containing the samples over which beta diversity
     should be computed.
 phylogeny : Phylogeny[Rooted]
@@ -66,8 +82,12 @@
     feature identifiers in the table. This tree can contain tip ids that
     are not present in the table, but all feature ids in the table must be
     present in this tree.
-metric : Str % Choices('weighted_unifrac', 'generalized_unifrac', 'weighted_normalized_unifrac', 'unweighted_unifrac')
+metric : Str % Choices('generalized_unifrac', 'weighted_normalized_unifrac', 'weighted_unifrac', 'unweighted_unifrac')
     The beta diversity metric to be computed.
+threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of CPU threads to use in performing this calculation. May
+    not exceed the number of available physical cores. If threads = 'auto',
+    one thread will be created for each identified CPU core on the host.
 variance_adjusted : Bool, optional
     Perform variance adjustment based on Chang et al. BMC Bioinformatics
     2011. Weights distances based on the proportion of the relative
@@ -87,11 +107,11 @@
 
 Returns
 -------
-distance_matrix : DistanceMatrix % Properties('phylogenetic')
+distance_matrix : DistanceMatrix
     The resulting distance matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_beta-rarefaction.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_beta-rarefaction.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,129 +1,138 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_beta-rarefaction" name="qiime diversity beta-rarefaction" version="2019.7">
-	<description> - Beta diversity rarefaction</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_beta-rarefaction" name="qiime diversity beta-rarefaction"
+      version="2020.8">
+  <description>Beta diversity rarefaction</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity beta-rarefaction
 
 --i-table=$itable
 
+#if str($iphylogeny) != 'None':
+--i-phylogeny=$iphylogeny
+#end if
+
 --p-metric=$pmetric
 
 --p-clustering-method=$pclusteringmethod
-
-#if str($psamplingdepth):
- --p-sampling-depth="$psamplingdepth"
-#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($iphylogeny) != 'None':
- --i-phylogeny=$iphylogeny
-#end if
+--p-sampling-depth=$psamplingdepth
 
-#if str($piterations):
- --p-iterations=$piterations
-#end if
+--p-iterations=$piterations
 
 #if str($pcorrelationmethod) != 'None':
- --p-correlation-method=$pcorrelationmethod
+--p-correlation-method=$pcorrelationmethod
 #end if
 
 #if str($pcolorscheme) != 'None':
- --p-color-scheme=$pcolorscheme
-#end if
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+--p-color-scheme=$pcolorscheme
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table upon which to perform beta diversity rarefaction analyses.                     [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="kulsinski">kulsinski</option>
-			<option value="euclidean">euclidean</option>
-			<option value="wminkowski">wminkowski</option>
-			<option value="dice">dice</option>
-			<option value="correlation">correlation</option>
-			<option value="hamming">hamming</option>
-			<option value="canberra">canberra</option>
-			<option value="canberra_adkins">canberra_adkins</option>
-			<option value="rogerstanimoto">rogerstanimoto</option>
-			<option value="sqeuclidean">sqeuclidean</option>
-			<option value="cosine">cosine</option>
-			<option value="seuclidean">seuclidean</option>
-			<option value="weighted_normalized_unifrac">weighted_normalized_unifrac</option>
-			<option value="sokalmichener">sokalmichener</option>
-			<option value="unweighted_unifrac">unweighted_unifrac</option>
-			<option value="cityblock">cityblock</option>
-			<option value="generalized_unifrac">generalized_unifrac</option>
-			<option value="weighted_unifrac">weighted_unifrac</option>
-			<option value="braycurtis">braycurtis</option>
-			<option value="jaccard">jaccard</option>
-			<option value="sokalsneath">sokalsneath</option>
-			<option value="aitchison">aitchison</option>
-			<option value="matching">matching</option>
-			<option value="chebyshev">chebyshev</option>
-			<option value="russellrao">russellrao</option>
-			<option value="yule">yule</option>
-			<option value="mahalanobis">mahalanobis</option>
-		</param>
-		<param label="--p-clustering-method: " name="pclusteringmethod" optional="False" type="select">
-			<option value="upgma">upgma</option>
-			<option value="nj">nj</option>
-		</param>
-		<param label="--p-sampling-depth: INTEGER Range(1, None)        The total frequency that each sample should be rarefied to prior to computing the diversity metric. [required]" name="psamplingdepth" optional="False" min="1" value="" type="integer"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree. [required for phylogenetic metrics]                                  [optional]" name="iphylogeny" optional="True" type="data"/>
-		<param label="--p-iterations: INTEGER  Number of times to rarefy the feature table at a Range(2, None)        given sampling depth.                  [default: 10]" name="piterations" optional="True" type="integer" min="2" value="10"/>
-		<param label="--p-correlation-method: " name="pcorrelationmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="spearman">spearman</option>
-			<option value="pearson">pearson</option>
-		</param>
-		<param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="BrBG">BrBG</option>
-			<option value="BrBG_r">BrBG_r</option>
-			<option value="PRGn">PRGn</option>
-			<option value="PRGn_r">PRGn_r</option>
-			<option value="PiYG">PiYG</option>
-			<option value="PiYG_r">PiYG_r</option>
-			<option value="PuOr">PuOr</option>
-			<option value="PuOr_r">PuOr_r</option>
-			<option value="RdBu">RdBu</option>
-			<option value="RdBu_r">RdBu_r</option>
-			<option value="RdGy">RdGy</option>
-			<option value="RdGy_r">RdGy_r</option>
-			<option value="RdYlBu">RdYlBu</option>
-			<option value="RdYlBu_r">RdYlBu_r</option>
-			<option value="RdYlGn">RdYlGn</option>
-			<option value="RdYlGn_r">RdYlGn_r</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: METADATA... (multiple arguments will be merged) The sample metadata used for the Emperor jackknifed PCoA plot. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table upon which to perform beta diversity rarefaction analyses.                     [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree. [required for phylogenetic metrics]                                  [optional]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="braycurtis">braycurtis</option>
+      <option value="euclidean">euclidean</option>
+      <option value="cityblock">cityblock</option>
+      <option value="cosine">cosine</option>
+      <option value="minkowski">minkowski</option>
+      <option value="matching">matching</option>
+      <option value="correlation">correlation</option>
+      <option value="russellrao">russellrao</option>
+      <option value="weighted_normalized_unifrac">weighted_normalized_unifrac</option>
+      <option value="sokalsneath">sokalsneath</option>
+      <option value="seuclidean">seuclidean</option>
+      <option value="canberra">canberra</option>
+      <option value="sokalmichener">sokalmichener</option>
+      <option value="kulsinski">kulsinski</option>
+      <option value="jensenshannon">jensenshannon</option>
+      <option value="weighted_unifrac">weighted_unifrac</option>
+      <option value="jaccard">jaccard</option>
+      <option value="hamming">hamming</option>
+      <option value="chebyshev">chebyshev</option>
+      <option value="generalized_unifrac">generalized_unifrac</option>
+      <option value="yule">yule</option>
+      <option value="dice">dice</option>
+      <option value="sqeuclidean">sqeuclidean</option>
+      <option value="aitchison">aitchison</option>
+      <option value="canberra_adkins">canberra_adkins</option>
+      <option value="unweighted_unifrac">unweighted_unifrac</option>
+      <option value="rogerstanimoto">rogerstanimoto</option>
+    </param>
+    <param label="--p-clustering-method: " name="pclusteringmethod" optional="False" type="select">
+      <option value="upgma">upgma</option>
+      <option value="nj">nj</option>
+    </param>
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple arguments   The sample metadata used for the Emperor jackknifed will be merged)      PCoA plot.                                [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-sampling-depth: INTEGER Range(1, None)        The total frequency that each sample should be rarefied to prior to computing the diversity metric. [required]" name="psamplingdepth" optional="False" type="text" />
+    <param label="--p-iterations: INTEGER  Number of times to rarefy the feature table at a Range(2, None)        given sampling depth.                  [default: 10]" min="2" name="piterations" optional="True" type="integer" value="10" />
+    <param label="--p-correlation-method: " name="pcorrelationmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="pearson">pearson</option>
+      <option value="spearman">spearman</option>
+    </param>
+    <param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="BrBG">BrBG</option>
+      <option value="BrBG_r">BrBG_r</option>
+      <option value="PRGn">PRGn</option>
+      <option value="PRGn_r">PRGn_r</option>
+      <option value="PiYG">PiYG</option>
+      <option value="PiYG_r">PiYG_r</option>
+      <option value="PuOr">PuOr</option>
+      <option value="PuOr_r">PuOr_r</option>
+      <option value="RdBu">RdBu</option>
+      <option value="RdBu_r">RdBu_r</option>
+      <option value="RdGy">RdGy</option>
+      <option value="RdGy_r">RdGy_r</option>
+      <option value="RdYlBu">RdYlBu</option>
+      <option value="RdYlBu_r">RdYlBu_r</option>
+      <option value="RdYlGn">RdYlGn</option>
+      <option value="RdYlGn_r">RdYlGn_r</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Beta diversity rarefaction
-##########################
+###############################################################
 
 Repeatedly rarefy a feature table to compare beta diversity results within
 a given rarefaction depth.  For a given beta diversity metric, this
@@ -137,7 +146,7 @@
 table : FeatureTable[Frequency]
     Feature table upon which to perform beta diversity rarefaction
     analyses.
-metric : Str % Choices('generalized_unifrac', 'sokalmichener', 'matching', 'yule', 'weighted_normalized_unifrac', 'dice', 'russellrao', 'rogerstanimoto', 'mahalanobis', 'wminkowski', 'kulsinski', 'aitchison', 'seuclidean', 'correlation', 'sokalsneath', 'hamming', 'jaccard', 'unweighted_unifrac', 'weighted_unifrac', 'cosine', 'canberra', 'euclidean', 'sqeuclidean', 'chebyshev', 'cityblock', 'canberra_adkins', 'braycurtis')
+metric : Str % Choices('yule', 'weighted_normalized_unifrac', 'cityblock', 'weighted_unifrac', 'matching', 'russellrao', 'seuclidean', 'jaccard', 'braycurtis', 'minkowski', 'sokalmichener', 'aitchison', 'generalized_unifrac', 'canberra_adkins', 'euclidean', 'kulsinski', 'cosine', 'sqeuclidean', 'sokalsneath', 'correlation', 'hamming', 'dice', 'rogerstanimoto', 'canberra', 'unweighted_unifrac', 'chebyshev', 'jensenshannon')
     The beta diversity metric to be computed.
 clustering_method : Str % Choices('upgma', 'nj')
     Samples can be clustered with neighbor joining or UPGMA. An arbitrary
@@ -155,7 +164,7 @@
     feature identifiers in the table. This tree can contain tip ids that
     are not present in the table, but all feature ids in the table must be
     present in this tree. [required for phylogenetic metrics]
-correlation_method : Str % Choices('pearson', 'spearman'), optional
+correlation_method : Str % Choices('spearman', 'pearson'), optional
     The Mantel correlation test to be applied when computing correlation
     between beta diversity distance matrices.
 color_scheme : Str % Choices('BrBG', 'BrBG_r', 'PRGn', 'PRGn_r', 'PiYG', 'PiYG_r', 'PuOr', 'PuOr_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r'), optional
@@ -164,9 +173,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_beta.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_beta.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,86 +1,105 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_beta" name="qiime diversity beta" version="2019.7">
-	<description> - Beta diversity</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_beta" name="qiime diversity beta"
+      version="2020.8">
+  <description>Beta diversity</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity beta
 
 --i-table=$itable
 
 --p-metric=$pmetric
 
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
-#end if
+--p-pseudocount=$ppseudocount
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
 #end if
 
 --o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp odistancematrix.qza $odistancematrix
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which beta diversity should be computed.           [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-metric: " name="pmetric" optional="False" type="select">
-			<option value="kulsinski">kulsinski</option>
-			<option value="wminkowski">wminkowski</option>
-			<option value="correlation">correlation</option>
-			<option value="hamming">hamming</option>
-			<option value="canberra">canberra</option>
-			<option value="canberra_adkins">canberra_adkins</option>
-			<option value="sqeuclidean">sqeuclidean</option>
-			<option value="sokalmichener">sokalmichener</option>
-			<option value="cityblock">cityblock</option>
-			<option value="braycurtis">braycurtis</option>
-			<option value="matching">matching</option>
-			<option value="russellrao">russellrao</option>
-			<option value="cosine">cosine</option>
-			<option value="yule">yule</option>
-			<option value="euclidean">euclidean</option>
-			<option value="rogerstanimoto">rogerstanimoto</option>
-			<option value="seuclidean">seuclidean</option>
-			<option value="jaccard">jaccard</option>
-			<option value="sokalsneath">sokalsneath</option>
-			<option value="aitchison">aitchison</option>
-			<option value="chebyshev">chebyshev</option>
-			<option value="dice">dice</option>
-			<option value="mahalanobis">mahalanobis</option>
-		</param>
-		<param label="--p-pseudocount: INTEGER Range(1, None)     A pseudocount to handle zeros for compositional metrics.  This is ignored for other metrics. [default: 1]" name="ppseudocount" optional="True" type="integer" min="1" value="1"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table containing the samples over which beta diversity should be computed.           [required]" name="itable" optional="False" type="data" />
+    <param label="--p-metric: " name="pmetric" optional="False" type="select">
+      <option value="braycurtis">braycurtis</option>
+      <option value="euclidean">euclidean</option>
+      <option value="cityblock">cityblock</option>
+      <option value="cosine">cosine</option>
+      <option value="minkowski">minkowski</option>
+      <option value="matching">matching</option>
+      <option value="correlation">correlation</option>
+      <option value="russellrao">russellrao</option>
+      <option value="sokalsneath">sokalsneath</option>
+      <option value="seuclidean">seuclidean</option>
+      <option value="canberra">canberra</option>
+      <option value="sokalmichener">sokalmichener</option>
+      <option value="kulsinski">kulsinski</option>
+      <option value="jensenshannon">jensenshannon</option>
+      <option value="jaccard">jaccard</option>
+      <option value="hamming">hamming</option>
+      <option value="chebyshev">chebyshev</option>
+      <option value="yule">yule</option>
+      <option value="dice">dice</option>
+      <option value="sqeuclidean">sqeuclidean</option>
+      <option value="aitchison">aitchison</option>
+      <option value="canberra_adkins">canberra_adkins</option>
+      <option value="rogerstanimoto">rogerstanimoto</option>
+    </param>
+    <param label="--p-pseudocount: INTEGER Range(1, None)     A pseudocount to handle zeros for compositional metrics.  This is ignored for other metrics. [default: 1]" min="1" name="ppseudocount" optional="True" type="integer" value="1" />
+    <param label="--p-n-jobs: " name="pnjobs" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Beta diversity
-##############
+###############################################################
 
 Computes a user-specified beta diversity metric for all pairs of samples in
 a feature table.
 
 Parameters
 ----------
-table : FeatureTable[Frequency]
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
     The feature table containing the samples over which beta diversity
     should be computed.
-metric : Str % Choices('sokalmichener', 'yule', 'russellrao', 'rogerstanimoto', 'aitchison', 'correlation', 'jaccard', 'cosine', 'euclidean', 'sqeuclidean', 'chebyshev', 'cityblock', 'matching', 'dice', 'mahalanobis', 'wminkowski', 'kulsinski', 'seuclidean', 'sokalsneath', 'canberra', 'canberra_adkins', 'hamming', 'braycurtis')
+metric : Str % Choices('yule', 'cityblock', 'matching', 'russellrao', 'seuclidean', 'jaccard', 'braycurtis', 'minkowski', 'sokalmichener', 'aitchison', 'canberra_adkins', 'euclidean', 'kulsinski', 'cosine', 'sqeuclidean', 'sokalsneath', 'correlation', 'hamming', 'dice', 'rogerstanimoto', 'canberra', 'chebyshev', 'jensenshannon')
     The beta diversity metric to be computed.
 pseudocount : Int % Range(1, None), optional
     A pseudocount to handle zeros for compositional metrics.  This is
     ignored for other metrics.
+n_jobs : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of concurrent jobs to use in performing this calculation.
+    May not exceed the number of available physical cores. If n_jobs =
+    'auto', one job will be launched for each identified CPU core on the
+    host.
 
 Returns
 -------
 distance_matrix : DistanceMatrix
     The resulting distance matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_bioenv.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_bioenv.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,47 +1,64 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_bioenv" name="qiime diversity bioenv" version="2019.7">
-	<description> - bioenv</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_bioenv" name="qiime diversity bioenv"
+      version="2020.8">
+  <description>bioenv</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity bioenv
 
 --i-distance-matrix=$idistancematrix
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 bioenv
-######
+###############################################################
 
 Find the subsets of variables in metadata whose Euclidean distances are
 maximally rank-correlated with distance matrix. All numeric variables in
@@ -59,9 +76,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_core-metrics-phylogenetic.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_core-metrics-phylogenetic.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,114 +1,139 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_core-metrics-phylogenetic" name="qiime diversity core-metrics-phylogenetic" version="2019.7">
-	<description> - Core diversity metrics (phylogenetic and non- phylogenetic)</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_core-metrics-phylogenetic" name="qiime diversity core-metrics-phylogenetic"
+      version="2020.8">
+  <description>Core diversity metrics (phylogenetic and non- phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity core-metrics-phylogenetic
 
 --i-table=$itable
+
 --i-phylogeny=$iphylogeny
 
-#if str($psamplingdepth):
- --p-sampling-depth="$psamplingdepth"
-#end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
+--p-sampling-depth=$psamplingdepth
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($pnjobsorthreads) != 'None':
+--p-n-jobs-or-threads=$pnjobsorthreads
 #end if
 
-
-
 --o-rarefied-table=orarefiedtable
+
 --o-faith-pd-vector=ofaithpdvector
---o-observed-otus-vector=oobservedotusvector
+
+--o-observed-features-vector=oobservedfeaturesvector
+
 --o-shannon-vector=oshannonvector
+
 --o-evenness-vector=oevennessvector
+
 --o-unweighted-unifrac-distance-matrix=ounweightedunifracdistancematrix
+
 --o-weighted-unifrac-distance-matrix=oweightedunifracdistancematrix
+
 --o-jaccard-distance-matrix=ojaccarddistancematrix
+
 --o-bray-curtis-distance-matrix=obraycurtisdistancematrix
+
 --o-unweighted-unifrac-pcoa-results=ounweightedunifracpcoaresults
+
 --o-weighted-unifrac-pcoa-results=oweightedunifracpcoaresults
+
 --o-jaccard-pcoa-results=ojaccardpcoaresults
+
 --o-bray-curtis-pcoa-results=obraycurtispcoaresults
+
 --o-unweighted-unifrac-emperor=ounweightedunifracemperor
+
 --o-weighted-unifrac-emperor=oweightedunifracemperor
+
 --o-jaccard-emperor=ojaccardemperor
+
 --o-bray-curtis-emperor=obraycurtisemperor
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp orarefiedtable.qza $orarefiedtable;
-cp ofaithpdvector.qza $ofaithpdvector;
-cp oobservedotusvector.qza $oobservedotusvector;
-cp oshannonvector.qza $oshannonvector;
-cp oevennessvector.qza $oevennessvector;
-cp ounweightedunifracdistancematrix.qza $ounweightedunifracdistancematrix;
-cp oweightedunifracdistancematrix.qza $oweightedunifracdistancematrix;
-cp ojaccarddistancematrix.qza $ojaccarddistancematrix;
-cp obraycurtisdistancematrix.qza $obraycurtisdistancematrix;
-cp ounweightedunifracpcoaresults.qza $ounweightedunifracpcoaresults;
-cp oweightedunifracpcoaresults.qza $oweightedunifracpcoaresults;
-cp ojaccardpcoaresults.qza $ojaccardpcoaresults;
-cp obraycurtispcoaresults.qza $obraycurtispcoaresults;
-qiime tools export --input-path ounweightedunifracemperor.qzv --output-path out   && mkdir -p '$ounweightedunifracemperor.files_path'
+cp obraycurtispcoaresults.qza $obraycurtispcoaresults
+
+;
+qiime tools export  ounweightedunifracemperor.qzv --output-path out
+&& mkdir -p '$ounweightedunifracemperor.files_path'
 && cp -r out/* '$ounweightedunifracemperor.files_path'
-&& mv '$ounweightedunifracemperor.files_path/index.html' '$ounweightedunifracemperor';
-qiime tools export --input-path oweightedunifracemperor.qzv --output-path out   && mkdir -p '$oweightedunifracemperor.files_path'
+&& mv '$ounweightedunifracemperor.files_path/index.html' '$ounweightedunifracemperor'
+
+;
+qiime tools export  oweightedunifracemperor.qzv --output-path out
+&& mkdir -p '$oweightedunifracemperor.files_path'
 && cp -r out/* '$oweightedunifracemperor.files_path'
-&& mv '$oweightedunifracemperor.files_path/index.html' '$oweightedunifracemperor';
-qiime tools export --input-path ojaccardemperor.qzv --output-path out   && mkdir -p '$ojaccardemperor.files_path'
+&& mv '$oweightedunifracemperor.files_path/index.html' '$oweightedunifracemperor'
+
+;
+qiime tools export  ojaccardemperor.qzv --output-path out
+&& mkdir -p '$ojaccardemperor.files_path'
 && cp -r out/* '$ojaccardemperor.files_path'
-&& mv '$ojaccardemperor.files_path/index.html' '$ojaccardemperor';
-qiime tools export --input-path obraycurtisemperor.qzv --output-path out   && mkdir -p '$obraycurtisemperor.files_path'
+&& mv '$ojaccardemperor.files_path/index.html' '$ojaccardemperor'
+
+;
+qiime tools export  obraycurtisemperor.qzv --output-path out
+&& mkdir -p '$obraycurtisemperor.files_path'
 && cp -r out/* '$obraycurtisemperor.files_path'
-&& mv '$obraycurtisemperor.files_path/index.html' '$obraycurtisemperor';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which diversity metrics should be computed.     [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data"/>
-		<param label="--p-sampling-depth: INTEGER Range(1, None)        The total frequency that each sample should be rarefied to prior to computing diversity metrics. [required]" name="psamplingdepth" optional="False" min="1" value="" type="integer"/>
+&& mv '$obraycurtisemperor.files_path/index.html' '$obraycurtisemperor'
 
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file [required]">
-			<param label="--m-metadata-file:  (multiple arguments will be merged) The sample metadata to use in the emperor plots. [required]" name="additional_input" optional="False" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which diversity metrics should be computed.     [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-phylogeny: ARTIFACT  Phylogenetic tree containing tip identifiers that Phylogeny[Rooted]     correspond to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                  [required]" name="iphylogeny" optional="False" type="data" />
+    <param label="--p-sampling-depth: INTEGER Range(1, None)        The total frequency that each sample should be rarefied to prior to computing diversity metrics. [required]" name="psamplingdepth" optional="False" type="text" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple arguments   The sample metadata to use in the emperor plots. will be merged)                                                [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-n-jobs-or-threads: " name="pnjobsorthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: faithpdvector.qza" name="ofaithpdvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: observedotusvector.qza" name="oobservedotusvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: shannonvector.qza" name="oshannonvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: evennessvector.qza" name="oevennessvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: unweightedunifracdistancematrix.qza" name="ounweightedunifracdistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: weightedunifracdistancematrix.qza" name="oweightedunifracdistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: jaccarddistancematrix.qza" name="ojaccarddistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: braycurtisdistancematrix.qza" name="obraycurtisdistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: unweightedunifracpcoaresults.qza" name="ounweightedunifracpcoaresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: weightedunifracpcoaresults.qza" name="oweightedunifracpcoaresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: jaccardpcoaresults.qza" name="ojaccardpcoaresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: braycurtispcoaresults.qza" name="obraycurtispcoaresults"/>
-		<data format="html" label="${tool.name} on ${on_string}: unweightedunifracemperor.qzv" name="ounweightedunifracemperor"/>
-		<data format="html" label="${tool.name} on ${on_string}: weightedunifracemperor.qzv" name="oweightedunifracemperor"/>
-		<data format="html" label="${tool.name} on ${on_string}: jaccardemperor.qzv" name="ojaccardemperor"/>
-		<data format="html" label="${tool.name} on ${on_string}: braycurtisemperor.qzv" name="obraycurtisemperor"/>
-	</outputs>
-	<help><![CDATA[
-Core diversity metrics (phylogenetic and non-phylogenetic)
-##########################################################
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: faithpdvector.qza" name="ofaithpdvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: observedfeaturesvector.qza" name="oobservedfeaturesvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: shannonvector.qza" name="oshannonvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: evennessvector.qza" name="oevennessvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: unweightedunifracdistancematrix.qza" name="ounweightedunifracdistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: weightedunifracdistancematrix.qza" name="oweightedunifracdistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: jaccarddistancematrix.qza" name="ojaccarddistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: braycurtisdistancematrix.qza" name="obraycurtisdistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: unweightedunifracpcoaresults.qza" name="ounweightedunifracpcoaresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: weightedunifracpcoaresults.qza" name="oweightedunifracpcoaresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: jaccardpcoaresults.qza" name="ojaccardpcoaresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: braycurtispcoaresults.qza" name="obraycurtispcoaresults" />
+    <data format="html" label="${tool.name} on ${on_string}: unweightedunifracemperor.html" name="ounweightedunifracemperor" />
+    <data format="html" label="${tool.name} on ${on_string}: weightedunifracemperor.html" name="oweightedunifracemperor" />
+    <data format="html" label="${tool.name} on ${on_string}: jaccardemperor.html" name="ojaccardemperor" />
+    <data format="html" label="${tool.name} on ${on_string}: braycurtisemperor.html" name="obraycurtisemperor" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Core diversity metrics (phylogenetic and non- phylogenetic)
+###############################################################
 
 Applies a collection of diversity metrics (both phylogenetic and non-
 phylogenetic) to a feature table.
@@ -128,6 +153,13 @@
     computing diversity metrics.
 metadata : Metadata
     The sample metadata to use in the emperor plots.
+n_jobs_or_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    [beta/beta-phylogenetic methods only] - The number of concurrent jobs
+    or CPU threads to use in performing this calculation. Individual
+    methods will create jobs/threads as implemented in q2-diversity-lib
+    dependencies. May not exceed the number of available physical cores. If
+    n_jobs_or_threads = 'auto', one thread/job will be created for each
+    identified CPU core on the host.
 
 Returns
 -------
@@ -135,8 +167,8 @@
     The resulting rarefied feature table.
 faith_pd_vector : SampleData[AlphaDiversity]
     Vector of Faith PD values by sample.
-observed_otus_vector : SampleData[AlphaDiversity]
-    Vector of Observed OTUs values by sample.
+observed_features_vector : SampleData[AlphaDiversity]
+    Vector of Observed Features values by sample.
 shannon_vector : SampleData[AlphaDiversity]
     Vector of Shannon diversity values by sample.
 evenness_vector : SampleData[AlphaDiversity]
@@ -165,9 +197,9 @@
     Emperor plot of the PCoA matrix computed from Jaccard.
 bray_curtis_emperor : Visualization
     Emperor plot of the PCoA matrix computed from Bray-Curtis.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_core-metrics.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_core-metrics.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,84 +1,108 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_core-metrics" name="qiime diversity core-metrics" version="2019.7">
-	<description> - Core diversity metrics (non-phylogenetic)</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_core-metrics" name="qiime diversity core-metrics"
+      version="2020.8">
+  <description>Core diversity metrics (non-phylogenetic)</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity core-metrics
 
 --i-table=$itable
 
-#if str($psamplingdepth):
- --p-sampling-depth="$psamplingdepth"
-#end if
+--p-sampling-depth=$psamplingdepth
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
+#if $pwithreplacement:
+ --p-with-replacement
 #end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
 #end if
 
 --o-rarefied-table=orarefiedtable
---o-observed-otus-vector=oobservedotusvector
+
+--o-observed-features-vector=oobservedfeaturesvector
+
 --o-shannon-vector=oshannonvector
+
 --o-evenness-vector=oevennessvector
+
 --o-jaccard-distance-matrix=ojaccarddistancematrix
+
 --o-bray-curtis-distance-matrix=obraycurtisdistancematrix
+
 --o-jaccard-pcoa-results=ojaccardpcoaresults
+
 --o-bray-curtis-pcoa-results=obraycurtispcoaresults
+
 --o-jaccard-emperor=ojaccardemperor
+
 --o-bray-curtis-emperor=obraycurtisemperor
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp orarefiedtable.qza $orarefiedtable;
-cp oobservedotusvector.qza $oobservedotusvector;
-cp oshannonvector.qza $oshannonvector;
-cp oevennessvector.qza $oevennessvector;
-cp ojaccarddistancematrix.qza $ojaccarddistancematrix;
-cp obraycurtisdistancematrix.qza $obraycurtisdistancematrix;
-cp ojaccardpcoaresults.qza $ojaccardpcoaresults;
-cp obraycurtispcoaresults.qza $obraycurtispcoaresults;
-qiime tools export --input-path ojaccardemperor.qzv --output-path out   && mkdir -p '$ojaccardemperor.files_path'
+cp obraycurtispcoaresults.qza $obraycurtispcoaresults
+
+;
+qiime tools export  ojaccardemperor.qzv --output-path out
+&& mkdir -p '$ojaccardemperor.files_path'
 && cp -r out/* '$ojaccardemperor.files_path'
-&& mv '$ojaccardemperor.files_path/index.html' '$ojaccardemperor';
-qiime tools export --input-path obraycurtisemperor.qzv --output-path out   && mkdir -p '$obraycurtisemperor.files_path'
+&& mv '$ojaccardemperor.files_path/index.html' '$ojaccardemperor'
+
+;
+qiime tools export  obraycurtisemperor.qzv --output-path out
+&& mkdir -p '$obraycurtisemperor.files_path'
 && cp -r out/* '$obraycurtisemperor.files_path'
-&& mv '$obraycurtisemperor.files_path/index.html' '$obraycurtisemperor';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which diversity metrics should be computed.        [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-sampling-depth: INTEGER Range(1, None)     The total frequency that each sample should be rarefied to prior to computing diversity metrics. [required]" name="psamplingdepth" optional="False" min="1" value="" type="integer"/>
-
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: METADATA... (multiple arguments will be merged) The sample metadata to use in the emperor plots. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+&& mv '$obraycurtisemperor.files_path/index.html' '$obraycurtisemperor'
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: observedotusvector.qza" name="oobservedotusvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: shannonvector.qza" name="oshannonvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: evennessvector.qza" name="oevennessvector"/>
-		<data format="qza" label="${tool.name} on ${on_string}: jaccarddistancematrix.qza" name="ojaccarddistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: braycurtisdistancematrix.qza" name="obraycurtisdistancematrix"/>
-		<data format="qza" label="${tool.name} on ${on_string}: jaccardpcoaresults.qza" name="ojaccardpcoaresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: braycurtispcoaresults.qza" name="obraycurtispcoaresults"/>
-		<data format="html" label="${tool.name} on ${on_string}: jaccardemperor.qzv" name="ojaccardemperor"/>
-		<data format="html" label="${tool.name} on ${on_string}: braycurtisemperor.qzv" name="obraycurtisemperor"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples over which diversity metrics should be computed.        [required]" name="itable" optional="False" type="data" />
+    <param label="--p-sampling-depth: INTEGER Range(1, None)     The total frequency that each sample should be rarefied to prior to computing diversity metrics. [required]" name="psamplingdepth" optional="False" type="text" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata to use in the emperor plots. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-with-replacement: --p-with-replacement: / --p-no-with-replacement Rarefy with replacement by sampling from the multinomial distribution instead of rarefying without replacement.                           [default: False]" name="pwithreplacement" selected="False" type="boolean" />
+    <param label="--p-n-jobs: " name="pnjobs" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: observedfeaturesvector.qza" name="oobservedfeaturesvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: shannonvector.qza" name="oshannonvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: evennessvector.qza" name="oevennessvector" />
+    <data format="qza" label="${tool.name} on ${on_string}: jaccarddistancematrix.qza" name="ojaccarddistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: braycurtisdistancematrix.qza" name="obraycurtisdistancematrix" />
+    <data format="qza" label="${tool.name} on ${on_string}: jaccardpcoaresults.qza" name="ojaccardpcoaresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: braycurtispcoaresults.qza" name="obraycurtispcoaresults" />
+    <data format="html" label="${tool.name} on ${on_string}: jaccardemperor.html" name="ojaccardemperor" />
+    <data format="html" label="${tool.name} on ${on_string}: braycurtisemperor.html" name="obraycurtisemperor" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Core diversity metrics (non-phylogenetic)
-#########################################
+###############################################################
 
 Applies a collection of diversity metrics (non-phylogenetic) to a feature
 table.
@@ -93,13 +117,21 @@
     computing diversity metrics.
 metadata : Metadata
     The sample metadata to use in the emperor plots.
+with_replacement : Bool, optional
+    Rarefy with replacement by sampling from the multinomial distribution
+    instead of rarefying without replacement.
+n_jobs : Int % Range(1, None) | Str % Choices('auto'), optional
+    [beta methods only] - The number of concurrent jobs to use in
+    performing this calculation. May not exceed the number of available
+    physical cores. If n_jobs = 'auto', one job will be launched for each
+    identified CPU core on the host.
 
 Returns
 -------
 rarefied_table : FeatureTable[Frequency]
     The resulting rarefied feature table.
-observed_otus_vector : SampleData[AlphaDiversity]
-    Vector of Observed OTUs values by sample.
+observed_features_vector : SampleData[AlphaDiversity]
+    Vector of Observed Features values by sample.
 shannon_vector : SampleData[AlphaDiversity]
     Vector of Shannon diversity values by sample.
 evenness_vector : SampleData[AlphaDiversity]
@@ -116,9 +148,9 @@
     Emperor plot of the PCoA matrix computed from Jaccard.
 bray_curtis_emperor : Visualization
     Emperor plot of the PCoA matrix computed from Bray-Curtis.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_filter-distance-matrix.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_filter-distance-matrix.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,61 +1,83 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_filter-distance-matrix" name="qiime diversity filter-distance-matrix" version="2019.7">
-	<description> - Filter samples from a distance matrix.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_filter-distance-matrix" name="qiime diversity filter-distance-matrix"
+      version="2020.8">
+  <description>Filter samples from a distance matrix.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity filter-distance-matrix
 
 --i-distance-matrix=$idistancematrix
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if '__ob__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__ob__', '[')
+  #set $pwhere = $pwhere_temp
 #end if
-
-
+#if '__cb__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__cb__', ']')
+  #set $pwhere = $pwhere_temp
+#end if
+#if 'X' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('X', '\\')
+  #set $pwhere = $pwhere_temp
+#end if
 #if '__sq__' in str($pwhere):
   #set $pwhere_temp = $pwhere.replace('__sq__', "'")
   #set $pwhere = $pwhere_temp
 #end if
+#if '__db__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__db__', '"')
+  #set $pwhere = $pwhere_temp
+#end if
 
 #if str($pwhere):
- --p-where="$pwhere"
+  --p-where=$pwhere
 #end if
 
-
 #if $pexcludeids:
  --p-exclude-ids
 #end if
 
 --o-filtered-distance-matrix=ofiltereddistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofiltereddistancematrix.qza $ofiltereddistancematrix
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Distance matrix to filter by sample.         [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--p-where: TEXT       SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered distance matrix. If not provided, all samples in `metadata` that are also in the input distance matrix will be retained.                     [optional]" name="pwhere" optional="True" type="text"/>
-		<param label="--p-exclude-ids: --p-no-exclude-ids If `True`, the samples selected by `metadata` or `where` parameters will be excluded from the filtered distance matrix instead of being retained. [default: False]" name="pexcludeids" selected="False" type="boolean"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     Distance matrix to filter by sample.         [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Sample metadata used with `where` parameter when arguments will    selecting samples to retain, or with `exclude-ids` when be merged)        selecting samples to discard.                [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-where: TEXT       SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered distance matrix. If not provided, all samples in `metadata` that are also in the input distance matrix will be retained.                     [optional]" name="pwhere" optional="False" type="text" />
+    <param label="--p-exclude-ids: --p-exclude-ids: / --p-no-exclude-ids If `True`, the samples selected by `metadata` or `where` parameters will be excluded from the filtered distance matrix instead of being retained. [default: False]" name="pexcludeids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filtereddistancematrix.qza" name="ofiltereddistancematrix"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filtereddistancematrix.qza" name="ofiltereddistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter samples from a distance matrix.
-######################################
+###############################################################
 
 Filter samples from a distance matrix, retaining only the samples matching
 search criteria specified by `metadata` and `where` parameters (or
@@ -84,9 +106,9 @@
 -------
 filtered_distance_matrix : DistanceMatrix
     Distance matrix filtered to include samples matching search criteria
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_mantel.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_mantel.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,76 +1,73 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_mantel" name="qiime diversity mantel" version="2019.7">
-	<description> - Apply the Mantel test to two distance matrices</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_mantel" name="qiime diversity mantel"
+      version="2020.8">
+  <description>Apply the Mantel test to two distance matrices</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity mantel
 
 --i-dm1=$idm1
+
 --i-dm2=$idm2
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
-#if str($ppermutations):
- --p-permutations=$ppermutations
-#end if
+--p-permutations=$ppermutations
 
 #if $pintersectids:
  --p-intersect-ids
 #end if
 
-
-
-#if '__sq__' in str($plabel1):
-  #set $plabel1_temp = $plabel1.replace('__sq__', "'")
-  #set $plabel1 = $plabel1_temp
-#end if
-
 #if str($plabel1):
- --p-label1="$plabel1"
+  --p-label1=$plabel1
 #end if
-
-
+#if str($plabel2):
+  --p-label2=$plabel2
+#end if
+--o-visualization=ovisualization
 
-#if '__sq__' in str($plabel2):
-  #set $plabel2_temp = $plabel2.replace('__sq__', "'")
-  #set $plabel2 = $plabel2_temp
-#end if
-
-#if str($plabel2):
- --p-label2="$plabel2"
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
+;
+cp ofiltereddistancematrix.qza $ofiltereddistancematrix
 
---o-visualization=ovisualization
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-dm1: ARTIFACT     Matrix of distances between pairs of samples. DistanceMatrix                                                  [required]" name="idm1" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-dm2: ARTIFACT     Matrix of distances between pairs of samples. DistanceMatrix                                                  [required]" name="idm2" optional="False" type="data"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="spearman">spearman</option>
-			<option value="pearson">pearson</option>
-		</param>
-		<param label="--p-permutations: INTEGER Range(0, None)     The number of permutations to be run when computing p-values. Supplying a value of zero will disable permutation testing and p-values will not be calculated (this results in *much* quicker execution time if p-values are not desired).               [default: 999]" name="ppermutations" optional="True" type="integer" min="0" value="999"/>
-		<param label="--p-intersect-ids: --p-no-intersect-ids If supplied, IDs that are not found in both distance matrices will be discarded before applying the Mantel test. Default behavior is to error on any mismatched IDs.                                   [default: False]" name="pintersectids" selected="False" type="boolean"/>
-		<param label="--p-label1: TEXT      Label for `dm1` in the output visualization. [default: 'Distance Matrix 1']" name="plabel1" optional="True" type="text" value="Distance Matrix 1"/>
-		<param label="--p-label2: TEXT      Label for `dm2` in the output visualization. [default: 'Distance Matrix 2']" name="plabel2" optional="True" type="text" value="Distance Matrix 2"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-dm1: ARTIFACT     Matrix of distances between pairs of samples. DistanceMatrix                                                  [required]" name="idm1" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-dm2: ARTIFACT     Matrix of distances between pairs of samples. DistanceMatrix                                                  [required]" name="idm2" optional="False" type="data" />
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="spearman">spearman</option>
+      <option value="pearson">pearson</option>
+    </param>
+    <param label="--p-permutations: INTEGER Range(0, None)     The number of permutations to be run when computing p-values. Supplying a value of zero will disable permutation testing and p-values will not be calculated (this results in *much* quicker execution time if p-values are not desired).               [default: 999]" min="0" name="ppermutations" optional="True" type="integer" value="999" />
+    <param label="--p-intersect-ids: --p-intersect-ids: / --p-no-intersect-ids If supplied, IDs that are not found in both distance matrices will be discarded before applying the Mantel test. Default behavior is to error on any mismatched IDs.                                   [default: False]" name="pintersectids" selected="False" type="boolean" />
+    <param label="--p-label1: TEXT      Label for `dm1` in the output visualization. [default: \'Distance Matrix 1\']" name="plabel1" optional="False" type="text" value="\'Distance Matrix 1\'" />
+    <param label="--p-label2: TEXT      Label for `dm2` in the output visualization. [default: \'Distance Matrix 2\']" name="plabel2" optional="False" type="text" value="\'Distance Matrix 2\'" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Apply the Mantel test to two distance matrices
-##############################################
+###############################################################
 
 Apply a two-sided Mantel test to identify correlation between two distance
 matrices.  Note: the directionality of the comparison has no bearing on the
@@ -79,7 +76,7 @@
 distance matrices does not need to be the same; the distance matrices will
 be reordered before applying the Mantel test.  See the scikit-bio docs for
 more details about the Mantel test:  http://scikit-
-bio.org/docs/latest/generated/generated/skbio.stats.distance.mantel.html
+bio.org/docs/latest/generated/skbio.stats.distance.mantel
 
 Parameters
 ----------
@@ -106,9 +103,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_pcoa-biplot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_pcoa-biplot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_pcoa-biplot" name="qiime diversity pcoa-biplot" version="2019.7">
-	<description> - Principal Coordinate Analysis Biplot</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_pcoa-biplot" name="qiime diversity pcoa-biplot"
+      version="2020.8">
+  <description>Principal Coordinate Analysis Biplot</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity pcoa-biplot
 
 --i-pcoa=$ipcoa
+
 --i-features=$ifeatures
 
 --o-biplot=obiplot
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp obiplot.qza $obiplot
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-pcoa: ARTIFACT      The PCoA where the features will be projected onto. PCoAResults                                                     [required]" name="ipcoa" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-features: ARTIFACT FeatureTable[RelativeFrequency] Variables to project onto the PCoA matrix  [required]" name="ifeatures" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: biplot.qza" name="obiplot"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-pcoa: ARTIFACT      The PCoA where the features will be projected onto. PCoAResults                                                     [required]" name="ipcoa" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-features: ARTIFACT FeatureTable[RelativeFrequency] Variables to project onto the PCoA matrix  [required]" name="ifeatures" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: biplot.qza" name="obiplot" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Principal Coordinate Analysis Biplot
-####################################
+###############################################################
 
 Project features into a principal coordinates matrix. The features used
 should be the features used to compute the distance matrix. It is
@@ -41,9 +54,9 @@
 -------
 biplot : PCoAResults % Properties('biplot')
     The resulting PCoA matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_pcoa.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_pcoa.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,32 +1,43 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_pcoa" name="qiime diversity pcoa" version="2019.7">
-	<description> - Principal Coordinate Analysis</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_pcoa" name="qiime diversity pcoa"
+      version="2020.8">
+  <description>Principal Coordinate Analysis</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity pcoa
 
 --i-distance-matrix=$idistancematrix
 
 #if str($pnumberofdimensions):
- --p-number-of-dimensions="$pnumberofdimensions"
+  --p-number-of-dimensions=$pnumberofdimensions
+#end if
+--o-pcoa=opcoa
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-pcoa=opcoa
 ;
 cp opcoa.qza $opcoa
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     The distance matrix on which PCoA should be computed. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--p-number-of-dimensions: INTEGER Range(1, None)     Dimensions to reduce the distance matrix to. This number determines how many eigenvectors and eigenvalues are returned,and influences the choice of algorithm used to compute them. By default, uses the default eigendecomposition method, SciPy's eigh, which computes all eigenvectors and eigenvalues in an exact manner. For very large matrices, this is expected to be slow. If a value is specified for this parameter, then the fast, heuristic eigendecomposition algorithm fsvd is used, which only computes and returns the number of dimensions specified, but suffers some degree of accuracy loss, the magnitude of which varies across different datasets.                          [optional]" name="pnumberofdimensions" optional="True" min="1" type="integer"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: pcoa.qza" name="opcoa"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     The distance matrix on which PCoA should be computed. [required]" name="idistancematrix" optional="False" type="data" />
+    <param label="--p-number-of-dimensions: INTEGER Range(1, None)     Dimensions to reduce the distance matrix to. This number determines how many eigenvectors and eigenvalues are returned,and influences the choice of algorithm used to compute them. By default, uses the default eigendecomposition method, SciPy\'s eigh, which computes all eigenvectors and eigenvalues in an exact manner. For very large matrices, this is expected to be slow. If a value is specified for this parameter, then the fast, heuristic eigendecomposition algorithm fsvd is used, which only computes and returns the number of dimensions specified, but suffers some degree of accuracy loss, the magnitude of which varies across different datasets.                          [optional]" name="pnumberofdimensions" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: pcoa.qza" name="opcoa" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Principal Coordinate Analysis
-#############################
+###############################################################
 
 Apply principal coordinate analysis.
 
@@ -50,9 +61,9 @@
 -------
 pcoa : PCoAResults
     The resulting PCoA matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_diversity_procrustes-analysis.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_diversity_procrustes-analysis.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,37 +1,48 @@
 <?xml version="1.0" ?>
-<tool id="qiime_diversity_procrustes-analysis" name="qiime diversity procrustes-analysis" version="2019.7">
-	<description> - Procrustes Analysis</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_diversity_procrustes-analysis" name="qiime diversity procrustes-analysis"
+      version="2020.8">
+  <description>Procrustes Analysis</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime diversity procrustes-analysis
 
 --i-reference=$ireference
+
 --i-other=$iother
 
-#if str($pdimensions):
- --p-dimensions=$pdimensions
-#end if
+--p-dimensions=$pdimensions
 
 --o-transformed-reference=otransformedreference
+
 --o-transformed-other=otransformedother
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otransformedreference.qza $otransformedreference;
 cp otransformedother.qza $otransformedother
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-reference: ARTIFACT  The ordination matrix to which data is fitted to. PCoAResults                                                     [required]" name="ireference" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-other: ARTIFACT      The ordination matrix that's fitted to the PCoAResults           reference ordination.                     [required]" name="iother" optional="False" type="data"/>
-		<param label="--p-dimensions: INTEGER Range(1, None)                                                [default: 5]" name="pdimensions" optional="True" type="integer" min="1" value="5"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: transformedreference.qza" name="otransformedreference"/>
-		<data format="qza" label="${tool.name} on ${on_string}: transformedother.qza" name="otransformedother"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-reference: ARTIFACT  The ordination matrix to which data is fitted to. PCoAResults                                                     [required]" name="ireference" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-other: ARTIFACT      The ordination matrix that\'s fitted to the PCoAResults           reference ordination.                     [required]" name="iother" optional="False" type="data" />
+    <param label="--p-dimensions: INTEGER Range(1, None)                                                [default: 5]" min="1" name="pdimensions" optional="True" type="integer" value="5" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: transformedreference.qza" name="otransformedreference" />
+    <data format="qza" label="${tool.name} on ${on_string}: transformedother.qza" name="otransformedother" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Procrustes Analysis
-###################
+###############################################################
 
 Fit two ordination matrices with Procrustes analysis
 
@@ -42,7 +53,6 @@
 other : PCoAResults
     The ordination matrix that's fitted to the reference ordination.
 dimensions : Int % Range(1, None), optional
-	\
 
 Returns
 -------
@@ -50,9 +60,9 @@
     A normalized version of the "reference" ordination matrix.
 transformed_other : PCoAResults
     A normalized and fitted version of the "other" ordination matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_emperor_biplot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_emperor_biplot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,78 +1,89 @@
 <?xml version="1.0" ?>
-<tool id="qiime_emperor_biplot" name="qiime emperor biplot" version="2019.7">
-	<description> - Visualize and Interact with Principal Coordinates Analysis Biplot</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_emperor_biplot" name="qiime emperor biplot"
+      version="2020.8">
+  <description>Visualize and Interact with Principal Coordinates Analysis Biplot</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime emperor biplot
 
 --i-biplot=$ibiplot
-
-
-#if $m_sample_metadatafile:
-#def list_dict_to_string_sample_mdata(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-sample-metadata-file=$list_dict_to_string_sample_mdata($m_sample_metadatafile)
-#end if
-
-
-
-#if $m_feature_metadatafile:
-#def list_dict_to_string_feature_mdata(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-feature-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-feature-metadata-file=$list_dict_to_string_feature_mdata($m_feature_metadatafile)
-#end if
-
-
+# if $input_files_msamplemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-sample-metadata-file=$list_dict_to_string($input_files_msamplemetadatafile)
+# end if
+# if $input_files_mfeaturemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-feature-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-feature-metadata-file=$list_dict_to_string($input_files_mfeaturemetadatafile)
+# end if
 
 #if $pignoremissingsamples:
  --p-ignore-missing-samples
 #end if
 
-#if str($pnumberoffeatures):
- --p-number-of-features=$pnumberoffeatures
+#if $pinvert:
+ --p-invert
 #end if
- 
+
+--p-number-of-features=$pnumberoffeatures
+
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-biplot: ARTIFACT PCoAResults % Properties('biplot') The principal coordinates matrix to be plotted. [required]" name="ibiplot" optional="False" type="data"/>
-		<param label="--p-ignore-missing-samples: --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: 'This sample has no metadata'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean"/>
-		<param label="--p-number-of-features: INTEGER Range(1, None)     The number of most important features (arrows) to display in the ordination.                 [default: 5]" name="pnumberoffeatures" optional="True" type="integer" min="1" value="5"/>
-
-		<repeat name="m_sample_metadatafile" optional="False" title="--m-sample-metadata-file  [required]">
-			<param label="--m-sample-metadata-file: (multiple arguments will be merged)  The sample metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
 
-		<repeat name="m_feature_metadatafile" optional="True" title="--m-feature-metadata-file">
-			<param label="--m-feature-metadata-file: (multiple arguments will be merged)  The feature metadata (useful to manipulate the arrows in the plot).  [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-biplot: ARTIFACT PCoAResults % Properties(\'biplot\') The principal coordinates matrix to be plotted. [required]" name="ibiplot" optional="False" type="data" />
+    <repeat name="input_files_msamplemetadatafile" optional="False" title="--m-sample-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-sample-metadata-file: METADATA... (multiple          The sample metadata arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <repeat name="input_files_mfeaturemetadatafile" optional="True" title="--m-feature-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-feature-metadata-file: METADATA... (multiple          The feature metadata (useful to manipulate the arrows arguments will    in the plot). be merged)                                                     [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--p-ignore-missing-samples: --p-ignore-missing-samples: / --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: \'This sample has no metadata\'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean" />
+    <param label="--p-invert: --p-invert: / --p-no-invert If specified, the point and arrow coordinates will be swapped.                               [default: False]" name="pinvert" selected="False" type="boolean" />
+    <param label="--p-number-of-features: INTEGER Range(1, None)     The number of most important features (arrows) to display in the ordination. “Importance” is calculated for each feature based on the vector’s magnitude (euclidean distance from origin).          [default: 5]" min="1" name="pnumberoffeatures" optional="True" type="integer" value="5" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Visualize and Interact with Principal Coordinates Analysis Biplot
-#################################################################
+###############################################################
 
 Generates an interactive ordination biplot where the user can visually
-integrate sample and feature metadata.
+integrate sample and feature metadata. Vectors representing the n most
+important features are then plotted in the emperor visualization (5
+largest, by default).
 
 Parameters
 ----------
@@ -88,16 +99,19 @@
     metadata are included by setting all metadata values to: "This sample
     has no metadata". This flag is only applied if at least one sample is
     present in both the coordinates matrix and the metadata.
+invert : Bool, optional
+    If specified, the point and arrow coordinates will be swapped.
 number_of_features : Int % Range(1, None), optional
     The number of most important features (arrows) to display in the
-    ordination.
+    ordination. “Importance” is calculated for each feature based on the
+    vector’s magnitude (euclidean distance from origin).
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_emperor_plot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_emperor_plot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,57 +1,73 @@
 <?xml version="1.0" ?>
-<tool id="qiime_emperor_plot" name="qiime emperor plot" version="2019.7">
-	<description> - Visualize and Interact with Principal Coordinates Analysis Plots</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_emperor_plot" name="qiime emperor plot"
+      version="2020.8">
+  <description>Visualize and Interact with Principal Coordinates Analysis Plots</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime emperor plot
 
 --i-pcoa=$ipcoa
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
 #if str($pcustomaxes):
- --p-custom-axes="$pcustomaxes"
+  --p-custom-axes=$pcustomaxes
 #end if
-
 #if $pignoremissingsamples:
  --p-ignore-missing-samples
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-pcoa: ARTIFACT    The principal coordinates matrix to be plotted. PCoAResults                                                     [required]" name="ipcoa" optional="False" type="data"/>
-		<param label="--p-custom-axes: TEXT... List[Str]          Numeric sample metadata columns that should be included as axes in the Emperor plot.        [optional]" name="pcustomaxes" optional="True" type="text"/>
-		<param label="--p-ignore-missing-samples: --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: 'This sample has no metadata'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-pcoa: ARTIFACT    The principal coordinates matrix to be plotted. PCoAResults                                                     [required]" name="ipcoa" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-custom-axes: TEXT... List[Str]          Numeric sample metadata columns that should be included as axes in the Emperor plot.        [optional]" name="pcustomaxes" optional="False" type="text" />
+    <param label="--p-ignore-missing-samples: --p-ignore-missing-samples: / --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: \'This sample has no metadata\'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Visualize and Interact with Principal Coordinates Analysis Plots
-################################################################
+###############################################################
 
 Generates an interactive ordination plot where the user can visually
 integrate sample metadata.
@@ -75,9 +91,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_emperor_procrustes-plot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_emperor_procrustes-plot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,74 +1,82 @@
 <?xml version="1.0" ?>
-<tool id="qiime_emperor_procrustes-plot" name="qiime emperor procrustes-plot" version="2019.7">
-	<description> - Visualize and Interact with a procrustes plot</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_emperor_procrustes-plot" name="qiime emperor procrustes-plot"
+      version="2020.8">
+  <description>Visualize and Interact with a procrustes plot</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime emperor procrustes-plot
 
 --i-reference-pcoa=$ireferencepcoa
 
 --i-other-pcoa=$iotherpcoa
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
-
-#if '__sq__' in str($pcustomaxes):
-  #set $pcustomaxes_temp = $pcustomaxes.replace('__sq__', "'")
-  #set $pcustomaxes = $pcustomaxes_temp
-#end if
-
-#if '__cb__' in str($pcustomaxes):
-  #set $pcustomaxes_temp = $pcustomaxes.replace('__cb__', "]")
-  #set $pcustomaxes = $pcustomaxes_temp
-#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
 #if str($pcustomaxes):
- --p-custom-axes="$pcustomaxes"
+  --p-custom-axes=$pcustomaxes
 #end if
-
-
-
-
 #if $pignoremissingsamples:
  --p-ignore-missing-samples
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-reference-pcoa: ARTIFACT PCoAResults        The reference ordination matrix to be plotted. [required]" name="ireferencepcoa" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-other-pcoa: ARTIFACT PCoAResults        The 'other' ordination matrix to be plotted (the one that was fitted to the reference).           [required]" name="iotherpcoa" optional="False" type="data"/>
-		<param label="--p-custom-axes: TEXT... List[Str]          Numeric sample metadata columns that should be included as axes in the Emperor plot.        [optional]" name="pcustomaxes" optional="True" type="text"/>
-		<param label="--p-ignore-missing-samples: --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: 'This sample has no metadata'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean"/>
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-reference-pcoa: ARTIFACT PCoAResults        The reference ordination matrix to be plotted. [required]" name="ireferencepcoa" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-other-pcoa: ARTIFACT PCoAResults        The \'other\' ordination matrix to be plotted (the one that was fitted to the reference).           [required]" name="iotherpcoa" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-custom-axes: TEXT... List[Str]          Numeric sample metadata columns that should be included as axes in the Emperor plot.        [optional]" name="pcustomaxes" optional="False" type="text" />
+    <param label="--p-ignore-missing-samples: --p-ignore-missing-samples: / --p-no-ignore-missing-samples This will suppress the error raised when the coordinates matrix contains samples that are not present in the metadata. Samples without metadata are included by setting all metadata values to: \'This sample has no metadata\'. This flag is only applied if at least one sample is present in both the coordinates matrix and the metadata.               [default: False]" name="pignoremissingsamples" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Visualize and Interact with a procrustes plot
-#############################################
+###############################################################
 
 Plot two procrustes-fitted matrices
 
@@ -94,9 +102,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_classify-consensus-blast.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_classify-consensus-blast.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,105 +1,74 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_classify-consensus-blast" name="qiime feature-classifier classify-consensus-blast" version="2019.7">
-	<description> - BLAST+ consensus taxonomy classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-classifier_classify-consensus-blast" name="qiime feature-classifier classify-consensus-blast"
+      version="2020.8">
+  <description>BLAST+ consensus taxonomy classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier classify-consensus-blast
 
 --i-query=$iquery
+
 --i-reference-reads=$ireferencereads
 
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp
---i-reference-taxonomy '$tax'
-#else:
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
---i-reference-taxonomy '$tax'
-#end if
+--i-reference-taxonomy=$ireferencetaxonomy
+
+--p-maxaccepts=$pmaxaccepts
 
+--p-perc-identity=$ppercidentity
 
-#if str($pmaxaccepts):
- --p-maxaccepts=$pmaxaccepts
-#end if
+--p-query-cov=$pquerycov
 
-#if str($ppercidentity):
- --p-perc-identity=$ppercidentity
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
 #end if
 
-#if str($pquerycov):
- --p-query-cov=$pquerycov
-#end if
-
-#if str($pstrand) != 'None':
- --p-strand=$pstrand
-#end if
-
-#if str($pevalue):
- --p-evalue=$pevalue
-#end if
+--p-evalue=$pevalue
 
-#if str($pminconsensus):
- --p-min-consensus=$pminconsensus
-#end if
-
-
-
-
-
-#if '__sq__' in str($punassignablelabel):
-  #set $punassignablelabel_temp = $punassignablelabel.replace('__sq__', "'")
-  #set $punassignablelabel = $punassignablelabel_temp
-#end if
+--p-min-consensus=$pminconsensus
 
 #if str($punassignablelabel):
- --p-unassignable-label="$punassignablelabel"
+  --p-unassignable-label=$punassignablelabel
+#end if
+--o-classification=oclassification
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
-
---o-classification=oclassification
 ;
 cp oclassification.qza $oclassification
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.      [required]" name="iquery" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                      [required]" name="ireferencereads" optional="False" type="data"/>
-
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
 
-		<param label="--p-maxaccepts: INTEGER  Maximum number of hits to keep for each query. Must Range(1, None)        be in range [1, infinity]. BLAST will choose the first N hits in the reference database that exceed perc-identity similarity to query.     [default: 10]" name="pmaxaccepts" optional="True" type="integer" min="1" value="10"/>
-		<param label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to query is lower. Must be in range [0.0, 1.0].          [default: 0.8]" name="ppercidentity" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.8"/>
-		<param label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if query alignment coverage per high-scoring pair is lower. Note: this uses blastn's qcov_hsp_perc parameter, and may not behave identically to the query-cov parameter used by classify-consensus-vsearch. Must be in range [0.0, 1.0].                                 [default: 0.8]" name="pquerycov" optional="True" min="0" max="1" exclude_max="False" type="float" value="0.8"/>
-		<param label="--p-strand: " name="pstrand" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="both">both</option>
-			<option value="plus">plus</option>
-			<option value="minus">minus</option>
-		</param>
-		<param label="--p-evalue: NUMBER       BLAST expectation value (E) threshold for saving hits.                               [default: 0.001]" name="pevalue" optional="True" type="float" value="0.001"/>
-		<param label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True)   Minimum fraction of assignments must match top hit to be accepted as consensus assignment. Must be in range (0.5, 1.0].                    [default: 0.51]" name="pminconsensus" optional="True" type="float" min="0.5" max="1" exclude_min="True" exclude_max="False" value="0.51"/>
-		<param label="--p-unassignable-label: TEXT [default: 'Unassigned']" name="punassignablelabel" optional="True" type="text" value="Unassigned"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.      [required]" name="iquery" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                      [required]" name="ireferencereads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] reference taxonomy labels.                [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param label="--p-maxaccepts: INTEGER  Maximum number of hits to keep for each query. Must Range(1, None)        be in range [1, infinity]. BLAST will choose the first N hits in the reference database that exceed perc-identity similarity to query.     [default: 10]" min="1" name="pmaxaccepts" optional="True" type="integer" value="10" />
+    <param exclude_max="False" label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to query is lower. Must be in range [0.0, 1.0].          [default: 0.8]" max="1.0" min="0.0" name="ppercidentity" optional="True" type="float" value="0.8" />
+    <param exclude_max="False" label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if query alignment coverage per high-scoring pair is lower. Note: this uses blastn\'s qcov_hsp_perc parameter, and may not behave identically to the query-cov parameter used by classify-consensus-vsearch. Must be in range [0.0, 1.0].                                 [default: 0.8]" max="1.0" min="0.0" name="pquerycov" optional="True" type="float" value="0.8" />
+    <param label="--p-strand: " name="pstrand" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="plus">plus</option>
+      <option value="minus">minus</option>
+    </param>
+    <param label="--p-evalue: NUMBER       BLAST expectation value (E) threshold for saving hits.                               [default: 0.001]" name="pevalue" optional="True" type="float" value="0.001" />
+    <param exclude_max="False" exclude_min="True" label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True)   Minimum fraction of assignments must match top hit to be accepted as consensus assignment. Must be in range (0.5, 1.0].                    [default: 0.51]" max="1.0" min="0.5" name="pminconsensus" optional="True" type="float" value="0.51" />
+    <param label="--p-unassignable-label: TEXT [default: \'Unassigned\']" name="punassignablelabel" optional="False" type="text" value="\'Unassigned\'" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
+
+  <help><![CDATA[
 BLAST+ consensus taxonomy classifier
-####################################
+###############################################################
 
 Assign taxonomy to query sequences using BLAST+. Performs BLAST+ local
 alignment between query and reference_reads, then assigns consensus
@@ -137,15 +106,14 @@
     Minimum fraction of assignments must match top hit to be accepted as
     consensus assignment. Must be in range (0.5, 1.0].
 unassignable_label : Str, optional
-	\
 
 Returns
 -------
 classification : FeatureData[Taxonomy]
     Taxonomy classifications of query sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_classify-consensus-vsearch.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_classify-consensus-vsearch.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,122 +1,114 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_classify-consensus-vsearch" name="qiime feature-classifier classify-consensus-vsearch" version="2019.7">
-	<description> - VSEARCH consensus taxonomy classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-classifier_classify-consensus-vsearch" name="qiime feature-classifier classify-consensus-vsearch"
+      version="2020.8">
+  <description>VSEARCH-based consensus taxonomy classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier classify-consensus-vsearch
 
 --i-query=$iquery
+
 --i-reference-reads=$ireferencereads
 
+--i-reference-taxonomy=$ireferencetaxonomy
 
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp
---i-reference-taxonomy '$tax'
-#else:
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
---i-reference-taxonomy '$tax'
+#if str($pmaxaccepts) != 'None':
+--p-maxaccepts=$pmaxaccepts
 #end if
 
-
-#if $psearchexact:
-  --p-search-exact
-#end if
-
+--p-perc-identity=$ppercidentity
 
-#if $ptophitsonly:
-  --p-top-hits-only
-#end if
-
-
+--p-query-cov=$pquerycov
 
-#if str($pmaxaccepts):
- --p-maxaccepts=$pmaxaccepts
-#end if
-
-#if str($ppercidentity):
- --p-perc-identity=$ppercidentity
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
 #end if
 
-#if str($pquerycov):
- --p-query-cov=$pquerycov
+--p-min-consensus=$pminconsensus
+
+#if str($punassignablelabel):
+  --p-unassignable-label=$punassignablelabel
+#end if
+#if $psearchexact:
+ --p-search-exact
 #end if
 
-#if str($pstrand) != 'None':
- --p-strand=$pstrand
-#end if
-
-#if str($pminconsensus):
- --p-min-consensus=$pminconsensus
+#if $ptophitsonly:
+ --p-top-hits-only
 #end if
 
-
-
-
+#if str($pmaxhits) != 'None':
+--p-maxhits=$pmaxhits
+#end if
 
-#if '__sq__' in str($punassignablelabel):
-  #set $punassignablelabel_temp = $punassignablelabel.replace('__sq__', "'")
-  #set $punassignablelabel = $punassignablelabel_temp
+#if str($pmaxrejects) != 'None':
+--p-maxrejects=$pmaxrejects
 #end if
 
-#if str($punassignablelabel):
- --p-unassignable-label="$punassignablelabel"
+#if $pnooutputnohits:
+ --p-no-output-no-hits
 #end if
 
-
-
+--p-weak-id=$pweakid
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
+--p-threads=$pthreads
 
 --o-classification=oclassification
 
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oclassification.qza $oclassification
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.      [required]" name="iquery" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                      [required]" name="ireferencereads" optional="False" type="data"/>
-
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
 
-		<param label="--p-maxaccepts: INTEGER  Maximum number of hits to keep for each query. Set Range(0, None)        to 0 to keep all hits > perc-identity similarity. Must be in range [0, infinity].        [default: 10]" name="pmaxaccepts" optional="True" type="integer" min="0" value="10"/>
-		<param label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to query is lower. Must be in range [0.0, 1.0].          [default: 0.8]" name="ppercidentity" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.8"/>
-		<param label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if query alignment coverage per high-scoring pair is lower. Must be in range [0.0, 1.0].                                 [default: 0.8]" name="pquerycov" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.8"/>
-		<param label="--p-strand: Align against reference sequences in forward   ('plus') or both directions ('both').  [default: 'both']" name="pstrand" optional="True" type="select">
-			<option value="None">Selection is Optional</option>
-			<option selected="True" value="both">both</option>
-			<option value="plus">plus</option>
-		</param>
-		<param label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True)   Minimum fraction of assignments must match top hit to be accepted as consensus assignment. Must be in range (0.5, 1.0].                    [default: 0.51]" name="pminconsensus" optional="True" type="float" min="0.5" max="1" exclude_min="True" exclude_max="False" value="0.51"/>
-		<param label="--p-unassignable-label: TEXT [default: 'Unassigned']" name="punassignablelabel" optional="True" type="text" value="Unassigned"/>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.      [required]" name="iquery" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                      [required]" name="ireferencereads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] reference taxonomy labels.                [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param label="--p-maxaccepts: " name="pmaxaccepts" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param exclude_max="False" label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to query is lower. [default: 0.8]" max="1.0" min="0.0" name="ppercidentity" optional="True" type="float" value="0.8" />
+    <param exclude_max="False" label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if query alignment coverage per high-scoring pair is lower.           [default: 0.8]" max="1.0" min="0.0" name="pquerycov" optional="True" type="float" value="0.8" />
+    <param label="--p-strand: " name="pstrand" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="plus">plus</option>
+    </param>
+    <param exclude_max="False" exclude_min="True" label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True)   Minimum fraction of assignments must match top hit to be accepted as consensus assignment. [default: 0.51]" max="1.0" min="0.5" name="pminconsensus" optional="True" type="float" value="0.51" />
+    <param label="--p-unassignable-label: TEXT [default: \'Unassigned\']" name="punassignablelabel" optional="False" type="text" value="\'Unassigned\'" />
+    <param label="--p-search-exact: --p-search-exact: / --p-no-search-exact Search for exact full-length matches to the query sequences. Only 100% exact matches are reported and this command is much faster than the default. If True, the perc-identity and query-cov settings are ignored. Note: query and reference reads must be trimmed to the exact same DNA locus (e.g., primer site) because only exact matches will be reported. [default: False]" name="psearchexact" selected="False" type="boolean" />
+    <param label="--p-top-hits-only: --p-top-hits-only: / --p-no-top-hits-only Only the top hits between the query and reference sequence sets are reported. For each query, the top hit is the one presenting the highest percentage of identity. Multiple equally scored top hits will be used for consensus taxonomic assignment if maxaccepts is greater than 1.       [default: False]" name="ptophitsonly" selected="False" type="boolean" />
+    <param label="--p-maxhits: " name="pmaxhits" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-maxrejects: " name="pmaxrejects" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-no-output-no-hits: Do not report both matching and non-matching queries. WARNING: always use the default setting for this option unless if you know what you are doing! If you set this option to False, your sequences and feature table will need to be filtered to exclude unclassified sequences, otherwise you may run into errors downstream from missing feature IDs. [default: True]" name="pnooutputnohits" selected="False" type="boolean" />
+    <param exclude_max="False" label="--p-weak-id: PROPORTION Range(0.0, 1.0, inclusive_end=True) Show hits with percentage of identity of at least N, without terminating the search. A normal search stops as soon as enough hits are found (as defined by maxaccepts, maxrejects, and perc-identity). As weak-id reports weak hits that are not deduced from maxaccepts, high perc-identity values can be used, hence preserving both speed and sensitivity. Logically, weak-id must be smaller than the value indicated by perc-identity, otherwise this option will be ignored.                      [default: 0.0]" max="1.0" min="0.0" name="pweakid" optional="True" type="float" value="0.0" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-
-		<param label="--p-search-exact:  Search for exact full-length matches to the query sequences. Only 100% exact matches are reported and this command is much faster than the default. If True, the perc-identity and query-cov settings are ignored. Note: query and reference reads must be trimmed to the exact same DNA locus (e.g., primer site) because only exact matches will be reported.       [default: False]" name="psearchexact" selected="False" type="boolean"/>
-		<param label="--p-top-hits-only:  Only the top hits between the query and reference sequence sets are reported. For each query, the top hit is the one presenting the highest percentage of identity. Multiple equally scored top hits will be used for consensus taxonomic assignment if maxaccepts is greater than 1.                    [default: False]" name="ptophitsonly" selected="False" type="boolean"/>
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification"/>
-	</outputs>
-	<help><![CDATA[
+  <help><![CDATA[
 VSEARCH-based consensus taxonomy classifier
+###############################################################
 
 Assign taxonomy to query sequences using VSEARCH. Performs VSEARCH global
 alignment between query and reference_reads, then assigns consensus
@@ -135,7 +127,18 @@
     reference taxonomy labels.
 maxaccepts : Int % Range(1, None) | Str % Choices('all'), optional
     Maximum number of hits to keep for each query. Set to "all" to keep all
-    hits > perc_identity similarity.
+    hits > perc_identity similarity. Note that if strand=both, maxaccepts
+    will keep N hits for each direction (if searches in the opposite
+    direction yield results that exceed the minimum perc_identity). In
+    those cases use maxhits to control the total number of hits returned.
+    This option works in pair with maxrejects. The search process sorts
+    target sequences by decreasing number of k-mers they have in common
+    with the query sequence, using that information as a proxy for sequence
+    similarity. After pairwise alignments, if the first target sequence
+    passes the acceptation criteria, it is accepted as best hit and the
+    search process stops for that query. If maxaccepts is set to a higher
+    value, more hits are accepted. If maxaccepts and maxrejects are both
+    set to "all", the complete database is searched.
 perc_identity : Float % Range(0.0, 1.0, inclusive_end=True), optional
     Reject match if percent identity to query is lower.
 query_cov : Float % Range(0.0, 1.0, inclusive_end=True), optional
@@ -159,6 +162,26 @@
     reported. For each query, the top hit is the one presenting the highest
     percentage of identity. Multiple equally scored top hits will be used
     for consensus taxonomic assignment if maxaccepts is greater than 1.
+maxhits : Int % Range(1, None) | Str % Choices('all'), optional
+    Maximum number of hits to show once the search is terminated.
+maxrejects : Int % Range(1, None) | Str % Choices('all'), optional
+    Maximum number of non-matching target sequences to consider before
+    stopping the search. This option works in pair with maxaccepts (see
+    maxaccepts description for details).
+output_no_hits : Bool, optional
+    Report both matching and non-matching queries. WARNING: always use the
+    default setting for this option unless if you know what you are doing!
+    If you set this option to False, your sequences and feature table will
+    need to be filtered to exclude unclassified sequences, otherwise you
+    may run into errors downstream from missing feature IDs.
+weak_id : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    Show hits with percentage of identity of at least N, without
+    terminating the search. A normal search stops as soon as enough hits
+    are found (as defined by maxaccepts, maxrejects, and perc_identity). As
+    weak_id reports weak hits that are not deduced from maxaccepts, high
+    perc_identity values can be used, hence preserving both speed and
+    sensitivity. Logically, weak_id must be smaller than the value
+    indicated by perc_identity, otherwise this option will be ignored.
 threads : Int % Range(1, None), optional
     Number of threads to use for job parallelization.
 
@@ -166,9 +189,9 @@
 -------
 classification : FeatureData[Taxonomy]
     The resulting taxonomy classifications.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_classify-hybrid-vsearch-sklearn.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_classify-hybrid-vsearch-sklearn.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,168 +1,126 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_classify-hybrid-vsearch-sklearn" name="qiime feature-classifier classify-hybrid-vsearch-sklearn" version="2019.7">
-	<description> -  ALPHA Hybrid classifier: VSEARCH exact match + sklearn classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-classifier_classify-hybrid-vsearch-sklearn" name="qiime feature-classifier classify-hybrid-vsearch-sklearn"
+      version="2020.8">
+  <description> ALPHA Hybrid classifier: VSEARCH exact match + sklearn classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier classify-hybrid-vsearch-sklearn
-    
+
 --i-query=$iquery
+
 --i-reference-reads=$ireferencereads
 
-
-
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp
---i-reference-taxonomy '$tax'
-#else:
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
---i-reference-taxonomy '$tax'
-#end if
-
-
-
-
+--i-reference-taxonomy=$ireferencetaxonomy
 
-#if str( $id_to_classifier_fp.selector ) == 'history'
-#set $classifier = $id_to_classifier_fp.classifier_fp
---i-classifier '$classifier'
-#else:
-#set $classifier = $id_to_classifier_fp.classifier_fp.fields.path
---i-classifier '$classifier'
-#end if
-
+--i-classifier=$iclassifier
 
-
-
-
-#if str($pmaxaccepts):
- --p-maxaccepts=$pmaxaccepts
-#end if
-
-#if str($pconfidence):
- --p-confidence=$pconfidence
+#if str($pmaxaccepts) != 'None':
+--p-maxaccepts=$pmaxaccepts
 #end if
 
-
-
+--p-perc-identity=$ppercidentity
 
-#if str($ppercidentity):
- --p-perc-identity=$ppercidentity
-#end if
+--p-query-cov=$pquerycov
 
-#if str($pquerycov):
- --p-query-cov=$pquerycov
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
 #end if
 
-#if str($pstrand) != 'None':
- --p-strand=$pstrand
+--p-min-consensus=$pminconsensus
+
+#if str($pmaxhits) != 'None':
+--p-maxhits=$pmaxhits
 #end if
 
-#if str($pminconsensus):
- --p-min-consensus=$pminconsensus
-#end if
-
-
-#if str($preadorientation) != 'None':
- --p-read-orientation=$preadorientation
+#if str($pmaxrejects) != 'None':
+--p-maxrejects=$pmaxrejects
 #end if
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-
-#if str($pthreads):
-
-#if str($pthreads):
- --p-threads="$pthreads"
+#if str($pconfidence) != 'None':
+--p-confidence=$pconfidence
 #end if
 
+#if str($preadorientation) != 'None':
+--p-read-orientation=$preadorientation
 #end if
 
+--p-threads=$pthreads
 
-#if $pprefilter:
- --p-prefilter
+#if $pnoprefilter:
+ --p-no-prefilter
 #end if
 
-#if str($psamplesize):
- --p-sample-size=$psamplesize
-#end if
+--p-sample-size=$psamplesize
 
-#if str($prandseed):
- --p-randseed=$prandseed
-#end if
-
+--p-randseed=$prandseed
 
 --o-classification=oclassification
 
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oclassification.qza $oclassification
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.        [required]" name="iquery" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                        [required]" name="ireferencereads" optional="False" type="data"/>
-
-
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
-
 
-		<conditional name="id_to_classifier_fp" optional="True">
-		   <param name="selector" type="select" label="Reference classifier to query">
-			  <option value="cached">Public classifiers</option>
-			  <option value="history">Classifiers from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param name="classifier_fp" label="Reference classifier" type="select" optional="True">
-				 <options from_data_table="qiime_rep_set" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param name="classifier_fp" type="data" format="qza,no_unzip.zip" label="Reference classifier" optional="True" />
-		   </when>
-		</conditional>
-
-
-		<param label="--p-maxaccepts: VALUE Int % Range(1, None) | Str % Choices('all') Maximum number of hits to keep for each query. Set to 'all' to keep all hits > perc-identity similarity.  [default: 10]" name="pmaxaccepts" optional="True" type="text" value="10" />
-		<param label="--p-confidence: VALUE Float % Range(0, 1, inclusive_end=True) | Str % Choices('disable')  Confidence threshold for limiting taxonomic depth. Set to 'disable' to disable confidence calculation, or 0 to calculate confidence but not apply it to limit the taxonomic depth of the assignments. [default: 0.7]" name="pconfidence" optional="True" type="text" value="0.7" />
-
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-query: ARTIFACT FeatureData[Sequence] Sequences to classify taxonomically.        [required]" name="iquery" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] reference sequences.                        [required]" name="ireferencereads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] reference taxonomy labels.                  [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-classifier: ARTIFACT TaxonomicClassifier Pre-trained sklearn taxonomic classifier for classifying the reads.                      [required]" name="iclassifier" optional="False" type="data" />
+    <param label="--p-maxaccepts: " name="pmaxaccepts" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param exclude_max="False" label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Percent sequence similarity to use for PREFILTER. Reject match if percent identity to query is lower. Set to a lower value to perform a rough pre-filter. This parameter is ignored if `prefilter` is disabled. [default: 0.5]" max="1.0" min="0.0" name="ppercidentity" optional="True" type="float" value="0.5" />
+    <param exclude_max="False" label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Query coverage threshold to use for PREFILTER. Reject match if query alignment coverage per high-scoring pair is lower. Set to a lower value to perform a rough pre-filter. This parameter is ignored if `prefilter` is disabled.                            [default: 0.8]" max="1.0" min="0.0" name="pquerycov" optional="True" type="float" value="0.8" />
+    <param label="--p-strand: " name="pstrand" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="plus">plus</option>
+    </param>
+    <param exclude_max="False" exclude_min="True" label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True) Minimum fraction of assignments must match top hit to be accepted as consensus assignment.   [default: 0.51]" max="1.0" min="0.5" name="pminconsensus" optional="True" type="float" value="0.51" />
+    <param label="--p-maxhits: " name="pmaxhits" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-maxrejects: " name="pmaxrejects" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-confidence: " name="pconfidence" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Float % Range(0">Float % Range(0</option>
+      <option value="1">1</option>
+      <option value="inclusive_end=True">inclusive_end=True</option>
+    </param>
+    <param label="--p-read-orientation: " name="preadorientation" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="same">same</option>
+      <option value="reverse-complement">reverse-complement</option>
+      <option value="auto">auto</option>
+    </param>
+    <param label="--p-no-prefilter: Do not toggle positive filter of query sequences on or off. [default: True]" name="pnoprefilter" selected="False" type="boolean" />
+    <param label="--p-sample-size: INTEGER Range(1, None)      Randomly extract the given number of sequences from the reference database to use for prefiltering. This parameter is ignored if `prefilter` is disabled. [default: 1000]" min="1" name="psamplesize" optional="True" type="integer" value="1000" />
+    <param label="--p-randseed: INTEGER  Use integer as a seed for the pseudo-random generator Range(0, None)      used during prefiltering. A given seed always produces the same output, which is useful for replicability. Set to 0 to use a pseudo-random seed. This parameter is ignored if `prefilter` is disabled.    [default: 0]" min="0" name="prandseed" optional="True" type="integer" value="0" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Percent sequence similarity to use for PREFILTER. Reject match if percent identity to query is lower. Set to a lower value to perform a rough pre-filter. This parameter is ignored if `prefilter` is disabled. [default: 0.5]" name="ppercidentity" optional="True" type="float" value="0.5" min="0" max="1" exclusive_end="False" />
-		<param label="--p-query-cov: PROPORTION Range(0.0, 1.0, inclusive_end=True) Query coverage threshold to use for PREFILTER. Reject match if query alignment coverage per high-scoring pair is lower. Set to a lower value to perform a rough pre-filter. This parameter is ignored if `prefilter` is disabled.                            [default: 0.8]" name="pquerycov" optional="True" type="float" value="0.8" min="0" max="1" exclusive_end="False" />
-		<param label="--p-strand: " name="pstrand" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="both">both</option>
-			<option value="plus">plus</option>
-		</param>
-		<param label="--p-min-consensus: NUMBER Range(0.5, 1.0, inclusive_start=False, inclusive_end=True) Minimum fraction of assignments must match top hit to be accepted as consensus assignment.   [default: 0.51]" name="pminconsensus" optional="True" type="float" value="0.51" min="0.5" max="1" exclusive_end="True" />
-		<param label="--p-read-orientation: TEXT Choices('same', 'reverse-complement', 'auto') Direction of reads with respect to reference sequences in pre-trained sklearn classifier. same will cause reads to be classified unchanged; reverse-complement will cause reads to be reversed and complemented prior to classification. 'auto' will autodetect orientation based on the confidence estimates for the first 100 reads.   [default: 'auto'] " name="preadorientation" optional="True" type="select" >
-			<option value="None">Selection is Optional</option>
-			<option value="same">same</option>
-			<option value="reverse-complement">reverse-complement</option>
-			<option selected="True" value="auto">auto</option>
-		</param>
-		<param label="--p-prefilter: --p-no-prefilter Toggle positive filter of query sequences on or off. [default: True]" name="pprefilter" selected="False" type="boolean"/>
-		<param label="--p-sample-size: INTEGER Range(1, None)      Randomly extract the given number of sequences from the reference database to use for prefiltering. This parameter is ignored if `prefilter` is disabled. [default: 1000]" name="psamplesize" optional="True" type="integer" value="1000" min="1"/>
-		<param label="--p-randseed: INTEGER  Use integer as a seed for the pseudo-random generator Range(0, None)      used during prefiltering. A given seed always produces the same output, which is useful for replicability. Set to 0 to use a pseudo-random seed. This parameter is ignored if `prefilter` is disabled.    [default: 0]" name="prandseed" optional="True" type="integer" value="0" min="0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification"/>
-	</outputs>
-	<help><![CDATA[
-ALPHA Hybrid classifier: VSEARCH exact match + sklearn classifier
-##################################################################
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
+
+  <help><![CDATA[
+ ALPHA Hybrid classifier: VSEARCH exact match + sklearn classifier
+###############################################################
 
 NOTE: THIS PIPELINE IS AN ALPHA RELEASE. Please report bugs to
 https://forum.qiime2.org! Assign taxonomy to query sequences using hybrid
@@ -187,7 +145,18 @@
     Pre-trained sklearn taxonomic classifier for classifying the reads.
 maxaccepts : Int % Range(1, None) | Str % Choices('all'), optional
     Maximum number of hits to keep for each query. Set to "all" to keep all
-    hits > perc_identity similarity.
+    hits > perc_identity similarity. Note that if strand=both, maxaccepts
+    will keep N hits for each direction (if searches in the opposite
+    direction yield results that exceed the minimum perc_identity). In
+    those cases use maxhits to control the total number of hits returned.
+    This option works in pair with maxrejects. The search process sorts
+    target sequences by decreasing number of k-mers they have in common
+    with the query sequence, using that information as a proxy for sequence
+    similarity. After pairwise alignments, if the first target sequence
+    passes the acceptation criteria, it is accepted as best hit and the
+    search process stops for that query. If maxaccepts is set to a higher
+    value, more hits are accepted. If maxaccepts and maxrejects are both
+    set to "all", the complete database is searched.
 perc_identity : Float % Range(0.0, 1.0, inclusive_end=True), optional
     Percent sequence similarity to use for PREFILTER. Reject match if
     percent identity to query is lower. Set to a lower value to perform a
@@ -203,6 +172,8 @@
 min_consensus : Float % Range(0.5, 1.0, inclusive_start=False, inclusive_end=True), optional
     Minimum fraction of assignments must match top hit to be accepted as
     consensus assignment.
+maxhits : Int % Range(1, None) | Str % Choices('all'), optional
+maxrejects : Int % Range(1, None) | Str % Choices('all'), optional
 reads_per_batch : Int % Range(0, None), optional
     Number of reads to process in each batch for sklearn classification. If
     "auto", this parameter is autoscaled to min(number of query sequences /
@@ -217,6 +188,8 @@
     reverse-complement will cause reads to be reversed and complemented
     prior to classification. "auto" will autodetect orientation based on
     the confidence estimates for the first 100 reads.
+threads : Int % Range(1, None), optional
+    Number of threads to use for job parallelization.
 prefilter : Bool, optional
     Toggle positive filter of query sequences on or off.
 sample_size : Int % Range(1, None), optional
@@ -233,9 +206,9 @@
 -------
 classification : FeatureData[Taxonomy]
     The resulting taxonomy classifications.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_classify-sklearn.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_classify-sklearn.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,75 +1,64 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_classify-sklearn" name="qiime feature-classifier classify-sklearn" version="2019.7">
-	<description> - Pre-fitted sklearn-based taxonomy classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-classifier_classify-sklearn" name="qiime feature-classifier classify-sklearn"
+      version="2020.8">
+  <description>Pre-fitted sklearn-based taxonomy classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier classify-sklearn
 
-
-#if str( $id_to_classifier_fp.selector ) == 'history'
-#set $classifier = $id_to_classifier_fp.classifier_fp
---i-classifier '$classifier'
-#else:
-#set $classifier = $id_to_classifier_fp.classifier_fp.fields.path
---i-classifier '$classifier'
-#end if
-
-
 --i-reads=$ireads
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+--i-classifier=$iclassifier
 
+--p-n-jobs=$pnjobs
 
-#if str($pconfidence) != '':
-  #if float($pconfidence) >= 0.0:
-	--p-confidence=$pconfidence
-  #end if
+#if str($pconfidence) != 'None':
+--p-confidence=$pconfidence
 #end if
 
 #if str($preadorientation) != 'None':
- --p-read-orientation=$preadorientation
+--p-read-orientation=$preadorientation
 #end if
 
 --o-classification=oclassification
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oclassification.qza $oclassification
-	]]></command>
-	<inputs>
-		<conditional name="id_to_classifier_fp" optional="True">
-		   <param name="selector" type="select" label="Reference classifier to query">
-			  <option value="cached">Public classifiers</option>
-			  <option value="history">Classifiers from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param name="classifier_fp" label="Reference classifier" type="select" optional="True">
-				 <options from_data_table="qiime_rep_set" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param name="classifier_fp" type="data" format="qza,no_unzip.zip" label="Reference classifier" optional="True" />
-		   </when>
-		</conditional>
 
-		<param format="qza,no_unzip.zip" label="--i-reads: ARTIFACT FeatureData[Sequence] The feature data to be classified.         [required]" name="ireads" optional="False" type="data"/>
-		<param label="--p-confidence: NUMBER  Confidence threshold for limiting taxonomic depth. Provide -1 to disable confidence calculation, or 0 to calculate confidence but not apply it to limit the taxonomic depth of the assignments.    [default: 0.7]" name="pconfidence" optional="True" type="float" value="0.7"/>
-		<param label="--p-read-orientation: " name="preadorientation" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="same">same</option>
-			<option value="reverse-complement">reverse-complement</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-reads: ARTIFACT FeatureData[Sequence] The feature data to be classified.         [required]" name="ireads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-classifier: ARTIFACT TaxonomicClassifier  The taxonomic classifier for classifying the reads. [required]" name="iclassifier" optional="False" type="data" />
+    <param label="--p-confidence: " name="pconfidence" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Float % Range(0">Float % Range(0</option>
+      <option value="1">1</option>
+      <option value="inclusive_end=True">inclusive_end=True</option>
+    </param>
+    <param label="--p-read-orientation: " name="preadorientation" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="same">same</option>
+      <option value="reverse-complement">reverse-complement</option>
+      <option value="auto">auto</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Pre-fitted sklearn-based taxonomy classifier
-############################################
+###############################################################
 
 Classify reads by taxon using a fitted classifier.
 
@@ -80,27 +69,33 @@
 classifier : TaxonomicClassifier
     The taxonomic classifier for classifying the reads.
 reads_per_batch : Int % Range(0, None), optional
-    Number of reads to process in each batch. If 0, this parameter is
+    Number of reads to process in each batch. If "auto", this parameter is
     autoscaled to min( number of query sequences / n_jobs, 20000).
+n_jobs : Int, optional
+    The maximum number of concurrently worker processes. If -1 all CPUs are
+    used. If 1 is given, no parallel computing code is used at all, which
+    is useful for debugging. For n_jobs below -1, (n_cpus + 1 + n_jobs) are
+    used. Thus for n_jobs = -2, all CPUs but one are used.
 pre_dispatch : Str, optional
     "all" or expression, as in "3*n_jobs". The number of batches (of tasks)
     to be pre-dispatched.
-confidence : Float, optional
-    Confidence threshold for limiting taxonomic depth. Provide -1 to
+confidence : Float % Range(0, 1, inclusive_end=True) | Str % Choices('disable'), optional
+    Confidence threshold for limiting taxonomic depth. Set to "disable" to
     disable confidence calculation, or 0 to calculate confidence but not
     apply it to limit the taxonomic depth of the assignments.
-read_orientation : Str % Choices('same', 'reverse-complement'), optional
+read_orientation : Str % Choices('same', 'reverse-complement', 'auto'), optional
     Direction of reads with respect to reference sequences. same will cause
     reads to be classified unchanged; reverse-complement will cause reads
-    to be reversed and complemented prior to classification. Default is to
-    autodetect based on the confidence estimates for the first 100 reads.
+    to be reversed and complemented prior to classification. "auto" will
+    autodetect orientation based on the confidence estimates for the first
+    100 reads.
 
 Returns
 -------
 classification : FeatureData[Taxonomy]
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_extract-reads.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_extract-reads.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,100 +1,104 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_extract-reads" name="qiime feature-classifier extract-reads" version="2019.7">
-	<description> - Extract reads from reference</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-
-
-#if str( $input_sequences.selector ) == 'history'
-	#set $seq = $input_sequences.i_sequences
-
-#else:
-	qiime tools import --type 'FeatureData[Sequence]' --input-path '$input_sequences.i_sequences.fields.path' --output-path database.qza;
-	#set $seq = 'database.qza'
-#end if
-
-
+<tool id="qiime_feature-classifier_extract-reads" name="qiime feature-classifier extract-reads"
+      version="2020.8">
+  <description>Extract reads from reference sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier extract-reads
 
---i-sequences=$seq
+--i-sequences=$isequences
+
+--p-f-primer=$pfprimer
 
---p-f-primer="$pfprimer"
---p-r-primer="$prprimer"
+--p-r-primer=$prprimer
 
-#if str($ptrunclen):
- --p-trunc-len=$ptrunclen
-#end if
+--p-trim-right=$ptrimright
+
+--p-trunc-len=$ptrunclen
 
-#if str($ptrimleft):
- --p-trim-left=$ptrimleft
-#end if
+--p-trim-left=$ptrimleft
+
+--p-identity=$pidentity
+
+--p-min-length=$pminlength
 
-#if str($pidentity):
- --p-identity=$pidentity
-#end if
+--p-max-length=$pmaxlength
 
-#if str($pminlength):
- --p-min-length=$pminlength
-#end if
+--p-n-jobs=$pnjobs
 
-#if str($pmaxlength):
- --p-max-length=$pmaxlength
+#if str($preadorientation) != 'None':
+--p-read-orientation=$preadorientation
 #end if
 
 --o-reads=oreads
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oreads.qza $oreads
-	]]></command>
-	<inputs>
-		<conditional name="input_sequences" optional="False">
-		   <param name="selector" type="select" label="--i-sequences: FeatureData[Sequence] [required] - Reference sequences to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param name="i_sequences" label="--i-sequences: FeatureData[Sequence] [required] - Reference sequences" type="select" optional="True">
-				 <options from_data_table="qiime_rep_set" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param name="i_sequences" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
 
-		<param label="--p-f-primer: TEXT       forward primer sequence                   [required]" name="pfprimer" optional="False" type="text"/>
-		<param label="--p-r-primer: TEXT       reverse primer sequence                   [required]" name="prprimer" optional="False" type="text"/>
-		<param label="--p-trunc-len: INTEGER   read is cut to trunc-len if trunc-len is positive. Applied before trim-left.               [default: 0]" name="ptrunclen" optional="True" type="integer" value="0"/>
-		<param label="--p-trim-left: INTEGER   trim-left nucleotides are removed from the 5' end if trim-left is positive. Applied after trunc-len. [default: 0]" name="ptrimleft" optional="True" type="integer" value="0"/>
-		<param label="--p-identity: NUMBER     minimum combined primer match identity threshold. [default: 0.8]" name="pidentity" optional="True" type="float" value="0.8"/>
-		<param label="--p-min-length: INTEGER  Minimum amplicon length. Shorter amplicons are Range(0, None)        discarded. Applied after trimming and truncation, so be aware that trimming may impact sequence retention. Set to zero to disable min length filtering.                             [default: 50]" name="pminlength" optional="True" type="integer" min="0" value="50"/>
-		<param label="--p-max-length: INTEGER  Maximum amplicon length. Longer amplicons are Range(0, None)        discarded. Applied before trimming and truncation, so plan accordingly. Set to zero (default) to disable max length filtering.           [default: 0]" name="pmaxlength" optional="True" type="integer" min="0" value="0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: reads.qza" name="oreads"/>
-	</outputs>
-	<help><![CDATA[
-Extract reads from reference
-############################
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-f-primer: TEXT       forward primer sequence (5\' -&gt; 3\').       [required]" name="pfprimer" optional="False" type="text" />
+    <param label="--p-r-primer: TEXT       reverse primer sequence (5\' -&gt; 3\'). Do not use reverse-complemented primer sequence.     [required]" name="prprimer" optional="False" type="text" />
+    <param label="--p-trim-right: INTEGER  trim-right nucleotides are removed from the 3\' end if trim-right is positive. Applied before trunc-len and trim-left.                          [default: 0]" name="ptrimright" optional="True" type="integer" value="0" />
+    <param label="--p-trunc-len: INTEGER   read is cut to trunc-len if trunc-len is positive. Applied after trim-right but before trim-left. [default: 0]" name="ptrunclen" optional="True" type="integer" value="0" />
+    <param label="--p-trim-left: INTEGER   trim-left nucleotides are removed from the 5\' end if trim-left is positive. Applied after trim-right and trunc-len.                          [default: 0]" name="ptrimleft" optional="True" type="integer" value="0" />
+    <param label="--p-identity: NUMBER     minimum combined primer match identity threshold. [default: 0.8]" name="pidentity" optional="True" type="float" value="0.8" />
+    <param label="--p-min-length: INTEGER  Minimum amplicon length. Shorter amplicons are Range(0, None)        discarded. Applied after trimming and truncation, so be aware that trimming may impact sequence retention. Set to zero to disable min length filtering.                             [default: 50]" min="0" name="pminlength" optional="True" type="integer" value="50" />
+    <param label="--p-max-length: INTEGER  Maximum amplicon length. Longer amplicons are Range(0, None)        discarded. Applied before trimming and truncation, so plan accordingly. Set to zero (default) to disable max length filtering.           [default: 0]" min="0" name="pmaxlength" optional="True" type="integer" value="0" />
+    <param label="--p-read-orientation: " name="preadorientation" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="forward">forward</option>
+      <option value="reverse">reverse</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-Extract sequencing-like reads from a reference database.
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: reads.qza" name="oreads" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Extract reads from reference sequences.
+###############################################################
+
+Extract simulated amplicon reads from a reference database. Performs in-
+silico PCR to extract simulated amplicons from reference sequences that
+match the input primer sequences (within the mismatch threshold specified
+by `identity`). Both primer sequences must be in the 5' -> 3' orientation.
+Sequences that fail to match both primers will be excluded. Reads are
+extracted, trimmed, and filtered in the following order: 1. reads are
+extracted in specified orientation; 2. primers are removed; 3. reads longer
+than `max_length` are removed; 4. reads are trimmed with `trim_right`; 5.
+reads are truncated to `trunc_len`; 6. reads are trimmed with `trim_left`;
+7. reads shorter than `min_length` are removed.
 
 Parameters
 ----------
 sequences : FeatureData[Sequence]
-	\
-
 f_primer : Str
-    forward primer sequence
+    forward primer sequence (5' -> 3').
 r_primer : Str
-    reverse primer sequence
+    reverse primer sequence (5' -> 3'). Do not use reverse-complemented
+    primer sequence.
+trim_right : Int, optional
+    trim_right nucleotides are removed from the 3' end if trim_right is
+    positive. Applied before trunc_len and trim_left.
 trunc_len : Int, optional
-    read is cut to trunc_len if trunc_len is positive. Applied before
-    trim_left.
+    read is cut to trunc_len if trunc_len is positive. Applied after
+    trim_right but before trim_left.
 trim_left : Int, optional
     trim_left nucleotides are removed from the 5' end if trim_left is
-    positive. Applied after trunc_len.
+    positive. Applied after trim_right and trunc_len.
 identity : Float, optional
     minimum combined primer match identity threshold.
 min_length : Int % Range(0, None), optional
@@ -105,13 +109,22 @@
     Maximum amplicon length. Longer amplicons are discarded. Applied before
     trimming and truncation, so plan accordingly. Set to zero (default) to
     disable max length filtering.
+n_jobs : Int % Range(1, None), optional
+    Number of seperate processes to run.
+batch_size : Int % Range(1, None) | Str % Choices('auto'), optional
+    Number of sequences to process in a batch. The `auto` option is
+    calculated from the number of sequences and number of jobs specified.
+read_orientation : Str % Choices('both', 'forward', 'reverse'), optional
+    Orientation of primers relative to the sequences: "forward" searches
+    for primer hits in the forward direction, "reverse" searches reverse-
+    complement, and "both" searches both directions.
 
 Returns
 -------
 reads : FeatureData[Sequence]
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_fit-classifier-naive-bayes.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_fit-classifier-naive-bayes.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,56 +1,28 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_fit-classifier-naive-bayes" name="qiime feature-classifier fit-classifier-naive-bayes" version="2019.7">
-	<description> - Train the naive_bayes classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-#else:
-	#set $tax_path = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	qiime tools import --type 'FeatureData[Taxonomy]'  --input-format HeaderlessTSVTaxonomyFormat --input-path $tax_path --output-path ref-taxonomy.qza;
-	#set $tax='ref-taxonomy.qza'
-#end if
-
-
+<tool id="qiime_feature-classifier_fit-classifier-naive-bayes" name="qiime feature-classifier fit-classifier-naive-bayes"
+      version="2020.8">
+  <description>Train the naive_bayes classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier fit-classifier-naive-bayes
 
-
---i-reference-taxonomy '$tax'
-
-
 --i-reference-reads=$ireferencereads
 
-#if str($iclassweight) != 'None':
- --i-class-weight=$iclassweight
-#end if
+--i-reference-taxonomy=$ireferencetaxonomy
 
-#if str($pclassifyalpha):
- --p-classify--alpha=$pclassifyalpha
-#end if
-
-#if str($pclassifychunksize):
- --p-classify--chunk-size=$pclassifychunksize
+#if str($iclassweight) != 'None':
+--i-class-weight=$iclassweight
 #end if
 
-
-
+--p-classify--alpha=$pclassifyalpha
 
-#if '__sq__' in str($pclassifyclassprior):
-  #set $pclassifyclassprior_temp = $pclassifyclassprior.replace('__sq__', "'")
-  #set $pclassifyclassprior = $pclassifyclassprior_temp
-#end if
+--p-classify--chunk-size=$pclassifychunksize
 
 #if str($pclassifyclassprior):
- --p-classify--class-prior="$pclassifyclassprior"
+  --p-classify--class-prior=$pclassifyclassprior
 #end if
-
-
-
-
 #if $pclassifyfitprior:
  --p-classify--fit-prior
 #end if
@@ -59,320 +31,178 @@
  --p-feat-ext--alternate-sign
 #end if
 
-
-
-
-
-#if '__sq__' in str($pfeatextanalyzer):
-  #set $pfeatextanalyzer_temp = $pfeatextanalyzer.replace('__sq__', "'")
-  #set $pfeatextanalyzer = $pfeatextanalyzer_temp
+#if str($pfeatextanalyzer):
+  --p-feat-ext--analyzer=$pfeatextanalyzer
 #end if
-
-#if str($pfeatextanalyzer):
- --p-feat-ext--analyzer="$pfeatextanalyzer"
-#end if
-
-
-
-
-
 #if $pfeatextbinary:
  --p-feat-ext--binary
 #end if
 
-
-
-#if '__sq__' in str($pfeatextdecodeerror):
-  #set $pfeatextdecodeerror_temp = $pfeatextdecodeerror.replace('__sq__', "'")
-  #set $pfeatextdecodeerror = $pfeatextdecodeerror_temp
-#end if
-
 #if str($pfeatextdecodeerror):
- --p-feat-ext--decode-error="$pfeatextdecodeerror"
-#end if
-
-
-
-
-
-#if '__sq__' in str($pfeatextencoding):
-  #set $pfeatextencoding_temp = $pfeatextencoding.replace('__sq__', "'")
-  #set $pfeatextencoding = $pfeatextencoding_temp
+  --p-feat-ext--decode-error=$pfeatextdecodeerror
 #end if
-
 #if str($pfeatextencoding):
- --p-feat-ext--encoding="$pfeatextencoding"
+  --p-feat-ext--encoding=$pfeatextencoding
 #end if
-
-
-
-
-
-#if '__sq__' in str($pfeatextinput):
-  #set $pfeatextinput_temp = $pfeatextinput.replace('__sq__', "'")
-  #set $pfeatextinput = $pfeatextinput_temp
+#if str($pfeatextinput):
+  --p-feat-ext--input=$pfeatextinput
 #end if
-
-#if str($pfeatextinput):
- --p-feat-ext--input="$pfeatextinput"
-#end if
-
-
-
-
 #if $pnofeatextlowercase:
  --p-no-feat-ext--lowercase
 #end if
 
-#if str($pfeatextnfeatures):
- --p-feat-ext--n-features=$pfeatextnfeatures
-#end if
-
-
-
-
-#if '__sq__' in str($pfeatextngramrange):
-  #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('__sq__', "'")
-  #set $pfeatextngramrange = $pfeatextngramrange_temp
-#end if
+--p-feat-ext--n-features=$pfeatextnfeatures
 
 #if '__ob__' in str($pfeatextngramrange):
   #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('__ob__', '[')
   #set $pfeatextngramrange = $pfeatextngramrange_temp
 #end if
+#if '__cb__' in str($pfeatextngramrange):
+  #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('__cb__', ']')
+  #set $pfeatextngramrange = $pfeatextngramrange_temp
+#end if
 #if 'X' in str($pfeatextngramrange):
   #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('X', '\\')
   #set $pfeatextngramrange = $pfeatextngramrange_temp
 #end if
-
-#if str($pfeatextngramrange):
- --p-feat-ext--ngram-range="$pfeatextngramrange"
+#if '__sq__' in str($pfeatextngramrange):
+  #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('__sq__', "'")
+  #set $pfeatextngramrange = $pfeatextngramrange_temp
+#end if
+#if '__db__' in str($pfeatextngramrange):
+  #set $pfeatextngramrange_temp = $pfeatextngramrange.replace('__db__', '"')
+  #set $pfeatextngramrange = $pfeatextngramrange_temp
 #end if
 
-
-
-
-
-#if $pfeatextnonnegative:
- --p-feat-ext--non-negative
-#end if
-
-
-#if '__sq__' in str($pfeatextnorm):
-  #set $pfeatextnorm_temp = $pfeatextnorm.replace('__sq__', "'")
-  #set $pfeatextnorm = $pfeatextnorm_temp
+#if str($pfeatextngramrange):
+  --p-feat-ext--ngram-range=$pfeatextngramrange
 #end if
 
 #if str($pfeatextnorm):
- --p-feat-ext--norm="$pfeatextnorm"
+  --p-feat-ext--norm=$pfeatextnorm
 #end if
-
-
-
-
-#if '__sq__' in str($pfeatextpreprocessor):
-  #set $pfeatextpreprocessor_temp = $pfeatextpreprocessor.replace('__sq__', "'")
-  #set $pfeatextpreprocessor = $pfeatextpreprocessor_temp
-#end if
-
 #if str($pfeatextpreprocessor):
- --p-feat-ext--preprocessor="$pfeatextpreprocessor"
+  --p-feat-ext--preprocessor=$pfeatextpreprocessor
 #end if
-
-
-
-
-#if '__sq__' in str($pfeatextstopwords):
-  #set $pfeatextstopwords_temp = $pfeatextstopwords.replace('__sq__', "'")
-  #set $pfeatextstopwords = $pfeatextstopwords_temp
-#end if
-
 #if str($pfeatextstopwords):
- --p-feat-ext--stop-words="$pfeatextstopwords"
+  --p-feat-ext--stop-words=$pfeatextstopwords
 #end if
-
-
-
-
-
-#if '__sq__' in str($pfeatextstripaccents):
-  #set $pfeatextstripaccents_temp = $pfeatextstripaccents.replace('__sq__', "'")
-  #set $pfeatextstripaccents = $pfeatextstripaccents_temp
-#end if
-
 #if str($pfeatextstripaccents):
- --p-feat-ext--strip-accents="$pfeatextstripaccents"
+  --p-feat-ext--strip-accents=$pfeatextstripaccents
 #end if
-
-
-
-
-
-
-#if '__sq__' in str($pfeatexttokenpattern):
-  #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('__sq__', "'")
-  #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
-#end if
-
 #if '__ob__' in str($pfeatexttokenpattern):
   #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('__ob__', '[')
   #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
 #end if
-
+#if '__cb__' in str($pfeatexttokenpattern):
+  #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('__cb__', ']')
+  #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
+#end if
 #if 'X' in str($pfeatexttokenpattern):
   #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('X', '\\')
   #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
 #end if
+#if '__sq__' in str($pfeatexttokenpattern):
+  #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('__sq__', "'")
+  #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
+#end if
+#if '__db__' in str($pfeatexttokenpattern):
+  #set $pfeatexttokenpattern_temp = $pfeatexttokenpattern.replace('__db__', '"')
+  #set $pfeatexttokenpattern = $pfeatexttokenpattern_temp
+#end if
 
 #if str($pfeatexttokenpattern):
- --p-feat-ext--token-pattern="$pfeatexttokenpattern"
-#end if
-
-
-
-
-
-#if '__sq__' in str($pfeatexttokenizer):
-  #set $pfeatexttokenizer_temp = $pfeatexttokenizer.replace('__sq__', "'")
-  #set $pfeatexttokenizer = $pfeatexttokenizer_temp
+  --p-feat-ext--token-pattern=$pfeatexttokenpattern
 #end if
 
 #if str($pfeatexttokenizer):
- --p-feat-ext--tokenizer="$pfeatexttokenizer"
+  --p-feat-ext--tokenizer=$pfeatexttokenizer
+#end if
+#if $pverbose:
+ --p-verbose
 #end if
 
 --o-classifier=oclassifier
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oclassifier.qza $oclassifier
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] [required]" name="ireferencereads" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-class-weight: ARTIFACT FeatureTable[RelativeFrequency] [optional]" name="iclassweight" optional="True" type="data"/>
-
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
 
-		<param label="--p-classify--alpha: NUMBER [default: 0.001]" name="pclassifyalpha" optional="True" type="float" value="0.001"/>
-		<param label="--p-classify--chunk-size: INTEGER [default: 20000]" name="pclassifychunksize" optional="True" type="integer" value="20000"/>
-		<param label="--p-classify--class-prior: TEXT [default: 'null']" name="pclassifyclassprior" optional="True" type="text" value="null"/>
-		<param label="--p-classify--fit-prior: --p-no-classify--fit-prior [default: False]" name="pclassifyfitprior" selected="False" type="boolean"/>
-		<param label="--p-feat-ext--alternate-sign: --p-no-feat-ext--alternate-sign [default: False]" name="pfeatextalternatesign" selected="False" type="boolean"/>
-		<param label="--p-feat-ext--analyzer: TEXT [default: 'char_wb']" name="pfeatextanalyzer" optional="True" type="text" value="char_wb"/>
-		<param label="--p-feat-ext--binary: --p-no-feat-ext--binary [default: False]" name="pfeatextbinary" selected="False" type="boolean"/>
-		<param label="--p-feat-ext--decode-error: TEXT [default: 'strict']" name="pfeatextdecodeerror" optional="True" type="text" value="strict"/>
-		<param label="--p-feat-ext--encoding: TEXT [default: 'utf-8']" name="pfeatextencoding" optional="True" type="text" value="utf-8"/>
-		<param label="--p-feat-ext--input: TEXT [default: 'content']" name="pfeatextinput" optional="True" type="text" value="content"/>
-		<param label="--p-no-feat-ext--lowercase:  [default: False]" name="pnofeatextlowercase" selected="False" type="boolean"/>
-		<param label="--p-feat-ext--n-features: INTEGER [default: 8192]" name="pfeatextnfeatures" optional="True" type="integer" value="8192"/>
-		<param label="--p-feat-ext--ngram-range: TEXT [default: '[7, 7]']" name="pfeatextngramrange" optional="True" type="text" value="[7, 7]"/>
-		<param label="--p-feat-ext--non-negative: --p-no-feat-ext--non-negative [default: False]" name="pfeatextnonnegative" selected="False" type="boolean"/>
-		<param label="--p-feat-ext--norm: TEXT [default: 'l2']" name="pfeatextnorm" optional="True" type="text" value="l2"/>
-		<param label="--p-feat-ext--preprocessor: TEXT [default: 'null']" name="pfeatextpreprocessor" optional="True" type="text" value="null"/>
-		<param label="--p-feat-ext--stop-words: TEXT [default: 'null']" name="pfeatextstopwords" optional="True" type="text" value="null"/>
-		<param label="--p-feat-ext--strip-accents: TEXT [default: 'null']" name="pfeatextstripaccents" optional="True" type="text" value="null"/>
-		<param label="--p-feat-ext--token-pattern: TEXT [default: '(?u)\\b\\w\\w+\\b']" name="pfeatexttokenpattern" optional="True" type="text" value="(?u)\\b\\w\\w+\\b"/>
-		<param label="--p-feat-ext--tokenizer: TEXT [default: 'null']" name="pfeatexttokenizer" optional="True" type="text" value="null"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classifier.qza" name="oclassifier"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] [required]" name="ireferencereads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-class-weight: ARTIFACT FeatureTable[RelativeFrequency] [optional]" name="iclassweight" optional="False" type="data" />
+    <param label="--p-classify--alpha: NUMBER [default: 0.001]" name="pclassifyalpha" optional="True" type="float" value="0.001" />
+    <param label="--p-classify--chunk-size: INTEGER [default: 20000]" name="pclassifychunksize" optional="True" type="integer" value="20000" />
+    <param label="--p-classify--class-prior: TEXT [default: \'null\']" name="pclassifyclassprior" optional="False" type="text" value="\'null\'" />
+    <param label="--p-classify--fit-prior: --p-classify--fit-prior: / --p-no-classify--fit-prior [default: False]" name="pclassifyfitprior" selected="False" type="boolean" />
+    <param label="--p-feat-ext--alternate-sign: --p-feat-ext--alternate-sign: / --p-no-feat-ext--alternate-sign [default: False]" name="pfeatextalternatesign" selected="False" type="boolean" />
+    <param label="--p-feat-ext--analyzer: TEXT [default: \'char_wb\']" name="pfeatextanalyzer" optional="False" type="text" value="\'char_wb\'" />
+    <param label="--p-feat-ext--binary: --p-feat-ext--binary: / --p-no-feat-ext--binary [default: False]" name="pfeatextbinary" selected="False" type="boolean" />
+    <param label="--p-feat-ext--decode-error: TEXT [default: \'strict\']" name="pfeatextdecodeerror" optional="False" type="text" value="\'strict\'" />
+    <param label="--p-feat-ext--encoding: TEXT [default: \'utf-8\']" name="pfeatextencoding" optional="False" type="text" value="\'utf-8\'" />
+    <param label="--p-feat-ext--input: TEXT [default: \'content\']" name="pfeatextinput" optional="False" type="text" value="\'content\'" />
+    <param label="--p-no-feat-ext--lowercase: Do not [default: True]" name="pnofeatextlowercase" selected="False" type="boolean" />
+    <param label="--p-feat-ext--n-features: INTEGER [default: 8192]" name="pfeatextnfeatures" optional="True" type="integer" value="8192" />
+    <param label="--p-feat-ext--ngram-range: TEXT [default: \'[7, 7]\']" name="pfeatextngramrange" optional="False" type="text" value="\'[7, 7]" />
+    <param label="--p-feat-ext--norm: TEXT [default: \'l2\']" name="pfeatextnorm" optional="False" type="text" value="\'l2\'" />
+    <param label="--p-feat-ext--preprocessor: TEXT [default: \'null\']" name="pfeatextpreprocessor" optional="False" type="text" value="\'null\'" />
+    <param label="--p-feat-ext--stop-words: TEXT [default: \'null\']" name="pfeatextstopwords" optional="False" type="text" value="\'null\'" />
+    <param label="--p-feat-ext--strip-accents: TEXT [default: \'null\']" name="pfeatextstripaccents" optional="False" type="text" value="\'null\'" />
+    <param label="--p-feat-ext--token-pattern: TEXT [default: \'(?u)\\\\b\\\\w\\\\w+\\\\b\']" name="pfeatexttokenpattern" optional="False" type="text" value="\'(?u)\\\\b\\\\w\\\\w+\\\\b\'" />
+    <param label="--p-feat-ext--tokenizer: TEXT [default: \'null\']" name="pfeatexttokenizer" optional="False" type="text" value="\'null\'" />
+    <param label="--p-verbose: --p-verbose: / --p-no-verbose [default: False]" name="pverbose" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classifier.qza" name="oclassifier" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Train the naive_bayes classifier
-################################
+###############################################################
 
 Create a scikit-learn naive_bayes classifier for reads
 
 Parameters
 ----------
 reference_reads : FeatureData[Sequence]
-	\
-
 reference_taxonomy : FeatureData[Taxonomy]
-	\
-
 class_weight : FeatureTable[RelativeFrequency], optional
-	\
-
 classify__alpha : Float, optional
-	\
-
 classify__chunk_size : Int, optional
-	\
-
 classify__class_prior : Str, optional
-	\
-
 classify__fit_prior : Bool, optional
-	\
-
 feat_ext__alternate_sign : Bool, optional
-	\
-
 feat_ext__analyzer : Str, optional
-	\
-
 feat_ext__binary : Bool, optional
-	\
-
 feat_ext__decode_error : Str, optional
-	\
-
 feat_ext__encoding : Str, optional
-	\
-
 feat_ext__input : Str, optional
-	\
-
 feat_ext__lowercase : Bool, optional
-	\
-
 feat_ext__n_features : Int, optional
-	\
-
 feat_ext__ngram_range : Str, optional
-	\
-
-feat_ext__non_negative : Bool, optional
-	\
-
 feat_ext__norm : Str, optional
-	\
-
 feat_ext__preprocessor : Str, optional
-	\
-
 feat_ext__stop_words : Str, optional
-	\
-
 feat_ext__strip_accents : Str, optional
-	\
-
 feat_ext__token_pattern : Str, optional
-	\
-
 feat_ext__tokenizer : Str, optional
-	\
+verbose : Bool, optional
 
 Returns
 -------
 classifier : TaxonomicClassifier
-	\
-
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-classifier_fit-classifier-sklearn.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-classifier_fit-classifier-sklearn.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,86 +1,66 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-classifier_fit-classifier-sklearn" name="qiime feature-classifier fit-classifier-sklearn" version="2019.7">
-	<description> - Train an almost arbitrary scikit-learn classifier</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-classifier_fit-classifier-sklearn" name="qiime feature-classifier fit-classifier-sklearn"
+      version="2020.8">
+  <description>Train an almost arbitrary scikit-learn classifier</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-classifier fit-classifier-sklearn
 
 --i-reference-reads=$ireferencereads
 
+--i-reference-taxonomy=$ireferencetaxonomy
 
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp
---i-reference-taxonomy '$tax'
-#else:
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
---i-reference-taxonomy '$tax'
+#if str($iclassweight) != 'None':
+--i-class-weight=$iclassweight
 #end if
 
-
---p-classifier-specification="$pclassifierspecification"
+--p-classifier-specification=$pclassifierspecification
 
-#if str($iclassweight) != 'None':
- --i-class-weight=$iclassweight
+--o-classifier=oclassifier
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-classifier=oclassifier
 ;
 cp oclassifier.qza $oclassifier
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] [required]" name="ireferencereads" optional="False" type="data"/>
-		
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
-		
-		<param label="--p-classifier-specification: TEXT [required]" name="pclassifierspecification" optional="False" type="text"/>
-		<param format="qza,no_unzip.zip" label="--i-class-weight: ARTIFACT FeatureTable[RelativeFrequency] [optional]" name="iclassweight" optional="True" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classifier.qza" name="oclassifier"/>
-	</outputs>
-	<help><![CDATA[
-rain an almost arbitrary scikit-learn classifier
-################################################
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-reference-reads: ARTIFACT FeatureData[Sequence] [required]" name="ireferencereads" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-class-weight: ARTIFACT FeatureTable[RelativeFrequency] [optional]" name="iclassweight" optional="False" type="data" />
+    <param label="--p-classifier-specification: TEXT [required]" name="pclassifierspecification" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classifier.qza" name="oclassifier" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Train an almost arbitrary scikit-learn classifier
+###############################################################
 
 Train a scikit-learn classifier to classify reads.
 
 Parameters
 ----------
 reference_reads : FeatureData[Sequence]
-	\
-
 reference_taxonomy : FeatureData[Taxonomy]
-	\
-
 classifier_specification : Str
-	\
-
 class_weight : FeatureTable[RelativeFrequency], optional
-	\
 
 Returns
 -------
 classifier : TaxonomicClassifier
-	\
-
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_core-features.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_core-features.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,69 +1,82 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_core-features" name="qiime feature-table core-features" version="2019.7">
-	<description> - Identify core features in table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_core-features" name="qiime feature-table core-features"
+      version="2020.8">
+  <description>Identify core features in table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table core-features
 
 --i-table=$itable
 
-#if str($pminfraction):
- --p-min-fraction=$pminfraction
-#end if
+--p-min-fraction=$pminfraction
 
-#if str($pmaxfraction):
- --p-max-fraction=$pmaxfraction
-#end if
+--p-max-fraction=$pmaxfraction
 
-#if str($psteps):
- --p-steps=$psteps
-#end if
+--p-steps=$psteps
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp oclassifier.qza $oclassifier
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to use in core features calculations.                                [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-min-fraction: PROPORTION Range(0.0, 1.0, inclusive_start=False) The minimum fraction of samples that a feature must be observed in for that feature to be considered a core feature.                                 [default: 0.5]" name="pminfraction" optional="True" type="float" value="0.5"/>
-		<param label="--p-max-fraction: PROPORTION Range(0.0, 1.0, inclusive_end=True) The maximum fraction of samples that a feature must be observed in for that feature to be considered a core feature.                                 [default: 1.0]" name="pmaxfraction" optional="True" type="float" value="1.0"/>
-		<param label="--p-steps: INTEGER    The number of steps to take between `min-fraction` and Range(2, None)     `max-fraction` for core features calculations. This parameter has no effect if `min-fraction` and `max-fraction` are the same value.        [default: 11]" name="psteps" optional="True" type="integer" value="11"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
-Train an almost arbitrary scikit-learn classifier
-#################################################
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to use in core features calculations.                                [required]" name="itable" optional="False" type="data" />
+    <param exclude_min="True" label="--p-min-fraction: PROPORTION Range(0.0, 1.0, inclusive_start=False) The minimum fraction of samples that a feature must be observed in for that feature to be considered a core feature.                                 [default: 0.5]" max="1.0" min="0.0" name="pminfraction" optional="True" type="float" value="0.5" />
+    <param exclude_max="False" label="--p-max-fraction: PROPORTION Range(0.0, 1.0, inclusive_end=True) The maximum fraction of samples that a feature must be observed in for that feature to be considered a core feature.                                 [default: 1.0]" max="1.0" min="0.0" name="pmaxfraction" optional="True" type="float" value="1.0" />
+    <param label="--p-steps: INTEGER    The number of steps to take between `min-fraction` and Range(2, None)     `max-fraction` for core features calculations. This parameter has no effect if `min-fraction` and `max-fraction` are the same value.        [default: 11]" min="2" name="psteps" optional="True" type="integer" value="11" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-Train a scikit-learn classifier to classify reads.
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Identify core features in table
+###############################################################
+
+Identify "core" features, which are features observed in a user-defined
+fraction of the samples. Since the core features are a function of the
+fraction of samples that the feature must be observed in to be considered
+core, this is computed over a range of fractions defined by the
+`min_fraction`, `max_fraction`, and `steps` parameters.
 
 Parameters
 ----------
-reference_reads : FeatureData[Sequence]
-	\
-
-reference_taxonomy : FeatureData[Taxonomy]
-	\
-
-classifier_specification : Str
-	\
-
-class_weight : FeatureTable[RelativeFrequency], optional
-	\
+table : FeatureTable[Frequency]
+    The feature table to use in core features calculations.
+min_fraction : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    The minimum fraction of samples that a feature must be observed in for
+    that feature to be considered a core feature.
+max_fraction : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    The maximum fraction of samples that a feature must be observed in for
+    that feature to be considered a core feature.
+steps : Int % Range(2, None), optional
+    The number of steps to take between `min_fraction` and `max_fraction`
+    for core features calculations. This parameter has no effect if
+    `min_fraction` and `max_fraction` are the same value.
 
 Returns
 -------
-classifier : TaxonomicClassifier
-	\
-
-	]]></help>
-<macros>
+visualization : Visualization
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_filter-features.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_filter-features.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,80 +1,97 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_filter-features" name="qiime feature-table filter-features" version="2019.7">
-	<description> - Filter features from table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_filter-features" name="qiime feature-table filter-features"
+      version="2020.8">
+  <description>Filter features from table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table filter-features
 
 --i-table=$itable
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
-#if str($pminfrequency):
- --p-min-frequency=$pminfrequency
-#end if
+--p-min-frequency=$pminfrequency
 
 #if str($pmaxfrequency):
- --p-max-frequency="$pmaxfrequency"
+  --p-max-frequency=$pmaxfrequency
 #end if
-
-#if str($pminsamples):
- --p-min-samples=$pminsamples
-#end if
+--p-min-samples=$pminsamples
 
 #if str($pmaxsamples):
- --p-max-samples="$pmaxsamples"
+  --p-max-samples=$pmaxsamples
+#end if# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__ob__', '[')
+  #set $pwhere = $pwhere_temp
 #end if
-
+#if '__cb__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__cb__', ']')
+  #set $pwhere = $pwhere_temp
+#end if
+#if 'X' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('X', '\\')
+  #set $pwhere = $pwhere_temp
+#end if
 #if '__sq__' in str($pwhere):
   #set $pwhere_temp = $pwhere.replace('__sq__', "'")
   #set $pwhere = $pwhere_temp
 #end if
+#if '__db__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__db__', '"')
+  #set $pwhere = $pwhere_temp
+#end if
 
 #if str($pwhere):
- --p-where="$pwhere"
+  --p-where=$pwhere
 #end if
 
-#if str($pexcludeids):
+#if $pexcludeids:
  --p-exclude-ids
 #end if
 
 --o-filtered-table=ofilteredtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofilteredtable.qza $ofilteredtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table from which features should be filtered.                                    [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-min-frequency: INTEGER The minimum total frequency that a feature must have to be retained.                            [default: 0]" name="pminfrequency" optional="True" type="integer" value="0"/>
-		<param label="--p-max-frequency: INTEGER The maximum total frequency that a feature can have to be retained. If no value is provided this will default to infinity (i.e., no maximum frequency filter will be applied).                                    [optional]" name="pmaxfrequency" optional="True" type="integer"/>
-		<param label="--p-min-samples: INTEGER The minimum number of samples that a feature must be observed in to be retained.                [default: 0]" name="pminsamples" optional="True" type="integer" value="0"/>
-		<param label="--p-max-samples: INTEGER The maximum number of samples that a feature can be observed in to be retained. If no value is provided this will default to infinity (i.e., no maximum sample filter will be applied).                     [optional]" name="pmaxsamples" optional="True" type="integer"/>
-		<param label="--p-where: TEXT       SQLite WHERE clause specifying feature metadata criteria that must be met to be included in the filtered feature table. If not provided, all features in `metadata` that are also in the feature table will be retained.                                 [optional]" name="pwhere" optional="True" type="text"/>
-		<param label="--p-exclude-ids: --p-no-exclude-ids If true, the features selected by `metadata` or `where` parameters will be excluded from the filtered table instead of being retained.       [default: False]" name="pexcludeids" selected="False" type="boolean"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table from which features should be filtered.                                    [required]" name="itable" optional="False" type="data" />
+    <param label="--p-min-frequency: INTEGER The minimum total frequency that a feature must have to be retained.                            [default: 0]" name="pminfrequency" optional="True" type="integer" value="0" />
+    <param label="--p-max-frequency: INTEGER The maximum total frequency that a feature can have to be retained. If no value is provided this will default to infinity (i.e., no maximum frequency filter will be applied).                                    [optional]" name="pmaxfrequency" optional="False" type="text" />
+    <param label="--p-min-samples: INTEGER The minimum number of samples that a feature must be observed in to be retained.                [default: 0]" name="pminsamples" optional="True" type="integer" value="0" />
+    <param label="--p-max-samples: INTEGER The maximum number of samples that a feature can be observed in to be retained. If no value is provided this will default to infinity (i.e., no maximum sample filter will be applied).                     [optional]" name="pmaxsamples" optional="False" type="text" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Feature metadata used with `where` parameter when arguments will    selecting features to retain, or with `exclude-ids` be merged)        when selecting features to discard.          [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--p-where: TEXT       SQLite WHERE clause specifying feature metadata criteria that must be met to be included in the filtered feature table. If not provided, all features in `metadata` that are also in the feature table will be retained.                                 [optional]" name="pwhere" optional="False" type="text" />
+    <param label="--p-exclude-ids: --p-exclude-ids: / --p-no-exclude-ids If true, the features selected by `metadata` or `where` parameters will be excluded from the filtered table instead of being retained.       [default: False]" name="pexcludeids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter features from table
-##########################
+###############################################################
 
 Filter features from table based on frequency and/or metadata. Any samples
 with a frequency of zero after feature filtering will also be removed. See
@@ -113,9 +130,9 @@
 -------
 filtered_table : FeatureTable[Frequency]
     The resulting feature table filtered by feature.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_filter-samples.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_filter-samples.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,80 +1,97 @@
-<?xml version="1.0" ?>
-<tool id="qiime_feature-table_filter-samples" name="qiime feature-table filter-samples" version="2019.7">
-	<description> - Filter samples from table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<?xml version="1.0" ?>
+<tool id="qiime_feature-table_filter-samples" name="qiime feature-table filter-samples"
+      version="2020.8">
+  <description>Filter samples from table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table filter-samples
 
 --i-table=$itable
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
-#if str($pminfrequency):
- --p-min-frequency=$pminfrequency
-#end if
+--p-min-frequency=$pminfrequency
 
 #if str($pmaxfrequency):
- --p-max-frequency="$pmaxfrequency"
+  --p-max-frequency=$pmaxfrequency
 #end if
-
-#if str($pminfeatures):
- --p-min-features=$pminfeatures
-#end if
+--p-min-features=$pminfeatures
 
 #if str($pmaxfeatures):
- --p-max-features="$pmaxfeatures"
+  --p-max-features=$pmaxfeatures
+#end if# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__ob__', '[')
+  #set $pwhere = $pwhere_temp
 #end if
-
+#if '__cb__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__cb__', ']')
+  #set $pwhere = $pwhere_temp
+#end if
+#if 'X' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('X', '\\')
+  #set $pwhere = $pwhere_temp
+#end if
 #if '__sq__' in str($pwhere):
   #set $pwhere_temp = $pwhere.replace('__sq__', "'")
   #set $pwhere = $pwhere_temp
 #end if
+#if '__db__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__db__', '"')
+  #set $pwhere = $pwhere_temp
+#end if
 
 #if str($pwhere):
- --p-where="$pwhere"
+  --p-where=$pwhere
 #end if
 
-
 #if $pexcludeids:
  --p-exclude-ids
 #end if
 
 --o-filtered-table=ofilteredtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofilteredtable.qza $ofilteredtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴] The feature table from which samples should be filtered.                                    [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-min-frequency: INTEGER The minimum total frequency that a sample must have to be retained.                               [default: 0]" name="pminfrequency" optional="True" type="integer" value="0"/>
-		<param label="--p-max-frequency: INTEGER The maximum total frequency that a sample can have to be retained. If no value is provided this will default to infinity (i.e., no maximum frequency filter will be applied).                                    [optional]" name="pmaxfrequency" optional="True" type="integer"/>
-		<param label="--p-min-features: INTEGER The minimum number of features that a sample must have to be retained.                            [default: 0]" name="pminfeatures" optional="True" type="integer" value="0"/>
-		<param label="--p-max-features: INTEGER The maximum number of features that a sample can have to be retained. If no value is provided this will default to infinity (i.e., no maximum feature filter will be applied).                            [optional]" name="pmaxfeatures" optional="True" type="integer"/>
-		<param label="--p-where: TEXT       SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered feature table. If not provided, all samples in `metadata` that are also in the feature table will be retained.                                    [optional]" name="pwhere" optional="True" type="text"/>
-		<param label="--p-exclude-ids: --p-no-exclude-ids If true, the samples selected by `metadata` or `where` parameters will be excluded from the filtered table instead of being retained.             [default: False]" name="pexcludeids" selected="False" type="boolean"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴] The feature table from which samples should be filtered.                                    [required]" name="itable" optional="False" type="data" />
+    <param label="--p-min-frequency: INTEGER The minimum total frequency that a sample must have to be retained.                               [default: 0]" name="pminfrequency" optional="True" type="integer" value="0" />
+    <param label="--p-max-frequency: INTEGER The maximum total frequency that a sample can have to be retained. If no value is provided this will default to infinity (i.e., no maximum frequency filter will be applied).                                    [optional]" name="pmaxfrequency" optional="False" type="text" />
+    <param label="--p-min-features: INTEGER The minimum number of features that a sample must have to be retained.                            [default: 0]" name="pminfeatures" optional="True" type="integer" value="0" />
+    <param label="--p-max-features: INTEGER The maximum number of features that a sample can have to be retained. If no value is provided this will default to infinity (i.e., no maximum feature filter will be applied).                            [optional]" name="pmaxfeatures" optional="False" type="text" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Sample metadata used with `where` parameter when arguments will    selecting samples to retain, or with `exclude-ids` when be merged)        selecting samples to discard.                [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--p-where: TEXT       SQLite WHERE clause specifying sample metadata criteria that must be met to be included in the filtered feature table. If not provided, all samples in `metadata` that are also in the feature table will be retained.                                    [optional]" name="pwhere" optional="False" type="text" />
+    <param label="--p-exclude-ids: --p-exclude-ids: / --p-no-exclude-ids If true, the samples selected by `metadata` or `where` parameters will be excluded from the filtered table instead of being retained.             [default: False]" name="pexcludeids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter samples from table
-#########################
+###############################################################
 
 Filter samples from table based on frequency and/or metadata. Any features
 with a frequency of zero after sample filtering will also be removed. See
@@ -112,9 +129,9 @@
 -------
 filtered_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴]
     The resulting feature table filtered by sample.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_filter-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_filter-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,38 +1,60 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_filter-seqs" name="qiime feature-table filter-seqs" version="2019.7">
-	<description> - Filter features from sequences</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_filter-seqs" name="qiime feature-table filter-seqs"
+      version="2020.8">
+  <description>Filter features from sequences</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table filter-seqs
-
---i-data=$idata
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
+# if $input_files_idata:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-data=$list_dict_to_string($input_files_idata)
+# end if
 
 #if str($itable) != 'None':
- --i-table=$itable
+--i-table=$itable
 #end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
+#if '__ob__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__ob__', '[')
+  #set $pwhere = $pwhere_temp
+#end if
+#if '__cb__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__cb__', ']')
+  #set $pwhere = $pwhere_temp
+#end if
+#if 'X' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('X', '\\')
+  #set $pwhere = $pwhere_temp
+#end if
 #if '__sq__' in str($pwhere):
   #set $pwhere_temp = $pwhere.replace('__sq__', "'")
   #set $pwhere = $pwhere_temp
 #end if
+#if '__db__' in str($pwhere):
+  #set $pwhere_temp = $pwhere.replace('__db__', '"')
+  #set $pwhere = $pwhere_temp
+#end if
 
 #if str($pwhere):
- --p-where="$pwhere"
+  --p-where=$pwhere
 #end if
 
 #if $pexcludeids:
@@ -40,26 +62,37 @@
 #end if
 
 --o-filtered-data=ofiltereddata
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofiltereddata.qza $ofiltereddata
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-data: ARTIFACT FeatureData[Sequence] The sequences from which features should be filtered. [required]" name="idata" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Table containing feature ids used for id-based filtering.                                   [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-where: TEXT       SQLite WHERE clause specifying feature metadata criteria that must be met to be included in the filtered feature table. If not provided, all features in `metadata` that are also in the sequences will be retained.                                    [optional]" name="pwhere" optional="True" type="text"/>
-		<param label="--p-exclude-ids: --p-no-exclude-ids If true, the features selected by the `metadata` (with or without the `where` parameter) or `table` parameter will be excluded from the filtered sequences instead of being retained.                        [default: False]" name="pexcludeids" selected="False" type="boolean"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_idata" optional="False" title="--i-data">
+      <param format="qza,no_unzip.zip" label="--i-data: ARTIFACT FeatureData[Sequence¹ | AlignedSequence²] The sequences from which features should be filtered. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Table containing feature ids used for id-based filtering.                                   [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Feature metadata used for id-based filtering, with arguments will    `where` parameter when selecting features to retain, or be merged)        with `exclude-ids` when selecting features to discard. [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--p-where: TEXT       SQLite WHERE clause specifying feature metadata criteria that must be met to be included in the filtered feature table. If not provided, all features in `metadata` that are also in the sequences will be retained.                                    [optional]" name="pwhere" optional="False" type="text" />
+    <param label="--p-exclude-ids: --p-exclude-ids: / --p-no-exclude-ids If true, the features selected by the `metadata` (with or without the `where` parameter) or `table` parameter will be excluded from the filtered sequences instead of being retained.                        [default: False]" name="pexcludeids" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filtereddata.qza" name="ofiltereddata"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filtereddata.qza" name="ofiltereddata" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter features from sequences
-##############################
+###############################################################
 
 Filter features from sequences based on a feature table or metadata. See
 the filtering tutorial on https://docs.qiime2.org for additional details.
@@ -68,7 +101,7 @@
 
 Parameters
 ----------
-data : FeatureData[Sequence]
+data : FeatureData[Sequence¹ | AlignedSequence²]
     The sequences from which features should be filtered.
 table : FeatureTable[Frequency], optional
     Table containing feature ids used for id-based filtering.
@@ -87,11 +120,11 @@
 
 Returns
 -------
-filtered_data : FeatureData[Sequence]
+filtered_data : FeatureData[Sequence¹ | AlignedSequence²]
     The resulting filtered sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_group.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_group.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,46 +1,90 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_group" name="qiime feature-table group" version="2019.7">
-	<description> - Group samples or features by a metadata column</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_group" name="qiime feature-table group"
+      version="2020.8">
+  <description>Group samples or features by a metadata column</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table group
 
 --i-table=$itable
+
 --p-axis=$paxis
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+
+--m-metadata-column=$mmetadatacolumn
+
+
 --p-mode=$pmode
 
+--o-grouped-table=ogroupedtable
 
---m-metadata-file=$mmedatafile
+#if str($examples) != 'None':
+--examples=$examples
+#end if
 
---o-grouped-table=ogroupedtable
 ;
 cp ogroupedtable.qza $ogroupedtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The table to group samples or features on.   [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-axis: " name="paxis" optional="False" type="select">
-			<option value="feature">feature</option>
-			<option value="sample">sample</option>
-		</param>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] A column defining the groups. Each unique value will become a new ID for the table on the given `axis`. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-mode: " name="pmode" optional="False" type="select">
-			<option value="median-ceiling">median-ceiling</option>
-			<option value="mean-ceiling">mean-ceiling</option>
-			<option value="sum">sum</option>
-		</param>
 
-		<param label="--m-metadata-file  [required]" name="mmedatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The table to group samples or features on.   [required]" name="itable" optional="False" type="data" />
+    <param label="--p-axis: " name="paxis" optional="False" type="select">
+      <option value="sample">sample</option>
+      <option value="feature">feature</option>
+    </param>
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] A column defining the groups. Each unique value will become a new ID for the table on the given `axis`. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-mode: " name="pmode" optional="False" type="select">
+      <option value="sum">sum</option>
+      <option value="mean-ceiling">mean-ceiling</option>
+      <option value="median-ceiling">median-ceiling</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: groupedtable.qza" name="ogroupedtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: groupedtable.qza" name="ogroupedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Group samples or features by a metadata column
-##############################################
+###############################################################
 
 Group samples or features in a feature table using metadata to define the
 mapping of IDs to a group.
@@ -55,7 +99,7 @@
 metadata : MetadataColumn[Categorical]
     A column defining the groups. Each unique value will become a new ID
     for the table on the given `axis`.
-mode : Str % Choices('median-ceiling', 'mean-ceiling', 'sum')
+mode : Str % Choices('sum', 'mean-ceiling', 'median-ceiling')
     How to combine samples or features within a group. `sum` will sum the
     frequencies across all samples or features within a group; `mean-
     ceiling` will take the ceiling of the mean of these frequencies;
@@ -67,9 +111,9 @@
 grouped_table : FeatureTable[Frequency]
     A table that has been grouped along the given `axis`. IDs on that axis
     are replaced by values in the `metadata` column.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_heatmap.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_heatmap.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,20 +1,83 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_heatmap" name="qiime feature-table heatmap" version="2019.7">
-	<description> - Generate a heatmap representation of a feature table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-	qiime feature-table heatmap
+<tool id="qiime_feature-table_heatmap" name="qiime feature-table heatmap"
+      version="2020.8">
+  <description>Generate a heatmap representation of a feature table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime feature-table heatmap
 
 --i-table=$itable
-
+# if $input_files_msamplemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-sample-metadata-file=$list_dict_to_string($input_files_msamplemetadatafile)
+# end if
 
---m-metadata-file=$mmedatafile
+#if '__ob__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__ob__', '[')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__cb__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__cb__', ']')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if 'X' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('X', '\\')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__sq__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__sq__', "'")
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__db__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__db__', '"')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
 
+#if str($msamplemetadatacolumn):
+  --m-sample-metadata-column=$msamplemetadatacolumn
+#end if
+# if $input_files_mfeaturemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-feature-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-feature-metadata-file=$list_dict_to_string($input_files_mfeaturemetadatafile)
+# end if
 
-#if str($mmetadatacolumn):
- --m-metadata-column="$mmetadatacolumn"
+#if '__ob__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__ob__', '[')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__cb__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__cb__', ']')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if 'X' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('X', '\\')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__sq__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__sq__', "'")
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__db__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__db__', '"')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+
+#if str($mfeaturemetadatacolumn):
+  --m-feature-metadata-column=$mfeaturemetadatacolumn
 #end if
 
 #if $pnonormalize:
@@ -22,266 +85,286 @@
 #end if
 
 #if str($ptitle):
- --p-title="$ptitle"
+  --p-title=$ptitle
 #end if
-
 #if str($pmetric) != 'None':
- --p-metric=$pmetric
+--p-metric=$pmetric
 #end if
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
 #if str($pcluster) != 'None':
- --p-cluster=$pcluster
+--p-cluster=$pcluster
 #end if
 
 #if str($pcolorscheme) != 'None':
- --p-color-scheme=$pcolorscheme
+--p-color-scheme=$pcolorscheme
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp ogroupedtable.qza $ogroupedtable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to visualize.            [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Annotate the sample IDs with these metadata values. When metadata is present and `cluster`='feature', samples will be sorted by the metadata values. [optional]" name="mmetadatacolumn" optional="True" type="text"/>
-		<param label="--p-no-normalize: Do not normalize the feature table by adding a psuedocount of 1 and then taking the log10 of the table. [default: False]" name="pnonormalize" selected="False" type="boolean"/>
-		<param label="--p-title: TEXT         Optional custom plot title.                [optional]" name="ptitle" optional="True" type="text"/>
-		<param label="--p-metric: " name="pmetric" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="kulsinski">kulsinski</option>
-			<option value="correlation">correlation</option>
-			<option value="hamming">hamming</option>
-			<option value="canberra">canberra</option>
-			<option value="sqeuclidean">sqeuclidean</option>
-			<option value="sokalmichener">sokalmichener</option>
-			<option value="cityblock">cityblock</option>
-			<option value="braycurtis">braycurtis</option>
-			<option value="matching">matching</option>
-			<option value="russellrao">russellrao</option>
-			<option value="cosine">cosine</option>
-			<option value="yule">yule</option>
-			<option value="minkowski">minkowski</option>
-			<option value="euclidean">euclidean</option>
-			<option value="rogerstanimoto">rogerstanimoto</option>
-			<option value="seuclidean">seuclidean</option>
-			<option value="jaccard">jaccard</option>
-			<option value="sokalsneath">sokalsneath</option>
-			<option value="chebyshev">chebyshev</option>
-			<option value="dice">dice</option>
-			<option value="mahalanobis">mahalanobis</option>
-		</param>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="complete">complete</option>
-			<option value="centroid">centroid</option>
-			<option value="weighted">weighted</option>
-			<option value="single">single</option>
-			<option value="ward">ward</option>
-			<option value="average">average</option>
-			<option value="median">median</option>
-		</param>
-		<param label="--p-cluster: " name="pcluster" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="features">features</option>
-			<option value="both">both</option>
-			<option value="samples">samples</option>
-			<option value="none">none</option>
-		</param>
-		<param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="bone">bone</option>
-			<option value="PRGn_r">PRGn_r</option>
-			<option value="Vega10_r">Vega10_r</option>
-			<option value="GnBu">GnBu</option>
-			<option value="hsv">hsv</option>
-			<option value="binary_r">binary_r</option>
-			<option value="GnBu_r">GnBu_r</option>
-			<option value="icefire">icefire</option>
-			<option value="winter">winter</option>
-			<option value="BuGn_r">BuGn_r</option>
-			<option value="plasma_r">plasma_r</option>
-			<option value="Vega20_r">Vega20_r</option>
-			<option value="summer_r">summer_r</option>
-			<option value="cool_r">cool_r</option>
-			<option value="Spectral">Spectral</option>
-			<option value="gist_heat_r">gist_heat_r</option>
-			<option value="Vega20b_r">Vega20b_r</option>
-			<option value="mako_r">mako_r</option>
-			<option value="RdBu_r">RdBu_r</option>
-			<option value="cubehelix">cubehelix</option>
-			<option value="tab20b_r">tab20b_r</option>
-			<option value="CMRmap">CMRmap</option>
-			<option value="Greys">Greys</option>
-			<option value="PuOr">PuOr</option>
-			<option value="cubehelix_r">cubehelix_r</option>
-			<option value="Wistia">Wistia</option>
-			<option value="gnuplot2">gnuplot2</option>
-			<option value="bwr">bwr</option>
-			<option value="gnuplot_r">gnuplot_r</option>
-			<option value="viridis">viridis</option>
-			<option value="gist_ncar_r">gist_ncar_r</option>
-			<option value="gist_ncar">gist_ncar</option>
-			<option value="plasma">plasma</option>
-			<option value="PuRd">PuRd</option>
-			<option value="afmhot">afmhot</option>
-			<option value="icefire_r">icefire_r</option>
-			<option value="tab20b">tab20b</option>
-			<option value="gist_yarg_r">gist_yarg_r</option>
-			<option value="hot">hot</option>
-			<option value="YlOrRd_r">YlOrRd_r</option>
-			<option value="Vega20c">Vega20c</option>
-			<option value="Dark2_r">Dark2_r</option>
-			<option value="Set3">Set3</option>
-			<option value="PuBu">PuBu</option>
-			<option value="magma">magma</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="terrain">terrain</option>
-			<option value="autumn_r">autumn_r</option>
-			<option value="spectral">spectral</option>
-			<option value="brg">brg</option>
-			<option value="Set3_r">Set3_r</option>
-			<option value="coolwarm">coolwarm</option>
-			<option value="Set2_r">Set2_r</option>
-			<option value="Paired_r">Paired_r</option>
-			<option value="tab20c_r">tab20c_r</option>
-			<option value="mako">mako</option>
-			<option value="gist_rainbow_r">gist_rainbow_r</option>
-			<option value="RdBu">RdBu</option>
-			<option value="PuBu_r">PuBu_r</option>
-			<option value="jet_r">jet_r</option>
-			<option value="gist_earth_r">gist_earth_r</option>
-			<option value="Greys_r">Greys_r</option>
-			<option value="gray">gray</option>
-			<option value="winter_r">winter_r</option>
-			<option value="rocket">rocket</option>
-			<option value="Set2">Set2</option>
-			<option value="seismic_r">seismic_r</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="RdYlGn_r">RdYlGn_r</option>
-			<option value="copper">copper</option>
-			<option value="spring_r">spring_r</option>
-			<option value="BuGn">BuGn</option>
-			<option value="Greens">Greens</option>
-			<option value="Blues">Blues</option>
-			<option value="PiYG_r">PiYG_r</option>
-			<option value="YlGnBu">YlGnBu</option>
-			<option value="Paired">Paired</option>
-			<option value="YlGn_r">YlGn_r</option>
-			<option value="RdPu_r">RdPu_r</option>
-			<option value="BrBG_r">BrBG_r</option>
-			<option value="bone_r">bone_r</option>
-			<option value="RdYlBu">RdYlBu</option>
-			<option value="gist_rainbow">gist_rainbow</option>
-			<option value="bwr_r">bwr_r</option>
-			<option value="inferno_r">inferno_r</option>
-			<option value="inferno">inferno</option>
-			<option value="gist_stern_r">gist_stern_r</option>
-			<option value="gray_r">gray_r</option>
-			<option value="Purples">Purples</option>
-			<option value="RdGy">RdGy</option>
-			<option value="hot_r">hot_r</option>
-			<option value="YlOrBr_r">YlOrBr_r</option>
-			<option value="nipy_spectral">nipy_spectral</option>
-			<option value="nipy_spectral_r">nipy_spectral_r</option>
-			<option value="ocean">ocean</option>
-			<option value="Set1">Set1</option>
-			<option value="Dark2">Dark2</option>
-			<option value="Oranges">Oranges</option>
-			<option value="Pastel1_r">Pastel1_r</option>
-			<option value="Oranges_r">Oranges_r</option>
-			<option value="Pastel2_r">Pastel2_r</option>
-			<option value="YlGn">YlGn</option>
-			<option value="Vega20b">Vega20b</option>
-			<option value="PuRd_r">PuRd_r</option>
-			<option value="PuBuGn_r">PuBuGn_r</option>
-			<option value="afmhot_r">afmhot_r</option>
-			<option value="spring">spring</option>
-			<option value="tab20_r">tab20_r</option>
-			<option value="PuBuGn">PuBuGn</option>
-			<option value="gist_yarg">gist_yarg</option>
-			<option value="PiYG">PiYG</option>
-			<option value="flag">flag</option>
-			<option value="rainbow_r">rainbow_r</option>
-			<option value="hsv_r">hsv_r</option>
-			<option value="prism_r">prism_r</option>
-			<option value="ocean_r">ocean_r</option>
-			<option value="magma_r">magma_r</option>
-			<option value="flag_r">flag_r</option>
-			<option value="Blues_r">Blues_r</option>
-			<option value="gnuplot2_r">gnuplot2_r</option>
-			<option value="gist_gray">gist_gray</option>
-			<option value="spectral_r">spectral_r</option>
-			<option value="CMRmap_r">CMRmap_r</option>
-			<option value="rainbow">rainbow</option>
-			<option value="gnuplot">gnuplot</option>
-			<option value="vlag">vlag</option>
-			<option value="Set1_r">Set1_r</option>
-			<option value="Accent">Accent</option>
-			<option value="coolwarm_r">coolwarm_r</option>
-			<option value="brg_r">brg_r</option>
-			<option value="pink_r">pink_r</option>
-			<option value="YlOrBr">YlOrBr</option>
-			<option value="Vega20c_r">Vega20c_r</option>
-			<option value="Wistia_r">Wistia_r</option>
-			<option value="RdGy_r">RdGy_r</option>
-			<option value="tab20">tab20</option>
-			<option value="BrBG">BrBG</option>
-			<option value="rocket_r">rocket_r</option>
-			<option value="OrRd_r">OrRd_r</option>
-			<option value="YlGnBu_r">YlGnBu_r</option>
-			<option value="viridis_r">viridis_r</option>
-			<option value="copper_r">copper_r</option>
-			<option value="gist_heat">gist_heat</option>
-			<option value="Vega10">Vega10</option>
-			<option value="PuOr_r">PuOr_r</option>
-			<option value="binary">binary</option>
-			<option value="pink">pink</option>
-			<option value="Reds">Reds</option>
-			<option value="Purples_r">Purples_r</option>
-			<option value="cool">cool</option>
-			<option value="prism">prism</option>
-			<option value="terrain_r">terrain_r</option>
-			<option value="BuPu_r">BuPu_r</option>
-			<option value="Spectral_r">Spectral_r</option>
-			<option value="Greens_r">Greens_r</option>
-			<option value="gist_gray_r">gist_gray_r</option>
-			<option value="RdYlGn">RdYlGn</option>
-			<option value="tab20c">tab20c</option>
-			<option value="Reds_r">Reds_r</option>
-			<option value="tab10">tab10</option>
-			<option value="summer">summer</option>
-			<option value="gist_stern">gist_stern</option>
-			<option value="tab10_r">tab10_r</option>
-			<option value="YlOrRd">YlOrRd</option>
-			<option value="jet">jet</option>
-			<option value="Vega20">Vega20</option>
-			<option value="vlag_r">vlag_r</option>
-			<option value="RdPu">RdPu</option>
-			<option value="OrRd">OrRd</option>
-			<option value="Accent_r">Accent_r</option>
-			<option value="autumn">autumn</option>
-			<option value="BuPu">BuPu</option>
-			<option value="RdYlBu_r">RdYlBu_r</option>
-			<option value="gist_earth">gist_earth</option>
-			<option value="seismic">seismic</option>
-			<option value="PRGn">PRGn</option>
-		</param>
 
-		<param label="--m-metadata-file" name="mmedatafile" optional="True" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to visualize.            [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_msamplemetadatafile" optional="True" title="--m-sample-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-sample-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-sample-metadata-column: COLUMN  MetadataColumn[Categorical] Annotate the sample IDs with these sample metadata values. When metadata is present and `cluster`=\'feature\', samples will be sorted by the metadata values.                           [optional]" name="msamplemetadatacolumn" optional="False" type="text" />
+    <repeat name="input_files_mfeaturemetadatafile" optional="True" title="--m-feature-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-feature-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-feature-metadata-column: COLUMN  MetadataColumn[Categorical] Annotate the feature IDs with these feature metadata values. When metadata is present and `cluster`=\'sample\', features will be sorted by the metadata values.                           [optional]" name="mfeaturemetadatacolumn" optional="False" type="text" />
+    <param label="--p-no-normalize: Do not normalize the feature table by adding a psuedocount of 1 and then taking the log10 of the table. [default: True]" name="pnonormalize" selected="False" type="boolean" />
+    <param label="--p-title: TEXT         Optional custom plot title.                [optional]" name="ptitle" optional="False" type="text" />
+    <param label="--p-metric: " name="pmetric" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="euclidean">euclidean</option>
+      <option value="cityblock">cityblock</option>
+      <option value="matching">matching</option>
+      <option value="russellrao">russellrao</option>
+      <option value="sokalmichener">sokalmichener</option>
+      <option value="kulsinski">kulsinski</option>
+      <option value="chebyshev">chebyshev</option>
+      <option value="hamming">hamming</option>
+      <option value="dice">dice</option>
+      <option value="yule">yule</option>
+      <option value="rogerstanimoto">rogerstanimoto</option>
+      <option value="braycurtis">braycurtis</option>
+      <option value="cosine">cosine</option>
+      <option value="minkowski">minkowski</option>
+      <option value="correlation">correlation</option>
+      <option value="sokalsneath">sokalsneath</option>
+      <option value="seuclidean">seuclidean</option>
+      <option value="canberra">canberra</option>
+      <option value="mahalanobis">mahalanobis</option>
+      <option value="jaccard">jaccard</option>
+      <option value="sqeuclidean">sqeuclidean</option>
+    </param>
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="centroid">centroid</option>
+      <option value="median">median</option>
+      <option value="weighted">weighted</option>
+      <option value="average">average</option>
+      <option value="single">single</option>
+      <option value="complete">complete</option>
+      <option value="ward">ward</option>
+    </param>
+    <param label="--p-cluster: " name="pcluster" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="none">none</option>
+      <option value="features">features</option>
+      <option value="samples">samples</option>
+    </param>
+    <param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Spectral">Spectral</option>
+      <option value="flag">flag</option>
+      <option value="jet">jet</option>
+      <option value="Vega20">Vega20</option>
+      <option value="terrain">terrain</option>
+      <option value="jet_r">jet_r</option>
+      <option value="Vega20c_r">Vega20c_r</option>
+      <option value="Oranges_r">Oranges_r</option>
+      <option value="spectral">spectral</option>
+      <option value="summer">summer</option>
+      <option value="BuPu_r">BuPu_r</option>
+      <option value="tab20b_r">tab20b_r</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="gnuplot_r">gnuplot_r</option>
+      <option value="seismic">seismic</option>
+      <option value="icefire">icefire</option>
+      <option value="Set1">Set1</option>
+      <option value="bwr">bwr</option>
+      <option value="coolwarm_r">coolwarm_r</option>
+      <option value="ocean_r">ocean_r</option>
+      <option value="gist_gray_r">gist_gray_r</option>
+      <option value="autumn">autumn</option>
+      <option value="BrBG">BrBG</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="GnBu">GnBu</option>
+      <option value="Vega20b_r">Vega20b_r</option>
+      <option value="tab20c">tab20c</option>
+      <option value="Paired">Paired</option>
+      <option value="YlOrRd_r">YlOrRd_r</option>
+      <option value="icefire_r">icefire_r</option>
+      <option value="cubehelix_r">cubehelix_r</option>
+      <option value="CMRmap_r">CMRmap_r</option>
+      <option value="RdBu">RdBu</option>
+      <option value="YlGn_r">YlGn_r</option>
+      <option value="gray_r">gray_r</option>
+      <option value="mako_r">mako_r</option>
+      <option value="OrRd_r">OrRd_r</option>
+      <option value="Vega10">Vega10</option>
+      <option value="Set3">Set3</option>
+      <option value="RdYlGn_r">RdYlGn_r</option>
+      <option value="hsv">hsv</option>
+      <option value="cool_r">cool_r</option>
+      <option value="Spectral_r">Spectral_r</option>
+      <option value="rainbow">rainbow</option>
+      <option value="cividis">cividis</option>
+      <option value="Blues_r">Blues_r</option>
+      <option value="PuOr_r">PuOr_r</option>
+      <option value="binary_r">binary_r</option>
+      <option value="RdGy">RdGy</option>
+      <option value="Pastel2_r">Pastel2_r</option>
+      <option value="Pastel1_r">Pastel1_r</option>
+      <option value="Dark2">Dark2</option>
+      <option value="vlag">vlag</option>
+      <option value="binary">binary</option>
+      <option value="pink">pink</option>
+      <option value="Purples">Purples</option>
+      <option value="cividis_r">cividis_r</option>
+      <option value="gray">gray</option>
+      <option value="seismic_r">seismic_r</option>
+      <option value="Greys">Greys</option>
+      <option value="tab20">tab20</option>
+      <option value="BuPu">BuPu</option>
+      <option value="RdBu_r">RdBu_r</option>
+      <option value="gnuplot2_r">gnuplot2_r</option>
+      <option value="Accent_r">Accent_r</option>
+      <option value="magma">magma</option>
+      <option value="copper_r">copper_r</option>
+      <option value="inferno">inferno</option>
+      <option value="nipy_spectral_r">nipy_spectral_r</option>
+      <option value="pink_r">pink_r</option>
+      <option value="copper">copper</option>
+      <option value="Dark2_r">Dark2_r</option>
+      <option value="YlGnBu_r">YlGnBu_r</option>
+      <option value="Wistia_r">Wistia_r</option>
+      <option value="spectral_r">spectral_r</option>
+      <option value="cubehelix">cubehelix</option>
+      <option value="tab20_r">tab20_r</option>
+      <option value="viridis">viridis</option>
+      <option value="RdYlBu">RdYlBu</option>
+      <option value="Blues">Blues</option>
+      <option value="rocket_r">rocket_r</option>
+      <option value="Set1_r">Set1_r</option>
+      <option value="brg_r">brg_r</option>
+      <option value="bone_r">bone_r</option>
+      <option value="gist_ncar_r">gist_ncar_r</option>
+      <option value="afmhot">afmhot</option>
+      <option value="RdYlBu_r">RdYlBu_r</option>
+      <option value="gist_earth_r">gist_earth_r</option>
+      <option value="RdGy_r">RdGy_r</option>
+      <option value="Vega10_r">Vega10_r</option>
+      <option value="gist_rainbow_r">gist_rainbow_r</option>
+      <option value="spring">spring</option>
+      <option value="Set3_r">Set3_r</option>
+      <option value="magma_r">magma_r</option>
+      <option value="mako">mako</option>
+      <option value="PuRd">PuRd</option>
+      <option value="gnuplot2">gnuplot2</option>
+      <option value="Paired_r">Paired_r</option>
+      <option value="Vega20b">Vega20b</option>
+      <option value="Accent">Accent</option>
+      <option value="hsv_r">hsv_r</option>
+      <option value="ocean">ocean</option>
+      <option value="gist_earth">gist_earth</option>
+      <option value="afmhot_r">afmhot_r</option>
+      <option value="bone">bone</option>
+      <option value="rocket">rocket</option>
+      <option value="RdYlGn">RdYlGn</option>
+      <option value="bwr_r">bwr_r</option>
+      <option value="RdPu_r">RdPu_r</option>
+      <option value="BuGn">BuGn</option>
+      <option value="PuBu">PuBu</option>
+      <option value="hot_r">hot_r</option>
+      <option value="Vega20c">Vega20c</option>
+      <option value="gist_yarg">gist_yarg</option>
+      <option value="tab10">tab10</option>
+      <option value="coolwarm">coolwarm</option>
+      <option value="winter_r">winter_r</option>
+      <option value="plasma_r">plasma_r</option>
+      <option value="Wistia">Wistia</option>
+      <option value="BuGn_r">BuGn_r</option>
+      <option value="Set2">Set2</option>
+      <option value="Vega20_r">Vega20_r</option>
+      <option value="hot">hot</option>
+      <option value="brg">brg</option>
+      <option value="BrBG_r">BrBG_r</option>
+      <option value="gist_heat">gist_heat</option>
+      <option value="YlOrRd">YlOrRd</option>
+      <option value="inferno_r">inferno_r</option>
+      <option value="viridis_r">viridis_r</option>
+      <option value="gist_stern_r">gist_stern_r</option>
+      <option value="tab20c_r">tab20c_r</option>
+      <option value="gist_gray">gist_gray</option>
+      <option value="Reds_r">Reds_r</option>
+      <option value="flag_r">flag_r</option>
+      <option value="Purples_r">Purples_r</option>
+      <option value="vlag_r">vlag_r</option>
+      <option value="summer_r">summer_r</option>
+      <option value="Greys_r">Greys_r</option>
+      <option value="PRGn">PRGn</option>
+      <option value="PiYG">PiYG</option>
+      <option value="gist_ncar">gist_ncar</option>
+      <option value="Oranges">Oranges</option>
+      <option value="Reds">Reds</option>
+      <option value="GnBu_r">GnBu_r</option>
+      <option value="RdPu">RdPu</option>
+      <option value="YlOrBr_r">YlOrBr_r</option>
+      <option value="autumn_r">autumn_r</option>
+      <option value="YlGn">YlGn</option>
+      <option value="CMRmap">CMRmap</option>
+      <option value="gnuplot">gnuplot</option>
+      <option value="rainbow_r">rainbow_r</option>
+      <option value="PiYG_r">PiYG_r</option>
+      <option value="Greens">Greens</option>
+      <option value="YlOrBr">YlOrBr</option>
+      <option value="prism_r">prism_r</option>
+      <option value="winter">winter</option>
+      <option value="gist_yarg_r">gist_yarg_r</option>
+      <option value="Set2_r">Set2_r</option>
+      <option value="nipy_spectral">nipy_spectral</option>
+      <option value="plasma">plasma</option>
+      <option value="OrRd">OrRd</option>
+      <option value="Greens_r">Greens_r</option>
+      <option value="tab10_r">tab10_r</option>
+      <option value="YlGnBu">YlGnBu</option>
+      <option value="prism">prism</option>
+      <option value="PRGn_r">PRGn_r</option>
+      <option value="gist_heat_r">gist_heat_r</option>
+      <option value="terrain_r">terrain_r</option>
+      <option value="tab20b">tab20b</option>
+      <option value="PuBuGn">PuBuGn</option>
+      <option value="PuBu_r">PuBu_r</option>
+      <option value="spring_r">spring_r</option>
+      <option value="gist_rainbow">gist_rainbow</option>
+      <option value="cool">cool</option>
+      <option value="PuOr">PuOr</option>
+      <option value="PuRd_r">PuRd_r</option>
+      <option value="gist_stern">gist_stern</option>
+      <option value="PuBuGn_r">PuBuGn_r</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Generate a heatmap representation of a feature table
-####################################################
+###############################################################
 
 Generate a heatmap representation of a feature table with optional
 clustering on both the sample and feature axes.  Tip: To generate a heatmap
@@ -292,32 +375,36 @@
 ----------
 table : FeatureTable[Frequency]
     The feature table to visualize.
-metadata : MetadataColumn[Categorical], optional
-    Annotate the sample IDs with these metadata values. When metadata is
-    present and \`cluster\`='feature', samples will be sorted by the metadata
-    values.
+sample_metadata : MetadataColumn[Categorical], optional
+    Annotate the sample IDs with these sample metadata values. When
+    metadata is present and `cluster`='feature', samples will be sorted by
+    the metadata values.
+feature_metadata : MetadataColumn[Categorical], optional
+    Annotate the feature IDs with these feature metadata values. When
+    metadata is present and `cluster`='sample', features will be sorted by
+    the metadata values.
 normalize : Bool, optional
     Normalize the feature table by adding a psuedocount of 1 and then
     taking the log10 of the table.
 title : Str, optional
     Optional custom plot title.
-metric : Str % Choices('sokalmichener', 'yule', 'russellrao', 'rogerstanimoto', 'minkowski', 'correlation', 'jaccard', 'cosine', 'chebyshev', 'euclidean', 'sqeuclidean', 'cityblock', 'matching', 'dice', 'mahalanobis', 'kulsinski', 'seuclidean', 'sokalsneath', 'canberra', 'hamming', 'braycurtis'), optional
+metric : Str % Choices('yule', 'seuclidean', 'sokalmichener', 'sokalsneath', 'hamming', 'canberra', 'cityblock', 'russellrao', 'jaccard', 'braycurtis', 'minkowski', 'euclidean', 'kulsinski', 'cosine', 'sqeuclidean', 'correlation', 'dice', 'rogerstanimoto', 'mahalanobis', 'chebyshev', 'matching'), optional
     Metrics exposed by seaborn (see http://seaborn.pydata.org/generated/sea
     born.clustermap.html#seaborn.clustermap for more detail).
-method : Str % Choices('average', 'complete', 'median', 'centroid', 'single', 'ward', 'weighted'), optional
+method : Str % Choices('complete', 'average', 'ward', 'median', 'weighted', 'centroid', 'single'), optional
     Clustering methods exposed by seaborn (see http://seaborn.pydata.org/ge
     nerated/seaborn.clustermap.html#seaborn.clustermap for more detail).
-cluster : Str % Choices('features', 'samples', 'none', 'both'), optional
+cluster : Str % Choices('both', 'features', 'none', 'samples'), optional
     Specify which axes to cluster.
-color_scheme : Str % Choices('rocket', 'RdYlBu_r', 'winter', 'viridis', 'BrBG', 'magma_r', 'YlOrBr', 'seismic', 'Set1', 'gist_yarg_r', 'gist_rainbow', 'autumn_r', 'Wistia_r', 'cool_r', 'hsv_r', 'flag', 'Vega20b_r', 'mako_r', 'coolwarm', 'Vega20_r', 'jet', 'cubehelix_r', 'bwr_r', 'brg', 'RdPu', 'gist_ncar', 'RdPu_r', 'cool', 'gnuplot_r', 'Set3', 'ocean_r', 'tab20b', 'tab20b_r', 'OrRd_r', 'Spectral_r', 'gray', 'OrRd', 'prism_r', 'Wistia', 'hot', 'icefire', 'plasma', 'Purples_r', 'viridis_r', 'gnuplot2_r', 'CMRmap', 'YlGnBu_r', 'Set3_r', 'PuRd_r', 'Reds_r', 'gray_r', 'Dark2', 'Vega20b', 'Paired', 'gist_yarg', 'RdYlGn_r', 'Greens', 'YlGnBu', 'tab20', 'gnuplot', 'PuBuGn_r', 'spectral_r', 'tab20c_r', 'gist_rainbow_r', 'hot_r', 'spring_r', 'gist_gray', 'Blues_r', 'Spectral', 'magma', 'GnBu_r', 'inferno_r', 'tab10', 'gist_gray_r', 'seismic_r', 'spring', 'BuPu_r', 'spectral', 'BrBG_r', 'PiYG', 'inferno', 'YlOrBr_r', 'Set1_r', 'YlOrRd_r', 'summer', 'vlag', 'Oranges_r', 'Dark2_r', 'binary_r', 'icefire_r', 'RdYlGn', 'hsv', 'gist_heat', 'PRGn_r', 'pink_r', 'Pastel2_r', 'copper_r', 'BuGn', 'gist_stern_r', 'PuRd', 'gist_earth_r', 'YlOrRd', 'Reds', 'gist_earth', 'Greens_r', 'Vega10', 'ocean', 'brg_r', 'rainbow_r', 'tab20_r', 'Purples', 'Blues', 'Accent', 'afmhot_r', 'Set2_r', 'RdBu', 'Vega20c', 'Pastel1', 'RdGy_r', 'PuBuGn', 'copper', 'PuOr', 'jet_r', 'YlGn_r', 'gist_heat_r', 'PuOr_r', 'bone', 'BuGn_r', 'terrain_r', 'mako', 'Vega20c_r', 'Paired_r', 'PuBu_r', 'tab20c', 'Pastel1_r', 'flag_r', 'plasma_r', 'Oranges', 'autumn', 'bone_r', 'GnBu', 'bwr', 'Greys', 'RdBu_r', 'RdGy', 'winter_r', 'gnuplot2', 'coolwarm_r', 'pink', 'nipy_spectral', 'Greys_r', 'summer_r', 'Vega20', 'BuPu', 'afmhot', 'gist_stern', 'binary', 'PiYG_r', 'YlGn', 'rocket_r', 'cubehelix', 'rainbow', 'Accent_r', 'CMRmap_r', 'PRGn', 'PuBu', 'tab10_r', 'prism', 'vlag_r', 'Set2', 'gist_ncar_r', 'nipy_spectral_r', 'Pastel2', 'terrain', 'RdYlBu', 'Vega10_r'), optional
+color_scheme : Str % Choices('YlGn', 'flag', 'Greens_r', 'RdPu_r', 'OrRd', 'Set1_r', 'RdYlGn', 'inferno_r', 'Accent_r', 'bwr', 'PuOr', 'seismic_r', 'RdGy_r', 'tab20b_r', 'Oranges', 'spectral', 'RdYlGn_r', 'nipy_spectral_r', 'gist_gray', 'binary', 'gist_yarg_r', 'cubehelix', 'viridis_r', 'autumn', 'bone_r', 'terrain_r', 'RdPu', 'inferno', 'PRGn', 'YlGnBu', 'mako', 'gray', 'tab20_r', 'Oranges_r', 'gist_stern_r', 'Dark2_r', 'Purples_r', 'coolwarm', 'RdYlBu', 'tab10', 'copper_r', 'YlOrRd_r', 'gray_r', 'magma', 'Set3_r', 'BuGn', 'viridis', 'icefire_r', 'PuOr_r', 'YlOrBr', 'winter_r', 'hsv', 'gist_earth_r', 'rocket_r', 'Vega20b', 'autumn_r', 'gnuplot', 'Paired', 'PuRd_r', 'BrBG_r', 'plasma_r', 'Set2', 'prism', 'winter', 'seismic', 'RdGy', 'Blues_r', 'Reds_r', 'gist_ncar_r', 'Reds', 'afmhot', 'Greys', 'rainbow', 'tab10_r', 'GnBu_r', 'gnuplot2', 'pink', 'tab20b', 'BuGn_r', 'PuRd', 'gist_stern', 'magma_r', 'prism_r', 'tab20c_r', 'BuPu', 'cividis_r', 'BrBG', 'Wistia_r', 'gist_gray_r', 'ocean_r', 'summer_r', 'mako_r', 'CMRmap_r', 'cool_r', 'coolwarm_r', 'Greens', 'RdBu', 'icefire', 'spectral_r', 'Vega20', 'brg', 'Paired_r', 'BuPu_r', 'gist_rainbow', 'CMRmap', 'cool', 'gist_earth', 'bwr_r', 'rocket', 'YlGn_r', 'Vega20b_r', 'Wistia', 'Vega20c_r', 'Accent', 'plasma', 'Set1', 'PuBu_r', 'Purples', 'RdYlBu_r', 'brg_r', 'flag_r', 'Set3', 'hot_r', 'Blues', 'Pastel1_r', 'YlOrBr_r', 'hsv_r', 'Pastel2', 'Pastel1', 'bone', 'tab20', 'PuBuGn_r', 'terrain', 'gist_rainbow_r', 'Spectral_r', 'Pastel2_r', 'RdBu_r', 'summer', 'gist_ncar', 'OrRd_r', 'copper', 'tab20c', 'PuBuGn', 'Set2_r', 'vlag', 'jet_r', 'gist_heat_r', 'PRGn_r', 'Vega10', 'jet', 'Spectral', 'rainbow_r', 'binary_r', 'ocean', 'spring', 'Dark2', 'Vega20_r', 'vlag_r', 'PiYG', 'PuBu', 'YlGnBu_r', 'afmhot_r', 'nipy_spectral', 'gnuplot2_r', 'cividis', 'gnuplot_r', 'Greys_r', 'cubehelix_r', 'spring_r', 'PiYG_r', 'gist_yarg', 'gist_heat', 'Vega20c', 'GnBu', 'YlOrRd', 'hot', 'Vega10_r', 'pink_r'), optional
     The matplotlib colorscheme to generate the heatmap with.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_merge-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_merge-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,41 +1,49 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_merge-seqs" name="qiime feature-table merge-seqs" version="2019.7">
-	<description> - Combine collections of feature sequences</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_merge-seqs" name="qiime feature-table merge-seqs"
+      version="2020.8">
+  <description>Combine collections of feature sequences</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table merge-seqs
-
+# if $input_files_idata:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-data=$list_dict_to_string($input_files_idata)
+# end if
 
-#if $input_files_idata:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
---i-data=$list_dict_to_string($input_files_idata)
+--o-merged-data=omergeddata
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
---o-merged-data=omergeddata
 ;
 cp omergeddata.qza $omergeddata
-	]]></command>
-	<inputs>
-		<repeat name="input_files_idata" optional="False" title="--i-data">
-			<param format="qza,no_unzip.zip" label="--i-data: PATH List[FeatureData[Sequence]] The collection of feature sequences to be merged.  [required]" name="additional_input" type="data"/>
-		</repeat>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: mergeddata.qza" name="omergeddata"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_idata" optional="False" title="--i-data">
+      <param format="qza,no_unzip.zip" label="--i-data: ARTIFACTS... List[FeatureData[Sequence]] The collection of feature sequences to be merged. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: mergeddata.qza" name="omergeddata" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Combine collections of feature sequences
-########################################
+###############################################################
 
 Combines feature data objects which may or may not contain data for the
 same features. If different feature data is present for the same feature id
@@ -51,9 +59,9 @@
 merged_data : FeatureData[Sequence]
     The resulting collection of feature sequences containing all feature
     sequences provided.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_merge-taxa.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_merge-taxa.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,40 +1,49 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_merge-taxa" name="qiime feature-table merge-taxa" version="2019.7">
-	<description> - Combine collections of feature taxonomies</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_merge-taxa" name="qiime feature-table merge-taxa"
+      version="2020.8">
+  <description>Combine collections of feature taxonomies</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table merge-taxa
-
+# if $input_files_idata:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-data=$list_dict_to_string($input_files_idata)
+# end if
 
-#if $input_files_idata:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --i-data=$list_dict_to_string($input_files_idata)
+--o-merged-data=omergeddata
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
---o-merged-data=omergeddata
 ;
 cp omergeddata.qza $omergeddata
-	]]></command>
-	<inputs>
-		<repeat name="input_files_idata" optional="False" title="--i-data">
-			<param format="qza,no_unzip.zip" label="--i-data: PATH List[FeatureData[Taxonomy]] The collection of feature taxonomies to be merged.  [required]" name="additional_input" type="data"/>
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: mergeddata.qza" name="omergeddata"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_idata" optional="False" title="--i-data">
+      <param format="qza,no_unzip.zip" label="--i-data: ARTIFACTS... List[FeatureData[Taxonomy]] The collection of feature taxonomies to be merged. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: mergeddata.qza" name="omergeddata" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Combine collections of feature taxonomies
-#########################################
+###############################################################
 
 Combines a pair of feature data objects which may or may not contain data
 for the same features. If different feature data is present for the same
@@ -51,9 +60,9 @@
 merged_data : FeatureData[Taxonomy]
     The resulting collection of feature taxonomies containing all feature
     taxonomies provided.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_merge.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_merge.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,51 +1,59 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_merge" name="qiime feature-table merge" version="2019.7">
-	<description> - Combine multiple tables</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_merge" name="qiime feature-table merge"
+      version="2020.8">
+  <description>Combine multiple tables</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table merge
-
-#if $input_files_itables:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --i-tables=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --i-tables=$list_dict_to_string($input_files_itables)
-#end if
-
+# if $input_files_itables:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-tables=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-tables=$list_dict_to_string($input_files_itables)
+# end if
 
 #if str($poverlapmethod) != 'None':
- --p-overlap-method=$poverlapmethod
+--p-overlap-method=$poverlapmethod
 #end if
 
+--o-merged-table=omergedtable
 
---o-merged-table=omergedtable
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp omergedtable.qza $omergedtable
-	]]></command>
-	<inputs>
-		<repeat name="input_files_itables" optional="False" title="--i-tables">
-			<param format="qza,no_unzip.zip" label="--i-tables: PATH List[FeatureTable[Frequency]] The collection of feature tables to be merged.  [required]" name="additional_input" type="data"/>
-		</repeat>
 
-		<param label="--p-overlap-method: " name="poverlapmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error_on_overlapping_sample">error_on_overlapping_sample</option>
-			<option value="error_on_overlapping_feature">error_on_overlapping_feature</option>
-			<option value="sum">sum</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: mergedtable.qza" name="omergedtable"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_itables" optional="False" title="--i-tables">
+      <param format="qza,no_unzip.zip" label="--i-tables: ARTIFACTS... List[FeatureTable[Frequency]] The collection of feature tables to be merged. [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-overlap-method: " name="poverlapmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error_on_overlapping_sample">error_on_overlapping_sample</option>
+      <option value="error_on_overlapping_feature">error_on_overlapping_feature</option>
+      <option value="sum">sum</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: mergedtable.qza" name="omergedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Combine multiple tables
-#######################
+###############################################################
 
 Combines feature tables using the `overlap_method` provided.
 
@@ -60,9 +68,9 @@
 -------
 merged_table : FeatureTable[Frequency]
     The resulting merged feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_presence-absence.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_presence-absence.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,27 +1,43 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_presence-absence" name="qiime feature-table presence-absence" version="2019.7">
-	<description> - Convert to presence/absence</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_presence-absence" name="qiime feature-table presence-absence"
+      version="2020.8">
+  <description>Convert to presence/absence</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table presence-absence
 
---i-table=$itable
+#if $itable:
+ --i-table
+#end if
 
---o-presence-absence-table=opresenceabsencetable
+#if $opresenceabsencetable:
+ --o-presence-absence-table
+#end if
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opresenceabsencetable.qza $opresenceabsencetable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency] The feature table to be converted into presence/absence abundances.                 [required]" name="itable" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: presenceabsencetable.qza" name="opresenceabsencetable"/>
-	</outputs>
-	<help><![CDATA[
+cp omergeddata.qza $omergeddata
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: --i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency] The feature table to be converted into presence/absence abundances.                 [required]" name="itable" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <param label="--o-presence-absence-table: --o-presence-absence-table: ARTIFACT FeatureTable[PresenceAbsence] The resulting presence/absence feature table. [required]" name="opresenceabsencetable" selected="False" type="boolean" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Convert to presence/absence
-###########################
+###############################################################
 
 Convert frequencies to binary values indicating presence or absence of a
 feature in a sample.
@@ -35,9 +51,9 @@
 -------
 presence_absence_table : FeatureTable[PresenceAbsence]
     The resulting presence/absence feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_rarefy.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_rarefy.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,37 +1,47 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_rarefy" name="qiime feature-table rarefy" version="2019.7">
-	<description> - Rarefy table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_rarefy" name="qiime feature-table rarefy"
+      version="2020.8">
+  <description>Rarefy table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table rarefy
 
 --i-table=$itable
 
-#if str($psamplingdepth):
- --p-sampling-depth="$psamplingdepth"
-#end if
+--p-sampling-depth=$psamplingdepth
 
 #if $pwithreplacement:
  --p-with-replacement
 #end if
 
 --o-rarefied-table=orarefiedtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp orarefiedtable.qza $orarefiedtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be rarefied.            [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-sampling-depth: INTEGER Range(1, None)     The total frequency that each sample should be rarefied to. Samples where the sum of frequencies is less than the sampling depth will be not be included in the resulting table unless subsampling is performed with replacement.                            [required]" name="psamplingdepth" optional="False" min="1" value="" type="integer"/>
-		<param label="--p-with-replacement: --p-no-with-replacement Rarefy with replacement by sampling from the multinomial distribution instead of rarefying without replacement.                           [default: False]" name="pwithreplacement" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be rarefied.            [required]" name="itable" optional="False" type="data" />
+    <param label="--p-sampling-depth: INTEGER Range(1, None)     The total frequency that each sample should be rarefied to. Samples where the sum of frequencies is less than the sampling depth will be not be included in the resulting table unless subsampling is performed with replacement.                            [required]" name="psamplingdepth" optional="False" type="text" />
+    <param label="--p-with-replacement: --p-with-replacement: / --p-no-with-replacement Rarefy with replacement by sampling from the multinomial distribution instead of rarefying without replacement.                           [default: False]" name="pwithreplacement" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: rarefiedtable.qza" name="orarefiedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Rarefy table
-############
+###############################################################
 
 Subsample frequencies from all samples so that the sum of frequencies in
 each sample is equal to sampling-depth.
@@ -53,9 +63,9 @@
 -------
 rarefied_table : FeatureTable[Frequency]
     The resulting rarefied feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_relative-frequency.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_relative-frequency.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,27 +1,39 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_relative-frequency" name="qiime feature-table relative-frequency" version="2019.7">
-	<description> - Convert to relative frequencies</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_relative-frequency" name="qiime feature-table relative-frequency"
+      version="2020.8">
+  <description>Convert to relative frequencies</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table relative-frequency
 
 --i-table=$itable
 
 --o-relative-frequency-table=orelativefrequencytable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp orelativefrequencytable.qza $orelativefrequencytable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be converted into relative frequencies.                                 [required]" name="itable" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: relativefrequencytable.qza" name="orelativefrequencytable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be converted into relative frequencies.                                 [required]" name="itable" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: relativefrequencytable.qza" name="orelativefrequencytable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Convert to relative frequencies
-###############################
+###############################################################
 
 Convert frequencies to relative frequencies by dividing each frequency in a
 sample by the sum of frequencies in that sample.
@@ -35,9 +47,9 @@
 -------
 relative_frequency_table : FeatureTable[RelativeFrequency]
     The resulting relative frequency feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_feature-table_rename-ids.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" ?>
+<tool id="qiime_feature-table_rename-ids" name="qiime feature-table rename-ids"
+      version="2020.8">
+  <description>Renames sample or feature ids in a table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime feature-table rename-ids
+
+--i-table=$itable
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+
+--m-metadata-column=$mmetadatacolumn
+
+
+#if str($paxis) != 'None':
+--p-axis=$paxis
+#end if
+
+#if $pstrict:
+ --p-strict
+#end if
+
+--o-renamed-table=orenamedtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp orenamedtable.qza $orenamedtable
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴] The table to be renamed                      [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] A metadata column defining the new ids. Each original id must map to a new unique id. If strict mode is used, then every id in the original table must have a new id. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-axis: " name="paxis" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="sample">sample</option>
+      <option value="feature">feature</option>
+    </param>
+    <param label="--p-strict: --p-strict: / --p-no-strict Whether the naming needs to be strict (each id in the table must have a new id). Otherwise, only the ids described in `metadata` will be renamed and the others will keep their original id names.     [default: False]" name="pstrict" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: renamedtable.qza" name="orenamedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Renames sample or feature ids in a table
+###############################################################
+
+Renames the sample or feature ids in a feature table using metadata to
+define the new ids.
+
+Parameters
+----------
+table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴]
+    The table to be renamed
+metadata : MetadataColumn[Categorical]
+    A metadata column defining the new ids. Each original id must map to a
+    new unique id. If strict mode is used, then every id in the original
+    table must have a new id.
+axis : Str % Choices('sample', 'feature'), optional
+    Along which axis to rename the ids.
+strict : Bool, optional
+    Whether the naming needs to be strict (each id in the table must have a
+    new id). Otherwise, only the ids described in `metadata` will be
+    renamed and the others will keep their original id names.
+
+Returns
+-------
+renamed_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴]
+    A table which has new ids, where the ids are replaced by values in the
+    `metadata` column.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_subsample.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_subsample.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,38 +1,48 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_subsample" name="qiime feature-table subsample" version="2019.7">
-	<description> - Subsample table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_subsample" name="qiime feature-table subsample"
+      version="2020.8">
+  <description>Subsample table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table subsample
 
 --i-table=$itable
 
-#if str($psubsamplingdepth):
- --p-subsampling-depth="$psubsamplingdepth"
-#end if
+--p-subsampling-depth=$psubsamplingdepth
 
 --p-axis=$paxis
 
 --o-sampled-table=osampledtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp osampledtable.qza $osampledtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be sampled.             [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-subsampling-depth: INTEGER Range(1, None)     The total number of samples or features to be randomly sampled. Samples or features that are reduced to a zero sum will not be included in the resulting table. [required]" name="psubsamplingdepth" optional="False" min="1" value="" type="integer"/>
-		<param label="--p-axis: " name="paxis" optional="False" type="select">
-			<option value="sample">sample</option>
-			<option value="feature">feature</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sampledtable.qza" name="osampledtable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be sampled.             [required]" name="itable" optional="False" type="data" />
+    <param label="--p-subsampling-depth: INTEGER Range(1, None)     The total number of samples or features to be randomly sampled. Samples or features that are reduced to a zero sum will not be included in the resulting table. [required]" name="psubsamplingdepth" optional="False" type="text" />
+    <param label="--p-axis: " name="paxis" optional="False" type="select">
+      <option value="sample">sample</option>
+      <option value="feature">feature</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampledtable.qza" name="osampledtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Subsample table
-###############
+###############################################################
 
 Randomly pick samples or features, without replacement, from the table.
 
@@ -53,9 +63,9 @@
 -------
 sampled_table : FeatureTable[Frequency]
     The resulting subsampled feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_summarize.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_summarize.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,46 +1,58 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_summarize" name="qiime feature-table summarize" version="2019.7">
-	<description> - Summarize table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_summarize" name="qiime feature-table summarize"
+      version="2020.8">
+  <description>Summarize table</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table summarize
 
 --i-table=$itable
-
-
-#if $m_sample_metadatafile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-sample-metadata-file=$list_dict_to_string($m_sample_metadatafile)
-#end if
-
+# if $input_files_msamplemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-sample-metadata-file=$list_dict_to_string($input_files_msamplemetadatafile)
+# end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp osampledtable.qza $osampledtable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table to be summarized.          [required]" name="itable" optional="False" type="data"/>
 
-		<repeat name="m_sample_metadatafile" optional="False" title="--m-metadata-file">
-			<param label="--m-sample-metadata-file: (multiple arguments will be merged)  The sample metadata. [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]   The feature table to be summarized.          [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_msamplemetadatafile" optional="True" title="--m-sample-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-sample-metadata-file: METADATA... (multiple          The sample metadata. arguments will be merged)                                                     [optional]" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Summarize table
-###############
+###############################################################
 
 Generate visual and tabular summaries of a feature table.
 
@@ -54,9 +66,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_tabulate-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_tabulate-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,44 +1,76 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_tabulate-seqs" name="qiime feature-table tabulate-seqs" version="2019.7">
-	<description> - View sequence associated with each feature</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_tabulate-seqs" name="qiime feature-table tabulate-seqs"
+      version="2020.8">
+  <description>View sequence associated with each feature</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table tabulate-seqs
-
---i-data=$idata
+# if $input_files_idata:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --i-data=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--i-data=$list_dict_to_string($input_files_idata)
+# end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp osampledtable.qza $osampledtable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-data: ARTIFACT FeatureData[Sequence] The feature sequences to be tabulated.       [required]" name="idata" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_idata" optional="False" title="--i-data">
+      <param format="qza,no_unzip.zip" label="--i-data: ARTIFACT FeatureData[Sequence | AlignedSequence] The feature sequences to be tabulated.       [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 View sequence associated with each feature
-##########################################
+###############################################################
 
 Generate tabular view of feature identifier to sequence mapping, including
 links to BLAST each sequence against the NCBI nt database.
 
 Parameters
 ----------
-data : FeatureData[Sequence]
+data : FeatureData[Sequence | AlignedSequence]
     The feature sequences to be tabulated.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_feature-table_transpose.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_feature-table_transpose.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,27 +1,39 @@
 <?xml version="1.0" ?>
-<tool id="qiime_feature-table_transpose" name="qiime feature-table transpose" version="2019.7">
-	<description> - Transpose a feature table.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_feature-table_transpose" name="qiime feature-table transpose"
+      version="2020.8">
+  <description>Transpose a feature table.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime feature-table transpose
 
 --i-table=$itable
 
 --o-transposed-feature-table=otransposedfeaturetable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otransposedfeaturetable.qza $otransposedfeaturetable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be transposed.          [required]" name="itable" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: transposedfeaturetable.qza" name="otransposedfeaturetable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be transposed.          [required]" name="itable" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: transposedfeaturetable.qza" name="otransposedfeaturetable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Transpose a feature table.
-##########################
+###############################################################
 
 Transpose the rows and columns (typically samples and features) of a
 feature table.
@@ -35,9 +47,9 @@
 -------
 transposed_feature_table : FeatureTable[Frequency]
     The resulting transposed feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_fragment-insertion_classify-otus-experimental.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_fragment-insertion_classify-otus-experimental.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,54 +1,46 @@
 <?xml version="1.0" ?>
-<tool id="qiime_fragment-insertion_classify-otus-experimental" name="qiime fragment-insertion classify-otus-experimental" version="2019.7">
-	<description> - Experimental: Obtain taxonomic lineages, by finding closest OTU in reference phylogeny.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_fragment-insertion_classify-otus-experimental" name="qiime fragment-insertion classify-otus-experimental"
+      version="2020.8">
+  <description>Experimental: Obtain taxonomic lineages, by finding closest OTU in reference phylogeny.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime fragment-insertion classify-otus-experimental
 
 --i-representative-sequences=$irepresentativesequences
---i-tree=$itree --o-classification=oclassification
 
+--i-tree=$itree
+
+--i-reference-taxonomy=$ireferencetaxonomy
 
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp
---i-reference-taxonomy '$tax'
-#else:
-#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
---i-reference-taxonomy '$tax'
+--o-classification=oclassification
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
 ;
 cp oclassification.qza $oclassification
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-representative-sequences: ARTIFACT FeatureData[Sequence] The sequences used for a 'sepp' run to produce the 'tree'.                                      [required]" name="irepresentativesequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    The tree resulting from inserting fragments into a Phylogeny[Rooted]  reference phylogeny, i.e. the output of function 'sepp' [required]" name="itree" optional="False" type="data"/>
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-representative-sequences: ARTIFACT FeatureData[Sequence] The sequences used for a \'sepp\' run to produce the \'tree\'.                                      [required]" name="irepresentativesequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    The tree resulting from inserting fragments into a Phylogeny[Rooted]  reference phylogeny, i.e. the output of function \'sepp\' [required]" name="itree" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-taxonomy: ARTIFACT FeatureData[Taxonomy] Reference taxonomic table that maps every OTU-ID into a taxonomic lineage string.                  [required]" name="ireferencetaxonomy" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification"/>
-	</outputs>
-	<help><![CDATA[
+  <help><![CDATA[
 Experimental: Obtain taxonomic lineages, by finding closest OTU in reference phylogeny.
-#######################################################################################
+###############################################################
+
 
 Experimental: Use the resulting tree from 'sepp' and find closest OTU-ID
 for every inserted fragment. Then, look up the reference lineage string in
@@ -61,7 +53,7 @@
 tree : Phylogeny[Rooted]
     The tree resulting from inserting fragments into a reference phylogeny,
     i.e. the output of function 'sepp'
-reference_taxonomy : FeatureData[Taxonomy], optional
+reference_taxonomy : FeatureData[Taxonomy]
     Reference taxonomic table that maps every OTU-ID into a taxonomic
     lineage string.
 
@@ -69,9 +61,9 @@
 -------
 classification : FeatureData[Taxonomy]
     Taxonomic lineages for inserted fragments.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_fragment-insertion_filter-features.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_fragment-insertion_filter-features.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,32 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_fragment-insertion_filter-features" name="qiime fragment-insertion filter-features" version="2019.7">
-	<description> - Filter fragments in tree from table.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_fragment-insertion_filter-features" name="qiime fragment-insertion filter-features"
+      version="2020.8">
+  <description>Filter fragments in tree from table.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime fragment-insertion filter-features
 
 --i-table=$itable
+
 --i-tree=$itree
 
 --o-filtered-table=ofilteredtable
+
 --o-removed-table=oremovedtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp ofilteredtable.qza $ofilteredtable;
 cp oremovedtable.qza $oremovedtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] A feature-table which needs to filtered down to those fragments that are contained in the tree, e.g. result of a Deblur or DADA2 run.                    [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    The tree resulting from inserting fragments into a Phylogeny[Rooted]  reference phylogeny, i.e. the output of function 'sepp' [required]" name="itree" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: removedtable.qza" name="oremovedtable"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] A feature-table which needs to filtered down to those fragments that are contained in the tree, e.g. result of a Deblur or DADA2 run.                    [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    The tree resulting from inserting fragments into a Phylogeny[Rooted]  reference phylogeny, i.e. the output of function \'sepp\' [required]" name="itree" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: removedtable.qza" name="oremovedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Filter fragments in tree from table.
-####################################
+###############################################################
 
 Filters fragments not inserted into a phylogenetic tree from a feature-
 table. Some fragments computed by e.g. Deblur or DADA2 are too remote to
@@ -58,9 +71,9 @@
     were not part of the tree. This table is mainly used for quality
     control, e.g. to inspect the ratio of removed reads per sample from the
     input table. You can ignore this table for downstream analyses.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_fragment-insertion_sepp.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_fragment-insertion_sepp.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,98 +1,91 @@
 <?xml version="1.0" ?>
-<tool id="qiime_fragment-insertion_sepp" name="qiime fragment-insertion sepp" version="2019.7">
-	<description> - Insert fragment sequences using SEPP into reference phylogenies like Greengenes 13_8</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_fragment-insertion_sepp" name="qiime fragment-insertion sepp"
+      version="2020.8">
+  <description>Insert fragment sequences using SEPP into reference phylogenies.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime fragment-insertion sepp
 
 --i-representative-sequences=$irepresentativesequences
 
-#if str($ireferencealignment) != 'None':
- --i-reference-alignment=$ireferencealignment
-#end if
+--i-reference-database=$ireferencedatabase
 
-#if str($ireferencephylogeny) != 'None':
- --i-reference-phylogeny=$ireferencephylogeny
-#end if
+--p-alignment-subset-size=$palignmentsubsetsize
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
-
+--p-placement-subset-size=$pplacementsubsetsize
 
-#if str($palignmentsubsetsize):
- --p-alignment-subset-size=$palignmentsubsetsize
-#end if
+--p-threads=$pthreads
 
-#if str($pplacementsubsetsize):
- --p-placement-subset-size="$pplacementsubsetsize"
+#if $pdebug:
+ --p-debug
 #end if
 
 --o-tree=otree
+
 --o-placements=oplacements
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otree.qza $otree;
 cp oplacements.qza $oplacements
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-representative-sequences: ARTIFACT FeatureData[Sequence] The sequences to insert                      [required]" name="irepresentativesequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-alignment: ARTIFACT FeatureData[AlignedSequence] The reference multiple nucleotide alignment used to construct the reference phylogeny.           [optional]" name="ireferencealignment" optional="True" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-phylogeny: ARTIFACT Phylogeny[Rooted]  The rooted reference phylogeny. Must be in sync with reference-alignment, i.e. each tip name must have exactly one corresponding record.            [optional]" name="ireferencephylogeny" optional="True" type="data"/>
-		<param label="--p-alignment-subset-size: INTEGER Each placement subset is further broken into subsets of at most these many sequences and a separate HMM is trained on each subset. The default alignment subset size is set to balance the exhaustiveness of the alignment step with the running time.   [default: 1000]" name="palignmentsubsetsize" optional="True" type="integer" value="1000"/>
-		<param label="--p-placement-subset-size: INTEGER The tree is divided into subsets such that each subset includes at most these many subsets. The placement step places the fragment on only one subset, determined based on alignment scores. The default placement subset is set to make sure the memory requirement of the pplacer step does not become prohibitively large." name="pplacementsubsetsize" optional="True" type="integer"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-		<data format="qza" label="${tool.name} on ${on_string}: placements.qza" name="oplacements"/>
-	</outputs>
-	<help><![CDATA[
-Insert fragment sequences using SEPP into reference phylogenies like Greengenes 13_8
-####################################################################################
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-representative-sequences: ARTIFACT FeatureData[Sequence] The sequences to insert into the reference tree. [required]" name="irepresentativesequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-database: ARTIFACT SeppReferenceDatabase The reference database to insert the representative sequences into.                              [required]" name="ireferencedatabase" optional="False" type="data" />
+    <param label="--p-alignment-subset-size: INTEGER Each placement subset is further broken into subsets of at most these many sequences and a separate HMM is trained on each subset.                 [default: 1000]" name="palignmentsubsetsize" optional="True" type="integer" value="1000" />
+    <param label="--p-placement-subset-size: INTEGER The tree is divided into subsets such that each subset includes at most these many subsets. The placement step places the fragment on only one subset, determined based on alignment scores. Further reading: https://github.com/smirarab/sepp/blob/master/tutorial/s epp-tutorial.md#sample-datasets-default-parameters. [default: 5000]" name="pplacementsubsetsize" optional="True" type="integer" value="5000" />
+    <param label="--p-debug: --p-debug: / --p-no-debug Collect additional run information to STDOUT for debugging. Temporary directories will not be removed if run fails.                             [default: False]" name="pdebug" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-Perform fragment insertion of 16S sequences using the SEPP algorithm
-against the Greengenes 13_8 99% tree.
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    <data format="qza" label="${tool.name} on ${on_string}: placements.qza" name="oplacements" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Insert fragment sequences using SEPP into reference phylogenies.
+###############################################################
+
+Perform fragment insertion of sequences using the SEPP algorithm.
 
 Parameters
 ----------
 representative_sequences : FeatureData[Sequence]
-    The sequences to insert
+    The sequences to insert into the reference tree.
+reference_database : SeppReferenceDatabase
+    The reference database to insert the representative sequences into.
 alignment_subset_size : Int, optional
     Each placement subset is further broken into subsets of at most these
-    many sequences and a separate HMM is trained on each subset. The
-    default alignment subset size is set to balance the exhaustiveness of
-    the alignment step with the running time.
+    many sequences and a separate HMM is trained on each subset.
 placement_subset_size : Int, optional
     The tree is divided into subsets such that each subset includes at most
     these many subsets. The placement step places the fragment on only one
-    subset, determined based on alignment scores. The default placement
-    subset is set to make sure the memory requirement of the pplacer step
-    does not become prohibitively large. Further reading:
+    subset, determined based on alignment scores. Further reading:
     https://github.com/smirarab/sepp/blob/master/tutorial/sepp-
-    tutorial.md#sample-datasets-default-parameters
-reference_alignment : FeatureData[AlignedSequence], optional
-    The reference multiple nucleotide alignment used to construct the
-    reference phylogeny.
-reference_phylogeny : Phylogeny[Rooted], optional
-    The rooted reference phylogeny. Must be in sync with reference-
-    alignment, i.e. each tip name must have exactly one corresponding
-    record.
+    tutorial.md#sample-datasets-default-parameters.
+threads : Int, optional
+    The number of threads to use.
 debug : Bool, optional
-    Print additional run information to STDOUT for debugging. Run together
-    with --verbose to actually see the information on STDOUT. Temporary
+    Collect additional run information to STDOUT for debugging. Temporary
     directories will not be removed if run fails.
 
 Returns
 -------
 tree : Phylogeny[Rooted]
-    The tree with inserted feature data
+    The tree with inserted feature data.
 placements : Placements
-	\
-	]]></help>
-<macros>
+    Information about the feature placements within the reference tree.
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_assign-ids.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_assign-ids.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,32 +1,46 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_assign-ids" name="qiime gneiss assign-ids" version="2019.7">
-	<description> - Assigns ids on internal nodes in the tree, and makes sure that they are consistent with the table columns.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_assign-ids" name="qiime gneiss assign-ids"
+      version="2020.8">
+  <description>Assigns ids on internal nodes in the tree, and makes sure that they are consistent with the table columns.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss assign-ids
 
 --i-input-table=$iinputtable
+
 --i-input-tree=$iinputtree
 
 --o-output-table=ooutputtable
+
 --o-output-tree=ooutputtree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp ooutputtable.qza $ooutputtable;
 cp ooutputtree.qza $ooutputtree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-input-table: ARTIFACT FeatureTable[Frequency] The input table of counts.                   [required]" name="iinputtable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-input-tree: ARTIFACT Phylogeny[Rooted]  The input tree with potential missing ids.   [required]" name="iinputtree" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: outputtable.qza" name="ooutputtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: outputtree.qza" name="ooutputtree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-input-table: ARTIFACT FeatureTable[Frequency] The input table of counts.                   [required]" name="iinputtable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-input-tree: ARTIFACT Phylogeny[Rooted]  The input tree with potential missing ids.   [required]" name="iinputtree" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: outputtable.qza" name="ooutputtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: outputtree.qza" name="ooutputtree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Assigns ids on internal nodes in the tree, and makes sure that they are consistent with the table columns.
-##########################################################################################################
+###############################################################
+
 
 Assigns UUIDs to uniquely identify internal nodes in the tree.  Also
 corrects for polytomies to create strictly bifurcating trees and aligns the
@@ -45,9 +59,9 @@
     A table with features matching the tree tips.
 output_tree : Hierarchy
     A tree with uniquely identifying ids.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_balance-taxonomy.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_gneiss_balance-taxonomy" name="qiime gneiss balance-taxonomy" version="2019.7">
-	<description> - Balance Summary</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime gneiss balance-taxonomy
-
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-	--i-taxonomy '$tax'
-#else:
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	--i-taxonomy '$tax'
-#end if
-
-
---i-table=$itable
---i-tree=$itree
---p-balance-name="$pbalancename"
-
-
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
-
-
-
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
-#end if
-
-#if str($ptaxalevel):
- --p-taxa-level=$ptaxalevel
-#end if
-
-#if str($pnfeatures):
- --p-n-features=$pnfeatures
-#end if
-
-#if str($pthreshold):
- --p-threshold="$pthreshold"
-#end if
-#if str($mmetadatacolumn):
- --m-metadata-column="$mmetadatacolumn"
-#end if
-
---o-visualization=ovisualization
-;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
-&& cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
-
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] A table of abundances.                    [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       The tree used to calculate the balances. Hierarchy                                                       [required]" name="itree" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-taxonomy: ARTIFACT FeatureData[Taxonomy] Taxonomy information for the OTUs.        [required]" name="itaxonomy" optional="False" type="data"/>
-		<param label="--p-balance-name: TEXT   Name of the balance to summarize.         [required]" name="pbalancename" optional="False" type="text"/>
-		<param label="--p-pseudocount: NUMBER  The pseudocount to add to avoid division by zero. [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5"/>
-		<param label="--p-taxa-level: INTEGER  Level of taxonomy to summarize.         [default: 0]" name="ptaxalevel" optional="True" type="integer" value="0"/>
-		<param label="--p-n-features: INTEGER  The number of features to plot in the proportion plot.                                  [default: 10]" name="pnfeatures" optional="True" type="integer" value="10"/>
-		<param label="--p-threshold: NUMBER    A threshold to designate discrete categories for a numerical metadata column. This will split the numerical column values into two categories, values below the threshold, and values above the threshold. If not specified, this threshold will default to the mean.                                     [optional]" name="pthreshold" optional="True" type="float"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical | Numeric] Metadata column for plotting the balance (optional).                               [optional]" name="mmetadatacolumn" optional="True" type="text"/>
-
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip"  optional="True" />
-
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
-Balance Summary
-###############
-
-Visualize the distribution of a single balance and summarize its numerator
-and denominator components.
-
-Parameters
-----------
-table : FeatureTable[Frequency]
-    A table of abundances.
-tree : Hierarchy
-    The tree used to calculate the balances.
-taxonomy : FeatureData[Taxonomy]
-    Taxonomy information for the OTUs.
-balance_name : Str
-    Name of the balance to summarize.
-pseudocount : Float, optional
-    The pseudocount to add to avoid division by zero.
-taxa_level : Int, optional
-    Level of taxonomy to summarize.
-n_features : Int, optional
-    The number of features to plot in the proportion plot.
-threshold : Float, optional
-    A threshold to designate discrete categories for a numerical metadata
-    column. This will split the numerical column values into two
-    categories, values below the threshold, and values above the threshold.
-    If not specified, this threshold will default to the mean.
-metadata : MetadataColumn[Categorical | Numeric], optional
-    Metadata column for plotting the balance (optional).
-
-Returns
--------
-visualization : Visualization
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_gneiss_correlation-clustering.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_correlation-clustering.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,32 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_correlation-clustering" name="qiime gneiss correlation-clustering" version="2019.7">
-	<description> - Hierarchical clustering using feature correlation.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_correlation-clustering" name="qiime gneiss correlation-clustering"
+      version="2020.8">
+  <description>Hierarchical clustering using feature correlation.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss correlation-clustering
 
 --i-table=$itable
 
-#if $ppseudocount:
- --p-pseudocount=$ppseudocount
+--p-pseudocount=$ppseudocount
+
+--o-clustering=oclustering
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-clustering=oclustering
 ;
 cp oclustering.qza $oclustering
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples in which the columns will be clustered.            [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: clustering.qza" name="oclustering"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table containing the samples in which the columns will be clustered.            [required]" name="itable" optional="False" type="data" />
+    <param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: clustering.qza" name="oclustering" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Hierarchical clustering using feature correlation.
-##################################################
+###############################################################
 
 Build a bifurcating tree that represents a hierarchical clustering of
 features.  The hiearchical clustering uses Ward hierarchical clustering
@@ -47,9 +57,9 @@
     feature identifiers in the table. This tree can contain tip ids that
     are not present in the table, but all feature ids in the table must be
     present in this tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_dendrogram-heatmap.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_dendrogram-heatmap.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,152 +1,187 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_dendrogram-heatmap" name="qiime gneiss dendrogram-heatmap" version="2019.7">
-	<description> - Dendrogram heatmap.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_dendrogram-heatmap" name="qiime gneiss dendrogram-heatmap"
+      version="2020.8">
+  <description>Dendrogram heatmap.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss dendrogram-heatmap
 
 --i-table=$itable
+
 --i-tree=$itree
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+
+--m-metadata-column=$mmetadatacolumn
 
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
+--p-pseudocount=$ppseudocount
 
-
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
-#end if
-
-#if str($pndim):
- --p-ndim=$pndim
-#end if
+--p-ndim=$pndim
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
 #if str($pcolormap) != 'None':
- --p-color-map=$pcolormap
+--p-color-map=$pcolormap
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp oclustering.qza $oclustering
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table that will be plotted as a heatmap. This table is assumed to have strictly positive values.                          [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A hierarchy of feature identifiers where each Hierarchy             tipcorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.       [required]" name="itree" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to group the samples. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-pseudocount: NUMBER  The pseudocount to add to avoid division by zero. [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5"/>
-		<param label="--p-ndim: INTEGER        Number of dimensions to highlight.     [default: 10]" name="pndim" optional="True" type="integer" value="10"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="clr">clr</option>
-			<option value="log">log</option>
-		</param>
-		<param label="--p-color-map: " name="pcolormap" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="viridis">viridis</option>
-			<option value="inferno">inferno</option>
-			<option value="plasma">plasma</option>
-			<option value="magma">magma</option>
-			<option value="Blues">Blues</option>
-			<option value="BuGn">BuGn</option>
-			<option value="BuPu">BuPu</option>
-			<option value="GnBu">GnBu</option>
-			<option value="Greens">Greens</option>
-			<option value="Greys">Greys</option>
-			<option value="Oranges">Oranges</option>
-			<option value="OrRd">OrRd</option>
-			<option value="PuBu">PuBu</option>
-			<option value="PuBuGn">PuBuGn</option>
-			<option value="PuRd">PuRd</option>
-			<option value="Purples">Purples</option>
-			<option value="RdPu">RdPu</option>
-			<option value="Reds">Reds</option>
-			<option value="YlGn">YlGn</option>
-			<option value="YlGnBu">YlGnBu</option>
-			<option value="YlOrBr">YlOrBr</option>
-			<option value="YlOrRd">YlOrRd</option>
-			<option value="afmhot">afmhot</option>
-			<option value="autumn">autumn</option>
-			<option value="bone">bone</option>
-			<option value="cool">cool</option>
-			<option value="copper">copper</option>
-			<option value="gist_heat">gist_heat</option>
-			<option value="gray">gray</option>
-			<option value="hot">hot</option>
-			<option value="pink">pink</option>
-			<option value="spring">spring</option>
-			<option value="summer">summer</option>
-			<option value="winter">winter</option>
-			<option value="BrBG">BrBG</option>
-			<option value="bwr">bwr</option>
-			<option value="coolwarm">coolwarm</option>
-			<option value="PiYG">PiYG</option>
-			<option value="PRGn">PRGn</option>
-			<option value="PuOr">PuOr</option>
-			<option value="RdBu">RdBu</option>
-			<option value="RdGy">RdGy</option>
-			<option value="RdYlBu">RdYlBu</option>
-			<option value="RdYlGn">RdYlGn</option>
-			<option value="Spectral">Spectral</option>
-			<option value="seismic">seismic</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="Paired">Paired</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Vega10">Vega10</option>
-			<option value="Vega20">Vega20</option>
-			<option value="Vega20b">Vega20b</option>
-			<option value="Vega20c">Vega20c</option>
-			<option value="gist_earth">gist_earth</option>
-			<option value="terrain">terrain</option>
-			<option value="ocean">ocean</option>
-			<option value="gist_stern">gist_stern</option>
-			<option value="brg">brg</option>
-			<option value="CMRmap">CMRmap</option>
-			<option value="cubehelix">cubehelix</option>
-			<option value="gnuplot">gnuplot</option>
-			<option value="gnuplot2">gnuplot2</option>
-			<option value="gist_ncar">gist_ncar</option>
-			<option value="nipy_spectral">nipy_spectral</option>
-			<option value="jet">jet</option>
-			<option value="rainbow">rainbow</option>
-			<option value="gist_rainbow">gist_rainbow</option>
-			<option value="hsv">hsv</option>
-			<option value="flag">flag</option>
-			<option value="prism">prism</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table that will be plotted as a heatmap. This table is assumed to have strictly positive values.                          [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A hierarchy of feature identifiers where each Hierarchy             tipcorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.       [required]" name="itree" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to group the samples. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-pseudocount: NUMBER  The pseudocount to add to avoid division by zero. [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5" />
+    <param label="--p-ndim: INTEGER        Number of dimensions to highlight.     [default: 10]" name="pndim" optional="True" type="integer" value="10" />
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="clr">clr</option>
+      <option value="log">log</option>
+    </param>
+    <param label="--p-color-map: " name="pcolormap" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="viridis">viridis</option>
+      <option value="inferno">inferno</option>
+      <option value="plasma">plasma</option>
+      <option value="magma">magma</option>
+      <option value="Blues">Blues</option>
+      <option value="BuGn">BuGn</option>
+      <option value="BuPu">BuPu</option>
+      <option value="GnBu">GnBu</option>
+      <option value="Greens">Greens</option>
+      <option value="Greys">Greys</option>
+      <option value="Oranges">Oranges</option>
+      <option value="OrRd">OrRd</option>
+      <option value="PuBu">PuBu</option>
+      <option value="PuBuGn">PuBuGn</option>
+      <option value="PuRd">PuRd</option>
+      <option value="Purples">Purples</option>
+      <option value="RdPu">RdPu</option>
+      <option value="Reds">Reds</option>
+      <option value="YlGn">YlGn</option>
+      <option value="YlGnBu">YlGnBu</option>
+      <option value="YlOrBr">YlOrBr</option>
+      <option value="YlOrRd">YlOrRd</option>
+      <option value="afmhot">afmhot</option>
+      <option value="autumn">autumn</option>
+      <option value="bone">bone</option>
+      <option value="cool">cool</option>
+      <option value="copper">copper</option>
+      <option value="gist_heat">gist_heat</option>
+      <option value="gray">gray</option>
+      <option value="hot">hot</option>
+      <option value="pink">pink</option>
+      <option value="spring">spring</option>
+      <option value="summer">summer</option>
+      <option value="winter">winter</option>
+      <option value="BrBG">BrBG</option>
+      <option value="bwr">bwr</option>
+      <option value="coolwarm">coolwarm</option>
+      <option value="PiYG">PiYG</option>
+      <option value="PRGn">PRGn</option>
+      <option value="PuOr">PuOr</option>
+      <option value="RdBu">RdBu</option>
+      <option value="RdGy">RdGy</option>
+      <option value="RdYlBu">RdYlBu</option>
+      <option value="RdYlGn">RdYlGn</option>
+      <option value="Spectral">Spectral</option>
+      <option value="seismic">seismic</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="Paired">Paired</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Vega10">Vega10</option>
+      <option value="Vega20">Vega20</option>
+      <option value="Vega20b">Vega20b</option>
+      <option value="Vega20c">Vega20c</option>
+      <option value="gist_earth">gist_earth</option>
+      <option value="terrain">terrain</option>
+      <option value="ocean">ocean</option>
+      <option value="gist_stern">gist_stern</option>
+      <option value="brg">brg</option>
+      <option value="CMRmap">CMRmap</option>
+      <option value="cubehelix">cubehelix</option>
+      <option value="gnuplot">gnuplot</option>
+      <option value="gnuplot2">gnuplot2</option>
+      <option value="gist_ncar">gist_ncar</option>
+      <option value="nipy_spectral">nipy_spectral</option>
+      <option value="jet">jet</option>
+      <option value="rainbow">rainbow</option>
+      <option value="gist_rainbow">gist_rainbow</option>
+      <option value="hsv">hsv</option>
+      <option value="flag">flag</option>
+      <option value="prism">prism</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Dendrogram heatmap.
-###################
+###############################################################
+
+.. deprecated::
+   This Visualizer is deprecated and will be removed in a future version of
+   this plugin.
 
 Visualize the feature table as a heatmap, with samples sorted along a
 specified categorical metadata column and features clustered together
@@ -179,9 +214,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_gradient-clustering.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_gradient-clustering.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,18 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_gradient-clustering" name="qiime gneiss gradient-clustering" version="2019.7">
-	<description> - Hierarchical clustering using gradient information.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_gradient-clustering" name="qiime gneiss gradient-clustering"
+      version="2020.8">
+  <description>Hierarchical clustering using gradient information.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss gradient-clustering
 
 --i-table=$itable
---m-gradient-column="$mgradientcolumn"
+
+#if str($mgradientfile) != 'None':
+--m-gradient-file=$mgradientfile
+#end if
+
+#if '__ob__' in str($mgradientcolumn):
+  #set $mgradientcolumn_temp = $mgradientcolumn.replace('__ob__', '[')
+  #set $mgradientcolumn = $mgradientcolumn_temp
+#end if
+#if '__cb__' in str($mgradientcolumn):
+  #set $mgradientcolumn_temp = $mgradientcolumn.replace('__cb__', ']')
+  #set $mgradientcolumn = $mgradientcolumn_temp
+#end if
+#if 'X' in str($mgradientcolumn):
+  #set $mgradientcolumn_temp = $mgradientcolumn.replace('X', '\\')
+  #set $mgradientcolumn = $mgradientcolumn_temp
+#end if
+#if '__sq__' in str($mgradientcolumn):
+  #set $mgradientcolumn_temp = $mgradientcolumn.replace('__sq__', "'")
+  #set $mgradientcolumn = $mgradientcolumn_temp
+#end if
+#if '__db__' in str($mgradientcolumn):
+  #set $mgradientcolumn_temp = $mgradientcolumn.replace('__db__', '"')
+  #set $mgradientcolumn = $mgradientcolumn_temp
+#end if
+
+--m-gradient-column=$mgradientcolumn
 
 
-#if $mgradientfile:
---m-gradient-file=$mgradientfile
+#if $pignoremissingsamples:
+ --p-ignore-missing-samples
 #end if
 
 #if $pnoweighted:
@@ -20,23 +47,33 @@
 #end if
 
 --o-clustering=oclustering
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp oclustering.qza $oclustering
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | Composition]       The feature table containing the samples in which the columns will be clustered.                   [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-gradient-column: COLUMN  MetadataColumn[Numeric] Contains gradient values to sort the features and samples.                                     [required]" name="mgradientcolumn" optional="False" type="text"/>
-		<param label="--p-no-weighted : Specifies if abundance or presence/absence information should be used to perform the clustering. [default: False]" name="pnoweighted" selected="False" type="boolean"/>
-
-		<param label="--m-gradient-file: " name="mgradientfile" optional="True" type="data" format="tabular,qza,no_unzip.zip" />
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: clustering.qza" name="oclustering"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | RelativeFrequency | Composition]       The feature table containing the samples in which the columns will be clustered.                   [required]" name="itable" optional="False" type="data" />
+    <param format="tabular,qza,no_unzip.zip" label="--m-gradient-file: METADATA" name="mgradientfile" optional="False" type="data" />
+    <param label="--m-gradient-column: COLUMN  MetadataColumn[Numeric] Contains gradient values to sort the features and samples.                                     [required]" name="mgradientcolumn" optional="False" type="text" />
+    <param label="--p-ignore-missing-samples: --p-ignore-missing-samples: / --p-no-ignore-missing-samples [default: False]" name="pignoremissingsamples" selected="False" type="boolean" />
+    <param label="--p-no-weighted: Do not specifies if abundance or presence/absence information should be used to perform the clustering. [default: True]" name="pnoweighted" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: clustering.qza" name="oclustering" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Hierarchical clustering using gradient information.
-###################################################
+###############################################################
 
 Build a bifurcating tree that represents a hierarchical clustering of
 features.  The hiearchical clustering uses Ward hierarchical clustering
@@ -51,6 +88,7 @@
     clustered.
 gradient : MetadataColumn[Numeric]
     Contains gradient values to sort the features and samples.
+ignore_missing_samples : Bool, optional
 weighted : Bool, optional
     Specifies if abundance or presence/absence information should be used
     to perform the clustering.
@@ -62,9 +100,9 @@
     feature identifiers in the table. This tree can contain tip ids that
     are not present in the table, but all feature ids in the table must be
     present in this tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_ilr-hierarchical.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_ilr-hierarchical.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,34 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_ilr-hierarchical" name="qiime gneiss ilr-hierarchical" version="2019.7">
-	<description> - Isometric Log-ratio Transform applied to a hierarchical clustering</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_ilr-hierarchical" name="qiime gneiss ilr-hierarchical"
+      version="2020.8">
+  <description>Isometric Log-ratio Transform applied to a hierarchical clustering</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss ilr-hierarchical
 
 --i-table=$itable
+
 --i-tree=$itree
 
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
+--p-pseudocount=$ppseudocount
+
+--o-balances=obalances
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-balances=obalances
 ;
 cp obalances.qza $obalances
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | Composition] The feature table containing the samples in which the ilr transform will be performed.      [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A hierarchy of feature identifiers that defines the Hierarchy             partitions of features.  Each tip in the hierarchycorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.  This assumes that all of the internal nodes in the tree have labels.                                   [required]" name="itree" optional="False" type="data"/>
-		<param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: balances.qza" name="obalances"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | Composition] The feature table containing the samples in which the ilr transform will be performed.      [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A hierarchy of feature identifiers that defines the Hierarchy             partitions of features.  Each tip in the hierarchycorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.  This assumes that all of the internal nodes in the tree have labels.                                   [required]" name="itree" optional="False" type="data" />
+    <param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: balances.qza" name="obalances" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Isometric Log-ratio Transform applied to a hierarchical clustering
-##################################################################
+###############################################################
 
 Calculate balances given a hierarchy.
 
@@ -51,9 +62,9 @@
 -------
 balances : FeatureTable[Balance]
     The resulting balances from the ilr transform.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_ilr-phylogenetic.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_gneiss_ilr-phylogenetic.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,37 +1,48 @@
 <?xml version="1.0" ?>
-<tool id="qiime_gneiss_ilr-phylogenetic" name="qiime gneiss ilr-phylogenetic" version="2019.7">
-	<description> - Isometric Log-ratio Transform applied to a phylogenetic tree</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_gneiss_ilr-phylogenetic" name="qiime gneiss ilr-phylogenetic"
+      version="2020.8">
+  <description>Isometric Log-ratio Transform applied to a phylogenetic tree</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime gneiss ilr-phylogenetic
 
 --i-table=$itable
+
 --i-tree=$itree
 
-#if str($ppseudocount):
- --p-pseudocount=$ppseudocount
-#end if
+--p-pseudocount=$ppseudocount
 
 --o-balances=obalances
+
 --o-hierarchy=ohierarchy
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp obalances.qza $obalances;
 cp ohierarchy.qza $ohierarchy
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | Composition] The feature table containing the samples in which the ilr transform will be performed.      [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A rooted phylogeny of feature identifiers that Phylogeny[Rooted]     defines the partitions of features.  Each tip in the hierarchycorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.  This assumes that all of the internal nodes in the tree have labels. This tree may contain polytomic nodes (i.e., nodes with more than two children), in which case they will be bifurcated.                  [required]" name="itree" optional="False" type="data"/>
-		<param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: balances.qza" name="obalances"/>
-		<data format="qza" label="${tool.name} on ${on_string}: hierarchy.qza" name="ohierarchy"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency | Composition] The feature table containing the samples in which the ilr transform will be performed.      [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT       A rooted phylogeny of feature identifiers that Phylogeny[Rooted]     defines the partitions of features.  Each tip in the hierarchycorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.  This assumes that all of the internal nodes in the tree have labels. This tree may contain polytomic nodes (i.e., nodes with more than two children), in which case they will be bifurcated.                  [required]" name="itree" optional="False" type="data" />
+    <param label="--p-pseudocount: NUMBER  The value to add to zero counts in the feature table.                                [default: 0.5]" name="ppseudocount" optional="True" type="float" value="0.5" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: balances.qza" name="obalances" />
+    <data format="qza" label="${tool.name} on ${on_string}: hierarchy.qza" name="ohierarchy" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Isometric Log-ratio Transform applied to a phylogenetic tree
-############################################################
+###############################################################
 
 Calculate balances given a rooted phylogeny.
 
@@ -57,9 +68,9 @@
     The resulting balances from the ilr transform.
 hierarchy : Hierarchy
     Hierarchy from bifurcated phylogeny
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_gneiss_lme-regression.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_gneiss_lme-regression" name="qiime gneiss lme-regression" version="2019.7">
-	<description> - Simplicial Linear mixed effects regression</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime gneiss lme-regression
-
---i-table=$itable
---i-tree=$itree
---p-formula="$pformula"
---p-groups="$pgroups"
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
---o-visualization=ovisualization
-;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
-&& cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Balance] The feature table containing the samples in which simplicial regression with mixed effect will be performed.                                   [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    A hierarchy of feature identifiers where each tip Hierarchy          corresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                        [required]" name="itree" optional="False" type="data"/>
-		<param label="--p-formula: TEXT     Statistical formula specifying the statistical model. In other words, a list of the metadata categories that will be used in the linear mixed effect model, typically separated by '+'. For more information see https://patsy.readthedocs.io/en/latest/API-reference.ht ml                                           [required]" name="pformula" optional="False" type="text"/>
-		<param label="--p-groups: TEXT                                                   [required]" name="pgroups" optional="False" type="text"/>
-
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
-Simplicial Linear mixed effects regression
-##########################################
-
-Build and run linear mixed effects model on balances. Use LME over OLS when
-you have repeated measurements such as (timeseries).
-
-Parameters
-----------
-table : FeatureTable[Balance]
-    The feature table containing the samples in which simplicial regression
-    with mixed effect will be performed.
-tree : Hierarchy
-    A hierarchy of feature identifiers where each tip corresponds to the
-    feature identifiers in the table. This tree can contain tip ids that
-    are not present in the table, but all feature ids in the table must be
-    present in this tree.
-metadata : Metadata
-    Metadata information that contains the covariates of interest.
-formula : Str
-    Statistical formula specifying the statistical model. In other words, a
-    list of the metadata categories that will be used in the linear mixed
-    effect model, typically separated by "+". For more information see
-    https://patsy.readthedocs.io/en/latest/API-reference.html
-groups : Str
-	\
-
-Returns
--------
-visualization : Visualization
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_gneiss_ols-regression.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_gneiss_ols-regression" name="qiime gneiss ols-regression" version="2019.7">
-	<description> - Simplicial Ordinary Least Squares Regression</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime gneiss ols-regression
-
---i-table=$itable
---i-tree=$itree
---p-formula="$pformula"
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
---o-visualization=ovisualization
-;
-
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
-&& cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Balance] The feature table containing the samples in which simplicial regression will be performed.     [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT    A hierarchy of feature identifiers where each Hierarchy          tipcorresponds to the feature identifiers in the table. This tree can contain tip ids that are not present in the table, but all feature ids in the table must be present in this tree.                        [required]" name="itree" optional="False" type="data"/>
-		<param label="--p-formula: TEXT     Formula specifying the statistical model. In other words, a list of the metadata categories that will be used in the regression model, typically separated by '+'. For more information see https://patsy.readthedocs.io/en/latest/API-reference.html                                           [required]" name="pformula" optional="False" type="text"/>
-
-
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
-Simplicial Ordinary Least Squares Regression
-############################################
-
-Perform linear regression on balances. This will tell youhow much
-variability is explained by metadata categories in your formula.
-
-Parameters
-----------
-table : FeatureTable[Balance]
-    The feature table containing the samples in which simplicial regression
-    will be performed.
-tree : Hierarchy
-    A hierarchy of feature identifiers where each tipcorresponds to the
-    feature identifiers in the table. This tree can contain tip ids that
-    are not present in the table, but all feature ids in the table must be
-    present in this tree.
-metadata : Metadata
-    Metadata information that contains the covariates of interest.
-formula : Str
-    Formula specifying the statistical model. In other words, a list of the
-    metadata categories that will be used in the regression model,
-    typically separated by "+". For more information see
-    https://patsy.readthedocs.io/en/latest/API-reference.html
-
-Returns
--------
-visualization : Visualization
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_longitudinal_anova.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_anova.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,67 +1,70 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_anova" name="qiime longitudinal anova" version="2019.7">
-	<description> - ANOVA test</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_anova" name="qiime longitudinal anova"
+      version="2020.8">
+  <description>ANOVA test</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal anova
-
-
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if 'X' in str($pformula):
-  #set $pformula_temp = $pformula.replace('X', "~")
-  #set $pformula = $pformula_temp
+#if $pformula:
+ --p-formula
 #end if
 
---p-formula="$pformula"
-
+#if str($psstype) != 'None':
+--p-sstype=$psstype
+#end if
 
+--o-visualization=ovisualization
 
-#if str($psstype) != 'None':
- --p-sstype=$psstype
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
+;
+cp ohierarchy.qza $ohierarchy
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
---o-visualization=ovisualization
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param label="--p-formula: TEXT     R-style formula specifying the model. All terms must be present in the sample metadata or metadata-transformable artifacts and can be continuous or categorical metadata columns. Formulae will be in the format 'a ~ b + c', where 'a' is the metric (dependent variable) and 'b' and 'c' are independent covariates. Use '+' to add a variable; '+ a:b' to add an interaction between variables a and b; '*' to include a variable and all interactions; and '-' to subtract a particular term (e.g., an interaction term). See https://patsy.readthedocs.io/en/latest/formulas.html for full documentation of valid formula operators. Always enclose formulae in quotes to avoid unpleasant surprises.                                   [required]" name="pformula" optional="False" type="text"/>
-		<param label="--p-sstype: " name="psstype" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="I">I</option>
-			<option value="II">II</option>
-			<option value="III">III</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Sample metadata containing formula terms. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-formula: --p-formula: TEXT     R-style formula specifying the model. All terms must be present in the sample metadata or metadata-transformable artifacts and can be continuous or categorical metadata columns. Formulae will be in the format \'a ~ b + c\', where \'a\' is the metric (dependent variable) and \'b\' and \'c\' are independent covariates. Use \'+\' to add a variable; \'+ a:b\' to add an interaction between variables a and b; \'*\' to include a variable and all interactions; and \'-\' to subtract a particular term (e.g., an interaction term). See https://patsy.readthedocs.io/en/latest/formulas.html for full documentation of valid formula operators. Always enclose formulae in quotes to avoid unpleasant surprises.                                   [required]" name="pformula" selected="False" type="boolean" />
+    <param label="--p-sstype: " name="psstype" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="I">I</option>
+      <option value="II">II</option>
+      <option value="III">III</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 ANOVA test
-##########
+###############################################################
 
 Perform an ANOVA test on any factors present in a metadata file and/or
 metadata-transformable artifacts. This is followed by pairwise t-tests to
@@ -89,9 +92,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_feature-volatility.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_feature-volatility.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,42 +1,85 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_feature-volatility" name="qiime longitudinal feature-volatility" version="2019.7">
-	<description> - Feature volatility analysis</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_feature-volatility" name="qiime longitudinal feature-volatility"
+      version="2020.8">
+  <description>Feature volatility analysis</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal feature-volatility
 
 --i-table=$itable
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
 
 
---p-state-column="$pstatecolumn"
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__sq__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 
 #if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+  --p-individual-id-column=$pindividualidcolumn
 #end if
 
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
+--p-n-jobs=$pnjobs
 
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
-
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
-#end if
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $pparametertuning:
@@ -44,80 +87,91 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($pimportancethreshold) != 'None':
+--p-importance-threshold=$pimportancethreshold
 #end if
 
+#if str($pfeaturecount) != 'None':
+--p-feature-count=$pfeaturecount
+#end if
 
 --o-filtered-table=ofilteredtable
+
 --o-feature-importance=ofeatureimportance
+
 --o-volatility-plot=ovolatilityplot
+
 --o-accuracy-results=oaccuracyresults
+
 --o-sample-estimator=osampleestimator
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp ofilteredtable.qza $ofilteredtable;
-cp ofeatureimportance.qza $ofeatureimportance;
-qiime tools export --input-path ovolatilityplot.qzv --output-path out   && mkdir -p '$ovolatilityplot.files_path'
-&& cp -r out/* '$ovolatilityplot.files_path'
-&& mv '$ovolatilityplot.files_path/index.html' '$ovolatilityplot';
-qiime tools export --input-path oaccuracyresults.qzv --output-path out   && mkdir -p '$oaccuracyresults.files_path'
-&& cp -r out/* '$oaccuracyresults.files_path'
-&& mv '$oaccuracyresults.files_path/index.html' '$oaccuracyresults';
 cp osampleestimator.qza $osampleestimator
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-state-column: TEXT  Metadata containing collection time (state) values for each sample. Must contain exclusively numeric values.                                    [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="True" type="text"/>
-		<param label="--p-cv: INTEGER         Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" min="1" value="5"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.      [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)       Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.      [default: 100]" name="pnestimators" optional="True" type="integer" min="1" value="100"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestRegressor">RandomForestRegressor</option>
-			<option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
-			<option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
-			<option value="AdaBoostRegressor">AdaBoostRegressor</option>
-			<option value="ElasticNet">ElasticNet</option>
-			<option value="Ridge">Ridge</option>
-			<option value="Lasso">Lasso</option>
-			<option value="KNeighborsRegressor">KNeighborsRegressor</option>
-			<option value="LinearSVR">LinearSVR</option>
-			<option value="SVR">SVR</option>
-		</param>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                              [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Metadata containing collection time (state) values for each sample. Must contain exclusively numeric values.                                    [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-cv: INTEGER         Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.      [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)       Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.      [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestRegressor">RandomForestRegressor</option>
+      <option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
+      <option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
+      <option value="AdaBoostRegressor">AdaBoostRegressor</option>
+      <option value="ElasticNet">ElasticNet</option>
+      <option value="Ridge">Ridge</option>
+      <option value="Lasso">Lasso</option>
+      <option value="KNeighborsRegressor">KNeighborsRegressor</option>
+      <option value="LinearSVR">LinearSVR</option>
+      <option value="SVR">SVR</option>
+    </param>
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                              [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--p-importance-threshold: " name="pimportancethreshold" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Float % Range(0">Float % Range(0</option>
+      <option value="None">None</option>
+      <option value="inclusive_start=False">inclusive_start=False</option>
+    </param>
+    <param label="--p-feature-count: " name="pfeaturecount" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-		<data format="html" label="${tool.name} on ${on_string}: volatilityplot.qzv" name="ovolatilityplot"/>
-		<data format="html" label="${tool.name} on ${on_string}: accuracyresults.qzv" name="oaccuracyresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    <data format="html" label="${tool.name} on ${on_string}: volatilityplot.html" name="ovolatilityplot" />
+    <data format="html" label="${tool.name} on ${on_string}: accuracyresults.html" name="oaccuracyresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Feature volatility analysis
-###########################
+###############################################################
 
 Identify features that are predictive of a numeric metadata column,
 state_column (e.g., time), and plot their relative frequencies across
@@ -142,6 +196,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -157,6 +213,14 @@
     samples are detected. "ignore" will cause the feature table and
     metadata to be filtered, so that only samples found in both files are
     retained.
+importance_threshold : Float % Range(0, None, inclusive_start=False) | Str % Choices('q1', 'q2', 'q3'), optional
+    Filter feature table to exclude any features with an importance score
+    less than this threshold. Set to "q1", "q2", or "q3" to select the
+    first, second, or third quartile of values. Set to "None" to disable
+    this filter.
+feature_count : Int % Range(1, None) | Str % Choices('all'), optional
+    Filter feature table to include top N most important features. Set to
+    "all" to include all features.
 
 Returns
 -------
@@ -170,9 +234,9 @@
     Accuracy results visualization.
 sample_estimator : SampleEstimator[Regressor]
     Trained sample regressor.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_first-differences.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_first-differences.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,78 +1,122 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_first-differences" name="qiime longitudinal first-differences" version="2019.7">
-	<description> - Compute first differences or difference from baseline between sequential states</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_first-differences" name="qiime longitudinal first-differences"
+      version="2020.8">
+  <description>Compute first differences or difference from baseline between sequential states</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal first-differences
 
---p-state-column="$pstatecolumn"
---p-metric="$pmetric"
+#if str($itable) != 'None':
+--i-table=$itable
+#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
 
 
-#if '__pd__' in str($pindividualidcolumn):
-	#set $pwhere_temp = $pindividualidcolumn.replace('__pd__', "#")
-	#set $pindividualidcolumn = $pwhere_temp
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
---p-individual-id-column="$pindividualidcolumn"
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__sq__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+
+--p-individual-id-column=$pindividualidcolumn
 
 
-
-#if str($itable) != 'None':
- --i-table=$itable
-#end if
+--p-metric=$pmetric
 
 #if str($preplicatehandling) != 'None':
- --p-replicate-handling=$preplicatehandling
+--p-replicate-handling=$preplicatehandling
 #end if
 
 #if str($pbaseline):
- --p-baseline="$pbaseline"
+  --p-baseline=$pbaseline
+#end if
+--o-first-differences=ofirstdifferences
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
---o-first-differences=ofirstdifferences
 ;
 cp ofirstdifferences.qza $ofirstdifferences
-	]]></command>
-	<inputs>
-		<param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param label="--p-metric: TEXT        Numerical metadata or artifact column to test. [required]" name="pmetric" optional="False" type="text"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to optionally use for computing first differences.                               [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="random">random</option>
-			<option value="drop">drop</option>
-		</param>
-		<param label="--p-baseline: NUMBER    A value listed in the state-column metadata column against which all other states should be compared. Toggles calculation of static differences instead of first differences (which are calculated if no value is given for baseline). If a 'baseline' value is provided, sample differences at each state are compared against the baseline state, instead of the previous state. Must be a value listed in the state-column.                              [optional]" name="pbaseline" optional="True" type="float"/>
 
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to optionally use for computing first differences.                               [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-metric: TEXT        Numerical metadata or artifact column to test. [required]" name="pmetric" optional="False" type="text" />
+    <param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="random">random</option>
+      <option value="drop">drop</option>
+    </param>
+    <param label="--p-baseline: NUMBER    A value listed in the state-column metadata column against which all other states should be compared. Toggles calculation of static differences instead of first differences (which are calculated if no value is given for baseline). If a \'baseline\' value is provided, sample differences at each state are compared against the baseline state, instead of the previous state. Must be a value listed in the state-column.                              [optional]" name="pbaseline" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: firstdifferences.qza" name="ofirstdifferences"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: firstdifferences.qza" name="ofirstdifferences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Compute first differences or difference from baseline between sequential states
-###############################################################################
+###############################################################
+
 
 Calculates first differences in "metric" between sequential states for
 samples collected from individual subjects sampled repeatedly at two or
@@ -117,9 +161,9 @@
 -------
 first_differences : SampleData[FirstDifferences]
     Series of first differences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_first-distances.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_first-distances.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,64 +1,116 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_first-distances" name="qiime longitudinal first-distances" version="2019.7">
-	<description> - Compute first distances or distance from baseline between sequential states</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_first-distances" name="qiime longitudinal first-distances"
+      version="2020.8">
+  <description>Compute first distances or distance from baseline between sequential states</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal first-distances
 
 --i-distance-matrix=$idistancematrix
---p-state-column="$pstatecolumn"
---p-individual-id-column="$pindividualidcolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($pbaseline):
- --p-baseline="$pbaseline"
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
 #end if
 
-#if str($preplicatehandling) != 'None':
- --p-replicate-handling=$preplicatehandling
-#end if
+--p-state-column=$pstatecolumn
 
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__sq__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
 
+--p-individual-id-column=$pindividualidcolumn
+
+
+#if str($pbaseline):
+  --p-baseline=$pbaseline
+#end if
+#if str($preplicatehandling) != 'None':
+--p-replicate-handling=$preplicatehandling
+#end if
 
 --o-first-distances=ofirstdistances
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofirstdistances.qza $ofirstdistances
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix       Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param label="--p-baseline: NUMBER    A value listed in the state-column metadata column against which all other states should be compared. Toggles calculation of static distances instead of first distances (which are calculated if no value is given for baseline). If a 'baseline' value is provided, sample distances at each state are compared against the baseline state, instead of the previous state. Must be a value listed in the state-column. [optional]" name="pbaseline" optional="True" type="float"/>
-		<param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="random">random</option>
-			<option value="drop">drop</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix       Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-baseline: NUMBER    A value listed in the state-column metadata column against which all other states should be compared. Toggles calculation of static distances instead of first distances (which are calculated if no value is given for baseline). If a \'baseline\' value is provided, sample distances at each state are compared against the baseline state, instead of the previous state. Must be a value listed in the state-column. [optional]" name="pbaseline" optional="False" type="text" />
+    <param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="random">random</option>
+      <option value="drop">drop</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: firstdistances.qza" name="ofirstdistances"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: firstdistances.qza" name="ofirstdistances" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Compute first distances or distance from baseline between sequential states
-###########################################################################
+###############################################################
 
 Calculates first distances between sequential states for samples collected
 from individual subjects sampled repeatedly at two or more states. This
@@ -101,9 +153,9 @@
 -------
 first_distances : SampleData[FirstDifferences]
     Series of first distances.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_linear-mixed-effects.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_linear-mixed-effects.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,109 +1,183 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_linear-mixed-effects" name="qiime longitudinal linear-mixed-effects" version="2019.7">
-	<description> - Linear mixed effects modeling</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_linear-mixed-effects" name="qiime longitudinal linear-mixed-effects"
+      version="2020.8">
+  <description>Linear mixed effects modeling</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal linear-mixed-effects
 
+#if str($itable) != 'None':
+--i-table=$itable
+#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
+
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__sq__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
 
-
---p-state-column="$pstatecolumn"
---p-individual-id-column="$pindividualidcolumn"
+--p-individual-id-column=$pindividualidcolumn
 
-#if str($itable) != 'None':
- --i-table=$itable
-#end if
 
 #if str($pmetric):
- --p-metric="$pmetric"
+  --p-metric=$pmetric
+#end if
+#if '__ob__' in str($pgroupcolumns):
+  #set $pgroupcolumns_temp = $pgroupcolumns.replace('__ob__', '[')
+  #set $pgroupcolumns = $pgroupcolumns_temp
+#end if
+#if '__cb__' in str($pgroupcolumns):
+  #set $pgroupcolumns_temp = $pgroupcolumns.replace('__cb__', ']')
+  #set $pgroupcolumns = $pgroupcolumns_temp
+#end if
+#if 'X' in str($pgroupcolumns):
+  #set $pgroupcolumns_temp = $pgroupcolumns.replace('X', '\\')
+  #set $pgroupcolumns = $pgroupcolumns_temp
+#end if
+#if '__sq__' in str($pgroupcolumns):
+  #set $pgroupcolumns_temp = $pgroupcolumns.replace('__sq__', "'")
+  #set $pgroupcolumns = $pgroupcolumns_temp
+#end if
+#if '__db__' in str($pgroupcolumns):
+  #set $pgroupcolumns_temp = $pgroupcolumns.replace('__db__', '"')
+  #set $pgroupcolumns = $pgroupcolumns_temp
 #end if
 
 #if str($pgroupcolumns):
- --p-group-columns="$pgroupcolumns"
+  --p-group-columns=$pgroupcolumns
 #end if
 
 #if str($prandomeffects):
- --p-random-effects="$prandomeffects"
+  --p-random-effects=$prandomeffects
 #end if
-
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 #if $plowess:
  --p-lowess
 #end if
 
-#if str($pci):
- --p-ci=$pci
-#end if
+--p-ci=$pci
 
-#if str($pformula):
- --p-formula="$pformula"
+#if $pformula:
+ --p-formula
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp ofirstdistances.qza $ofirstdistances
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param label="--p-state-column: TEXT   Metadata column containing state (time) variable information.                              [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                 [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing metric.          [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-metric: TEXT         Dependent variable column name. Must be a column name located in the metadata or feature table files. [optional]" name="pmetric" optional="True" type="text"/>
-		<param label="--p-group-columns: TEXT  Comma-separated list (without spaces) of metadata columns to use as independent covariates used to determine mean structure of 'metric'.     [optional]" name="pgroupcolumns" optional="True" type="text"/>
-		<param label="--p-random-effects: TEXT Comma-separated list (without spaces) of metadata columns to use as independent covariates used to determine the variance and covariance structure (random effects) of 'metric'. To add a random slope, the same value passed to 'state-column' should be passed here. A random intercept for each individual is set by default and does not need to be passed here.                                     [optional]" name="prandomeffects" optional="True" type="text"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Paired">Paired</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="tab10">tab10</option>
-			<option value="tab20">tab20</option>
-			<option value="tab20b">tab20b</option>
-			<option value="tab20c">tab20c</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="terrain">terrain</option>
-			<option value="rainbow">rainbow</option>
-		</param>
-		<param label="--p-lowess: --p-no-lowess Estimate locally weighted scatterplot smoothing. Note that this will eliminate confidence interval plotting.                           [default: False]" name="plowess" selected="False" type="boolean"/>
-		<param label="--p-ci: NUMBER           Size of the confidence interval for the regression Range(0, 100)         estimate.                              [default: 95]" name="pci" optional="True" type="float" min="0" max="100" value="95"/>
-		<param label="--p-formula: TEXT        R-style formula to use for model specification. A formula must be used if the 'metric' parameter is None. Note that the metric and group columns specified in the formula will override metric and group columns that are passed separately as parameters to this method. Formulae will be in the format 'a ~ b + c', where 'a' is the metric (dependent variable) and 'b' and 'c' are independent covariates. Use '+' to add a variable; '+ a:b' to add an interaction between variables a and b; '*' to include a variable and all interactions; and '-' to subtract a particular term (e.g., an interaction term). See https://patsy.readthedocs.io/en/latest/formulas.html for full documentation of valid formula operators. Always enclose formulae in quotes to avoid unpleasant surprises.                     [optional]" name="pformula" optional="True" type="text"/>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing metric.          [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple arguments   Sample metadata file containing will be merged)      individual-id-column.                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT   Metadata column containing state (time) variable information.                              [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                 [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-metric: TEXT         Dependent variable column name. Must be a column name located in the metadata or feature table files. [optional]" name="pmetric" optional="False" type="text" />
+    <param label="--p-group-columns: TEXT  Comma-separated list (without spaces) of metadata columns to use as independent covariates used to determine mean structure of \'metric\'.     [optional]" name="pgroupcolumns" optional="False" type="text" />
+    <param label="--p-random-effects: TEXT Comma-separated list (without spaces) of metadata columns to use as independent covariates used to determine the variance and covariance structure (random effects) of \'metric\'. To add a random slope, the same value passed to \'state-column\' should be passed here. A random intercept for each individual is set by default and does not need to be passed here.                                     [optional]" name="prandomeffects" optional="False" type="text" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Paired">Paired</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="tab10">tab10</option>
+      <option value="tab20">tab20</option>
+      <option value="tab20b">tab20b</option>
+      <option value="tab20c">tab20c</option>
+      <option value="viridis">viridis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="terrain">terrain</option>
+      <option value="rainbow">rainbow</option>
+      <option value="cividis">cividis</option>
+    </param>
+    <param label="--p-lowess: --p-lowess: / --p-no-lowess Estimate locally weighted scatterplot smoothing. Note that this will eliminate confidence interval plotting.                           [default: False]" name="plowess" selected="False" type="boolean" />
+    <param label="--p-ci: NUMBER           Size of the confidence interval for the regression Range(0, 100)         estimate.                              [default: 95]" max="100" min="0" name="pci" optional="True" type="integer" value="95" />
+    <param label="--p-formula: --p-formula: TEXT        R-style formula to use for model specification. A formula must be used if the \'metric\' parameter is None. Note that the metric and group columns specified in the formula will override metric and group columns that are passed separately as parameters to this method. Formulae will be in the format \'a ~ b + c\', where \'a\' is the metric (dependent variable) and \'b\' and \'c\' are independent covariates. Use \'+\' to add a variable; \'+ a:b\' to add an interaction between variables a and b; \'*\' to include a variable and all interactions; and \'-\' to subtract a particular term (e.g., an interaction term). See https://patsy.readthedocs.io/en/latest/formulas.html for full documentation of valid formula operators. Always enclose formulae in quotes to avoid unpleasant surprises.                     [optional]" name="pformula" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Linear mixed effects modeling
-#############################
+###############################################################
 
 Linear mixed effects models evaluate the contribution of exogenous
 covariates "group_columns" and "random_effects" to a single dependent
@@ -134,7 +208,7 @@
     passed here.
 table : FeatureTable[RelativeFrequency], optional
     Feature table containing metric.
-palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow'), optional
+palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow', 'cividis'), optional
     Color palette to use for generating boxplots.
 lowess : Bool, optional
     Estimate locally weighted scatterplot smoothing. Note that this will
@@ -158,9 +232,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_maturity-index.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_maturity-index.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,50 +1,94 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_maturity-index" name="qiime longitudinal maturity-index" version="2019.7">
-	<description> - Microbial maturity index prediction.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_maturity-index" name="qiime longitudinal maturity-index"
+      version="2020.8">
+  <description>Microbial maturity index prediction.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal maturity-index
 
 --i-table=$itable
---p-state-column="$pstatecolumn"
---p-group-by="$pgroupby"
---p-control="$pcontrol"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
+
+
+--p-group-by=$pgroupby
+
+--p-control=$pcontrol
+
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__sq__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 
 #if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+  --p-individual-id-column=$pindividualidcolumn
 #end if
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
-#end if
-
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
-#end if
-
-#if str($ptestsize):
- --p-test-size=$ptestsize
+--p-estimator=$pestimator
 #end if
 
-#if str($pstep):
- --p-step=$pstep
-#end if
+--p-n-estimators=$pnestimators
+
+--p-test-size=$ptestsize
 
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--p-step=$pstep
+
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
+--p-n-jobs=$pnjobs
 
 #if $pparametertuning:
  --p-parameter-tuning
@@ -59,103 +103,102 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
-#end if
-
-#if str($pfeaturecount):
- --p-feature-count=$pfeaturecount
+--p-missing-samples=$pmissingsamples
 #end if
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
+--p-feature-count=$pfeaturecount
 
 --o-sample-estimator=osampleestimator
+
 --o-feature-importance=ofeatureimportance
+
 --o-predictions=opredictions
+
 --o-model-summary=omodelsummary
+
 --o-accuracy-results=oaccuracyresults
+
 --o-maz-scores=omazscores
+
 --o-clustermap=oclustermap
+
 --o-volatility-plots=ovolatilityplots
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp osampleestimator.qza $osampleestimator;
-cp ofeatureimportance.qza $ofeatureimportance;
-cp opredictions.qza $opredictions;
-qiime tools export --input-path omodelsummary.qzv --output-path out   && mkdir -p '$omodelsummary.files_path'
-&& cp -r out/* '$omodelsummary.files_path'
-&& mv '$omodelsummary.files_path/index.html' '$omodelsummary';
-qiime tools export --input-path oaccuracyresults.qzv --output-path out   && mkdir -p '$oaccuracyresults.files_path'
-&& cp -r out/* '$oaccuracyresults.files_path'
-&& mv '$oaccuracyresults.files_path/index.html' '$oaccuracyresults';
-cp omazscores.qza $omazscores;
-qiime tools export --input-path oclustermap.qzv --output-path out   && mkdir -p '$oclustermap.files_path'
+cp omazscores.qza $omazscores
+
+;
+qiime tools export  oclustermap.qzv --output-path out
+&& mkdir -p '$oclustermap.files_path'
 && cp -r out/* '$oclustermap.files_path'
-&& mv '$oclustermap.files_path/index.html' '$oclustermap';
-qiime tools export --input-path ovolatilityplots.qzv --output-path out   && mkdir -p '$ovolatilityplots.files_path'
+&& mv '$oclustermap.files_path/index.html' '$oclustermap'
+
+;
+qiime tools export  ovolatilityplots.qzv --output-path out
+&& mkdir -p '$ovolatilityplots.files_path'
 && cp -r out/* '$ovolatilityplots.files_path'
 && mv '$ovolatilityplots.files_path/index.html' '$ovolatilityplots'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-state-column: TEXT  Numeric metadata column containing sampling time (state) data to use as prediction target.  [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-group-by: TEXT      Categorical metadata column to use for plotting and significance testing between main treatment groups. [required]" name="pgroupby" optional="False" type="text"/>
-		<param label="--p-control: TEXT       Value of group-by to use as control group. The regression model will be trained using only control group data, and the maturity scores of other groups consequently will be assessed relative to this group. [required]" name="pcontrol" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Optional metadata column containing IDs for individual subjects. Adds individual subject (spaghetti) vectors to volatility charts if a column name is provided.                          [optional]" name="pindividualidcolumn" optional="True" type="text"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestRegressor">RandomForestRegressor</option>
-			<option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
-			<option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
-			<option value="AdaBoostRegressor">AdaBoostRegressor</option>
-			<option value="ElasticNet">ElasticNet</option>
-			<option value="Ridge">Ridge</option>
-			<option value="Lasso">Lasso</option>
-			<option value="KNeighborsRegressor">KNeighborsRegressor</option>
-			<option value="LinearSVR">LinearSVR</option>
-			<option value="SVR">SVR</option>
-		</param>
-		<param label="--p-n-estimators: INTEGER Range(1, None)       Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.      [default: 100]" name="pnestimators" optional="True" type="integer" min="1" value="100"/>
-		<param label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.    [default: 0.5]" name="ptestsize" optional="True" type="float" exclusive_start="True" min="0" max="1" value="0.5"/>
-		<param label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" name="pstep" optional="True" type="float" exclusive_start="True" min="0" max="1" value="0.05"/>
-		<param label="--p-cv: INTEGER         Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" min="1" value="5"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.      [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                              [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-optimize-feature-selection: --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.       [default: False]" name="poptimizefeatureselection" selected="False" type="boolean"/>
-		<param label="--p-stratify: --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.     [default: False]" name="pstratify" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
-		<param label="--p-feature-count: INTEGER Range(0, None)       Filter feature table to include top N most important features. Set to zero to include all features. [default: 50]" name="pfeaturecount" optional="True" type="integer" min="0" value="50"/>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>	</inputs>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple arguments will be merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Numeric metadata column containing sampling time (state) data to use as prediction target.  [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-group-by: TEXT      Categorical metadata column to use for plotting and significance testing between main treatment groups. [required]" name="pgroupby" optional="False" type="text" />
+    <param label="--p-control: TEXT       Value of group-by to use as control group. The regression model will be trained using only control group data, and the maturity scores of other groups consequently will be assessed relative to this group. [required]" name="pcontrol" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Optional metadata column containing IDs for individual subjects. Adds individual subject (spaghetti) vectors to volatility charts if a column name is provided.                          [optional]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestRegressor">RandomForestRegressor</option>
+      <option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
+      <option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
+      <option value="AdaBoostRegressor">AdaBoostRegressor</option>
+      <option value="ElasticNet">ElasticNet</option>
+      <option value="Ridge">Ridge</option>
+      <option value="Lasso">Lasso</option>
+      <option value="KNeighborsRegressor">KNeighborsRegressor</option>
+      <option value="LinearSVR">LinearSVR</option>
+      <option value="SVR">SVR</option>
+    </param>
+    <param label="--p-n-estimators: INTEGER Range(1, None)       Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.      [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param exclude_min="True" label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.    [default: 0.5]" max="1.0" min="0.0" name="ptestsize" optional="True" type="float" value="0.5" />
+    <param exclude_min="True" label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" max="1.0" min="0.0" name="pstep" optional="True" type="float" value="0.05" />
+    <param label="--p-cv: INTEGER         Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.      [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                              [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-optimize-feature-selection: --p-optimize-feature-selection: / --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.       [default: False]" name="poptimizefeatureselection" selected="False" type="boolean" />
+    <param label="--p-stratify: --p-stratify: / --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.     [default: False]" name="pstratify" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--p-feature-count: INTEGER Range(0, None)       Filter feature table to include top N most important features. Set to zero to include all features. [default: 50]" min="0" name="pfeaturecount" optional="True" type="integer" value="50" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="html" label="${tool.name} on ${on_string}: modelsummary.qzv" name="omodelsummary"/>
-		<data format="html" label="${tool.name} on ${on_string}: accuracyresults.qzv" name="oaccuracyresults"/>
-		<data format="qza" label="${tool.name} on ${on_string}: mazscores.qza" name="omazscores"/>
-		<data format="html" label="${tool.name} on ${on_string}: clustermap.qzv" name="oclustermap"/>
-		<data format="html" label="${tool.name} on ${on_string}: volatilityplots.qzv" name="ovolatilityplots"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="html" label="${tool.name} on ${on_string}: modelsummary.html" name="omodelsummary" />
+    <data format="html" label="${tool.name} on ${on_string}: accuracyresults.html" name="oaccuracyresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: mazscores.qza" name="omazscores" />
+    <data format="html" label="${tool.name} on ${on_string}: clustermap.html" name="oclustermap" />
+    <data format="html" label="${tool.name} on ${on_string}: volatilityplots.html" name="ovolatilityplots" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Microbial maturity index prediction.
-####################################
+###############################################################
 
 Calculates a "microbial maturity" index from a regression model trained on
 feature data to predict a given continuous metadata column, e.g., to
@@ -176,7 +219,6 @@
     Feature table containing all features that should be used for target
     prediction.
 metadata : Metadata
-	\
 state_column : Str
     Numeric metadata column containing sampling time (state) data to use as
     prediction target.
@@ -209,6 +251,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 parameter_tuning : Bool, optional
     Automatically tune hyperparameters using random grid search.
 optimize_feature_selection : Bool, optional
@@ -247,9 +291,9 @@
 volatility_plots : Visualization
     Interactive volatility plots of MAZ and maturity scores, target
     (column) predictions, and the sample metadata.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_nmit.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_nmit.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,80 +1,96 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_nmit" name="qiime longitudinal nmit" version="2019.7">
-	<description> - Nonparametric microbial interdependence test</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_nmit" name="qiime longitudinal nmit"
+      version="2020.8">
+  <description>Nonparametric microbial interdependence test</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal nmit
 
 --i-table=$itable
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-
-
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 #if '__sq__' in str($pindividualidcolumn):
   #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
   #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
-
-#if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
 
-
+--p-individual-id-column=$pindividualidcolumn
 
 
 #if str($pcorrmethod) != 'None':
- --p-corr-method=$pcorrmethod
+--p-corr-method=$pcorrmethod
 #end if
 
 #if str($pdistmethod) != 'None':
- --p-dist-method=$pdistmethod
+--p-dist-method=$pdistmethod
 #end if
 
+--o-distance-matrix=odistancematrix
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
---o-distance-matrix=odistancematrix
 ;
 cp odistancematrix.qza $odistancematrix
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to use for microbial interdependence test.                                       [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                   [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param label="--p-corr-method: " name="pcorrmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="kendall">kendall</option>
-			<option value="pearson">pearson</option>
-			<option value="spearman">spearman</option>
-		</param>
-		<param label="--p-dist-method: " name="pdistmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="fro">fro</option>
-			<option value="nuc">nuc</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to use for microbial interdependence test.                                       [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple           Sample metadata file containing individual-id-column. arguments will be merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                   [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-corr-method: " name="pcorrmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="kendall">kendall</option>
+      <option value="pearson">pearson</option>
+      <option value="spearman">spearman</option>
+    </param>
+    <param label="--p-dist-method: " name="pdistmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="fro">fro</option>
+      <option value="nuc">nuc</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Nonparametric microbial interdependence test
-############################################
+###############################################################
 
 Perform nonparametric microbial interdependence test to determine
 longitudinal sample similarity as a function of temporal microbial
@@ -98,9 +114,9 @@
 -------
 distance_matrix : DistanceMatrix
     The resulting distance matrix.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_pairwise-differences.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_pairwise-differences.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,34 +1,104 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_pairwise-differences" name="qiime longitudinal pairwise-differences" version="2019.7">
-	<description> - Paired difference testing and boxplots</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_pairwise-differences" name="qiime longitudinal pairwise-differences"
+      version="2020.8">
+  <description>Paired difference testing and boxplots</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal pairwise-differences
 
---p-metric="$pmetric"
---p-state-column="$pstatecolumn"
---p-state-1="$pstate1"
---p-state-2="$pstate2"
+#if str($itable) != 'None':
+--i-table=$itable
+#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+--p-metric=$pmetric
+
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
 
 
+--p-state-1=$pstate1
+
+--p-state-2=$pstate2
+
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 #if '__sq__' in str($pindividualidcolumn):
   #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
   #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
-#if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
 
+--p-individual-id-column=$pindividualidcolumn
 
 
-#if str($itable) != 'None':
- --i-table=$itable
+#if '__ob__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__ob__', '[')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__cb__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__cb__', ']')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if 'X' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('X', '\\')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__sq__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__sq__', "'")
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__db__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__db__', '"')
+  #set $pgroupcolumn = $pgroupcolumn_temp
 #end if
 
 #if str($pgroupcolumn):
- --p-group-column="$pgroupcolumn"
+  --p-group-column=$pgroupcolumn
 #end if
 
 #if $pparametric:
@@ -36,91 +106,91 @@
 #end if
 
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 #if str($preplicatehandling) != 'None':
- --p-replicate-handling=$preplicatehandling
+--p-replicate-handling=$preplicatehandling
 #end if
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param label="--p-metric: TEXT        Numerical metadata or artifact column to test. [required]" name="pmetric" optional="False" type="text"/>
-		<param label="--p-state-column: TEXT  Metadata column containing state (e.g., Time) across which samples are paired.                  [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-state-1: TEXT       Baseline state column value.               [required]" name="pstate1" optional="False" type="text"/>
-		<param label="--p-state-2: TEXT       State column value to pair with baseline.  [required]" name="pstate2" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing subject IDs to use for pairing samples. WARNING: if replicates exist for an individual ID at either state-1 or state-2, that subject will be dropped and reported in standard output by default. Set replicate_handling='random' to instead randomly select one member.        [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to optionally use for paired comparisons.                               [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-group-column: TEXT  Metadata column on which to separate groups for comparison                                 [optional]" name="pgroupcolumn" optional="True" type="text"/>
-		<param label="--p-parametric: --p-no-parametric Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests. [default: False]" name="pparametric" selected="False" type="boolean"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Paired">Paired</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="tab10">tab10</option>
-			<option value="tab20">tab20</option>
-			<option value="tab20b">tab20b</option>
-			<option value="tab20c">tab20c</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="terrain">terrain</option>
-			<option value="rainbow">rainbow</option>
-		</param>
-		<param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="random">random</option>
-			<option value="drop">drop</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table to optionally use for paired comparisons.                               [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-metric: TEXT        Numerical metadata or artifact column to test. [required]" name="pmetric" optional="False" type="text" />
+    <param label="--p-state-column: TEXT  Metadata column containing state (e.g., Time) across which samples are paired.                  [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-state-1: TEXT       Baseline state column value.               [required]" name="pstate1" optional="False" type="text" />
+    <param label="--p-state-2: TEXT       State column value to pair with baseline.  [required]" name="pstate2" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing subject IDs to use for pairing samples. WARNING: if replicates exist for an individual ID at either state-1 or state-2, that subject will be dropped and reported in standard output by default. Set replicate_handling=\'random\' to instead randomly select one member.        [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-group-column: TEXT  Metadata column on which to separate groups for comparison                                 [optional]" name="pgroupcolumn" optional="False" type="text" />
+    <param label="--p-parametric: --p-parametric: / --p-no-parametric Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests. [default: False]" name="pparametric" selected="False" type="boolean" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Paired">Paired</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="tab10">tab10</option>
+      <option value="tab20">tab20</option>
+      <option value="tab20b">tab20b</option>
+      <option value="tab20c">tab20c</option>
+      <option value="viridis">viridis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="terrain">terrain</option>
+      <option value="rainbow">rainbow</option>
+      <option value="cividis">cividis</option>
+    </param>
+    <param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="random">random</option>
+      <option value="drop">drop</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Paired difference testing and boxplots
-######################################
+###############################################################
 
 Performs paired difference testing between samples from each subject.
-Sample pairs may represent a typical intervention study, e.g., samples
-collected pre- and post-treatment; paired samples from two different
+Sample pairs may represent a typical intervention study (e.g., samples
+collected pre- and post-treatment), paired samples from two different
 timepoints (e.g., in a longitudinal study design), or identical samples
-receiving different two different treatments. This action tests whether the
-change in a numeric metadata value "metric" differs from zero and differs
-between groups (e.g., groups of subjects receiving different treatments),
-and produces boxplots of paired difference distributions for each group. A
-feature table artifact is required input, though whether "metric" is
-derived from the feature table or metadata is optional.
+receiving different treatments. This action tests whether the change in a
+numeric metadata value "metric" differs from zero and differs between
+groups (e.g., groups of subjects receiving different treatments), and
+produces boxplots of paired difference distributions for each group. Note
+that "metric" can be derived from a feature table or metadata.
 
 Parameters
 ----------
@@ -146,7 +216,7 @@
 parametric : Bool, optional
     Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-
     Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests.
-palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow'), optional
+palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow', 'cividis'), optional
     Color palette to use for generating boxplots.
 replicate_handling : Str % Choices('error', 'random', 'drop'), optional
     Choose how replicate samples are handled. If replicates are detected,
@@ -159,9 +229,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_pairwise-distances.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_pairwise-distances.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,27 +1,99 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_pairwise-distances" name="qiime longitudinal pairwise-distances" version="2019.7">
-	<description> - Paired pairwise distance testing and boxplots</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_pairwise-distances" name="qiime longitudinal pairwise-distances"
+      version="2020.8">
+  <description>Paired pairwise distance testing and boxplots</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal pairwise-distances
 
 --i-distance-matrix=$idistancematrix
---p-group-column="$pgroupcolumn"
---p-state-column="$pstatecolumn"
---p-state-1="$pstate1"
---p-state-2="$pstate2"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__ob__', '[')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__cb__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__cb__', ']')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if 'X' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('X', '\\')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__sq__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__sq__', "'")
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+#if '__db__' in str($pgroupcolumn):
+  #set $pgroupcolumn_temp = $pgroupcolumn.replace('__db__', '"')
+  #set $pgroupcolumn = $pgroupcolumn_temp
+#end if
+
+--p-group-column=$pgroupcolumn
 
 
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
+
+
+--p-state-1=$pstate1
+
+--p-state-2=$pstate2
+
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 #if '__sq__' in str($pindividualidcolumn):
   #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
   #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
-#if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
 
+--p-individual-id-column=$pindividualidcolumn
 
 
 #if $pparametric:
@@ -29,78 +101,86 @@
 #end if
 
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 #if str($preplicatehandling) != 'None':
- --p-replicate-handling=$preplicatehandling
+--p-replicate-handling=$preplicatehandling
 #end if
 
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix       Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--p-group-column: TEXT  Metadata column on which to separate groups for comparison                                 [required]" name="pgroupcolumn" optional="False" type="text"/>
-		<param label="--p-state-column: TEXT  Metadata column containing state (e.g., Time) across which samples are paired.                  [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-state-1: TEXT       Baseline state column value.               [required]" name="pstate1" optional="False" type="text"/>
-		<param label="--p-state-2: TEXT       State column value to pair with baseline.  [required]" name="pstate2" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing subject IDs to use for pairing samples. WARNING: if replicates exist for an individual ID at either state-1 or state-2, that subject will be dropped and reported in standard output by default. Set replicate_handling='random' to instead randomly select one member.        [required]" name="pindividualidcolumn" optional="False" type="text"/>
-		<param label="--p-parametric: --p-no-parametric Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests. [default: False]" name="pparametric" selected="False" type="boolean"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Paired">Paired</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="tab10">tab10</option>
-			<option value="tab20">tab20</option>
-			<option value="tab20b">tab20b</option>
-			<option value="tab20c">tab20c</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="terrain">terrain</option>
-			<option value="rainbow">rainbow</option>
-		</param>
-		<param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="random">random</option>
-			<option value="drop">drop</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix       Matrix of distances between pairs of samples. [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-group-column: TEXT  Metadata column on which to separate groups for comparison                                 [required]" name="pgroupcolumn" optional="False" type="text" />
+    <param label="--p-state-column: TEXT  Metadata column containing state (e.g., Time) across which samples are paired.                  [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-state-1: TEXT       Baseline state column value.               [required]" name="pstate1" optional="False" type="text" />
+    <param label="--p-state-2: TEXT       State column value to pair with baseline.  [required]" name="pstate2" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing subject IDs to use for pairing samples. WARNING: if replicates exist for an individual ID at either state-1 or state-2, that subject will be dropped and reported in standard output by default. Set replicate_handling=\'random\' to instead randomly select one member.        [required]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-parametric: --p-parametric: / --p-no-parametric Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests. [default: False]" name="pparametric" selected="False" type="boolean" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Paired">Paired</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="tab10">tab10</option>
+      <option value="tab20">tab20</option>
+      <option value="tab20b">tab20b</option>
+      <option value="tab20c">tab20c</option>
+      <option value="viridis">viridis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="terrain">terrain</option>
+      <option value="rainbow">rainbow</option>
+      <option value="cividis">cividis</option>
+    </param>
+    <param label="--p-replicate-handling: " name="preplicatehandling" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="random">random</option>
+      <option value="drop">drop</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Paired pairwise distance testing and boxplots
-#############################################
+###############################################################
 
 Performs pairwise distance testing between sample pairs from each subject.
 Sample pairs may represent a typical intervention study, e.g., samples
@@ -135,7 +215,7 @@
 parametric : Bool, optional
     Perform parametric (ANOVA and t-tests) or non-parametric (Kruskal-
     Wallis, Wilcoxon, and Mann-Whitney U tests) statistical tests.
-palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow'), optional
+palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow', 'cividis'), optional
     Color palette to use for generating boxplots.
 replicate_handling : Str % Choices('error', 'random', 'drop'), optional
     Choose how replicate samples are handled. If replicates are detected,
@@ -145,10 +225,10 @@
 
 Returns
 -------
-visualization : Visualization	
-	]]></help>
-<macros>
+visualization : Visualization
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_plot-feature-volatility.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_plot-feature-volatility.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,86 +1,193 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_plot-feature-volatility" name="qiime longitudinal plot-feature-volatility" version="2019.7">
-	<description> - Plot longitudinal feature volatility and importances</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_plot-feature-volatility" name="qiime longitudinal plot-feature-volatility"
+      version="2020.8">
+  <description>Plot longitudinal feature volatility and importances</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal plot-feature-volatility
 
 --i-table=$itable
+
 --i-importances=$iimportances
---p-state-column="$pstatecolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+
+--p-state-column=$pstatecolumn
 
 
-
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 #if '__sq__' in str($pindividualidcolumn):
   #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
   #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 
 #if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+  --p-individual-id-column=$pindividualidcolumn
 #end if
 
-
-
+#if '__ob__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__ob__', '[')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__cb__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__cb__', ']')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if 'X' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('X', '\\')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__sq__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__sq__', "'")
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__db__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__db__', '"')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
 
 #if str($pdefaultgroupcolumn):
- --p-default-group-column="$pdefaultgroupcolumn"
+  --p-default-group-column=$pdefaultgroupcolumn
 #end if
 
 #if str($pyscale) != 'None':
- --p-yscale=$pyscale
+--p-yscale=$pyscale
+#end if
+
+#if str($pimportancethreshold) != 'None':
+--p-importance-threshold=$pimportancethreshold
+#end if
+
+#if str($pfeaturecount) != 'None':
+--p-feature-count=$pfeaturecount
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
 #end if
 
+--o-visualization=ovisualization
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
+;
+cp odistancematrix.qza $odistancematrix
 
---o-visualization=ovisualization
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing features found in importances.                               [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-importances: ARTIFACT FeatureData[Importance] Feature importance scores.                 [required]" name="iimportances" optional="False" type="data"/>
-		<param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="True" type="text"/>
-		<param label="--p-default-group-column: TEXT The default metadata column on which to separate groups for comparison (all categorical metadata columns will be available in the visualization). [optional]" name="pdefaultgroupcolumn" optional="True" type="text"/>
-		<param label="--p-yscale: " name="pyscale" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="linear">linear</option>
-			<option value="pow">pow</option>
-			<option value="sqrt">sqrt</option>
-			<option value="log">log</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing features found in importances.                               [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-importances: ARTIFACT FeatureData[Importance] Feature importance scores.                 [required]" name="iimportances" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-default-group-column: TEXT The default metadata column on which to separate groups for comparison (all categorical metadata columns will be available in the visualization). [optional]" name="pdefaultgroupcolumn" optional="False" type="text" />
+    <param label="--p-yscale: " name="pyscale" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="linear">linear</option>
+      <option value="pow">pow</option>
+      <option value="sqrt">sqrt</option>
+      <option value="log">log</option>
+    </param>
+    <param label="--p-importance-threshold: " name="pimportancethreshold" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Float % Range(0">Float % Range(0</option>
+      <option value="None">None</option>
+      <option value="inclusive_start=False">inclusive_start=False</option>
+    </param>
+    <param label="--p-feature-count: " name="pfeaturecount" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Plot longitudinal feature volatility and importances
-####################################################
+###############################################################
 
 Plots an interactive control chart of feature abundances (y-axis) in each
 sample across time (or state; x-axis). Feature importance scores and
-descriptive statistics for each each feature are plotted in interactive bar
+descriptive statistics for each feature are plotted in interactive bar
 charts below the control chart, facilitating exploration of longitudinal
 feature data. This visualization is intended for use with the feature-
 volatility pipeline; use that pipeline to access this visualization.
@@ -103,13 +210,26 @@
     visualization).
 yscale : Str % Choices('linear', 'pow', 'sqrt', 'log'), optional
     y-axis scaling strategy to apply.
+importance_threshold : Float % Range(0, None, inclusive_start=False) | Str % Choices('q1', 'q2', 'q3'), optional
+    Filter feature table to exclude any features with an importance score
+    less than this threshold. Set to "q1", "q2", or "q3" to select the
+    first, second, or third quartile of values. Set to "None" to disable
+    this filter.
+feature_count : Int % Range(1, None) | Str % Choices('all'), optional
+    Filter feature table to include top N most important features. Set to
+    "all" to include all features.
+missing_samples : Str % Choices('error', 'ignore'), optional
+    How to handle missing samples in metadata. "error" will fail if missing
+    samples are detected. "ignore" will cause the feature table and
+    metadata to be filtered, so that only samples found in both files are
+    retained.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_longitudinal_volatility.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_longitudinal_volatility.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,87 +1,170 @@
 <?xml version="1.0" ?>
-<tool id="qiime_longitudinal_volatility" name="qiime longitudinal volatility" version="2019.7">
-	<description> - Generate interactive volatility plot</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_longitudinal_volatility" name="qiime longitudinal volatility"
+      version="2020.8">
+  <description>Generate interactive volatility plot</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime longitudinal volatility
 
---p-state-column="$pstatecolumn"
+#if str($itable) != 'None':
+--i-table=$itable
+#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($itable) != 'None':
- --i-table=$itable
+#if '__ob__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__ob__', '[')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__cb__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__cb__', ']')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if 'X' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('X', '\\')
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__sq__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__sq__', "'")
+  #set $pstatecolumn = $pstatecolumn_temp
+#end if
+#if '__db__' in str($pstatecolumn):
+  #set $pstatecolumn_temp = $pstatecolumn.replace('__db__', '"')
+  #set $pstatecolumn = $pstatecolumn_temp
 #end if
 
+--p-state-column=$pstatecolumn
 
 
+#if '__ob__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__ob__', '[')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if '__cb__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__cb__', ']')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+#if 'X' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('X', '\\')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 #if '__sq__' in str($pindividualidcolumn):
   #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__sq__', "'")
   #set $pindividualidcolumn = $pindividualidcolumn_temp
 #end if
+#if '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
 
 #if str($pindividualidcolumn):
- --p-individual-id-column="$pindividualidcolumn"
+  --p-individual-id-column=$pindividualidcolumn
 #end if
 
-
+#if '__ob__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__ob__', '[')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__cb__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__cb__', ']')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if 'X' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('X', '\\')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__sq__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__sq__', "'")
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
+#if '__db__' in str($pdefaultgroupcolumn):
+  #set $pdefaultgroupcolumn_temp = $pdefaultgroupcolumn.replace('__db__', '"')
+  #set $pdefaultgroupcolumn = $pdefaultgroupcolumn_temp
+#end if
 
 #if str($pdefaultgroupcolumn):
- --p-default-group-column="$pdefaultgroupcolumn"
+  --p-default-group-column=$pdefaultgroupcolumn
 #end if
 
 #if str($pdefaultmetric):
- --p-default-metric="$pdefaultmetric"
-#end if
-
-#if str($pyscale) != 'None':
- --p-yscale=$pyscale
+  --p-default-metric=$pdefaultmetric
 #end if
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($pyscale) != 'None':
+--p-yscale=$pyscale
 #end if
 
-
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odistancematrix.qza $odistancematrix
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing metrics.          [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="True" type="text"/>
-		<param label="--p-default-group-column: TEXT The default metadata column on which to separate groups for comparison (all categorical metadata columns will be available in the visualization). [optional]" name="pdefaultgroupcolumn" optional="True" type="text"/>
-		<param label="--p-default-metric: TEXT Numeric metadata or artifact column to test by default (all numeric metadata columns will be available in the visualization).           [optional]" name="pdefaultmetric" optional="True" type="text"/>
-		<param label="--p-yscale: " name="pyscale" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="linear">linear</option>
-			<option value="pow">pow</option>
-			<option value="sqrt">sqrt</option>
-			<option value="log">log</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[RelativeFrequency] Feature table containing metrics.          [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            Sample metadata file containing arguments will be   individual-id-column. merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-state-column: TEXT  Metadata column containing state (time) variable information.                               [required]" name="pstatecolumn" optional="False" type="text" />
+    <param label="--p-individual-id-column: TEXT Metadata column containing IDs for individual subjects.                                  [optional]" name="pindividualidcolumn" optional="False" type="text" />
+    <param label="--p-default-group-column: TEXT The default metadata column on which to separate groups for comparison (all categorical metadata columns will be available in the visualization). [optional]" name="pdefaultgroupcolumn" optional="False" type="text" />
+    <param label="--p-default-metric: TEXT Numeric metadata or artifact column to test by default (all numeric metadata columns will be available in the visualization).           [optional]" name="pdefaultmetric" optional="False" type="text" />
+    <param label="--p-yscale: " name="pyscale" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="linear">linear</option>
+      <option value="pow">pow</option>
+      <option value="sqrt">sqrt</option>
+      <option value="log">log</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Generate interactive volatility plot
-####################################
+###############################################################
 
 Generate an interactive control chart depicting the longitudinal volatility
 of sample metadata and/or feature frequencies across time (as set using the
@@ -117,9 +200,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_metadata_distance-matrix.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_metadata_distance-matrix" name="qiime metadata distance-matrix" version="2019.7">
-	<description> - Create a distance matrix from a numeric Metadata column</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime metadata distance-matrix
-
---m-metadata-column="$mmetadatacolumn"
-
-
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
-
-
---o-distance-matrix=odistancematrix
-;
-cp odistancematrix.qza $odistancematrix
-	]]></command>
-	<inputs>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to compute pairwise Euclidean distances from                               [required]" name="mmetadatacolumn" optional="False" type="text"/>
-
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix"/>
-	</outputs>
-	<help><![CDATA[
-Create a distance matrix from a numeric Metadata column
-#######################################################
-
-Create a distance matrix from a numeric metadata column. The Euclidean
-distance is computed between each pair of samples or features in the
-column.  Tip: the distance matrix produced by this method can be used as
-input to the Mantel test available in `q2-diversity`.
-
-Parameters
-----------
-metadata : MetadataColumn[Numeric]
-    Numeric metadata column to compute pairwise Euclidean distances from
-
-Returns
--------
-distance_matrix : DistanceMatrix
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_metadata_tabulate.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_metadata_tabulate" name="qiime metadata tabulate" version="2019.7">
-	<description> - Interactively explore Metadata in an HTML table</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime metadata tabulate
-
-
-#if $input_files_minputfile:
-#def list_dict_to_string(list_dict):
-#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-#for d in list_dict[1:]:
-	#set $file_list = $file_list + ' --m-input-file=' + d['additional_input'].__getattr__('file_name')
-#end for
-#return $file_list
-#end def
---m-input-file=$list_dict_to_string($input_files_minputfile)
-#end if
-
-
-#if str($ppagesize):
- --p-page-size=$ppagesize
-#end if
-
---o-visualization=ovisualization
-;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
-&& cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param label="--p-page-size: INTEGER  The maximum number of Metadata records to display per page                               [default: 100]" name="ppagesize" optional="True" type="integer" value="100"/>
-
-		<repeat name="input_files_minputfile" optional="False" title="--m-input-file">
-			<param label="--m-input-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. The metadata to tabulate.  [required]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
-
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
-Interactively explore Metadata in an HTML table
-###############################################
-
-Generate a tabular view of Metadata. The output visualization supports
-interactive filtering, sorting, and exporting to common file formats.
-
-Parameters
-----------
-input : Metadata
-    The metadata to tabulate.
-page_size : Int, optional
-    The maximum number of Metadata records to display per page
-
-Returns
--------
-visualization : Visualization
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_phylogeny_align-to-tree-mafft-fasttree.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_align-to-tree-mafft-fasttree.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,53 +1,68 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_align-to-tree-mafft-fasttree" name="qiime phylogeny align-to-tree-mafft-fasttree" version="2019.7">
-	<description> - Build a phylogenetic tree using fasttree and mafft alignment</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_align-to-tree-mafft-fasttree" name="qiime phylogeny align-to-tree-mafft-fasttree"
+      version="2020.8">
+  <description>Build a phylogenetic tree using fasttree and mafft alignment</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny align-to-tree-mafft-fasttree
 
 --i-sequences=$isequences
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
+#if str($pnthreads) != 'None':
+--p-n-threads=$pnthreads
 #end if
 
+--p-mask-max-gap-frequency=$pmaskmaxgapfrequency
 
-#if str($pmaskmaxgapfrequency):
- --p-mask-max-gap-frequency=$pmaskmaxgapfrequency
-#end if
+--p-mask-min-conservation=$pmaskminconservation
 
-#if str($pmaskminconservation):
- --p-mask-min-conservation=$pmaskminconservation
+#if $pparttree:
+ --p-parttree
 #end if
 
 --o-alignment=oalignment
+
 --o-masked-alignment=omaskedalignment
+
 --o-tree=otree
+
 --o-rooted-tree=orootedtree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp oalignment.qza $oalignment;
-cp omaskedalignment.qza $omaskedalignment;
-cp otree.qza $otree;
 cp orootedtree.qza $orootedtree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be used for creating a fasttree based rooted phylogenetic tree.           [required]" name="isequences" optional="False" type="data"/>
-		<param label="--p-mask-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns  regardless of gap character frequency. This value is used when masking the aligned sequences. [default: 1.0]" name="pmaskmaxgapfrequency" optional="True" type="float" min="0" max="1" exclusive_end="False" value="1.0"/>
-		<param label="--p-mask-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of  0.4 is provided, a column will only be retained  if it contains at least one character that is present in at least 40% of the sequences. This value is used when masking the aligned sequences. [default: 0.4]" name="pmaskminconservation" optional="True" type="float" min="0" max="1" exclusive_end="False" value="0.4"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: alignment.qza" name="oalignment"/>
-		<data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment"/>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-		<data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be used for creating a fasttree based rooted phylogenetic tree.           [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param exclude_max="False" label="--p-mask-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns  regardless of gap character frequency. This value is used when masking the aligned sequences. [default: 1.0]" max="1" min="0" name="pmaskmaxgapfrequency" optional="True" type="float" value="1.0" />
+    <param exclude_max="False" label="--p-mask-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of  0.4 is provided, a column will only be retained  if it contains at least one character that is present in at least 40% of the sequences. This value is used when masking the aligned sequences. [default: 0.4]" max="1" min="0" name="pmaskminconservation" optional="True" type="float" value="0.4" />
+    <param label="--p-parttree: --p-parttree: / --p-no-parttree This flag is required if the number of sequences being aligned are larger than 1000000. Disabled by default.                            [default: False]" name="pparttree" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: alignment.qza" name="oalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    <data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Build a phylogenetic tree using fasttree and mafft alignment
-############################################################
+###############################################################
 
 This pipeline will start by creating a sequence alignment using MAFFT,
 after which any alignment columns that are phylogenetically uninformative
@@ -63,6 +78,10 @@
 sequences : FeatureData[Sequence]
     The sequences to be used for creating a fasttree based rooted
     phylogenetic tree.
+n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads. (Use `auto` to automatically use all available
+    cores) This value is used when aligning the sequences and creating the
+    tree with fasttree.
 mask_max_gap_frequency : Float % Range(0, 1, inclusive_end=True), optional
     The maximum relative frequency of gap characters in a column for the
     column to be retained. This relative frequency must be a number between
@@ -77,6 +96,9 @@
     0.4 is provided, a column will only be retained  if it contains at
     least one character that is present in at least 40% of the sequences.
     This value is used when masking the aligned sequences.
+parttree : Bool, optional
+    This flag is required if the number of sequences being aligned are
+    larger than 1000000. Disabled by default.
 
 Returns
 -------
@@ -88,9 +110,9 @@
     The unrooted phylogenetic tree.
 rooted_tree : Phylogeny[Rooted]
     The rooted phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_phylogeny_align-to-tree-mafft-iqtree.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,447 @@
+<?xml version="1.0" ?>
+<tool id="qiime_phylogeny_align-to-tree-mafft-iqtree" name="qiime phylogeny align-to-tree-mafft-iqtree"
+      version="2020.8">
+  <description>Build a phylogenetic tree using iqtree and mafft alignment.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime phylogeny align-to-tree-mafft-iqtree
+
+--i-sequences=$isequences
+
+#if str($pnthreads) != 'None':
+--p-n-threads=$pnthreads
+#end if
+
+--p-mask-max-gap-frequency=$pmaskmaxgapfrequency
+
+--p-mask-min-conservation=$pmaskminconservation
+
+#if str($psubstitutionmodel) != 'None':
+--p-substitution-model=$psubstitutionmodel
+#end if
+
+#if $pfast:
+ --p-fast
+#end if
+
+#if str($palrt):
+  --p-alrt=$palrt
+#end if
+#if str($pseed):
+  --p-seed=$pseed
+#end if
+#if str($pstopiter):
+  --p-stop-iter=$pstopiter
+#end if
+#if str($pperturbnnistrength):
+  --p-perturb-nni-strength=$pperturbnnistrength
+#end if
+--o-alignment=oalignment
+
+--o-masked-alignment=omaskedalignment
+
+--o-tree=otree
+
+--o-rooted-tree=orootedtree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp orootedtree.qza $orootedtree
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be used for creating a iqtree based rooted phylogenetic tree.           [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param exclude_max="False" label="--p-mask-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns  regardless of gap character frequency. This value is used when masking the aligned sequences. [default: 1.0]" max="1" min="0" name="pmaskmaxgapfrequency" optional="True" type="float" value="1.0" />
+    <param exclude_max="False" label="--p-mask-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of  0.4 is provided, a column will only be retained  if it contains at least one character that is present in at least 40% of the sequences. This value is used when masking the aligned sequences. [default: 0.4]" max="1" min="0" name="pmaskminconservation" optional="True" type="float" value="0.4" />
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="JC">JC</option>
+      <option value="JC+I">JC+I</option>
+      <option value="JC+G">JC+G</option>
+      <option value="JC+I+G">JC+I+G</option>
+      <option value="JC+R2">JC+R2</option>
+      <option value="JC+R3">JC+R3</option>
+      <option value="JC+R4">JC+R4</option>
+      <option value="JC+R5">JC+R5</option>
+      <option value="JC+R6">JC+R6</option>
+      <option value="JC+R7">JC+R7</option>
+      <option value="JC+R8">JC+R8</option>
+      <option value="JC+R9">JC+R9</option>
+      <option value="JC+R10">JC+R10</option>
+      <option value="F81">F81</option>
+      <option value="F81+I">F81+I</option>
+      <option value="F81+G">F81+G</option>
+      <option value="F81+I+G">F81+I+G</option>
+      <option value="F81+R2">F81+R2</option>
+      <option value="F81+R3">F81+R3</option>
+      <option value="F81+R4">F81+R4</option>
+      <option value="F81+R5">F81+R5</option>
+      <option value="F81+R6">F81+R6</option>
+      <option value="F81+R7">F81+R7</option>
+      <option value="F81+R8">F81+R8</option>
+      <option value="F81+R9">F81+R9</option>
+      <option value="F81+R10">F81+R10</option>
+      <option value="K80">K80</option>
+      <option value="K80+I">K80+I</option>
+      <option value="K80+G">K80+G</option>
+      <option value="K80+I+G">K80+I+G</option>
+      <option value="K80+R2">K80+R2</option>
+      <option value="K80+R3">K80+R3</option>
+      <option value="K80+R4">K80+R4</option>
+      <option value="K80+R5">K80+R5</option>
+      <option value="K80+R6">K80+R6</option>
+      <option value="K80+R7">K80+R7</option>
+      <option value="K80+R8">K80+R8</option>
+      <option value="K80+R9">K80+R9</option>
+      <option value="K80+R10">K80+R10</option>
+      <option value="HKY">HKY</option>
+      <option value="HKY+I">HKY+I</option>
+      <option value="HKY+G">HKY+G</option>
+      <option value="HKY+I+G">HKY+I+G</option>
+      <option value="HKY+R2">HKY+R2</option>
+      <option value="HKY+R3">HKY+R3</option>
+      <option value="HKY+R4">HKY+R4</option>
+      <option value="HKY+R5">HKY+R5</option>
+      <option value="HKY+R6">HKY+R6</option>
+      <option value="HKY+R7">HKY+R7</option>
+      <option value="HKY+R8">HKY+R8</option>
+      <option value="HKY+R9">HKY+R9</option>
+      <option value="HKY+R10">HKY+R10</option>
+      <option value="TNe">TNe</option>
+      <option value="TNe+I">TNe+I</option>
+      <option value="TNe+G">TNe+G</option>
+      <option value="TNe+I+G">TNe+I+G</option>
+      <option value="TNe+R2">TNe+R2</option>
+      <option value="TNe+R3">TNe+R3</option>
+      <option value="TNe+R4">TNe+R4</option>
+      <option value="TNe+R5">TNe+R5</option>
+      <option value="TNe+R6">TNe+R6</option>
+      <option value="TNe+R7">TNe+R7</option>
+      <option value="TNe+R8">TNe+R8</option>
+      <option value="TNe+R9">TNe+R9</option>
+      <option value="TNe+R10">TNe+R10</option>
+      <option value="TN">TN</option>
+      <option value="TN+I">TN+I</option>
+      <option value="TN+G">TN+G</option>
+      <option value="TN+I+G">TN+I+G</option>
+      <option value="TN+R2">TN+R2</option>
+      <option value="TN+R3">TN+R3</option>
+      <option value="TN+R4">TN+R4</option>
+      <option value="TN+R5">TN+R5</option>
+      <option value="TN+R6">TN+R6</option>
+      <option value="TN+R7">TN+R7</option>
+      <option value="TN+R8">TN+R8</option>
+      <option value="TN+R9">TN+R9</option>
+      <option value="TN+R10">TN+R10</option>
+      <option value="K81">K81</option>
+      <option value="K81+I">K81+I</option>
+      <option value="K81+G">K81+G</option>
+      <option value="K81+I+G">K81+I+G</option>
+      <option value="K81+R2">K81+R2</option>
+      <option value="K81+R3">K81+R3</option>
+      <option value="K81+R4">K81+R4</option>
+      <option value="K81+R5">K81+R5</option>
+      <option value="K81+R6">K81+R6</option>
+      <option value="K81+R7">K81+R7</option>
+      <option value="K81+R8">K81+R8</option>
+      <option value="K81+R9">K81+R9</option>
+      <option value="K81+R10">K81+R10</option>
+      <option value="K81u">K81u</option>
+      <option value="K81u+I">K81u+I</option>
+      <option value="K81u+G">K81u+G</option>
+      <option value="K81u+I+G">K81u+I+G</option>
+      <option value="K81u+R2">K81u+R2</option>
+      <option value="K81u+R3">K81u+R3</option>
+      <option value="K81u+R4">K81u+R4</option>
+      <option value="K81u+R5">K81u+R5</option>
+      <option value="K81u+R6">K81u+R6</option>
+      <option value="K81u+R7">K81u+R7</option>
+      <option value="K81u+R8">K81u+R8</option>
+      <option value="K81u+R9">K81u+R9</option>
+      <option value="K81u+R10">K81u+R10</option>
+      <option value="TPM2">TPM2</option>
+      <option value="TPM2+I">TPM2+I</option>
+      <option value="TPM2+G">TPM2+G</option>
+      <option value="TPM2+I+G">TPM2+I+G</option>
+      <option value="TPM2+R2">TPM2+R2</option>
+      <option value="TPM2+R3">TPM2+R3</option>
+      <option value="TPM2+R4">TPM2+R4</option>
+      <option value="TPM2+R5">TPM2+R5</option>
+      <option value="TPM2+R6">TPM2+R6</option>
+      <option value="TPM2+R7">TPM2+R7</option>
+      <option value="TPM2+R8">TPM2+R8</option>
+      <option value="TPM2+R9">TPM2+R9</option>
+      <option value="TPM2+R10">TPM2+R10</option>
+      <option value="TPM2u">TPM2u</option>
+      <option value="TPM2u+I">TPM2u+I</option>
+      <option value="TPM2u+G">TPM2u+G</option>
+      <option value="TPM2u+I+G">TPM2u+I+G</option>
+      <option value="TPM2u+R2">TPM2u+R2</option>
+      <option value="TPM2u+R3">TPM2u+R3</option>
+      <option value="TPM2u+R4">TPM2u+R4</option>
+      <option value="TPM2u+R5">TPM2u+R5</option>
+      <option value="TPM2u+R6">TPM2u+R6</option>
+      <option value="TPM2u+R7">TPM2u+R7</option>
+      <option value="TPM2u+R8">TPM2u+R8</option>
+      <option value="TPM2u+R9">TPM2u+R9</option>
+      <option value="TPM2u+R10">TPM2u+R10</option>
+      <option value="TPM3">TPM3</option>
+      <option value="TPM3+I">TPM3+I</option>
+      <option value="TPM3+G">TPM3+G</option>
+      <option value="TPM3+I+G">TPM3+I+G</option>
+      <option value="TPM3+R2">TPM3+R2</option>
+      <option value="TPM3+R3">TPM3+R3</option>
+      <option value="TPM3+R4">TPM3+R4</option>
+      <option value="TPM3+R5">TPM3+R5</option>
+      <option value="TPM3+R6">TPM3+R6</option>
+      <option value="TPM3+R7">TPM3+R7</option>
+      <option value="TPM3+R8">TPM3+R8</option>
+      <option value="TPM3+R9">TPM3+R9</option>
+      <option value="TPM3+R10">TPM3+R10</option>
+      <option value="TPM3u">TPM3u</option>
+      <option value="TPM3u+I">TPM3u+I</option>
+      <option value="TPM3u+G">TPM3u+G</option>
+      <option value="TPM3u+I+G">TPM3u+I+G</option>
+      <option value="TPM3u+R2">TPM3u+R2</option>
+      <option value="TPM3u+R3">TPM3u+R3</option>
+      <option value="TPM3u+R4">TPM3u+R4</option>
+      <option value="TPM3u+R5">TPM3u+R5</option>
+      <option value="TPM3u+R6">TPM3u+R6</option>
+      <option value="TPM3u+R7">TPM3u+R7</option>
+      <option value="TPM3u+R8">TPM3u+R8</option>
+      <option value="TPM3u+R9">TPM3u+R9</option>
+      <option value="TPM3u+R10">TPM3u+R10</option>
+      <option value="TIMe">TIMe</option>
+      <option value="TIMe+I">TIMe+I</option>
+      <option value="TIMe+G">TIMe+G</option>
+      <option value="TIMe+I+G">TIMe+I+G</option>
+      <option value="TIMe+R2">TIMe+R2</option>
+      <option value="TIMe+R3">TIMe+R3</option>
+      <option value="TIMe+R4">TIMe+R4</option>
+      <option value="TIMe+R5">TIMe+R5</option>
+      <option value="TIMe+R6">TIMe+R6</option>
+      <option value="TIMe+R7">TIMe+R7</option>
+      <option value="TIMe+R8">TIMe+R8</option>
+      <option value="TIMe+R9">TIMe+R9</option>
+      <option value="TIMe+R10">TIMe+R10</option>
+      <option value="TIM">TIM</option>
+      <option value="TIM+I">TIM+I</option>
+      <option value="TIM+G">TIM+G</option>
+      <option value="TIM+I+G">TIM+I+G</option>
+      <option value="TIM+R2">TIM+R2</option>
+      <option value="TIM+R3">TIM+R3</option>
+      <option value="TIM+R4">TIM+R4</option>
+      <option value="TIM+R5">TIM+R5</option>
+      <option value="TIM+R6">TIM+R6</option>
+      <option value="TIM+R7">TIM+R7</option>
+      <option value="TIM+R8">TIM+R8</option>
+      <option value="TIM+R9">TIM+R9</option>
+      <option value="TIM+R10">TIM+R10</option>
+      <option value="TIM2e">TIM2e</option>
+      <option value="TIM2e+I">TIM2e+I</option>
+      <option value="TIM2e+G">TIM2e+G</option>
+      <option value="TIM2e+I+G">TIM2e+I+G</option>
+      <option value="TIM2e+R2">TIM2e+R2</option>
+      <option value="TIM2e+R3">TIM2e+R3</option>
+      <option value="TIM2e+R4">TIM2e+R4</option>
+      <option value="TIM2e+R5">TIM2e+R5</option>
+      <option value="TIM2e+R6">TIM2e+R6</option>
+      <option value="TIM2e+R7">TIM2e+R7</option>
+      <option value="TIM2e+R8">TIM2e+R8</option>
+      <option value="TIM2e+R9">TIM2e+R9</option>
+      <option value="TIM2e+R10">TIM2e+R10</option>
+      <option value="TIM2">TIM2</option>
+      <option value="TIM2+I">TIM2+I</option>
+      <option value="TIM2+G">TIM2+G</option>
+      <option value="TIM2+I+G">TIM2+I+G</option>
+      <option value="TIM2+R2">TIM2+R2</option>
+      <option value="TIM2+R3">TIM2+R3</option>
+      <option value="TIM2+R4">TIM2+R4</option>
+      <option value="TIM2+R5">TIM2+R5</option>
+      <option value="TIM2+R6">TIM2+R6</option>
+      <option value="TIM2+R7">TIM2+R7</option>
+      <option value="TIM2+R8">TIM2+R8</option>
+      <option value="TIM2+R9">TIM2+R9</option>
+      <option value="TIM2+R10">TIM2+R10</option>
+      <option value="TIM3e">TIM3e</option>
+      <option value="TIM3e+I">TIM3e+I</option>
+      <option value="TIM3e+G">TIM3e+G</option>
+      <option value="TIM3e+I+G">TIM3e+I+G</option>
+      <option value="TIM3e+R2">TIM3e+R2</option>
+      <option value="TIM3e+R3">TIM3e+R3</option>
+      <option value="TIM3e+R4">TIM3e+R4</option>
+      <option value="TIM3e+R5">TIM3e+R5</option>
+      <option value="TIM3e+R6">TIM3e+R6</option>
+      <option value="TIM3e+R7">TIM3e+R7</option>
+      <option value="TIM3e+R8">TIM3e+R8</option>
+      <option value="TIM3e+R9">TIM3e+R9</option>
+      <option value="TIM3e+R10">TIM3e+R10</option>
+      <option value="TIM3">TIM3</option>
+      <option value="TIM3+I">TIM3+I</option>
+      <option value="TIM3+G">TIM3+G</option>
+      <option value="TIM3+I+G">TIM3+I+G</option>
+      <option value="TIM3+R2">TIM3+R2</option>
+      <option value="TIM3+R3">TIM3+R3</option>
+      <option value="TIM3+R4">TIM3+R4</option>
+      <option value="TIM3+R5">TIM3+R5</option>
+      <option value="TIM3+R6">TIM3+R6</option>
+      <option value="TIM3+R7">TIM3+R7</option>
+      <option value="TIM3+R8">TIM3+R8</option>
+      <option value="TIM3+R9">TIM3+R9</option>
+      <option value="TIM3+R10">TIM3+R10</option>
+      <option value="TVMe">TVMe</option>
+      <option value="TVMe+I">TVMe+I</option>
+      <option value="TVMe+G">TVMe+G</option>
+      <option value="TVMe+I+G">TVMe+I+G</option>
+      <option value="TVMe+R2">TVMe+R2</option>
+      <option value="TVMe+R3">TVMe+R3</option>
+      <option value="TVMe+R4">TVMe+R4</option>
+      <option value="TVMe+R5">TVMe+R5</option>
+      <option value="TVMe+R6">TVMe+R6</option>
+      <option value="TVMe+R7">TVMe+R7</option>
+      <option value="TVMe+R8">TVMe+R8</option>
+      <option value="TVMe+R9">TVMe+R9</option>
+      <option value="TVMe+R10">TVMe+R10</option>
+      <option value="TVM">TVM</option>
+      <option value="TVM+I">TVM+I</option>
+      <option value="TVM+G">TVM+G</option>
+      <option value="TVM+I+G">TVM+I+G</option>
+      <option value="TVM+R2">TVM+R2</option>
+      <option value="TVM+R3">TVM+R3</option>
+      <option value="TVM+R4">TVM+R4</option>
+      <option value="TVM+R5">TVM+R5</option>
+      <option value="TVM+R6">TVM+R6</option>
+      <option value="TVM+R7">TVM+R7</option>
+      <option value="TVM+R8">TVM+R8</option>
+      <option value="TVM+R9">TVM+R9</option>
+      <option value="TVM+R10">TVM+R10</option>
+      <option value="SYM">SYM</option>
+      <option value="SYM+I">SYM+I</option>
+      <option value="SYM+G">SYM+G</option>
+      <option value="SYM+I+G">SYM+I+G</option>
+      <option value="SYM+R2">SYM+R2</option>
+      <option value="SYM+R3">SYM+R3</option>
+      <option value="SYM+R4">SYM+R4</option>
+      <option value="SYM+R5">SYM+R5</option>
+      <option value="SYM+R6">SYM+R6</option>
+      <option value="SYM+R7">SYM+R7</option>
+      <option value="SYM+R8">SYM+R8</option>
+      <option value="SYM+R9">SYM+R9</option>
+      <option value="SYM+R10">SYM+R10</option>
+      <option value="GTR">GTR</option>
+      <option value="GTR+I">GTR+I</option>
+      <option value="GTR+G">GTR+G</option>
+      <option value="GTR+I+G">GTR+I+G</option>
+      <option value="GTR+R2">GTR+R2</option>
+      <option value="GTR+R3">GTR+R3</option>
+      <option value="GTR+R4">GTR+R4</option>
+      <option value="GTR+R5">GTR+R5</option>
+      <option value="GTR+R6">GTR+R6</option>
+      <option value="GTR+R7">GTR+R7</option>
+      <option value="GTR+R8">GTR+R8</option>
+      <option value="GTR+R9">GTR+R9</option>
+      <option value="GTR+R10">GTR+R10</option>
+      <option value="MFP">MFP</option>
+      <option value="TEST">TEST</option>
+    </param>
+    <param label="--p-fast: --p-fast: / --p-no-fast  Fast search to resemble FastTree.   [default: False]" name="pfast" selected="False" type="boolean" />
+    <param label="--p-alrt: INTEGER        Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform an SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000 replicates is recomended.                 [optional]" name="palrt" optional="False" type="text" />
+    <param label="--p-seed: INTEGER        Random number seed for the iqtree parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen.                                   [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-stop-iter: INTEGER   Number of unsuccessful iterations to stop. If not Range(1, None)        set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pstopiter" optional="False" type="text" />
+    <param label="--p-perturb-nni-strength: NUMBER Range(0.01, 1.0)      Perturbation strength for randomized NNI. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pperturbnnistrength" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: alignment.qza" name="oalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    <data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Build a phylogenetic tree using iqtree and mafft alignment.
+###############################################################
+
+This pipeline will start by creating a sequence alignment using MAFFT,
+after which any alignment columns that are phylogenetically uninformative
+or ambiguously aligned will be removed (masked). The resulting masked
+alignment will be used to infer a phylogenetic tree using IQ-TREE. By
+default the best fit substitution model will be determined by ModelFinder
+prior to phylogenetic inference. The resulting tree will be subsequently
+rooted at its midpoint. Output files from each step of the pipeline will be
+saved. This includes both the unmasked and masked MAFFT alignment from
+q2-alignment methods, and both the rooted and unrooted phylogenies from
+q2-phylogeny methods.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The sequences to be used for creating a iqtree based rooted
+    phylogenetic tree.
+n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads. (Use 0 to automatically use all available cores
+    This value is used when aligning the sequences and creating the tree
+    with iqtree.
+mask_max_gap_frequency : Float % Range(0, 1, inclusive_end=True), optional
+    The maximum relative frequency of gap characters in a column for the
+    column to be retained. This relative frequency must be a number between
+    0.0 and 1.0 (inclusive), where 0.0 retains only those columns without
+    gap characters, and 1.0 retains all columns  regardless of gap
+    character frequency. This value is used when masking the aligned
+    sequences.
+mask_min_conservation : Float % Range(0, 1, inclusive_end=True), optional
+    The minimum relative frequency of at least one non-gap character in a
+    column for that column to be retained. This relative frequency must be
+    a number between 0.0 and 1.0 (inclusive). For example, if a value of
+    0.4 is provided, a column will only be retained  if it contains at
+    least one character that is present in at least 40% of the sequences.
+    This value is used when masking the aligned sequences.
+substitution_model : Str % Choices('JC', 'JC+I', 'JC+G', 'JC+I+G', 'JC+R2', 'JC+R3', 'JC+R4', 'JC+R5', 'JC+R6', 'JC+R7', 'JC+R8', 'JC+R9', 'JC+R10', 'F81', 'F81+I', 'F81+G', 'F81+I+G', 'F81+R2', 'F81+R3', 'F81+R4', 'F81+R5', 'F81+R6', 'F81+R7', 'F81+R8', 'F81+R9', 'F81+R10', 'K80', 'K80+I', 'K80+G', 'K80+I+G', 'K80+R2', 'K80+R3', 'K80+R4', 'K80+R5', 'K80+R6', 'K80+R7', 'K80+R8', 'K80+R9', 'K80+R10', 'HKY', 'HKY+I', 'HKY+G', 'HKY+I+G', 'HKY+R2', 'HKY+R3', 'HKY+R4', 'HKY+R5', 'HKY+R6', 'HKY+R7', 'HKY+R8', 'HKY+R9', 'HKY+R10', 'TNe', 'TNe+I', 'TNe+G', 'TNe+I+G', 'TNe+R2', 'TNe+R3', 'TNe+R4', 'TNe+R5', 'TNe+R6', 'TNe+R7', 'TNe+R8', 'TNe+R9', 'TNe+R10', 'TN', 'TN+I', 'TN+G', 'TN+I+G', 'TN+R2', 'TN+R3', 'TN+R4', 'TN+R5', 'TN+R6', 'TN+R7', 'TN+R8', 'TN+R9', 'TN+R10', 'K81', 'K81+I', 'K81+G', 'K81+I+G', 'K81+R2', 'K81+R3', 'K81+R4', 'K81+R5', 'K81+R6', 'K81+R7', 'K81+R8', 'K81+R9', 'K81+R10', 'K81u', 'K81u+I', 'K81u+G', 'K81u+I+G', 'K81u+R2', 'K81u+R3', 'K81u+R4', 'K81u+R5', 'K81u+R6', 'K81u+R7', 'K81u+R8', 'K81u+R9', 'K81u+R10', 'TPM2', 'TPM2+I', 'TPM2+G', 'TPM2+I+G', 'TPM2+R2', 'TPM2+R3', 'TPM2+R4', 'TPM2+R5', 'TPM2+R6', 'TPM2+R7', 'TPM2+R8', 'TPM2+R9', 'TPM2+R10', 'TPM2u', 'TPM2u+I', 'TPM2u+G', 'TPM2u+I+G', 'TPM2u+R2', 'TPM2u+R3', 'TPM2u+R4', 'TPM2u+R5', 'TPM2u+R6', 'TPM2u+R7', 'TPM2u+R8', 'TPM2u+R9', 'TPM2u+R10', 'TPM3', 'TPM3+I', 'TPM3+G', 'TPM3+I+G', 'TPM3+R2', 'TPM3+R3', 'TPM3+R4', 'TPM3+R5', 'TPM3+R6', 'TPM3+R7', 'TPM3+R8', 'TPM3+R9', 'TPM3+R10', 'TPM3u', 'TPM3u+I', 'TPM3u+G', 'TPM3u+I+G', 'TPM3u+R2', 'TPM3u+R3', 'TPM3u+R4', 'TPM3u+R5', 'TPM3u+R6', 'TPM3u+R7', 'TPM3u+R8', 'TPM3u+R9', 'TPM3u+R10', 'TIMe', 'TIMe+I', 'TIMe+G', 'TIMe+I+G', 'TIMe+R2', 'TIMe+R3', 'TIMe+R4', 'TIMe+R5', 'TIMe+R6', 'TIMe+R7', 'TIMe+R8', 'TIMe+R9', 'TIMe+R10', 'TIM', 'TIM+I', 'TIM+G', 'TIM+I+G', 'TIM+R2', 'TIM+R3', 'TIM+R4', 'TIM+R5', 'TIM+R6', 'TIM+R7', 'TIM+R8', 'TIM+R9', 'TIM+R10', 'TIM2e', 'TIM2e+I', 'TIM2e+G', 'TIM2e+I+G', 'TIM2e+R2', 'TIM2e+R3', 'TIM2e+R4', 'TIM2e+R5', 'TIM2e+R6', 'TIM2e+R7', 'TIM2e+R8', 'TIM2e+R9', 'TIM2e+R10', 'TIM2', 'TIM2+I', 'TIM2+G', 'TIM2+I+G', 'TIM2+R2', 'TIM2+R3', 'TIM2+R4', 'TIM2+R5', 'TIM2+R6', 'TIM2+R7', 'TIM2+R8', 'TIM2+R9', 'TIM2+R10', 'TIM3e', 'TIM3e+I', 'TIM3e+G', 'TIM3e+I+G', 'TIM3e+R2', 'TIM3e+R3', 'TIM3e+R4', 'TIM3e+R5', 'TIM3e+R6', 'TIM3e+R7', 'TIM3e+R8', 'TIM3e+R9', 'TIM3e+R10', 'TIM3', 'TIM3+I', 'TIM3+G', 'TIM3+I+G', 'TIM3+R2', 'TIM3+R3', 'TIM3+R4', 'TIM3+R5', 'TIM3+R6', 'TIM3+R7', 'TIM3+R8', 'TIM3+R9', 'TIM3+R10', 'TVMe', 'TVMe+I', 'TVMe+G', 'TVMe+I+G', 'TVMe+R2', 'TVMe+R3', 'TVMe+R4', 'TVMe+R5', 'TVMe+R6', 'TVMe+R7', 'TVMe+R8', 'TVMe+R9', 'TVMe+R10', 'TVM', 'TVM+I', 'TVM+G', 'TVM+I+G', 'TVM+R2', 'TVM+R3', 'TVM+R4', 'TVM+R5', 'TVM+R6', 'TVM+R7', 'TVM+R8', 'TVM+R9', 'TVM+R10', 'SYM', 'SYM+I', 'SYM+G', 'SYM+I+G', 'SYM+R2', 'SYM+R3', 'SYM+R4', 'SYM+R5', 'SYM+R6', 'SYM+R7', 'SYM+R8', 'SYM+R9', 'SYM+R10', 'GTR', 'GTR+I', 'GTR+G', 'GTR+I+G', 'GTR+R2', 'GTR+R3', 'GTR+R4', 'GTR+R5', 'GTR+R6', 'GTR+R7', 'GTR+R8', 'GTR+R9', 'GTR+R10', 'MFP', 'TEST'), optional
+    Model of Nucleotide Substitution. If not provided, IQ-TREE will
+    determine the best fit substitution model automatically.
+fast : Bool, optional
+    Fast search to resemble FastTree.
+alrt : Int % Range(1000, None), optional
+    Single branch test method. Number of bootstrap replicates to perform an
+    SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000
+    replicates is recomended.
+seed : Int, optional
+    Random number seed for the iqtree parsimony starting tree. This allows
+    you to reproduce tree results. If not supplied then one will be
+    randomly chosen.
+stop_iter : Int % Range(1, None), optional
+    Number of unsuccessful iterations to stop. If not set, program defaults
+    will be used. See IQ-TREE manual for details.
+perturb_nni_strength : Float % Range(0.01, 1.0), optional
+    Perturbation strength for randomized NNI. If not set, program defaults
+    will be used. See IQ-TREE manual for details.
+
+Returns
+-------
+alignment : FeatureData[AlignedSequence]
+    The aligned sequences.
+masked_alignment : FeatureData[AlignedSequence]
+    The masked alignment.
+tree : Phylogeny[Unrooted]
+    The unrooted phylogenetic tree.
+rooted_tree : Phylogeny[Rooted]
+    The rooted phylogenetic tree.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_phylogeny_align-to-tree-mafft-raxml.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,155 @@
+<?xml version="1.0" ?>
+<tool id="qiime_phylogeny_align-to-tree-mafft-raxml" name="qiime phylogeny align-to-tree-mafft-raxml"
+      version="2020.8">
+  <description>Build a phylogenetic tree using raxml and mafft alignment.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime phylogeny align-to-tree-mafft-raxml
+
+--i-sequences=$isequences
+
+#if str($pnthreads) != 'None':
+--p-n-threads=$pnthreads
+#end if
+
+--p-mask-max-gap-frequency=$pmaskmaxgapfrequency
+
+--p-mask-min-conservation=$pmaskminconservation
+
+#if $pparttree:
+ --p-parttree
+#end if
+
+#if str($psubstitutionmodel) != 'None':
+--p-substitution-model=$psubstitutionmodel
+#end if
+
+#if str($pseed):
+  --p-seed=$pseed
+#end if
+#if str($praxmlversion) != 'None':
+--p-raxml-version=$praxmlversion
+#end if
+
+--o-alignment=oalignment
+
+--o-masked-alignment=omaskedalignment
+
+--o-tree=otree
+
+--o-rooted-tree=orootedtree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp orootedtree.qza $orootedtree
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences to be used for creating a iqtree based rooted phylogenetic tree.           [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param exclude_max="False" label="--p-mask-max-gap-frequency: PROPORTION Range(0, 1, inclusive_end=True) The maximum relative frequency of gap characters in a column for the column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive), where 0.0 retains only those columns without gap characters, and 1.0 retains all columns  regardless of gap character frequency. This value is used when masking the aligned sequences. [default: 1.0]" max="1" min="0" name="pmaskmaxgapfrequency" optional="True" type="float" value="1.0" />
+    <param exclude_max="False" label="--p-mask-min-conservation: PROPORTION Range(0, 1, inclusive_end=True) The minimum relative frequency of at least one non-gap character in a column for that column to be retained. This relative frequency must be a number between 0.0 and 1.0 (inclusive). For example, if a value of  0.4 is provided, a column will only be retained  if it contains at least one character that is present in at least 40% of the sequences. This value is used when masking the aligned sequences. [default: 0.4]" max="1" min="0" name="pmaskminconservation" optional="True" type="float" value="0.4" />
+    <param label="--p-parttree: --p-parttree: / --p-no-parttree This flag is required if the number of sequences being aligned are larger than 1000000. Disabled by default. NOTE: if using this option, it is recomended that only the CAT-based substitution models of RAxML be considered for this pipeline. [default: False]" name="pparttree" selected="False" type="boolean" />
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="GTRGAMMA">GTRGAMMA</option>
+      <option value="GTRGAMMAI">GTRGAMMAI</option>
+      <option value="GTRCAT">GTRCAT</option>
+      <option value="GTRCATI">GTRCATI</option>
+    </param>
+    <param label="--p-seed: INTEGER        Random number seed for the parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen. [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-raxml-version: " name="praxmlversion" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Standard">Standard</option>
+      <option value="SSE3">SSE3</option>
+      <option value="AVX2">AVX2</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: alignment.qza" name="oalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: maskedalignment.qza" name="omaskedalignment" />
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    <data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Build a phylogenetic tree using raxml and mafft alignment.
+###############################################################
+
+This pipeline will start by creating a sequence alignment using MAFFT,
+after which any alignment columns that are phylogenetically uninformative
+or ambiguously aligned will be removed (masked). The resulting masked
+alignment will be used to infer a phylogenetic tree using RAxML, under the
+specified substitution model, and then subsequently rooted at its midpoint.
+Output files from each step of the pipeline will be saved. This includes
+both the unmasked and masked MAFFT alignment from q2-alignment methods, and
+both the rooted and unrooted phylogenies from q2-phylogeny methods.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The sequences to be used for creating a iqtree based rooted
+    phylogenetic tree.
+n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads. (Use `all` to automatically use all available
+    cores. This value is used when aligning the sequences and creating the
+    tree with iqtree.
+mask_max_gap_frequency : Float % Range(0, 1, inclusive_end=True), optional
+    The maximum relative frequency of gap characters in a column for the
+    column to be retained. This relative frequency must be a number between
+    0.0 and 1.0 (inclusive), where 0.0 retains only those columns without
+    gap characters, and 1.0 retains all columns  regardless of gap
+    character frequency. This value is used when masking the aligned
+    sequences.
+mask_min_conservation : Float % Range(0, 1, inclusive_end=True), optional
+    The minimum relative frequency of at least one non-gap character in a
+    column for that column to be retained. This relative frequency must be
+    a number between 0.0 and 1.0 (inclusive). For example, if a value of
+    0.4 is provided, a column will only be retained  if it contains at
+    least one character that is present in at least 40% of the sequences.
+    This value is used when masking the aligned sequences.
+parttree : Bool, optional
+    This flag is required if the number of sequences being aligned are
+    larger than 1000000. Disabled by default. NOTE: if using this option,
+    it is recomended that only the CAT-based substitution models of RAxML
+    be considered for this pipeline.
+substitution_model : Str % Choices('GTRGAMMA', 'GTRGAMMAI', 'GTRCAT', 'GTRCATI'), optional
+    Model of Nucleotide Substitution.
+seed : Int, optional
+    Random number seed for the parsimony starting tree. This allows you to
+    reproduce tree results. If not supplied then one will be randomly
+    chosen.
+raxml_version : Str % Choices('Standard', 'SSE3', 'AVX2'), optional
+    Select a specific CPU optimization of RAxML to use. The SSE3 versions
+    will run approximately 40% faster than the standard version. The AVX2
+    version will run 10-30% faster than the SSE3 version.
+
+Returns
+-------
+alignment : FeatureData[AlignedSequence]
+    The aligned sequences.
+masked_alignment : FeatureData[AlignedSequence]
+    The masked alignment.
+tree : Phylogeny[Unrooted]
+    The unrooted phylogenetic tree.
+rooted_tree : Phylogeny[Rooted]
+    The rooted phylogenetic tree.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_fasttree.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_fasttree.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,32 +1,48 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_fasttree" name="qiime phylogeny fasttree" version="2019.7">
-	<description> - Construct a phylogenetic tree with FastTree.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_fasttree" name="qiime phylogeny fasttree"
+      version="2020.8">
+  <description>Construct a phylogenetic tree with FastTree.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny fasttree
 
 --i-alignment=$ialignment
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
+#if str($pnthreads) != 'None':
+--p-n-threads=$pnthreads
 #end if
 
 --o-tree=otree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otree.qza $otree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data" />
+    <param label="--p-n-threads: " name="pnthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Construct a phylogenetic tree with FastTree.
-############################################
+###############################################################
 
 Construct a phylogenetic tree with FastTree.
 
@@ -34,14 +50,20 @@
 ----------
 alignment : FeatureData[AlignedSequence]
     Aligned sequences to be used for phylogenetic reconstruction.
+n_threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads. Using more than one thread runs the non-
+    deterministic variant of `FastTree` (`FastTreeMP`), and may result in a
+    different tree than single-threading. See
+    http://www.microbesonline.org/fasttree/#OpenMP for details. (Use `auto`
+    to automatically use all available cores)
 
 Returns
 -------
 tree : Phylogeny[Unrooted]
     The resulting phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_filter-table.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_filter-table.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_filter-table" name="qiime phylogeny filter-table" version="2019.7">
-	<description> - Remove features from table if they're not present in tree.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_filter-table" name="qiime phylogeny filter-table"
+      version="2020.8">
+  <description>Remove features from table if they\'re not present in tree.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny filter-table
 
 --i-table=$itable
+
 --i-tree=$itree
 
 --o-filtered-table=ofilteredtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofilteredtable.qza $ofilteredtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table that features should be filtered from. [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT Phylogeny[Rooted | Unrooted] Tree where tip identifiers are the feature identifiers that should be retained in the table.        [required]" name="itree" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-	</outputs>
-	<help><![CDATA[
-Remove features from table if they're not present in tree.
-##########################################################
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table that features should be filtered from. [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT Phylogeny[Rooted | Unrooted] Tree where tip identifiers are the feature identifiers that should be retained in the table.        [required]" name="itree" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Remove features from table if they\'re not present in tree.
+###############################################################
 
 Remove features from a feature table if their identifiers are not tip
 identifiers in tree.
@@ -40,9 +53,9 @@
 -------
 filtered_table : FeatureTable[Frequency]
     The resulting feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_iqtree-ultrafast-bootstrap.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_iqtree-ultrafast-bootstrap.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,93 +1,80 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_iqtree-ultrafast-bootstrap" name="qiime phylogeny iqtree-ultrafast-bootstrap" version="2019.7">
-	<description> - Construct a phylogenetic tree with IQ-TREE with bootstrap supports.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_iqtree-ultrafast-bootstrap" name="qiime phylogeny iqtree-ultrafast-bootstrap"
+      version="2020.8">
+  <description>Construct a phylogenetic tree with IQ-TREE with bootstrap supports.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny iqtree-ultrafast-bootstrap
 
 --i-alignment=$ialignment
 
 #if str($pseed):
- --p-seed="$pseed"
+  --p-seed=$pseed
 #end if
-
-
-#set $pncores = '${GALAXY_SLOTS:-4}'
-#if str($pncores):
+#if str($pncores) != 'None':
 --p-n-cores=$pncores
 #end if
 
+#set $pncoresmax = '${GALAXY_SLOTS:-4}'
 
-#if str($pnruns):
- --p-n-runs=$pnruns
-#end if
-
-#if str($psubstitutionmodel) != 'None':
- --p-substitution-model=$psubstitutionmodel
+#if str($pncoresmax):
+  --p-n-cores-max=$pncoresmax
 #end if
 
-#if str($pbootstrapreplicates):
- --p-bootstrap-replicates=$pbootstrapreplicates
-#end if
+--p-n-runs=$pnruns
 
-#if str($pninitparstrees):
- --p-n-init-pars-trees="$pninitparstrees"
-#end if
-
-#if str($pntopinittrees):
- --p-n-top-init-trees="$pntopinittrees"
-#end if
-
-#if str($pnbestretaintrees):
- --p-n-best-retain-trees="$pnbestretaintrees"
+#if str($psubstitutionmodel) != 'None':
+--p-substitution-model=$psubstitutionmodel
 #end if
 
+--p-bootstrap-replicates=$pbootstrapreplicates
+
+#if str($pninitparstrees):
+  --p-n-init-pars-trees=$pninitparstrees
+#end if
+#if str($pntopinittrees):
+  --p-n-top-init-trees=$pntopinittrees
+#end if
+#if str($pnbestretaintrees):
+  --p-n-best-retain-trees=$pnbestretaintrees
+#end if
 #if str($pstopiter):
- --p-stop-iter="$pstopiter"
+  --p-stop-iter=$pstopiter
 #end if
-
 #if str($pperturbnnistrength):
- --p-perturb-nni-strength="$pperturbnnistrength"
+  --p-perturb-nni-strength=$pperturbnnistrength
 #end if
-
 #if str($psprradius):
- --p-spr-radius="$psprradius"
+  --p-spr-radius=$psprradius
 #end if
-
 #if str($pnmaxufbootiter):
- --p-n-max-ufboot-iter="$pnmaxufbootiter"
+  --p-n-max-ufboot-iter=$pnmaxufbootiter
 #end if
-
 #if str($pnufbootsteps):
- --p-n-ufboot-steps="$pnufbootsteps"
+  --p-n-ufboot-steps=$pnufbootsteps
 #end if
-
 #if str($pmincorufboot):
- --p-min-cor-ufboot="$pmincorufboot"
+  --p-min-cor-ufboot=$pmincorufboot
 #end if
-
 #if str($pepbreakufboot):
- --p-ep-break-ufboot="$pepbreakufboot"
+  --p-ep-break-ufboot=$pepbreakufboot
 #end if
-
 #if $pallnni:
  --p-allnni
 #end if
 
 #if str($palrt):
- --p-alrt="$palrt"
+  --p-alrt=$palrt
 #end if
-
 #if $pabayes:
  --p-abayes
 #end if
 
 #if str($plbp):
- --p-lbp="$plbp"
+  --p-lbp=$plbp
 #end if
-
 #if $pbnni:
  --p-bnni
 #end if
@@ -97,328 +84,344 @@
 #end if
 
 --o-tree=otree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otree.qza $otree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data"/>
-		<param label="--p-seed: INTEGER        Random number seed. If not set, program defaults will be used. See IQ-TREE manual for details. [optional]" name="pseed" optional="True" type="integer"/>
-		<param label="--p-n-runs: INTEGER      Number of indepedent runs. Multiple  independent Range(1, None)        runs (e.g. 10) can outperform a single run in terms of likelihood maximisation.             [default: 1]" name="pnruns" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="JC">JC</option>
-			<option value="JC+I">JC+I</option>
-			<option value="JC+G">JC+G</option>
-			<option value="JC+I+G">JC+I+G</option>
-			<option value="JC+R2">JC+R2</option>
-			<option value="JC+R3">JC+R3</option>
-			<option value="JC+R4">JC+R4</option>
-			<option value="JC+R5">JC+R5</option>
-			<option value="JC+R6">JC+R6</option>
-			<option value="JC+R7">JC+R7</option>
-			<option value="JC+R8">JC+R8</option>
-			<option value="JC+R9">JC+R9</option>
-			<option value="JC+R10">JC+R10</option>
-			<option value="F81">F81</option>
-			<option value="F81+I">F81+I</option>
-			<option value="F81+G">F81+G</option>
-			<option value="F81+I+G">F81+I+G</option>
-			<option value="F81+R2">F81+R2</option>
-			<option value="F81+R3">F81+R3</option>
-			<option value="F81+R4">F81+R4</option>
-			<option value="F81+R5">F81+R5</option>
-			<option value="F81+R6">F81+R6</option>
-			<option value="F81+R7">F81+R7</option>
-			<option value="F81+R8">F81+R8</option>
-			<option value="F81+R9">F81+R9</option>
-			<option value="F81+R10">F81+R10</option>
-			<option value="K80">K80</option>
-			<option value="K80+I">K80+I</option>
-			<option value="K80+G">K80+G</option>
-			<option value="K80+I+G">K80+I+G</option>
-			<option value="K80+R2">K80+R2</option>
-			<option value="K80+R3">K80+R3</option>
-			<option value="K80+R4">K80+R4</option>
-			<option value="K80+R5">K80+R5</option>
-			<option value="K80+R6">K80+R6</option>
-			<option value="K80+R7">K80+R7</option>
-			<option value="K80+R8">K80+R8</option>
-			<option value="K80+R9">K80+R9</option>
-			<option value="K80+R10">K80+R10</option>
-			<option value="HKY">HKY</option>
-			<option value="HKY+I">HKY+I</option>
-			<option value="HKY+G">HKY+G</option>
-			<option value="HKY+I+G">HKY+I+G</option>
-			<option value="HKY+R2">HKY+R2</option>
-			<option value="HKY+R3">HKY+R3</option>
-			<option value="HKY+R4">HKY+R4</option>
-			<option value="HKY+R5">HKY+R5</option>
-			<option value="HKY+R6">HKY+R6</option>
-			<option value="HKY+R7">HKY+R7</option>
-			<option value="HKY+R8">HKY+R8</option>
-			<option value="HKY+R9">HKY+R9</option>
-			<option value="HKY+R10">HKY+R10</option>
-			<option value="TNe">TNe</option>
-			<option value="TNe+I">TNe+I</option>
-			<option value="TNe+G">TNe+G</option>
-			<option value="TNe+I+G">TNe+I+G</option>
-			<option value="TNe+R2">TNe+R2</option>
-			<option value="TNe+R3">TNe+R3</option>
-			<option value="TNe+R4">TNe+R4</option>
-			<option value="TNe+R5">TNe+R5</option>
-			<option value="TNe+R6">TNe+R6</option>
-			<option value="TNe+R7">TNe+R7</option>
-			<option value="TNe+R8">TNe+R8</option>
-			<option value="TNe+R9">TNe+R9</option>
-			<option value="TNe+R10">TNe+R10</option>
-			<option value="TN">TN</option>
-			<option value="TN+I">TN+I</option>
-			<option value="TN+G">TN+G</option>
-			<option value="TN+I+G">TN+I+G</option>
-			<option value="TN+R2">TN+R2</option>
-			<option value="TN+R3">TN+R3</option>
-			<option value="TN+R4">TN+R4</option>
-			<option value="TN+R5">TN+R5</option>
-			<option value="TN+R6">TN+R6</option>
-			<option value="TN+R7">TN+R7</option>
-			<option value="TN+R8">TN+R8</option>
-			<option value="TN+R9">TN+R9</option>
-			<option value="TN+R10">TN+R10</option>
-			<option value="K81">K81</option>
-			<option value="K81+I">K81+I</option>
-			<option value="K81+G">K81+G</option>
-			<option value="K81+I+G">K81+I+G</option>
-			<option value="K81+R2">K81+R2</option>
-			<option value="K81+R3">K81+R3</option>
-			<option value="K81+R4">K81+R4</option>
-			<option value="K81+R5">K81+R5</option>
-			<option value="K81+R6">K81+R6</option>
-			<option value="K81+R7">K81+R7</option>
-			<option value="K81+R8">K81+R8</option>
-			<option value="K81+R9">K81+R9</option>
-			<option value="K81+R10">K81+R10</option>
-			<option value="K81u">K81u</option>
-			<option value="K81u+I">K81u+I</option>
-			<option value="K81u+G">K81u+G</option>
-			<option value="K81u+I+G">K81u+I+G</option>
-			<option value="K81u+R2">K81u+R2</option>
-			<option value="K81u+R3">K81u+R3</option>
-			<option value="K81u+R4">K81u+R4</option>
-			<option value="K81u+R5">K81u+R5</option>
-			<option value="K81u+R6">K81u+R6</option>
-			<option value="K81u+R7">K81u+R7</option>
-			<option value="K81u+R8">K81u+R8</option>
-			<option value="K81u+R9">K81u+R9</option>
-			<option value="K81u+R10">K81u+R10</option>
-			<option value="TPM2">TPM2</option>
-			<option value="TPM2+I">TPM2+I</option>
-			<option value="TPM2+G">TPM2+G</option>
-			<option value="TPM2+I+G">TPM2+I+G</option>
-			<option value="TPM2+R2">TPM2+R2</option>
-			<option value="TPM2+R3">TPM2+R3</option>
-			<option value="TPM2+R4">TPM2+R4</option>
-			<option value="TPM2+R5">TPM2+R5</option>
-			<option value="TPM2+R6">TPM2+R6</option>
-			<option value="TPM2+R7">TPM2+R7</option>
-			<option value="TPM2+R8">TPM2+R8</option>
-			<option value="TPM2+R9">TPM2+R9</option>
-			<option value="TPM2+R10">TPM2+R10</option>
-			<option value="TPM2u">TPM2u</option>
-			<option value="TPM2u+I">TPM2u+I</option>
-			<option value="TPM2u+G">TPM2u+G</option>
-			<option value="TPM2u+I+G">TPM2u+I+G</option>
-			<option value="TPM2u+R2">TPM2u+R2</option>
-			<option value="TPM2u+R3">TPM2u+R3</option>
-			<option value="TPM2u+R4">TPM2u+R4</option>
-			<option value="TPM2u+R5">TPM2u+R5</option>
-			<option value="TPM2u+R6">TPM2u+R6</option>
-			<option value="TPM2u+R7">TPM2u+R7</option>
-			<option value="TPM2u+R8">TPM2u+R8</option>
-			<option value="TPM2u+R9">TPM2u+R9</option>
-			<option value="TPM2u+R10">TPM2u+R10</option>
-			<option value="TPM3">TPM3</option>
-			<option value="TPM3+I">TPM3+I</option>
-			<option value="TPM3+G">TPM3+G</option>
-			<option value="TPM3+I+G">TPM3+I+G</option>
-			<option value="TPM3+R2">TPM3+R2</option>
-			<option value="TPM3+R3">TPM3+R3</option>
-			<option value="TPM3+R4">TPM3+R4</option>
-			<option value="TPM3+R5">TPM3+R5</option>
-			<option value="TPM3+R6">TPM3+R6</option>
-			<option value="TPM3+R7">TPM3+R7</option>
-			<option value="TPM3+R8">TPM3+R8</option>
-			<option value="TPM3+R9">TPM3+R9</option>
-			<option value="TPM3+R10">TPM3+R10</option>
-			<option value="TPM3u">TPM3u</option>
-			<option value="TPM3u+I">TPM3u+I</option>
-			<option value="TPM3u+G">TPM3u+G</option>
-			<option value="TPM3u+I+G">TPM3u+I+G</option>
-			<option value="TPM3u+R2">TPM3u+R2</option>
-			<option value="TPM3u+R3">TPM3u+R3</option>
-			<option value="TPM3u+R4">TPM3u+R4</option>
-			<option value="TPM3u+R5">TPM3u+R5</option>
-			<option value="TPM3u+R6">TPM3u+R6</option>
-			<option value="TPM3u+R7">TPM3u+R7</option>
-			<option value="TPM3u+R8">TPM3u+R8</option>
-			<option value="TPM3u+R9">TPM3u+R9</option>
-			<option value="TPM3u+R10">TPM3u+R10</option>
-			<option value="TIMe">TIMe</option>
-			<option value="TIMe+I">TIMe+I</option>
-			<option value="TIMe+G">TIMe+G</option>
-			<option value="TIMe+I+G">TIMe+I+G</option>
-			<option value="TIMe+R2">TIMe+R2</option>
-			<option value="TIMe+R3">TIMe+R3</option>
-			<option value="TIMe+R4">TIMe+R4</option>
-			<option value="TIMe+R5">TIMe+R5</option>
-			<option value="TIMe+R6">TIMe+R6</option>
-			<option value="TIMe+R7">TIMe+R7</option>
-			<option value="TIMe+R8">TIMe+R8</option>
-			<option value="TIMe+R9">TIMe+R9</option>
-			<option value="TIMe+R10">TIMe+R10</option>
-			<option value="TIM">TIM</option>
-			<option value="TIM+I">TIM+I</option>
-			<option value="TIM+G">TIM+G</option>
-			<option value="TIM+I+G">TIM+I+G</option>
-			<option value="TIM+R2">TIM+R2</option>
-			<option value="TIM+R3">TIM+R3</option>
-			<option value="TIM+R4">TIM+R4</option>
-			<option value="TIM+R5">TIM+R5</option>
-			<option value="TIM+R6">TIM+R6</option>
-			<option value="TIM+R7">TIM+R7</option>
-			<option value="TIM+R8">TIM+R8</option>
-			<option value="TIM+R9">TIM+R9</option>
-			<option value="TIM+R10">TIM+R10</option>
-			<option value="TIM2e">TIM2e</option>
-			<option value="TIM2e+I">TIM2e+I</option>
-			<option value="TIM2e+G">TIM2e+G</option>
-			<option value="TIM2e+I+G">TIM2e+I+G</option>
-			<option value="TIM2e+R2">TIM2e+R2</option>
-			<option value="TIM2e+R3">TIM2e+R3</option>
-			<option value="TIM2e+R4">TIM2e+R4</option>
-			<option value="TIM2e+R5">TIM2e+R5</option>
-			<option value="TIM2e+R6">TIM2e+R6</option>
-			<option value="TIM2e+R7">TIM2e+R7</option>
-			<option value="TIM2e+R8">TIM2e+R8</option>
-			<option value="TIM2e+R9">TIM2e+R9</option>
-			<option value="TIM2e+R10">TIM2e+R10</option>
-			<option value="TIM2">TIM2</option>
-			<option value="TIM2+I">TIM2+I</option>
-			<option value="TIM2+G">TIM2+G</option>
-			<option value="TIM2+I+G">TIM2+I+G</option>
-			<option value="TIM2+R2">TIM2+R2</option>
-			<option value="TIM2+R3">TIM2+R3</option>
-			<option value="TIM2+R4">TIM2+R4</option>
-			<option value="TIM2+R5">TIM2+R5</option>
-			<option value="TIM2+R6">TIM2+R6</option>
-			<option value="TIM2+R7">TIM2+R7</option>
-			<option value="TIM2+R8">TIM2+R8</option>
-			<option value="TIM2+R9">TIM2+R9</option>
-			<option value="TIM2+R10">TIM2+R10</option>
-			<option value="TIM3e">TIM3e</option>
-			<option value="TIM3e+I">TIM3e+I</option>
-			<option value="TIM3e+G">TIM3e+G</option>
-			<option value="TIM3e+I+G">TIM3e+I+G</option>
-			<option value="TIM3e+R2">TIM3e+R2</option>
-			<option value="TIM3e+R3">TIM3e+R3</option>
-			<option value="TIM3e+R4">TIM3e+R4</option>
-			<option value="TIM3e+R5">TIM3e+R5</option>
-			<option value="TIM3e+R6">TIM3e+R6</option>
-			<option value="TIM3e+R7">TIM3e+R7</option>
-			<option value="TIM3e+R8">TIM3e+R8</option>
-			<option value="TIM3e+R9">TIM3e+R9</option>
-			<option value="TIM3e+R10">TIM3e+R10</option>
-			<option value="TIM3">TIM3</option>
-			<option value="TIM3+I">TIM3+I</option>
-			<option value="TIM3+G">TIM3+G</option>
-			<option value="TIM3+I+G">TIM3+I+G</option>
-			<option value="TIM3+R2">TIM3+R2</option>
-			<option value="TIM3+R3">TIM3+R3</option>
-			<option value="TIM3+R4">TIM3+R4</option>
-			<option value="TIM3+R5">TIM3+R5</option>
-			<option value="TIM3+R6">TIM3+R6</option>
-			<option value="TIM3+R7">TIM3+R7</option>
-			<option value="TIM3+R8">TIM3+R8</option>
-			<option value="TIM3+R9">TIM3+R9</option>
-			<option value="TIM3+R10">TIM3+R10</option>
-			<option value="TVMe">TVMe</option>
-			<option value="TVMe+I">TVMe+I</option>
-			<option value="TVMe+G">TVMe+G</option>
-			<option value="TVMe+I+G">TVMe+I+G</option>
-			<option value="TVMe+R2">TVMe+R2</option>
-			<option value="TVMe+R3">TVMe+R3</option>
-			<option value="TVMe+R4">TVMe+R4</option>
-			<option value="TVMe+R5">TVMe+R5</option>
-			<option value="TVMe+R6">TVMe+R6</option>
-			<option value="TVMe+R7">TVMe+R7</option>
-			<option value="TVMe+R8">TVMe+R8</option>
-			<option value="TVMe+R9">TVMe+R9</option>
-			<option value="TVMe+R10">TVMe+R10</option>
-			<option value="TVM">TVM</option>
-			<option value="TVM+I">TVM+I</option>
-			<option value="TVM+G">TVM+G</option>
-			<option value="TVM+I+G">TVM+I+G</option>
-			<option value="TVM+R2">TVM+R2</option>
-			<option value="TVM+R3">TVM+R3</option>
-			<option value="TVM+R4">TVM+R4</option>
-			<option value="TVM+R5">TVM+R5</option>
-			<option value="TVM+R6">TVM+R6</option>
-			<option value="TVM+R7">TVM+R7</option>
-			<option value="TVM+R8">TVM+R8</option>
-			<option value="TVM+R9">TVM+R9</option>
-			<option value="TVM+R10">TVM+R10</option>
-			<option value="SYM">SYM</option>
-			<option value="SYM+I">SYM+I</option>
-			<option value="SYM+G">SYM+G</option>
-			<option value="SYM+I+G">SYM+I+G</option>
-			<option value="SYM+R2">SYM+R2</option>
-			<option value="SYM+R3">SYM+R3</option>
-			<option value="SYM+R4">SYM+R4</option>
-			<option value="SYM+R5">SYM+R5</option>
-			<option value="SYM+R6">SYM+R6</option>
-			<option value="SYM+R7">SYM+R7</option>
-			<option value="SYM+R8">SYM+R8</option>
-			<option value="SYM+R9">SYM+R9</option>
-			<option value="SYM+R10">SYM+R10</option>
-			<option value="GTR">GTR</option>
-			<option value="GTR+I">GTR+I</option>
-			<option value="GTR+G">GTR+G</option>
-			<option value="GTR+I+G">GTR+I+G</option>
-			<option value="GTR+R2">GTR+R2</option>
-			<option value="GTR+R3">GTR+R3</option>
-			<option value="GTR+R4">GTR+R4</option>
-			<option value="GTR+R5">GTR+R5</option>
-			<option value="GTR+R6">GTR+R6</option>
-			<option value="GTR+R7">GTR+R7</option>
-			<option value="GTR+R8">GTR+R8</option>
-			<option value="GTR+R9">GTR+R9</option>
-			<option value="GTR+R10">GTR+R10</option>
-			<option value="MFP">MFP</option>
-			<option value="TEST">TEST</option>
-		</param>
-		<param label="--p-bootstrap-replicates: INTEGER Range(1000, None)     The number of bootstrap searches to perform. Minimum of 1000 recomended.          [default: 1000]" name="pbootstrapreplicates" optional="True" type="integer" min="1000" value="1000"/>
-		<param label="--p-n-init-pars-trees: INTEGER Range(1, None)        Number of initial parsimony trees. If not set, program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pninitparstrees" optional="True" type="integer" min="1"/>
-		<param label="--p-n-top-init-trees: INTEGER Range(1, None)        Number of top initial trees. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pntopinittrees" optional="True" type="integer" min="1"/>
-		<param label="--p-n-best-retain-trees: INTEGER Range(1, None)        Number of best trees retained during search. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pnbestretaintrees" optional="True" type="integer"  min="1"/>
-		<param label="--p-stop-iter: INTEGER   Number of unsuccessful iterations to stop. If not Range(1, None)        set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pstopiter" optional="True" type="integer"  min="1"/>
-		<param label="--p-perturb-nni-strength: NUMBER Range(0.01, 99)       Perturbation strength for randomized NNI. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pperturbnnistrength" optional="True" type="float"  min="0.01" max="99"/>
-		<param label="--p-spr-radius: INTEGER  Radius for parsimony SPR search. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="psprradius" optional="True" type="integer" min="1"/>
-		<param label="--p-n-max-ufboot-iter: INTEGER Range(1, None)        Maximum number of iterations. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pnmaxufbootiter" optional="True" type="integer" min="1"/>
-		<param label="--p-n-ufboot-steps: INTEGER Range(1, None)        Number of iterations for UFBoot stopping rule. If not set, program defaults will be used.See IQ-TREE manual for details.                       [optional]" name="pnufbootsteps" optional="True" type="integer" min="1"/>
-		<param label="--p-min-cor-ufboot: NUMBER Range(0.51, 0.99)     Minimum correlation coefficient. If not set, program defaults will be used.See IQ-TREE manual for details.                                  [optional]" name="pmincorufboot" optional="True" type="float" min="0.51" max="0.99"/>
-		<param label="--p-ep-break-ufboot: NUMBER Range(0.01, 0.99)     Epsilon value to break tie. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pepbreakufboot" optional="True" type="float" min="0.01" max="0.99"/>
-		<param label="--p-allnni: --p-no-allnni Perform more thorough NNI search.   [default: False]" name="pallnni" selected="False" type="boolean"/>
-		<param label="--p-alrt: INTEGER        Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform an SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000 replicates is recomended. Set to '0' for parametric aLRT test. Can be used with other 'single branch test methods'. Values reported in the order of: alrt, lbp, abayes, ufboot.                [optional]" name="palrt" optional="True" type="integer" min="1000"/>
-		<param label="--p-abayes: --p-no-abayes Single branch test method. Performs an approximate Bayes test. Can be used with other 'single branch test methods' and ultrafast bootstrap. Values reported in the order of: alrt, lbp, abayes, ufboot. [default: False]" name="pabayes" selected="False" type="boolean"/>
-		<param label="--p-lbp: INTEGER         Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform a fast local bootstrap probability method. Minimum of 1000 replicates is recomended. Can be used with other 'single branch test methods'. Values reported in the order of: alrt, lbp, abayes, ufboot.                [optional]" name="plbp" optional="True" type="integer" min="1000"/>
-		<param label="--p-bnni: --p-no-bnni  Optimize UFBoot trees by NNI on bootstrap alignment. This option reduces the risk of overestimating branch supports with UFBoot due to severe model violations.            [default: False]" name="pbnni" selected="False" type="boolean"/>
-		<param label="--p-safe: --p-no-safe  Safe likelihood kernel to avoid numerical underflow.                          [default: False]" name="psafe" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data" />
+    <param label="--p-seed: INTEGER        Random number seed. If not set, program defaults will be used. See IQ-TREE manual for details. [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-n-cores: " name="pncores" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-n-runs: INTEGER      Number of indepedent runs. Multiple  independent Range(1, None)        runs (e.g. 10) can outperform a single run in terms of likelihood maximisation.             [default: 1]" min="1" name="pnruns" optional="True" type="integer" value="1" />
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="JC">JC</option>
+      <option value="JC+I">JC+I</option>
+      <option value="JC+G">JC+G</option>
+      <option value="JC+I+G">JC+I+G</option>
+      <option value="JC+R2">JC+R2</option>
+      <option value="JC+R3">JC+R3</option>
+      <option value="JC+R4">JC+R4</option>
+      <option value="JC+R5">JC+R5</option>
+      <option value="JC+R6">JC+R6</option>
+      <option value="JC+R7">JC+R7</option>
+      <option value="JC+R8">JC+R8</option>
+      <option value="JC+R9">JC+R9</option>
+      <option value="JC+R10">JC+R10</option>
+      <option value="F81">F81</option>
+      <option value="F81+I">F81+I</option>
+      <option value="F81+G">F81+G</option>
+      <option value="F81+I+G">F81+I+G</option>
+      <option value="F81+R2">F81+R2</option>
+      <option value="F81+R3">F81+R3</option>
+      <option value="F81+R4">F81+R4</option>
+      <option value="F81+R5">F81+R5</option>
+      <option value="F81+R6">F81+R6</option>
+      <option value="F81+R7">F81+R7</option>
+      <option value="F81+R8">F81+R8</option>
+      <option value="F81+R9">F81+R9</option>
+      <option value="F81+R10">F81+R10</option>
+      <option value="K80">K80</option>
+      <option value="K80+I">K80+I</option>
+      <option value="K80+G">K80+G</option>
+      <option value="K80+I+G">K80+I+G</option>
+      <option value="K80+R2">K80+R2</option>
+      <option value="K80+R3">K80+R3</option>
+      <option value="K80+R4">K80+R4</option>
+      <option value="K80+R5">K80+R5</option>
+      <option value="K80+R6">K80+R6</option>
+      <option value="K80+R7">K80+R7</option>
+      <option value="K80+R8">K80+R8</option>
+      <option value="K80+R9">K80+R9</option>
+      <option value="K80+R10">K80+R10</option>
+      <option value="HKY">HKY</option>
+      <option value="HKY+I">HKY+I</option>
+      <option value="HKY+G">HKY+G</option>
+      <option value="HKY+I+G">HKY+I+G</option>
+      <option value="HKY+R2">HKY+R2</option>
+      <option value="HKY+R3">HKY+R3</option>
+      <option value="HKY+R4">HKY+R4</option>
+      <option value="HKY+R5">HKY+R5</option>
+      <option value="HKY+R6">HKY+R6</option>
+      <option value="HKY+R7">HKY+R7</option>
+      <option value="HKY+R8">HKY+R8</option>
+      <option value="HKY+R9">HKY+R9</option>
+      <option value="HKY+R10">HKY+R10</option>
+      <option value="TNe">TNe</option>
+      <option value="TNe+I">TNe+I</option>
+      <option value="TNe+G">TNe+G</option>
+      <option value="TNe+I+G">TNe+I+G</option>
+      <option value="TNe+R2">TNe+R2</option>
+      <option value="TNe+R3">TNe+R3</option>
+      <option value="TNe+R4">TNe+R4</option>
+      <option value="TNe+R5">TNe+R5</option>
+      <option value="TNe+R6">TNe+R6</option>
+      <option value="TNe+R7">TNe+R7</option>
+      <option value="TNe+R8">TNe+R8</option>
+      <option value="TNe+R9">TNe+R9</option>
+      <option value="TNe+R10">TNe+R10</option>
+      <option value="TN">TN</option>
+      <option value="TN+I">TN+I</option>
+      <option value="TN+G">TN+G</option>
+      <option value="TN+I+G">TN+I+G</option>
+      <option value="TN+R2">TN+R2</option>
+      <option value="TN+R3">TN+R3</option>
+      <option value="TN+R4">TN+R4</option>
+      <option value="TN+R5">TN+R5</option>
+      <option value="TN+R6">TN+R6</option>
+      <option value="TN+R7">TN+R7</option>
+      <option value="TN+R8">TN+R8</option>
+      <option value="TN+R9">TN+R9</option>
+      <option value="TN+R10">TN+R10</option>
+      <option value="K81">K81</option>
+      <option value="K81+I">K81+I</option>
+      <option value="K81+G">K81+G</option>
+      <option value="K81+I+G">K81+I+G</option>
+      <option value="K81+R2">K81+R2</option>
+      <option value="K81+R3">K81+R3</option>
+      <option value="K81+R4">K81+R4</option>
+      <option value="K81+R5">K81+R5</option>
+      <option value="K81+R6">K81+R6</option>
+      <option value="K81+R7">K81+R7</option>
+      <option value="K81+R8">K81+R8</option>
+      <option value="K81+R9">K81+R9</option>
+      <option value="K81+R10">K81+R10</option>
+      <option value="K81u">K81u</option>
+      <option value="K81u+I">K81u+I</option>
+      <option value="K81u+G">K81u+G</option>
+      <option value="K81u+I+G">K81u+I+G</option>
+      <option value="K81u+R2">K81u+R2</option>
+      <option value="K81u+R3">K81u+R3</option>
+      <option value="K81u+R4">K81u+R4</option>
+      <option value="K81u+R5">K81u+R5</option>
+      <option value="K81u+R6">K81u+R6</option>
+      <option value="K81u+R7">K81u+R7</option>
+      <option value="K81u+R8">K81u+R8</option>
+      <option value="K81u+R9">K81u+R9</option>
+      <option value="K81u+R10">K81u+R10</option>
+      <option value="TPM2">TPM2</option>
+      <option value="TPM2+I">TPM2+I</option>
+      <option value="TPM2+G">TPM2+G</option>
+      <option value="TPM2+I+G">TPM2+I+G</option>
+      <option value="TPM2+R2">TPM2+R2</option>
+      <option value="TPM2+R3">TPM2+R3</option>
+      <option value="TPM2+R4">TPM2+R4</option>
+      <option value="TPM2+R5">TPM2+R5</option>
+      <option value="TPM2+R6">TPM2+R6</option>
+      <option value="TPM2+R7">TPM2+R7</option>
+      <option value="TPM2+R8">TPM2+R8</option>
+      <option value="TPM2+R9">TPM2+R9</option>
+      <option value="TPM2+R10">TPM2+R10</option>
+      <option value="TPM2u">TPM2u</option>
+      <option value="TPM2u+I">TPM2u+I</option>
+      <option value="TPM2u+G">TPM2u+G</option>
+      <option value="TPM2u+I+G">TPM2u+I+G</option>
+      <option value="TPM2u+R2">TPM2u+R2</option>
+      <option value="TPM2u+R3">TPM2u+R3</option>
+      <option value="TPM2u+R4">TPM2u+R4</option>
+      <option value="TPM2u+R5">TPM2u+R5</option>
+      <option value="TPM2u+R6">TPM2u+R6</option>
+      <option value="TPM2u+R7">TPM2u+R7</option>
+      <option value="TPM2u+R8">TPM2u+R8</option>
+      <option value="TPM2u+R9">TPM2u+R9</option>
+      <option value="TPM2u+R10">TPM2u+R10</option>
+      <option value="TPM3">TPM3</option>
+      <option value="TPM3+I">TPM3+I</option>
+      <option value="TPM3+G">TPM3+G</option>
+      <option value="TPM3+I+G">TPM3+I+G</option>
+      <option value="TPM3+R2">TPM3+R2</option>
+      <option value="TPM3+R3">TPM3+R3</option>
+      <option value="TPM3+R4">TPM3+R4</option>
+      <option value="TPM3+R5">TPM3+R5</option>
+      <option value="TPM3+R6">TPM3+R6</option>
+      <option value="TPM3+R7">TPM3+R7</option>
+      <option value="TPM3+R8">TPM3+R8</option>
+      <option value="TPM3+R9">TPM3+R9</option>
+      <option value="TPM3+R10">TPM3+R10</option>
+      <option value="TPM3u">TPM3u</option>
+      <option value="TPM3u+I">TPM3u+I</option>
+      <option value="TPM3u+G">TPM3u+G</option>
+      <option value="TPM3u+I+G">TPM3u+I+G</option>
+      <option value="TPM3u+R2">TPM3u+R2</option>
+      <option value="TPM3u+R3">TPM3u+R3</option>
+      <option value="TPM3u+R4">TPM3u+R4</option>
+      <option value="TPM3u+R5">TPM3u+R5</option>
+      <option value="TPM3u+R6">TPM3u+R6</option>
+      <option value="TPM3u+R7">TPM3u+R7</option>
+      <option value="TPM3u+R8">TPM3u+R8</option>
+      <option value="TPM3u+R9">TPM3u+R9</option>
+      <option value="TPM3u+R10">TPM3u+R10</option>
+      <option value="TIMe">TIMe</option>
+      <option value="TIMe+I">TIMe+I</option>
+      <option value="TIMe+G">TIMe+G</option>
+      <option value="TIMe+I+G">TIMe+I+G</option>
+      <option value="TIMe+R2">TIMe+R2</option>
+      <option value="TIMe+R3">TIMe+R3</option>
+      <option value="TIMe+R4">TIMe+R4</option>
+      <option value="TIMe+R5">TIMe+R5</option>
+      <option value="TIMe+R6">TIMe+R6</option>
+      <option value="TIMe+R7">TIMe+R7</option>
+      <option value="TIMe+R8">TIMe+R8</option>
+      <option value="TIMe+R9">TIMe+R9</option>
+      <option value="TIMe+R10">TIMe+R10</option>
+      <option value="TIM">TIM</option>
+      <option value="TIM+I">TIM+I</option>
+      <option value="TIM+G">TIM+G</option>
+      <option value="TIM+I+G">TIM+I+G</option>
+      <option value="TIM+R2">TIM+R2</option>
+      <option value="TIM+R3">TIM+R3</option>
+      <option value="TIM+R4">TIM+R4</option>
+      <option value="TIM+R5">TIM+R5</option>
+      <option value="TIM+R6">TIM+R6</option>
+      <option value="TIM+R7">TIM+R7</option>
+      <option value="TIM+R8">TIM+R8</option>
+      <option value="TIM+R9">TIM+R9</option>
+      <option value="TIM+R10">TIM+R10</option>
+      <option value="TIM2e">TIM2e</option>
+      <option value="TIM2e+I">TIM2e+I</option>
+      <option value="TIM2e+G">TIM2e+G</option>
+      <option value="TIM2e+I+G">TIM2e+I+G</option>
+      <option value="TIM2e+R2">TIM2e+R2</option>
+      <option value="TIM2e+R3">TIM2e+R3</option>
+      <option value="TIM2e+R4">TIM2e+R4</option>
+      <option value="TIM2e+R5">TIM2e+R5</option>
+      <option value="TIM2e+R6">TIM2e+R6</option>
+      <option value="TIM2e+R7">TIM2e+R7</option>
+      <option value="TIM2e+R8">TIM2e+R8</option>
+      <option value="TIM2e+R9">TIM2e+R9</option>
+      <option value="TIM2e+R10">TIM2e+R10</option>
+      <option value="TIM2">TIM2</option>
+      <option value="TIM2+I">TIM2+I</option>
+      <option value="TIM2+G">TIM2+G</option>
+      <option value="TIM2+I+G">TIM2+I+G</option>
+      <option value="TIM2+R2">TIM2+R2</option>
+      <option value="TIM2+R3">TIM2+R3</option>
+      <option value="TIM2+R4">TIM2+R4</option>
+      <option value="TIM2+R5">TIM2+R5</option>
+      <option value="TIM2+R6">TIM2+R6</option>
+      <option value="TIM2+R7">TIM2+R7</option>
+      <option value="TIM2+R8">TIM2+R8</option>
+      <option value="TIM2+R9">TIM2+R9</option>
+      <option value="TIM2+R10">TIM2+R10</option>
+      <option value="TIM3e">TIM3e</option>
+      <option value="TIM3e+I">TIM3e+I</option>
+      <option value="TIM3e+G">TIM3e+G</option>
+      <option value="TIM3e+I+G">TIM3e+I+G</option>
+      <option value="TIM3e+R2">TIM3e+R2</option>
+      <option value="TIM3e+R3">TIM3e+R3</option>
+      <option value="TIM3e+R4">TIM3e+R4</option>
+      <option value="TIM3e+R5">TIM3e+R5</option>
+      <option value="TIM3e+R6">TIM3e+R6</option>
+      <option value="TIM3e+R7">TIM3e+R7</option>
+      <option value="TIM3e+R8">TIM3e+R8</option>
+      <option value="TIM3e+R9">TIM3e+R9</option>
+      <option value="TIM3e+R10">TIM3e+R10</option>
+      <option value="TIM3">TIM3</option>
+      <option value="TIM3+I">TIM3+I</option>
+      <option value="TIM3+G">TIM3+G</option>
+      <option value="TIM3+I+G">TIM3+I+G</option>
+      <option value="TIM3+R2">TIM3+R2</option>
+      <option value="TIM3+R3">TIM3+R3</option>
+      <option value="TIM3+R4">TIM3+R4</option>
+      <option value="TIM3+R5">TIM3+R5</option>
+      <option value="TIM3+R6">TIM3+R6</option>
+      <option value="TIM3+R7">TIM3+R7</option>
+      <option value="TIM3+R8">TIM3+R8</option>
+      <option value="TIM3+R9">TIM3+R9</option>
+      <option value="TIM3+R10">TIM3+R10</option>
+      <option value="TVMe">TVMe</option>
+      <option value="TVMe+I">TVMe+I</option>
+      <option value="TVMe+G">TVMe+G</option>
+      <option value="TVMe+I+G">TVMe+I+G</option>
+      <option value="TVMe+R2">TVMe+R2</option>
+      <option value="TVMe+R3">TVMe+R3</option>
+      <option value="TVMe+R4">TVMe+R4</option>
+      <option value="TVMe+R5">TVMe+R5</option>
+      <option value="TVMe+R6">TVMe+R6</option>
+      <option value="TVMe+R7">TVMe+R7</option>
+      <option value="TVMe+R8">TVMe+R8</option>
+      <option value="TVMe+R9">TVMe+R9</option>
+      <option value="TVMe+R10">TVMe+R10</option>
+      <option value="TVM">TVM</option>
+      <option value="TVM+I">TVM+I</option>
+      <option value="TVM+G">TVM+G</option>
+      <option value="TVM+I+G">TVM+I+G</option>
+      <option value="TVM+R2">TVM+R2</option>
+      <option value="TVM+R3">TVM+R3</option>
+      <option value="TVM+R4">TVM+R4</option>
+      <option value="TVM+R5">TVM+R5</option>
+      <option value="TVM+R6">TVM+R6</option>
+      <option value="TVM+R7">TVM+R7</option>
+      <option value="TVM+R8">TVM+R8</option>
+      <option value="TVM+R9">TVM+R9</option>
+      <option value="TVM+R10">TVM+R10</option>
+      <option value="SYM">SYM</option>
+      <option value="SYM+I">SYM+I</option>
+      <option value="SYM+G">SYM+G</option>
+      <option value="SYM+I+G">SYM+I+G</option>
+      <option value="SYM+R2">SYM+R2</option>
+      <option value="SYM+R3">SYM+R3</option>
+      <option value="SYM+R4">SYM+R4</option>
+      <option value="SYM+R5">SYM+R5</option>
+      <option value="SYM+R6">SYM+R6</option>
+      <option value="SYM+R7">SYM+R7</option>
+      <option value="SYM+R8">SYM+R8</option>
+      <option value="SYM+R9">SYM+R9</option>
+      <option value="SYM+R10">SYM+R10</option>
+      <option value="GTR">GTR</option>
+      <option value="GTR+I">GTR+I</option>
+      <option value="GTR+G">GTR+G</option>
+      <option value="GTR+I+G">GTR+I+G</option>
+      <option value="GTR+R2">GTR+R2</option>
+      <option value="GTR+R3">GTR+R3</option>
+      <option value="GTR+R4">GTR+R4</option>
+      <option value="GTR+R5">GTR+R5</option>
+      <option value="GTR+R6">GTR+R6</option>
+      <option value="GTR+R7">GTR+R7</option>
+      <option value="GTR+R8">GTR+R8</option>
+      <option value="GTR+R9">GTR+R9</option>
+      <option value="GTR+R10">GTR+R10</option>
+      <option value="MFP">MFP</option>
+      <option value="TEST">TEST</option>
+    </param>
+    <param label="--p-bootstrap-replicates: INTEGER Range(1000, None)     The number of bootstrap searches to perform. Minimum of 1000 recomended.          [default: 1000]" min="1000" name="pbootstrapreplicates" optional="True" type="integer" value="1000" />
+    <param label="--p-n-init-pars-trees: INTEGER Range(1, None)        Number of initial parsimony trees. If not set, program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pninitparstrees" optional="False" type="text" />
+    <param label="--p-n-top-init-trees: INTEGER Range(1, None)        Number of top initial trees. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pntopinittrees" optional="False" type="text" />
+    <param label="--p-n-best-retain-trees: INTEGER Range(1, None)        Number of best trees retained during search. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pnbestretaintrees" optional="False" type="text" />
+    <param label="--p-stop-iter: INTEGER   Number of unsuccessful iterations to stop. If not Range(1, None)        set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pstopiter" optional="False" type="text" />
+    <param label="--p-perturb-nni-strength: NUMBER Range(0.01, 1.0)      Perturbation strength for randomized NNI. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pperturbnnistrength" optional="False" type="text" />
+    <param label="--p-spr-radius: INTEGER  Radius for parsimony SPR search. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="psprradius" optional="False" type="text" />
+    <param label="--p-n-max-ufboot-iter: INTEGER Range(1, None)        Maximum number of iterations. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pnmaxufbootiter" optional="False" type="text" />
+    <param label="--p-n-ufboot-steps: INTEGER Range(1, None)        Number of iterations for UFBoot stopping rule. If not set, program defaults will be used.See IQ-TREE manual for details.                       [optional]" name="pnufbootsteps" optional="False" type="text" />
+    <param label="--p-min-cor-ufboot: NUMBER Range(0.51, 0.99)     Minimum correlation coefficient. If not set, program defaults will be used.See IQ-TREE manual for details.                                  [optional]" name="pmincorufboot" optional="False" type="text" />
+    <param label="--p-ep-break-ufboot: NUMBER Range(0.01, 0.99)     Epsilon value to break tie. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pepbreakufboot" optional="False" type="text" />
+    <param label="--p-allnni: --p-allnni: / --p-no-allnni Perform more thorough NNI search.   [default: False]" name="pallnni" selected="False" type="boolean" />
+    <param label="--p-alrt: INTEGER        Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform an SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000 replicates is recomended. Can be used with other \'single branch test methods\'. Values reported in the order of: alrt, lbp, abayes.              [optional]" name="palrt" optional="False" type="text" />
+    <param label="--p-abayes: --p-abayes: / --p-no-abayes Single branch test method. Performs an approximate Bayes test. Can be used with other \'single branch test methods\' and ultrafast bootstrap. Values reported in the order of: alrt, lbp, abayes, ufboot. [default: False]" name="pabayes" selected="False" type="boolean" />
+    <param label="--p-lbp: INTEGER         Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform a fast local bootstrap probability method. Minimum of 1000 replicates is recomended. Can be used with other \'single branch test methods\'. Values reported in the order of: alrt, lbp, abayes, ufboot.                [optional]" name="plbp" optional="False" type="text" />
+    <param label="--p-bnni: --p-bnni: / --p-no-bnni  Optimize UFBoot trees by NNI on bootstrap alignment. This option reduces the risk of overestimating branch supports with UFBoot due to severe model violations.            [default: False]" name="pbnni" selected="False" type="boolean" />
+    <param label="--p-safe: --p-safe: / --p-no-safe  Safe likelihood kernel to avoid numerical underflow.                          [default: False]" name="psafe" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Construct a phylogenetic tree with IQ-TREE with bootstrap supports.
-###################################################################
+###############################################################
 
 Construct a phylogenetic tree using IQ-TREE (http://www.iqtree.org/) with
 automatic model selection and bootstrap supports.
@@ -430,6 +433,12 @@
 seed : Int, optional
     Random number seed. If not set, program defaults will be used. See IQ-
     TREE manual for details.
+n_cores : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of cores to use for parallel processing. Use `auto` to let
+    IQ-TREE automatically determine the optimal number of cores to use.
+n_cores_max : Int % Range(2, None), optional
+    Limits the maximum number of cores to be used when 'n_cores' is set to
+    'auto'.
 n_runs : Int % Range(1, None), optional
     Number of indepedent runs. Multiple  independent runs (e.g. 10) can
     outperform a single run in terms of likelihood maximisation.
@@ -451,7 +460,7 @@
 stop_iter : Int % Range(1, None), optional
     Number of unsuccessful iterations to stop. If not set, program defaults
     will be used. See IQ-TREE manual for details.
-perturb_nni_strength : Float % Range(0.01, 99), optional
+perturb_nni_strength : Float % Range(0.01, 1.0), optional
     Perturbation strength for randomized NNI. If not set, program defaults
     will be used. See IQ-TREE manual for details.
 spr_radius : Int % Range(1, None), optional
@@ -474,9 +483,8 @@
 alrt : Int % Range(1000, None), optional
     Single branch test method. Number of bootstrap replicates to perform an
     SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000
-    replicates is recomended. Set to '0' for parametric aLRT test. Can be
-    used with other 'single branch test methods'. Values reported in the
-    order of: alrt, lbp, abayes, ufboot.
+    replicates is recomended. Can be used with other 'single branch test
+    methods'. Values reported in the order of: alrt, lbp, abayes.
 abayes : Bool, optional
     Single branch test method. Performs an approximate Bayes test. Can be
     used with other 'single branch test methods' and ultrafast bootstrap.
@@ -497,9 +505,9 @@
 -------
 tree : Phylogeny[Unrooted]
     The resulting phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_iqtree.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_iqtree.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,60 +1,55 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_iqtree" name="qiime phylogeny iqtree" version="2019.7">
-	<description> - Construct a phylogenetic tree with IQ-TREE.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_iqtree" name="qiime phylogeny iqtree"
+      version="2020.8">
+  <description>Construct a phylogenetic tree with IQ-TREE.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny iqtree
 
 --i-alignment=$ialignment
 
 #if str($pseed):
- --p-seed="$pseed"
+  --p-seed=$pseed
+#end if
+#if str($pncores) != 'None':
+--p-n-cores=$pncores
 #end if
 
-#set $pncores = '${GALAXY_SLOTS:-4}'
+#set $pncoresmax = '${GALAXY_SLOTS:-4}'
 
-#if str($pncores):
- --p-n-cores="$pncores"
+#if str($pncoresmax):
+  --p-n-cores-max=$pncoresmax
 #end if
 
-#if str($pnruns):
- --p-n-runs=$pnruns
-#end if
+--p-n-runs=$pnruns
 
 #if str($psubstitutionmodel) != 'None':
- --p-substitution-model=$psubstitutionmodel
+--p-substitution-model=$psubstitutionmodel
 #end if
 
 #if str($pninitparstrees):
- --p-n-init-pars-trees="$pninitparstrees"
-#end if
-
-#if str($pntopinittrees):
- --p-n-top-init-trees="$pntopinittrees"
+  --p-n-init-pars-trees=$pninitparstrees
 #end if
-
-#if str($pnbestretaintrees):
- --p-n-best-retain-trees="$pnbestretaintrees"
+#if str($pntopinittrees):
+  --p-n-top-init-trees=$pntopinittrees
 #end if
-
-#if str($pniter):
- --p-n-iter="$pniter"
+#if str($pnbestretaintrees):
+  --p-n-best-retain-trees=$pnbestretaintrees
 #end if
-
+#if str($pniter):
+  --p-n-iter=$pniter
+#end if
 #if str($pstopiter):
- --p-stop-iter="$pstopiter"
+  --p-stop-iter=$pstopiter
 #end if
-
 #if str($pperturbnnistrength):
- --p-perturb-nni-strength="$pperturbnnistrength"
+  --p-perturb-nni-strength=$pperturbnnistrength
 #end if
-
 #if str($psprradius):
- --p-spr-radius="$psprradius"
+  --p-spr-radius=$psprradius
 #end if
-
 #if $pallnni:
  --p-allnni
 #end if
@@ -64,340 +59,354 @@
 #end if
 
 #if str($palrt):
- --p-alrt="$palrt"
+  --p-alrt=$palrt
 #end if
-
 #if $pabayes:
  --p-abayes
 #end if
 
 #if str($plbp):
- --p-lbp="$plbp"
+  --p-lbp=$plbp
 #end if
-
 #if $psafe:
  --p-safe
 #end if
 
 --o-tree=otree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otree.qza $otree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data"/>
-		<param label="--p-seed: INTEGER        Random number seed. If not set, program defaults will be used. See IQ-TREE manual for details. [optional]" name="pseed" optional="True" type="integer"/>
-		<param label="--p-n-runs: INTEGER      Number of indepedent runs. Multiple  independent Range(1, None)        runs (e.g. 10) can outperform a single run in terms of likelihood maximisation.             [default: 1]" name="pnruns" optional="True" type="integer" value="1" min="1"/>
-		<param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="JC">JC</option>
-			<option value="JC+I">JC+I</option>
-			<option value="JC+G">JC+G</option>
-			<option value="JC+I+G">JC+I+G</option>
-			<option value="JC+R2">JC+R2</option>
-			<option value="JC+R3">JC+R3</option>
-			<option value="JC+R4">JC+R4</option>
-			<option value="JC+R5">JC+R5</option>
-			<option value="JC+R6">JC+R6</option>
-			<option value="JC+R7">JC+R7</option>
-			<option value="JC+R8">JC+R8</option>
-			<option value="JC+R9">JC+R9</option>
-			<option value="JC+R10">JC+R10</option>
-			<option value="F81">F81</option>
-			<option value="F81+I">F81+I</option>
-			<option value="F81+G">F81+G</option>
-			<option value="F81+I+G">F81+I+G</option>
-			<option value="F81+R2">F81+R2</option>
-			<option value="F81+R3">F81+R3</option>
-			<option value="F81+R4">F81+R4</option>
-			<option value="F81+R5">F81+R5</option>
-			<option value="F81+R6">F81+R6</option>
-			<option value="F81+R7">F81+R7</option>
-			<option value="F81+R8">F81+R8</option>
-			<option value="F81+R9">F81+R9</option>
-			<option value="F81+R10">F81+R10</option>
-			<option value="K80">K80</option>
-			<option value="K80+I">K80+I</option>
-			<option value="K80+G">K80+G</option>
-			<option value="K80+I+G">K80+I+G</option>
-			<option value="K80+R2">K80+R2</option>
-			<option value="K80+R3">K80+R3</option>
-			<option value="K80+R4">K80+R4</option>
-			<option value="K80+R5">K80+R5</option>
-			<option value="K80+R6">K80+R6</option>
-			<option value="K80+R7">K80+R7</option>
-			<option value="K80+R8">K80+R8</option>
-			<option value="K80+R9">K80+R9</option>
-			<option value="K80+R10">K80+R10</option>
-			<option value="HKY">HKY</option>
-			<option value="HKY+I">HKY+I</option>
-			<option value="HKY+G">HKY+G</option>
-			<option value="HKY+I+G">HKY+I+G</option>
-			<option value="HKY+R2">HKY+R2</option>
-			<option value="HKY+R3">HKY+R3</option>
-			<option value="HKY+R4">HKY+R4</option>
-			<option value="HKY+R5">HKY+R5</option>
-			<option value="HKY+R6">HKY+R6</option>
-			<option value="HKY+R7">HKY+R7</option>
-			<option value="HKY+R8">HKY+R8</option>
-			<option value="HKY+R9">HKY+R9</option>
-			<option value="HKY+R10">HKY+R10</option>
-			<option value="TNe">TNe</option>
-			<option value="TNe+I">TNe+I</option>
-			<option value="TNe+G">TNe+G</option>
-			<option value="TNe+I+G">TNe+I+G</option>
-			<option value="TNe+R2">TNe+R2</option>
-			<option value="TNe+R3">TNe+R3</option>
-			<option value="TNe+R4">TNe+R4</option>
-			<option value="TNe+R5">TNe+R5</option>
-			<option value="TNe+R6">TNe+R6</option>
-			<option value="TNe+R7">TNe+R7</option>
-			<option value="TNe+R8">TNe+R8</option>
-			<option value="TNe+R9">TNe+R9</option>
-			<option value="TNe+R10">TNe+R10</option>
-			<option value="TN">TN</option>
-			<option value="TN+I">TN+I</option>
-			<option value="TN+G">TN+G</option>
-			<option value="TN+I+G">TN+I+G</option>
-			<option value="TN+R2">TN+R2</option>
-			<option value="TN+R3">TN+R3</option>
-			<option value="TN+R4">TN+R4</option>
-			<option value="TN+R5">TN+R5</option>
-			<option value="TN+R6">TN+R6</option>
-			<option value="TN+R7">TN+R7</option>
-			<option value="TN+R8">TN+R8</option>
-			<option value="TN+R9">TN+R9</option>
-			<option value="TN+R10">TN+R10</option>
-			<option value="K81">K81</option>
-			<option value="K81+I">K81+I</option>
-			<option value="K81+G">K81+G</option>
-			<option value="K81+I+G">K81+I+G</option>
-			<option value="K81+R2">K81+R2</option>
-			<option value="K81+R3">K81+R3</option>
-			<option value="K81+R4">K81+R4</option>
-			<option value="K81+R5">K81+R5</option>
-			<option value="K81+R6">K81+R6</option>
-			<option value="K81+R7">K81+R7</option>
-			<option value="K81+R8">K81+R8</option>
-			<option value="K81+R9">K81+R9</option>
-			<option value="K81+R10">K81+R10</option>
-			<option value="K81u">K81u</option>
-			<option value="K81u+I">K81u+I</option>
-			<option value="K81u+G">K81u+G</option>
-			<option value="K81u+I+G">K81u+I+G</option>
-			<option value="K81u+R2">K81u+R2</option>
-			<option value="K81u+R3">K81u+R3</option>
-			<option value="K81u+R4">K81u+R4</option>
-			<option value="K81u+R5">K81u+R5</option>
-			<option value="K81u+R6">K81u+R6</option>
-			<option value="K81u+R7">K81u+R7</option>
-			<option value="K81u+R8">K81u+R8</option>
-			<option value="K81u+R9">K81u+R9</option>
-			<option value="K81u+R10">K81u+R10</option>
-			<option value="TPM2">TPM2</option>
-			<option value="TPM2+I">TPM2+I</option>
-			<option value="TPM2+G">TPM2+G</option>
-			<option value="TPM2+I+G">TPM2+I+G</option>
-			<option value="TPM2+R2">TPM2+R2</option>
-			<option value="TPM2+R3">TPM2+R3</option>
-			<option value="TPM2+R4">TPM2+R4</option>
-			<option value="TPM2+R5">TPM2+R5</option>
-			<option value="TPM2+R6">TPM2+R6</option>
-			<option value="TPM2+R7">TPM2+R7</option>
-			<option value="TPM2+R8">TPM2+R8</option>
-			<option value="TPM2+R9">TPM2+R9</option>
-			<option value="TPM2+R10">TPM2+R10</option>
-			<option value="TPM2u">TPM2u</option>
-			<option value="TPM2u+I">TPM2u+I</option>
-			<option value="TPM2u+G">TPM2u+G</option>
-			<option value="TPM2u+I+G">TPM2u+I+G</option>
-			<option value="TPM2u+R2">TPM2u+R2</option>
-			<option value="TPM2u+R3">TPM2u+R3</option>
-			<option value="TPM2u+R4">TPM2u+R4</option>
-			<option value="TPM2u+R5">TPM2u+R5</option>
-			<option value="TPM2u+R6">TPM2u+R6</option>
-			<option value="TPM2u+R7">TPM2u+R7</option>
-			<option value="TPM2u+R8">TPM2u+R8</option>
-			<option value="TPM2u+R9">TPM2u+R9</option>
-			<option value="TPM2u+R10">TPM2u+R10</option>
-			<option value="TPM3">TPM3</option>
-			<option value="TPM3+I">TPM3+I</option>
-			<option value="TPM3+G">TPM3+G</option>
-			<option value="TPM3+I+G">TPM3+I+G</option>
-			<option value="TPM3+R2">TPM3+R2</option>
-			<option value="TPM3+R3">TPM3+R3</option>
-			<option value="TPM3+R4">TPM3+R4</option>
-			<option value="TPM3+R5">TPM3+R5</option>
-			<option value="TPM3+R6">TPM3+R6</option>
-			<option value="TPM3+R7">TPM3+R7</option>
-			<option value="TPM3+R8">TPM3+R8</option>
-			<option value="TPM3+R9">TPM3+R9</option>
-			<option value="TPM3+R10">TPM3+R10</option>
-			<option value="TPM3u">TPM3u</option>
-			<option value="TPM3u+I">TPM3u+I</option>
-			<option value="TPM3u+G">TPM3u+G</option>
-			<option value="TPM3u+I+G">TPM3u+I+G</option>
-			<option value="TPM3u+R2">TPM3u+R2</option>
-			<option value="TPM3u+R3">TPM3u+R3</option>
-			<option value="TPM3u+R4">TPM3u+R4</option>
-			<option value="TPM3u+R5">TPM3u+R5</option>
-			<option value="TPM3u+R6">TPM3u+R6</option>
-			<option value="TPM3u+R7">TPM3u+R7</option>
-			<option value="TPM3u+R8">TPM3u+R8</option>
-			<option value="TPM3u+R9">TPM3u+R9</option>
-			<option value="TPM3u+R10">TPM3u+R10</option>
-			<option value="TIMe">TIMe</option>
-			<option value="TIMe+I">TIMe+I</option>
-			<option value="TIMe+G">TIMe+G</option>
-			<option value="TIMe+I+G">TIMe+I+G</option>
-			<option value="TIMe+R2">TIMe+R2</option>
-			<option value="TIMe+R3">TIMe+R3</option>
-			<option value="TIMe+R4">TIMe+R4</option>
-			<option value="TIMe+R5">TIMe+R5</option>
-			<option value="TIMe+R6">TIMe+R6</option>
-			<option value="TIMe+R7">TIMe+R7</option>
-			<option value="TIMe+R8">TIMe+R8</option>
-			<option value="TIMe+R9">TIMe+R9</option>
-			<option value="TIMe+R10">TIMe+R10</option>
-			<option value="TIM">TIM</option>
-			<option value="TIM+I">TIM+I</option>
-			<option value="TIM+G">TIM+G</option>
-			<option value="TIM+I+G">TIM+I+G</option>
-			<option value="TIM+R2">TIM+R2</option>
-			<option value="TIM+R3">TIM+R3</option>
-			<option value="TIM+R4">TIM+R4</option>
-			<option value="TIM+R5">TIM+R5</option>
-			<option value="TIM+R6">TIM+R6</option>
-			<option value="TIM+R7">TIM+R7</option>
-			<option value="TIM+R8">TIM+R8</option>
-			<option value="TIM+R9">TIM+R9</option>
-			<option value="TIM+R10">TIM+R10</option>
-			<option value="TIM2e">TIM2e</option>
-			<option value="TIM2e+I">TIM2e+I</option>
-			<option value="TIM2e+G">TIM2e+G</option>
-			<option value="TIM2e+I+G">TIM2e+I+G</option>
-			<option value="TIM2e+R2">TIM2e+R2</option>
-			<option value="TIM2e+R3">TIM2e+R3</option>
-			<option value="TIM2e+R4">TIM2e+R4</option>
-			<option value="TIM2e+R5">TIM2e+R5</option>
-			<option value="TIM2e+R6">TIM2e+R6</option>
-			<option value="TIM2e+R7">TIM2e+R7</option>
-			<option value="TIM2e+R8">TIM2e+R8</option>
-			<option value="TIM2e+R9">TIM2e+R9</option>
-			<option value="TIM2e+R10">TIM2e+R10</option>
-			<option value="TIM2">TIM2</option>
-			<option value="TIM2+I">TIM2+I</option>
-			<option value="TIM2+G">TIM2+G</option>
-			<option value="TIM2+I+G">TIM2+I+G</option>
-			<option value="TIM2+R2">TIM2+R2</option>
-			<option value="TIM2+R3">TIM2+R3</option>
-			<option value="TIM2+R4">TIM2+R4</option>
-			<option value="TIM2+R5">TIM2+R5</option>
-			<option value="TIM2+R6">TIM2+R6</option>
-			<option value="TIM2+R7">TIM2+R7</option>
-			<option value="TIM2+R8">TIM2+R8</option>
-			<option value="TIM2+R9">TIM2+R9</option>
-			<option value="TIM2+R10">TIM2+R10</option>
-			<option value="TIM3e">TIM3e</option>
-			<option value="TIM3e+I">TIM3e+I</option>
-			<option value="TIM3e+G">TIM3e+G</option>
-			<option value="TIM3e+I+G">TIM3e+I+G</option>
-			<option value="TIM3e+R2">TIM3e+R2</option>
-			<option value="TIM3e+R3">TIM3e+R3</option>
-			<option value="TIM3e+R4">TIM3e+R4</option>
-			<option value="TIM3e+R5">TIM3e+R5</option>
-			<option value="TIM3e+R6">TIM3e+R6</option>
-			<option value="TIM3e+R7">TIM3e+R7</option>
-			<option value="TIM3e+R8">TIM3e+R8</option>
-			<option value="TIM3e+R9">TIM3e+R9</option>
-			<option value="TIM3e+R10">TIM3e+R10</option>
-			<option value="TIM3">TIM3</option>
-			<option value="TIM3+I">TIM3+I</option>
-			<option value="TIM3+G">TIM3+G</option>
-			<option value="TIM3+I+G">TIM3+I+G</option>
-			<option value="TIM3+R2">TIM3+R2</option>
-			<option value="TIM3+R3">TIM3+R3</option>
-			<option value="TIM3+R4">TIM3+R4</option>
-			<option value="TIM3+R5">TIM3+R5</option>
-			<option value="TIM3+R6">TIM3+R6</option>
-			<option value="TIM3+R7">TIM3+R7</option>
-			<option value="TIM3+R8">TIM3+R8</option>
-			<option value="TIM3+R9">TIM3+R9</option>
-			<option value="TIM3+R10">TIM3+R10</option>
-			<option value="TVMe">TVMe</option>
-			<option value="TVMe+I">TVMe+I</option>
-			<option value="TVMe+G">TVMe+G</option>
-			<option value="TVMe+I+G">TVMe+I+G</option>
-			<option value="TVMe+R2">TVMe+R2</option>
-			<option value="TVMe+R3">TVMe+R3</option>
-			<option value="TVMe+R4">TVMe+R4</option>
-			<option value="TVMe+R5">TVMe+R5</option>
-			<option value="TVMe+R6">TVMe+R6</option>
-			<option value="TVMe+R7">TVMe+R7</option>
-			<option value="TVMe+R8">TVMe+R8</option>
-			<option value="TVMe+R9">TVMe+R9</option>
-			<option value="TVMe+R10">TVMe+R10</option>
-			<option value="TVM">TVM</option>
-			<option value="TVM+I">TVM+I</option>
-			<option value="TVM+G">TVM+G</option>
-			<option value="TVM+I+G">TVM+I+G</option>
-			<option value="TVM+R2">TVM+R2</option>
-			<option value="TVM+R3">TVM+R3</option>
-			<option value="TVM+R4">TVM+R4</option>
-			<option value="TVM+R5">TVM+R5</option>
-			<option value="TVM+R6">TVM+R6</option>
-			<option value="TVM+R7">TVM+R7</option>
-			<option value="TVM+R8">TVM+R8</option>
-			<option value="TVM+R9">TVM+R9</option>
-			<option value="TVM+R10">TVM+R10</option>
-			<option value="SYM">SYM</option>
-			<option value="SYM+I">SYM+I</option>
-			<option value="SYM+G">SYM+G</option>
-			<option value="SYM+I+G">SYM+I+G</option>
-			<option value="SYM+R2">SYM+R2</option>
-			<option value="SYM+R3">SYM+R3</option>
-			<option value="SYM+R4">SYM+R4</option>
-			<option value="SYM+R5">SYM+R5</option>
-			<option value="SYM+R6">SYM+R6</option>
-			<option value="SYM+R7">SYM+R7</option>
-			<option value="SYM+R8">SYM+R8</option>
-			<option value="SYM+R9">SYM+R9</option>
-			<option value="SYM+R10">SYM+R10</option>
-			<option value="GTR">GTR</option>
-			<option value="GTR+I">GTR+I</option>
-			<option value="GTR+G">GTR+G</option>
-			<option value="GTR+I+G">GTR+I+G</option>
-			<option value="GTR+R2">GTR+R2</option>
-			<option value="GTR+R3">GTR+R3</option>
-			<option value="GTR+R4">GTR+R4</option>
-			<option value="GTR+R5">GTR+R5</option>
-			<option value="GTR+R6">GTR+R6</option>
-			<option value="GTR+R7">GTR+R7</option>
-			<option value="GTR+R8">GTR+R8</option>
-			<option value="GTR+R9">GTR+R9</option>
-			<option value="GTR+R10">GTR+R10</option>
-			<option value="MFP">MFP</option>
-			<option value="TEST">TEST</option>
-		</param>
-		<param label="--p-n-init-pars-trees: INTEGER Range(1, None)        Number of initial parsimony trees. If not set, program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pninitparstrees" optional="True" type="integer" min="1"/>
-		<param label="--p-n-top-init-trees: INTEGER Range(1, None)        Number of top initial trees. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pntopinittrees" optional="True" type="integer" min="1"/>
-		<param label="--p-n-best-retain-trees: INTEGER Range(1, None)        Number of best trees retained during search. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pnbestretaintrees" optional="True" type="integer" min="1"/>
-		<param label="--p-n-iter: INTEGER      Fix number of iterations to stop. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pniter" optional="True" type="integer" min="1"/>
-		<param label="--p-stop-iter: INTEGER   Number of unsuccessful iterations to stop. If not Range(1, None)        set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pstopiter" optional="True" type="integer" min="1"/>
-		<param label="--p-perturb-nni-strength: NUMBER Range(0.01, 99)       Perturbation strength for randomized NNI. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pperturbnnistrength" optional="True" type="float" min="0.01" max="99"/>
-		<param label="--p-spr-radius: INTEGER  Radius for parsimony SPR search. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="psprradius" optional="True" type="integer" min="1"/>
-		<param label="--p-allnni: --p-no-allnni Perform more thorough NNI search.   [default: False]" name="pallnni" selected="False" type="boolean"/>
-		<param label="--p-fast: --p-no-fast  Fast search to resemble FastTree.   [default: False]" name="pfast" selected="False" type="boolean"/>
-		<param label="--p-alrt: INTEGER        Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform an SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000 replicates is recomended. Set to '0' for parametric aLRT test. Can be used with other 'single branch test methods'. Values reported in the order of: alrt, lbp, abayes.                        [optional]" name="palrt" optional="True" type="integer" min="1000"/>
-		<param label="--p-abayes: --p-no-abayes Single branch test method. Approximate Bayes test. Can be used with other 'single branch test methods'. Values reported in the order of: alrt, lbp, abayes. [default: False]" name="pabayes" selected="False" type="boolean"/>
-		<param label="--p-lbp: INTEGER         Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform a fast local bootstrap probability method. Minimum of 1000 replicates is recomended. Can be used with other 'single branch test methods'. Values reported in the order of: alrt, lbp, abayes.                        [optional]" name="plbp" optional="True" type="integer" min="1000"/>
-		<param label="--p-safe: --p-no-safe  Safe likelihood kernel to avoid numerical underflow.                          [default: False]" name="psafe" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data" />
+    <param label="--p-seed: INTEGER        Random number seed. If not set, program defaults will be used. See IQ-TREE manual for details. [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-n-cores: " name="pncores" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--p-n-runs: INTEGER      Number of indepedent runs. Multiple  independent Range(1, None)        runs (e.g. 10) can outperform a single run in terms of likelihood maximisation.             [default: 1]" min="1" name="pnruns" optional="True" type="integer" value="1" />
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="JC">JC</option>
+      <option value="JC+I">JC+I</option>
+      <option value="JC+G">JC+G</option>
+      <option value="JC+I+G">JC+I+G</option>
+      <option value="JC+R2">JC+R2</option>
+      <option value="JC+R3">JC+R3</option>
+      <option value="JC+R4">JC+R4</option>
+      <option value="JC+R5">JC+R5</option>
+      <option value="JC+R6">JC+R6</option>
+      <option value="JC+R7">JC+R7</option>
+      <option value="JC+R8">JC+R8</option>
+      <option value="JC+R9">JC+R9</option>
+      <option value="JC+R10">JC+R10</option>
+      <option value="F81">F81</option>
+      <option value="F81+I">F81+I</option>
+      <option value="F81+G">F81+G</option>
+      <option value="F81+I+G">F81+I+G</option>
+      <option value="F81+R2">F81+R2</option>
+      <option value="F81+R3">F81+R3</option>
+      <option value="F81+R4">F81+R4</option>
+      <option value="F81+R5">F81+R5</option>
+      <option value="F81+R6">F81+R6</option>
+      <option value="F81+R7">F81+R7</option>
+      <option value="F81+R8">F81+R8</option>
+      <option value="F81+R9">F81+R9</option>
+      <option value="F81+R10">F81+R10</option>
+      <option value="K80">K80</option>
+      <option value="K80+I">K80+I</option>
+      <option value="K80+G">K80+G</option>
+      <option value="K80+I+G">K80+I+G</option>
+      <option value="K80+R2">K80+R2</option>
+      <option value="K80+R3">K80+R3</option>
+      <option value="K80+R4">K80+R4</option>
+      <option value="K80+R5">K80+R5</option>
+      <option value="K80+R6">K80+R6</option>
+      <option value="K80+R7">K80+R7</option>
+      <option value="K80+R8">K80+R8</option>
+      <option value="K80+R9">K80+R9</option>
+      <option value="K80+R10">K80+R10</option>
+      <option value="HKY">HKY</option>
+      <option value="HKY+I">HKY+I</option>
+      <option value="HKY+G">HKY+G</option>
+      <option value="HKY+I+G">HKY+I+G</option>
+      <option value="HKY+R2">HKY+R2</option>
+      <option value="HKY+R3">HKY+R3</option>
+      <option value="HKY+R4">HKY+R4</option>
+      <option value="HKY+R5">HKY+R5</option>
+      <option value="HKY+R6">HKY+R6</option>
+      <option value="HKY+R7">HKY+R7</option>
+      <option value="HKY+R8">HKY+R8</option>
+      <option value="HKY+R9">HKY+R9</option>
+      <option value="HKY+R10">HKY+R10</option>
+      <option value="TNe">TNe</option>
+      <option value="TNe+I">TNe+I</option>
+      <option value="TNe+G">TNe+G</option>
+      <option value="TNe+I+G">TNe+I+G</option>
+      <option value="TNe+R2">TNe+R2</option>
+      <option value="TNe+R3">TNe+R3</option>
+      <option value="TNe+R4">TNe+R4</option>
+      <option value="TNe+R5">TNe+R5</option>
+      <option value="TNe+R6">TNe+R6</option>
+      <option value="TNe+R7">TNe+R7</option>
+      <option value="TNe+R8">TNe+R8</option>
+      <option value="TNe+R9">TNe+R9</option>
+      <option value="TNe+R10">TNe+R10</option>
+      <option value="TN">TN</option>
+      <option value="TN+I">TN+I</option>
+      <option value="TN+G">TN+G</option>
+      <option value="TN+I+G">TN+I+G</option>
+      <option value="TN+R2">TN+R2</option>
+      <option value="TN+R3">TN+R3</option>
+      <option value="TN+R4">TN+R4</option>
+      <option value="TN+R5">TN+R5</option>
+      <option value="TN+R6">TN+R6</option>
+      <option value="TN+R7">TN+R7</option>
+      <option value="TN+R8">TN+R8</option>
+      <option value="TN+R9">TN+R9</option>
+      <option value="TN+R10">TN+R10</option>
+      <option value="K81">K81</option>
+      <option value="K81+I">K81+I</option>
+      <option value="K81+G">K81+G</option>
+      <option value="K81+I+G">K81+I+G</option>
+      <option value="K81+R2">K81+R2</option>
+      <option value="K81+R3">K81+R3</option>
+      <option value="K81+R4">K81+R4</option>
+      <option value="K81+R5">K81+R5</option>
+      <option value="K81+R6">K81+R6</option>
+      <option value="K81+R7">K81+R7</option>
+      <option value="K81+R8">K81+R8</option>
+      <option value="K81+R9">K81+R9</option>
+      <option value="K81+R10">K81+R10</option>
+      <option value="K81u">K81u</option>
+      <option value="K81u+I">K81u+I</option>
+      <option value="K81u+G">K81u+G</option>
+      <option value="K81u+I+G">K81u+I+G</option>
+      <option value="K81u+R2">K81u+R2</option>
+      <option value="K81u+R3">K81u+R3</option>
+      <option value="K81u+R4">K81u+R4</option>
+      <option value="K81u+R5">K81u+R5</option>
+      <option value="K81u+R6">K81u+R6</option>
+      <option value="K81u+R7">K81u+R7</option>
+      <option value="K81u+R8">K81u+R8</option>
+      <option value="K81u+R9">K81u+R9</option>
+      <option value="K81u+R10">K81u+R10</option>
+      <option value="TPM2">TPM2</option>
+      <option value="TPM2+I">TPM2+I</option>
+      <option value="TPM2+G">TPM2+G</option>
+      <option value="TPM2+I+G">TPM2+I+G</option>
+      <option value="TPM2+R2">TPM2+R2</option>
+      <option value="TPM2+R3">TPM2+R3</option>
+      <option value="TPM2+R4">TPM2+R4</option>
+      <option value="TPM2+R5">TPM2+R5</option>
+      <option value="TPM2+R6">TPM2+R6</option>
+      <option value="TPM2+R7">TPM2+R7</option>
+      <option value="TPM2+R8">TPM2+R8</option>
+      <option value="TPM2+R9">TPM2+R9</option>
+      <option value="TPM2+R10">TPM2+R10</option>
+      <option value="TPM2u">TPM2u</option>
+      <option value="TPM2u+I">TPM2u+I</option>
+      <option value="TPM2u+G">TPM2u+G</option>
+      <option value="TPM2u+I+G">TPM2u+I+G</option>
+      <option value="TPM2u+R2">TPM2u+R2</option>
+      <option value="TPM2u+R3">TPM2u+R3</option>
+      <option value="TPM2u+R4">TPM2u+R4</option>
+      <option value="TPM2u+R5">TPM2u+R5</option>
+      <option value="TPM2u+R6">TPM2u+R6</option>
+      <option value="TPM2u+R7">TPM2u+R7</option>
+      <option value="TPM2u+R8">TPM2u+R8</option>
+      <option value="TPM2u+R9">TPM2u+R9</option>
+      <option value="TPM2u+R10">TPM2u+R10</option>
+      <option value="TPM3">TPM3</option>
+      <option value="TPM3+I">TPM3+I</option>
+      <option value="TPM3+G">TPM3+G</option>
+      <option value="TPM3+I+G">TPM3+I+G</option>
+      <option value="TPM3+R2">TPM3+R2</option>
+      <option value="TPM3+R3">TPM3+R3</option>
+      <option value="TPM3+R4">TPM3+R4</option>
+      <option value="TPM3+R5">TPM3+R5</option>
+      <option value="TPM3+R6">TPM3+R6</option>
+      <option value="TPM3+R7">TPM3+R7</option>
+      <option value="TPM3+R8">TPM3+R8</option>
+      <option value="TPM3+R9">TPM3+R9</option>
+      <option value="TPM3+R10">TPM3+R10</option>
+      <option value="TPM3u">TPM3u</option>
+      <option value="TPM3u+I">TPM3u+I</option>
+      <option value="TPM3u+G">TPM3u+G</option>
+      <option value="TPM3u+I+G">TPM3u+I+G</option>
+      <option value="TPM3u+R2">TPM3u+R2</option>
+      <option value="TPM3u+R3">TPM3u+R3</option>
+      <option value="TPM3u+R4">TPM3u+R4</option>
+      <option value="TPM3u+R5">TPM3u+R5</option>
+      <option value="TPM3u+R6">TPM3u+R6</option>
+      <option value="TPM3u+R7">TPM3u+R7</option>
+      <option value="TPM3u+R8">TPM3u+R8</option>
+      <option value="TPM3u+R9">TPM3u+R9</option>
+      <option value="TPM3u+R10">TPM3u+R10</option>
+      <option value="TIMe">TIMe</option>
+      <option value="TIMe+I">TIMe+I</option>
+      <option value="TIMe+G">TIMe+G</option>
+      <option value="TIMe+I+G">TIMe+I+G</option>
+      <option value="TIMe+R2">TIMe+R2</option>
+      <option value="TIMe+R3">TIMe+R3</option>
+      <option value="TIMe+R4">TIMe+R4</option>
+      <option value="TIMe+R5">TIMe+R5</option>
+      <option value="TIMe+R6">TIMe+R6</option>
+      <option value="TIMe+R7">TIMe+R7</option>
+      <option value="TIMe+R8">TIMe+R8</option>
+      <option value="TIMe+R9">TIMe+R9</option>
+      <option value="TIMe+R10">TIMe+R10</option>
+      <option value="TIM">TIM</option>
+      <option value="TIM+I">TIM+I</option>
+      <option value="TIM+G">TIM+G</option>
+      <option value="TIM+I+G">TIM+I+G</option>
+      <option value="TIM+R2">TIM+R2</option>
+      <option value="TIM+R3">TIM+R3</option>
+      <option value="TIM+R4">TIM+R4</option>
+      <option value="TIM+R5">TIM+R5</option>
+      <option value="TIM+R6">TIM+R6</option>
+      <option value="TIM+R7">TIM+R7</option>
+      <option value="TIM+R8">TIM+R8</option>
+      <option value="TIM+R9">TIM+R9</option>
+      <option value="TIM+R10">TIM+R10</option>
+      <option value="TIM2e">TIM2e</option>
+      <option value="TIM2e+I">TIM2e+I</option>
+      <option value="TIM2e+G">TIM2e+G</option>
+      <option value="TIM2e+I+G">TIM2e+I+G</option>
+      <option value="TIM2e+R2">TIM2e+R2</option>
+      <option value="TIM2e+R3">TIM2e+R3</option>
+      <option value="TIM2e+R4">TIM2e+R4</option>
+      <option value="TIM2e+R5">TIM2e+R5</option>
+      <option value="TIM2e+R6">TIM2e+R6</option>
+      <option value="TIM2e+R7">TIM2e+R7</option>
+      <option value="TIM2e+R8">TIM2e+R8</option>
+      <option value="TIM2e+R9">TIM2e+R9</option>
+      <option value="TIM2e+R10">TIM2e+R10</option>
+      <option value="TIM2">TIM2</option>
+      <option value="TIM2+I">TIM2+I</option>
+      <option value="TIM2+G">TIM2+G</option>
+      <option value="TIM2+I+G">TIM2+I+G</option>
+      <option value="TIM2+R2">TIM2+R2</option>
+      <option value="TIM2+R3">TIM2+R3</option>
+      <option value="TIM2+R4">TIM2+R4</option>
+      <option value="TIM2+R5">TIM2+R5</option>
+      <option value="TIM2+R6">TIM2+R6</option>
+      <option value="TIM2+R7">TIM2+R7</option>
+      <option value="TIM2+R8">TIM2+R8</option>
+      <option value="TIM2+R9">TIM2+R9</option>
+      <option value="TIM2+R10">TIM2+R10</option>
+      <option value="TIM3e">TIM3e</option>
+      <option value="TIM3e+I">TIM3e+I</option>
+      <option value="TIM3e+G">TIM3e+G</option>
+      <option value="TIM3e+I+G">TIM3e+I+G</option>
+      <option value="TIM3e+R2">TIM3e+R2</option>
+      <option value="TIM3e+R3">TIM3e+R3</option>
+      <option value="TIM3e+R4">TIM3e+R4</option>
+      <option value="TIM3e+R5">TIM3e+R5</option>
+      <option value="TIM3e+R6">TIM3e+R6</option>
+      <option value="TIM3e+R7">TIM3e+R7</option>
+      <option value="TIM3e+R8">TIM3e+R8</option>
+      <option value="TIM3e+R9">TIM3e+R9</option>
+      <option value="TIM3e+R10">TIM3e+R10</option>
+      <option value="TIM3">TIM3</option>
+      <option value="TIM3+I">TIM3+I</option>
+      <option value="TIM3+G">TIM3+G</option>
+      <option value="TIM3+I+G">TIM3+I+G</option>
+      <option value="TIM3+R2">TIM3+R2</option>
+      <option value="TIM3+R3">TIM3+R3</option>
+      <option value="TIM3+R4">TIM3+R4</option>
+      <option value="TIM3+R5">TIM3+R5</option>
+      <option value="TIM3+R6">TIM3+R6</option>
+      <option value="TIM3+R7">TIM3+R7</option>
+      <option value="TIM3+R8">TIM3+R8</option>
+      <option value="TIM3+R9">TIM3+R9</option>
+      <option value="TIM3+R10">TIM3+R10</option>
+      <option value="TVMe">TVMe</option>
+      <option value="TVMe+I">TVMe+I</option>
+      <option value="TVMe+G">TVMe+G</option>
+      <option value="TVMe+I+G">TVMe+I+G</option>
+      <option value="TVMe+R2">TVMe+R2</option>
+      <option value="TVMe+R3">TVMe+R3</option>
+      <option value="TVMe+R4">TVMe+R4</option>
+      <option value="TVMe+R5">TVMe+R5</option>
+      <option value="TVMe+R6">TVMe+R6</option>
+      <option value="TVMe+R7">TVMe+R7</option>
+      <option value="TVMe+R8">TVMe+R8</option>
+      <option value="TVMe+R9">TVMe+R9</option>
+      <option value="TVMe+R10">TVMe+R10</option>
+      <option value="TVM">TVM</option>
+      <option value="TVM+I">TVM+I</option>
+      <option value="TVM+G">TVM+G</option>
+      <option value="TVM+I+G">TVM+I+G</option>
+      <option value="TVM+R2">TVM+R2</option>
+      <option value="TVM+R3">TVM+R3</option>
+      <option value="TVM+R4">TVM+R4</option>
+      <option value="TVM+R5">TVM+R5</option>
+      <option value="TVM+R6">TVM+R6</option>
+      <option value="TVM+R7">TVM+R7</option>
+      <option value="TVM+R8">TVM+R8</option>
+      <option value="TVM+R9">TVM+R9</option>
+      <option value="TVM+R10">TVM+R10</option>
+      <option value="SYM">SYM</option>
+      <option value="SYM+I">SYM+I</option>
+      <option value="SYM+G">SYM+G</option>
+      <option value="SYM+I+G">SYM+I+G</option>
+      <option value="SYM+R2">SYM+R2</option>
+      <option value="SYM+R3">SYM+R3</option>
+      <option value="SYM+R4">SYM+R4</option>
+      <option value="SYM+R5">SYM+R5</option>
+      <option value="SYM+R6">SYM+R6</option>
+      <option value="SYM+R7">SYM+R7</option>
+      <option value="SYM+R8">SYM+R8</option>
+      <option value="SYM+R9">SYM+R9</option>
+      <option value="SYM+R10">SYM+R10</option>
+      <option value="GTR">GTR</option>
+      <option value="GTR+I">GTR+I</option>
+      <option value="GTR+G">GTR+G</option>
+      <option value="GTR+I+G">GTR+I+G</option>
+      <option value="GTR+R2">GTR+R2</option>
+      <option value="GTR+R3">GTR+R3</option>
+      <option value="GTR+R4">GTR+R4</option>
+      <option value="GTR+R5">GTR+R5</option>
+      <option value="GTR+R6">GTR+R6</option>
+      <option value="GTR+R7">GTR+R7</option>
+      <option value="GTR+R8">GTR+R8</option>
+      <option value="GTR+R9">GTR+R9</option>
+      <option value="GTR+R10">GTR+R10</option>
+      <option value="MFP">MFP</option>
+      <option value="TEST">TEST</option>
+    </param>
+    <param label="--p-n-init-pars-trees: INTEGER Range(1, None)        Number of initial parsimony trees. If not set, program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pninitparstrees" optional="False" type="text" />
+    <param label="--p-n-top-init-trees: INTEGER Range(1, None)        Number of top initial trees. If not set, program defaults will be used. See IQ-TREE manual for details.                                  [optional]" name="pntopinittrees" optional="False" type="text" />
+    <param label="--p-n-best-retain-trees: INTEGER Range(1, None)        Number of best trees retained during search. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pnbestretaintrees" optional="False" type="text" />
+    <param label="--p-n-iter: INTEGER      Fix number of iterations to stop. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="pniter" optional="False" type="text" />
+    <param label="--p-stop-iter: INTEGER   Number of unsuccessful iterations to stop. If not Range(1, None)        set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pstopiter" optional="False" type="text" />
+    <param label="--p-perturb-nni-strength: NUMBER Range(0.01, 1.0)      Perturbation strength for randomized NNI. If not set, program defaults will be used. See IQ-TREE manual for details.                       [optional]" name="pperturbnnistrength" optional="False" type="text" />
+    <param label="--p-spr-radius: INTEGER  Radius for parsimony SPR search. If not set, Range(1, None)        program defaults will be used. See IQ-TREE manual for details.                              [optional]" name="psprradius" optional="False" type="text" />
+    <param label="--p-allnni: --p-allnni: / --p-no-allnni Perform more thorough NNI search.   [default: False]" name="pallnni" selected="False" type="boolean" />
+    <param label="--p-fast: --p-fast: / --p-no-fast  Fast search to resemble FastTree.   [default: False]" name="pfast" selected="False" type="boolean" />
+    <param label="--p-alrt: INTEGER        Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform an SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000 replicates is recomended. Can be used with other \'single branch test methods\'. Values reported in the order of: alrt, lbp, abayes.              [optional]" name="palrt" optional="False" type="text" />
+    <param label="--p-abayes: --p-abayes: / --p-no-abayes Single branch test method. Approximate Bayes test. Can be used with other \'single branch test methods\'. Values reported in the order of: alrt, lbp, abayes. [default: False]" name="pabayes" selected="False" type="boolean" />
+    <param label="--p-lbp: INTEGER         Single branch test method. Number of bootstrap Range(1000, None)     replicates to perform a fast local bootstrap probability method. Minimum of 1000 replicates is recomended. Can be used with other \'single branch test methods\'. Values reported in the order of: alrt, lbp, abayes.                        [optional]" name="plbp" optional="False" type="text" />
+    <param label="--p-safe: --p-safe: / --p-no-safe  Safe likelihood kernel to avoid numerical underflow.                          [default: False]" name="psafe" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Construct a phylogenetic tree with IQ-TREE.
-###########################################
+###############################################################
 
 Construct a phylogenetic tree using IQ-TREE (http://www.iqtree.org/) with
 automatic model selection.
@@ -409,6 +418,12 @@
 seed : Int, optional
     Random number seed. If not set, program defaults will be used. See IQ-
     TREE manual for details.
+n_cores : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of cores to use for parallel processing. Use `auto` to let
+    IQ-TREE automatically determine the optimal number of cores to use.
+n_cores_max : Int % Range(2, None), optional
+    Limits the maximum number of cores to be used when 'n_cores' is set to
+    'auto'.
 n_runs : Int % Range(1, None), optional
     Number of indepedent runs. Multiple  independent runs (e.g. 10) can
     outperform a single run in terms of likelihood maximisation.
@@ -430,7 +445,7 @@
 stop_iter : Int % Range(1, None), optional
     Number of unsuccessful iterations to stop. If not set, program defaults
     will be used. See IQ-TREE manual for details.
-perturb_nni_strength : Float % Range(0.01, 99), optional
+perturb_nni_strength : Float % Range(0.01, 1.0), optional
     Perturbation strength for randomized NNI. If not set, program defaults
     will be used. See IQ-TREE manual for details.
 spr_radius : Int % Range(1, None), optional
@@ -443,9 +458,8 @@
 alrt : Int % Range(1000, None), optional
     Single branch test method. Number of bootstrap replicates to perform an
     SH-like approximate likelihood ratio test (SH-aLRT). Minimum of 1000
-    replicates is recomended. Set to '0' for parametric aLRT test. Can be
-    used with other 'single branch test methods'. Values reported in the
-    order of: alrt, lbp, abayes.
+    replicates is recomended. Can be used with other 'single branch test
+    methods'. Values reported in the order of: alrt, lbp, abayes.
 abayes : Bool, optional
     Single branch test method. Approximate Bayes test. Can be used with
     other 'single branch test methods'. Values reported in the order of:
@@ -462,9 +476,9 @@
 -------
 tree : Phylogeny[Unrooted]
     The resulting phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_midpoint-root.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_midpoint-root.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,27 +1,39 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_midpoint-root" name="qiime phylogeny midpoint-root" version="2019.7">
-	<description> - Midpoint root an unrooted phylogenetic tree.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_midpoint-root" name="qiime phylogeny midpoint-root"
+      version="2020.8">
+  <description>Midpoint root an unrooted phylogenetic tree.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny midpoint-root
 
 --i-tree=$itree
 
 --o-rooted-tree=orootedtree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp orootedtree.qza $orootedtree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT Phylogeny[Unrooted] The phylogenetic tree to be rooted.          [required]" name="itree" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-tree: ARTIFACT Phylogeny[Unrooted] The phylogenetic tree to be rooted.          [required]" name="itree" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: rootedtree.qza" name="orootedtree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Midpoint root an unrooted phylogenetic tree.
-############################################
+###############################################################
 
 Midpoint root an unrooted phylogenetic tree.
 
@@ -34,9 +46,9 @@
 -------
 rooted_tree : Phylogeny[Rooted]
     The rooted phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_raxml-rapid-bootstrap.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_raxml-rapid-bootstrap.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,70 +1,73 @@
-<?xml version="1.0" ?>
-<tool id="qiime_phylogeny_raxml-rapid-bootstrap" name="qiime phylogeny raxml-rapid-bootstrap" version="2019.7">
-	<description> - Construct a phylogenetic tree with bootstrap supports using RAxML.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<?xml version="1.0" ?>
+<tool id="qiime_phylogeny_raxml-rapid-bootstrap" name="qiime phylogeny raxml-rapid-bootstrap"
+      version="2020.8">
+  <description>Construct a phylogenetic tree with bootstrap supports using RAxML.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny raxml-rapid-bootstrap
 
 --i-alignment=$ialignment
 
 #if str($pseed):
- --p-seed="$pseed"
+  --p-seed=$pseed
 #end if
-
 #if str($prapidbootstrapseed):
- --p-rapid-bootstrap-seed="$prapidbootstrapseed"
+  --p-rapid-bootstrap-seed=$prapidbootstrapseed
 #end if
+--p-bootstrap-replicates=$pbootstrapreplicates
 
-#if str($pbootstrapreplicates):
- --p-bootstrap-replicates=$pbootstrapreplicates
-#end if
-
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
-#end if
-
+--p-n-threads=$pnthreads
 
 #if str($praxmlversion) != 'None':
- --p-raxml-version=$praxmlversion
+--p-raxml-version=$praxmlversion
 #end if
 
 #if str($psubstitutionmodel) != 'None':
- --p-substitution-model=$psubstitutionmodel
+--p-substitution-model=$psubstitutionmodel
 #end if
 
 --o-tree=otree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otree.qza $otree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data"/>
-		<param label="--p-seed: INTEGER        Random number seed for the parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen. [optional]" name="pseed" optional="True" type="integer"/>
-		<param label="--p-rapid-bootstrap-seed: INTEGER Specify a random seed for rapid bootstrapping. This allows you to reproduce rapid bootstrap results. If not supplied then one will be randomly chosen. [optional]" name="prapidbootstrapseed" optional="True" type="integer"/>
-		<param label="--p-bootstrap-replicates: INTEGER Range(10, None)       The number of bootstrap searches to perform. [default: 100]" name="pbootstrapreplicates" optional="True" type="integer" value="100"/>
-		<param label="--p-raxml-version: " name="praxmlversion" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Standard">Standard</option>
-			<option value="SSE3">SSE3</option>
-			<option value="AVX2">AVX2</option>
-		</param>
-		<param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="GTRGAMMA">GTRGAMMA</option>
-			<option value="GTRGAMMAI">GTRGAMMAI</option>
-			<option value="GTRCAT">GTRCAT</option>
-			<option value="GTRCATI">GTRCATI</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data" />
+    <param label="--p-seed: INTEGER        Random number seed for the parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen. [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-rapid-bootstrap-seed: INTEGER Specify a random seed for rapid bootstrapping. This allows you to reproduce rapid bootstrap results. If not supplied then one will be randomly chosen. [optional]" name="prapidbootstrapseed" optional="False" type="text" />
+    <param label="--p-bootstrap-replicates: INTEGER Range(10, None)       The number of bootstrap searches to perform. [default: 100]" min="10" name="pbootstrapreplicates" optional="True" type="integer" value="100" />
+    <param label="--p-raxml-version: " name="praxmlversion" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Standard">Standard</option>
+      <option value="SSE3">SSE3</option>
+      <option value="AVX2">AVX2</option>
+    </param>
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="GTRGAMMA">GTRGAMMA</option>
+      <option value="GTRGAMMAI">GTRGAMMAI</option>
+      <option value="GTRCAT">GTRCAT</option>
+      <option value="GTRCATI">GTRCATI</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Construct a phylogenetic tree with bootstrap supports using RAxML.
-##################################################################
+###############################################################
 
 Construct a phylogenetic tree with RAxML with the addition of rapid
 bootstrapping support values. See:
@@ -79,11 +82,14 @@
     reproduce tree results. If not supplied then one will be randomly
     chosen.
 rapid_bootstrap_seed : Int, optional
-    Specify a random seed for rapid bootstrapping. This allows you to
+    Specify a random seed for rapid bootstrapping. This allows you to
     reproduce rapid bootstrap results. If not supplied then one will be
     randomly chosen.
 bootstrap_replicates : Int % Range(10, None), optional
     The number of bootstrap searches to perform.
+n_threads : Int % Range(1, None), optional
+    The number of threads to use for multithreaded processing. Using more
+    than one thread will enable the PTHREADS version of RAxML.
 raxml_version : Str % Choices('Standard', 'SSE3', 'AVX2'), optional
     Select a specific CPU optimization of RAxML to use. The SSE3 versions
     will run approximately 40% faster than the standard version. The AVX2
@@ -95,9 +101,9 @@
 -------
 tree : Phylogeny[Unrooted]
     The resulting phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_phylogeny_raxml.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_phylogeny_raxml.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,65 +1,69 @@
 <?xml version="1.0" ?>
-<tool id="qiime_phylogeny_raxml" name="qiime phylogeny raxml" version="2019.7">
-	<description> - Construct a phylogenetic tree with RAxML.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_phylogeny_raxml" name="qiime phylogeny raxml"
+      version="2020.8">
+  <description>Construct a phylogenetic tree with RAxML.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime phylogeny raxml
 
 --i-alignment=$ialignment
 
 #if str($pseed):
- --p-seed="$pseed"
-#end if
-
-#if str($pnsearches):
- --p-n-searches=$pnsearches
+  --p-seed=$pseed
 #end if
+--p-n-searches=$pnsearches
 
-#set $pnthreads = '${GALAXY_SLOTS:-4}'
-#if str($pnthreads):
- --p-n-threads="$pnthreads"
-#end if
-
+--p-n-threads=$pnthreads
 
 #if str($praxmlversion) != 'None':
- --p-raxml-version=$praxmlversion
+--p-raxml-version=$praxmlversion
 #end if
 
 #if str($psubstitutionmodel) != 'None':
- --p-substitution-model=$psubstitutionmodel
+--p-substitution-model=$psubstitutionmodel
 #end if
 
 --o-tree=otree
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp otree.qza $otree
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data"/>
 
-		<param label="--p-seed: INTEGER        Random number seed for the parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen. [optional]" name="pseed" optional="True" type="integer"/>
-		<param label="--p-n-searches: INTEGER  The number of independent maximum likelihood Range(1, None)        searches to perform. The single best scoring tree is returned.                               [default: 1]" name="pnsearches" optional="True" type="integer" min="1" value="1"/>
-		<param label="--p-raxml-version: " name="praxmlversion" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Standard">Standard</option>
-			<option value="SSE3">SSE3</option>
-			<option value="AVX2">AVX2</option>
-		</param>
-		<param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="GTRGAMMA">GTRGAMMA</option>
-			<option value="GTRGAMMAI">GTRGAMMAI</option>
-			<option value="GTRCAT">GTRCAT</option>
-			<option value="GTRCATI">GTRCATI</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-alignment: ARTIFACT FeatureData[AlignedSequence] Aligned sequences to be used for phylogenetic reconstruction.                           [required]" name="ialignment" optional="False" type="data" />
+    <param label="--p-seed: INTEGER        Random number seed for the parsimony starting tree. This allows you to reproduce tree results. If not supplied then one will be randomly chosen. [optional]" name="pseed" optional="False" type="text" />
+    <param label="--p-n-searches: INTEGER  The number of independent maximum likelihood Range(1, None)        searches to perform. The single best scoring tree is returned.                               [default: 1]" min="1" name="pnsearches" optional="True" type="integer" value="1" />
+    <param label="--p-raxml-version: " name="praxmlversion" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Standard">Standard</option>
+      <option value="SSE3">SSE3</option>
+      <option value="AVX2">AVX2</option>
+    </param>
+    <param label="--p-substitution-model: " name="psubstitutionmodel" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="GTRGAMMA">GTRGAMMA</option>
+      <option value="GTRGAMMAI">GTRGAMMAI</option>
+      <option value="GTRCAT">GTRCAT</option>
+      <option value="GTRCATI">GTRCATI</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: tree.qza" name="otree" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Construct a phylogenetic tree with RAxML.
-#########################################
+###############################################################
 
 Construct a phylogenetic tree with RAxML. See:
 https://sco.h-its.org/exelixis/web/software/raxml/
@@ -75,6 +79,9 @@
 n_searches : Int % Range(1, None), optional
     The number of independent maximum likelihood searches to perform. The
     single best scoring tree is returned.
+n_threads : Int % Range(1, None), optional
+    The number of threads to use for multithreaded processing. Using more
+    than one thread will enable the PTHREADS version of RAxML.
 raxml_version : Str % Choices('Standard', 'SSE3', 'AVX2'), optional
     Select a specific CPU optimization of RAxML to use. The SSE3 versions
     will run approximately 40% faster than the standard version. The AVX2
@@ -86,9 +93,9 @@
 -------
 tree : Phylogeny[Unrooted]
     The resulting phylogenetic tree.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_phylogeny_robinson-foulds.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" ?>
+<tool id="qiime_phylogeny_robinson-foulds" name="qiime phylogeny robinson-foulds"
+      version="2020.8">
+  <description>Calculate Robinson-Foulds distance between phylogenetic trees.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime phylogeny robinson-foulds
+
+--i-trees=$itrees
+
+#if str($plabels):
+  --p-labels=$plabels
+#end if
+#if str($pmissingtips) != 'None':
+--p-missing-tips=$pmissingtips
+#end if
+
+--o-distance-matrix=odistancematrix
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-trees: ARTIFACTS... List[Phylogeny[Rooted | Unrooted]] Phylogenetic trees to compare with Robinson-Foulds. Rooting information and branch lengths are ignored by this metric.                           [required]" name="itrees" optional="False" type="data" />
+    <param label="--p-labels: TEXT...      Labels to use for the tree names in the distance List[Str]             matrix. If ommited, labels will be \'tree_n\' where \'n\' ranges from 1..N. The number of labels must match the number of trees.                [optional]" name="plabels" optional="False" type="text" />
+    <param label="--p-missing-tips: " name="pmissingtips" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="intersect-all">intersect-all</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: distancematrix.qza" name="odistancematrix" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Calculate Robinson-Foulds distance between phylogenetic trees.
+###############################################################
+
+Calculate the Robinson-Foulds symmetric difference metric between two or
+more phylogenetic trees.
+
+Parameters
+----------
+trees : List[Phylogeny[Rooted | Unrooted]]
+    Phylogenetic trees to compare with Robinson-Foulds. Rooting information
+    and branch lengths are ignored by this metric.
+labels : List[Str], optional
+    Labels to use for the tree names in the distance matrix. If ommited,
+    labels will be "tree_n" where "n" ranges from 1..N. The number of
+    labels must match the number of trees.
+missing_tips : Str % Choices('error', 'intersect-all'), optional
+    How to handle tips that are not shared between trees. "error" will
+    raise an error if the set of tips is not identical between all input
+    trees. "intersect-all" will remove tips that are not shared between all
+    trees before computing distances beteen trees.
+
+Returns
+-------
+distance_matrix : DistanceMatrix
+    The distances between trees as a symmetric matrix.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_quality-control_bowtie2-build.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" ?>
+<tool id="qiime_quality-control_bowtie2-build" name="qiime quality-control bowtie2-build"
+      version="2020.8">
+  <description>Build bowtie2 index from reference sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime quality-control bowtie2-build
+
+--i-sequences=$isequences
+
+--p-n-threads=$pnthreads
+
+--o-database=odatabase
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odatabase.qza $odatabase
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] Reference sequences used to build bowtie2 index. [required]" name="isequences" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: database.qza" name="odatabase" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Build bowtie2 index from reference sequences.
+###############################################################
+
+Build bowtie2 index from reference sequences.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    Reference sequences used to build bowtie2 index.
+n_threads : Int % Range(1, None), optional
+    Number of threads to launch
+
+Returns
+-------
+database : Bowtie2Index
+    Bowtie2 index.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_quality-control_evaluate-composition.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_quality-control_evaluate-composition.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,35 +1,29 @@
 <?xml version="1.0" ?>
-<tool id="qiime_quality-control_evaluate-composition" name="qiime quality-control evaluate-composition" version="2019.7">
-	<description> - Evaluate expected vs. observed taxonomic composition of samples</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_quality-control_evaluate-composition" name="qiime quality-control evaluate-composition"
+      version="2020.8">
+  <description>Evaluate expected vs. observed taxonomic composition of samples</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime quality-control evaluate-composition
 
 --i-expected-features=$iexpectedfeatures
+
 --i-observed-features=$iobservedfeatures
 
+--p-depth=$pdepth
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
 #end if
 
-
-#if str($pdepth):
- --p-depth=$pdepth
+#if $pnoplottar:
+ --p-no-plot-tar
 #end if
 
-#if str($ppalette) != 'None':
- --p-palette=$ppalette
-#end if
-
-#if $pplottar:
- --p-plot-tar
-#end if
-
-#if $pplottdr:
- --p-plot-tdr
+#if $pnoplottdr:
+ --p-no-plot-tdr
 #end if
 
 #if $pplotrvalue:
@@ -55,60 +49,105 @@
 #if $pnoplotobservedfeaturesratio:
  --p-no-plot-observed-features-ratio
 #end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
 
 #if str($mmetadatacolumn):
- --m-metadata-column="$mmetadatacolumn"
+  --m-metadata-column=$mmetadatacolumn
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odatabase.qza $odatabase
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-expected-features: ARTIFACT FeatureTable[RelativeFrequency] Expected feature compositions                [required]" name="iexpectedfeatures" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-observed-features: ARTIFACT FeatureTable[RelativeFrequency] Observed feature compositions                [required]" name="iobservedfeatures" optional="False" type="data"/>
-		<param label="--p-depth: INTEGER    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 = root, 7 = species for the greengenes reference sequence database).              [default: 7]" name="pdepth" optional="True" type="integer" value="7"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Paired">Paired</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="tab10">tab10</option>
-			<option value="tab20">tab20</option>
-			<option value="tab20b">tab20b</option>
-			<option value="tab20c">tab20c</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="terrain">terrain</option>
-			<option value="rainbow">rainbow</option>
-		</param>
-		<param label="--p-plot-tar: --p-no-plot-tar Plot taxon accuracy rate (TAR) on score plot. TAR is the number of true positive features divided by the total number of observed features (TAR = true positives " name="pplottar" selected="False" type="boolean"/>
-		<param label="--p-plot-tdr: --p-no-plot-tdr Plot taxon detection rate (TDR) on score plot. TDR is the number of true positive features divided by the total number of expected features (TDR = true positives " name="pplottdr" selected="False" type="boolean"/>
-		<param label="--p-plot-r-value: --p-no-plot-r-value Plot expected vs. observed linear regression r value on score plot.                         [default: False]" name="pplotrvalue" selected="False" type="boolean"/>
-		<param label="--p-no-plot-r-squared: Do not plot expected vs. observed linear regression r-squared value on score plot.                    [default: False]" name="pnoplotrsquared" selected="False" type="boolean"/>
-		<param label="--p-plot-bray-curtis: --p-no-plot-bray-curtis Plot expected vs. observed Bray-Curtis dissimilarity scores on score plot.                  [default: False]" name="pplotbraycurtis" selected="False" type="boolean"/>
-		<param label="--p-plot-jaccard: --p-no-plot-jaccard Plot expected vs. observed Jaccard distances scores on score plot.                            [default: False]" name="pplotjaccard" selected="False" type="boolean"/>
-		<param label="--p-plot-observed-features: --p-no-plot-observed-features Plot observed features count on score plot. [default: False]" name="pplotobservedfeatures" selected="False" type="boolean"/>
-		<param label="--p-no-plot-observed-features-ratio: Do not plot ratio of observed:expected features on score plot.                                   [default: False]" name="pnoplotobservedfeaturesratio" selected="False" type="boolean"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Optional sample metadata that maps observed-features sample IDs to expected-features sample IDs.  [optional]" name="mmetadatacolumn" optional="True" type="text"/>
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
-
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-expected-features: ARTIFACT FeatureTable[RelativeFrequency] Expected feature compositions                [required]" name="iexpectedfeatures" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-observed-features: ARTIFACT FeatureTable[RelativeFrequency] Observed feature compositions                [required]" name="iobservedfeatures" optional="False" type="data" />
+    <param label="--p-depth: INTEGER    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 = root, 7 = species for the greengenes reference sequence database).              [default: 7]" name="pdepth" optional="True" type="integer" value="7" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Paired">Paired</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="tab10">tab10</option>
+      <option value="tab20">tab20</option>
+      <option value="tab20b">tab20b</option>
+      <option value="tab20c">tab20c</option>
+      <option value="viridis">viridis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="terrain">terrain</option>
+      <option value="rainbow">rainbow</option>
+    </param>
+    <param label="--p-no-plot-tar: Do not plot taxon accuracy rate (TAR) on score plot. TAR is the number of true positive features divided by the total number of observed features (TAR = true positives / (true positives + false positives)).  [default: True]" name="pnoplottar" selected="False" type="boolean" />
+    <param label="--p-no-plot-tdr: Do not plot taxon detection rate (TDR) on score plot. TDR is the number of true positive features divided by the total number of expected features (TDR = true positives / (true positives + false negatives)).  [default: True]" name="pnoplottdr" selected="False" type="boolean" />
+    <param label="--p-plot-r-value: --p-plot-r-value: / --p-no-plot-r-value Plot expected vs. observed linear regression r value on score plot.                         [default: False]" name="pplotrvalue" selected="False" type="boolean" />
+    <param label="--p-no-plot-r-squared: Do not plot expected vs. observed linear regression r-squared value on score plot.                    [default: True]" name="pnoplotrsquared" selected="False" type="boolean" />
+    <param label="--p-plot-bray-curtis: --p-plot-bray-curtis: / --p-no-plot-bray-curtis Plot expected vs. observed Bray-Curtis dissimilarity scores on score plot.                  [default: False]" name="pplotbraycurtis" selected="False" type="boolean" />
+    <param label="--p-plot-jaccard: --p-plot-jaccard: / --p-no-plot-jaccard Plot expected vs. observed Jaccard distances scores on score plot.                            [default: False]" name="pplotjaccard" selected="False" type="boolean" />
+    <param label="--p-plot-observed-features: --p-plot-observed-features: / --p-no-plot-observed-features Plot observed features count on score plot. [default: False]" name="pplotobservedfeatures" selected="False" type="boolean" />
+    <param label="--p-no-plot-observed-features-ratio: Do not plot ratio of observed:expected features on score plot.                                   [default: True]" name="pnoplotobservedfeaturesratio" selected="False" type="boolean" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Optional sample metadata that maps observed-features sample IDs to expected-features sample IDs.  [optional]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Evaluate expected vs. observed taxonomic composition of samples
 ###############################################################
 
@@ -167,9 +206,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_quality-control_evaluate-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_quality-control_evaluate-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,31 +1,54 @@
 <?xml version="1.0" ?>
-<tool id="qiime_quality-control_evaluate-seqs" name="qiime quality-control evaluate-seqs" version="2019.7">
-	<description> - Compare query (observed) vs. reference (expected) sequences.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_quality-control_evaluate-seqs" name="qiime quality-control evaluate-seqs"
+      version="2020.8">
+  <description>Compare query (observed) vs. reference (expected) sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime quality-control evaluate-seqs
 
 --i-query-sequences=$iquerysequences
+
 --i-reference-sequences=$ireferencesequences
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp odatabase.qza $odatabase
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-query-sequences: ARTIFACT FeatureData[Sequence] Sequences to test for exclusion              [required]" name="iquerysequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] Reference sequences to align against feature sequences [required]" name="ireferencesequences" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-query-sequences: ARTIFACT FeatureData[Sequence] Sequences to test for exclusion              [required]" name="iquerysequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] Reference sequences to align against feature sequences [required]" name="ireferencesequences" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Compare query (observed) vs. reference (expected) sequences.
-############################################################
+###############################################################
 
 This action aligns a set of query (e.g., observed) sequences against a set
 of reference (e.g., expected) sequences to evaluate the quality of
@@ -49,9 +72,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_quality-control_evaluate-taxonomy.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_quality-control_evaluate-taxonomy.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,25 +1,25 @@
 <?xml version="1.0" ?>
-<tool id="qiime_quality-control_evaluate-taxonomy" name="qiime quality-control evaluate-taxonomy" version="2019.7">
-	<description> - Evaluate expected vs. observed taxonomic assignments</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_quality-control_evaluate-taxonomy" name="qiime quality-control evaluate-taxonomy"
+      version="2020.8">
+  <description>Evaluate expected vs. observed taxonomic assignments</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime quality-control evaluate-taxonomy
 
 --i-expected-taxa=$iexpectedtaxa
+
 --i-observed-taxa=$iobservedtaxa
 
-#if str($pdepth):
- --p-depth="$pdepth"
+#if $ifeaturetable:
+ --i-feature-table
 #end if
 
-#if str($ifeaturetable) != 'None':
- --i-feature-table=$ifeaturetable
-#end if
+--p-depth=$pdepth
 
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 #if $pnorequireexpids:
@@ -31,51 +31,77 @@
 #end if
 
 #if str($psampleid):
- --p-sample-id="$psampleid"
+  --p-sample-id=$psampleid
+#end if
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-visualization=ovisualization
+;
+cp odatabase.qza $odatabase
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-expected-taxa: ARTIFACT FeatureData[Taxonomy] Expected taxonomic assignments               [required]" name="iexpectedtaxa" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-observed-taxa: ARTIFACT FeatureData[Taxonomy] Observed taxonomic assignments               [required]" name="iobservedtaxa" optional="False" type="data"/>
-		<param label="--p-depth: INTEGER    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 = root, 7 = species for the greengenes reference sequence database).                [required]" name="pdepth" optional="False" value="" type="integer"/>
-		<param format="qza,no_unzip.zip" label="--i-feature-table: ARTIFACT FeatureTable[RelativeFrequency] Optional feature table containing relative frequency of each feature, used to weight accuracy scores by frequency. Must contain all features found in expected and/or observed taxa. Features found in the table but not the expected/observed taxa will be dropped prior to analysis.                                    [optional]" name="ifeaturetable" optional="True" type="data"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="Set1">Set1</option>
-			<option value="Set2">Set2</option>
-			<option value="Set3">Set3</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="Paired">Paired</option>
-			<option value="Accent">Accent</option>
-			<option value="Dark2">Dark2</option>
-			<option value="tab10">tab10</option>
-			<option value="tab20">tab20</option>
-			<option value="tab20b">tab20b</option>
-			<option value="tab20c">tab20c</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="terrain">terrain</option>
-			<option value="rainbow">rainbow</option>
-		</param>
-		<param label="--p-no-require-exp-ids: Do not require that all features found in observed taxa must be found in expected taxa or raise error. [default: False]" name="pnorequireexpids" selected="False" type="boolean"/>
-		<param label="--p-no-require-obs-ids: Require that all features found in expected taxa must be found in observed taxa or raise error. [default: False]" name="pnorequireobsids" selected="False" type="boolean"/>
-		<param label="--p-sample-id: TEXT   Optional sample ID to use for extracting frequency data from feature table, and for labeling accuracy results. If no sample-id is provided, feature frequencies are derived from the sum of all samples present in the feature table.                [optional]" name="psampleid" optional="True" type="text"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-expected-taxa: ARTIFACT FeatureData[Taxonomy] Expected taxonomic assignments               [required]" name="iexpectedtaxa" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-observed-taxa: ARTIFACT FeatureData[Taxonomy] Observed taxonomic assignments               [required]" name="iobservedtaxa" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-feature-table: --i-feature-table: ARTIFACT FeatureTable[RelativeFrequency] Optional feature table containing relative frequency of each feature, used to weight accuracy scores by frequency. Must contain all features found in expected and/or observed taxa. Features found in the table but not the expected/observed taxa will be dropped prior to analysis.                                    [optional]" name="ifeaturetable" selected="False" type="boolean" />
+    <param label="--p-depth: INTEGER    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 = root, 7 = species for the greengenes reference sequence database).                [required]" name="pdepth" optional="False" type="text" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Set1">Set1</option>
+      <option value="Set2">Set2</option>
+      <option value="Set3">Set3</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="Paired">Paired</option>
+      <option value="Accent">Accent</option>
+      <option value="Dark2">Dark2</option>
+      <option value="tab10">tab10</option>
+      <option value="tab20">tab20</option>
+      <option value="tab20b">tab20b</option>
+      <option value="tab20c">tab20c</option>
+      <option value="viridis">viridis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="terrain">terrain</option>
+      <option value="rainbow">rainbow</option>
+    </param>
+    <param label="--p-no-require-exp-ids: Do not require that all features found in observed taxa must be found in expected taxa or raise error. [default: True]" name="pnorequireexpids" selected="False" type="boolean" />
+    <param label="--p-no-require-obs-ids: Do not require that all features found in expected taxa must be found in observed taxa or raise error. [default: True]" name="pnorequireobsids" selected="False" type="boolean" />
+    <param label="--p-sample-id: TEXT   Optional sample ID to use for extracting frequency data from feature table, and for labeling accuracy results. If no sample-id is provided, feature frequencies are derived from the sum of all samples present in the feature table.                [optional]" name="psampleid" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Evaluate expected vs. observed taxonomic assignments
-####################################################
+###############################################################
 
 This visualizer compares a pair of observed and expected taxonomic
 assignments to calculate precision, recall, and F-measure at each taxonomic
@@ -117,9 +143,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_quality-control_exclude-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_quality-control_exclude-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,62 +1,74 @@
 <?xml version="1.0" ?>
-<tool id="qiime_quality-control_exclude-seqs" name="qiime quality-control exclude-seqs" version="2019.7">
-	<description> - Exclude sequences by alignment</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_quality-control_exclude-seqs" name="qiime quality-control exclude-seqs"
+      version="2020.8">
+  <description>Exclude sequences by alignment</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime quality-control exclude-seqs
 
 --i-query-sequences=$iquerysequences
+
 --i-reference-sequences=$ireferencesequences
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
-#if str($ppercidentity):
- --p-perc-identity=$ppercidentity
-#end if
+--p-perc-identity=$ppercidentity
 
 #if str($pevalue):
- --p-evalue="$pevalue"
+  --p-evalue=$pevalue
 #end if
+--p-perc-query-aligned=$ppercqueryaligned
 
-#if str($ppercqueryaligned):
- --p-perc-query-aligned=$ppercqueryaligned
-#end if
+--p-threads=$pthreads
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
+#if str($pleftjustify) != 'None':
+--p-left-justify=$pleftjustify
 #end if
 
 --o-sequence-hits=osequencehits
+
 --o-sequence-misses=osequencemisses
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp osequencehits.qza $osequencehits;
 cp osequencemisses.qza $osequencemisses
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-query-sequences: ARTIFACT FeatureData[Sequence] Sequences to test for exclusion              [required]" name="iquerysequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] Reference sequences to align against feature sequences [required]" name="ireferencesequences" optional="False" type="data"/>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="blast">blast</option>
-			<option value="vsearch">vsearch</option>
-			<option value="blastn-short">blastn-short</option>
-		</param>
-		<param label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to reference is lower. Must be in range [0.0, 1.0]      [default: 0.97]" name="ppercidentity" optional="True" type="float" value="0.97" min="0" max="1" exclusive_end="False"/>
-		<param label="--p-evalue: NUMBER    BLAST expectation (E) value threshold for saving hits. Reject if E value is higher than threshold. This threshold is disabled by default.            [optional]" name="pevalue" optional="True" type="float"/>
-		<param label="--p-perc-query-aligned: NUMBER Percent of query sequence that must align to reference in order to be accepted as a hit.       [default: 0.97]" name="ppercqueryaligned" optional="True" type="float" value="0.97"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sequencehits.qza" name="osequencehits"/>
-		<data format="qza" label="${tool.name} on ${on_string}: sequencemisses.qza" name="osequencemisses"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-query-sequences: ARTIFACT FeatureData[Sequence] Sequences to test for exclusion           [required]" name="iquerysequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] Reference sequences to align against feature sequences                                 [required]" name="ireferencesequences" optional="False" type="data" />
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="blast">blast</option>
+      <option value="blastn-short">blastn-short</option>
+    </param>
+    <param exclude_max="False" label="--p-perc-identity: PROPORTION Range(0.0, 1.0, inclusive_end=True) Reject match if percent identity to reference is lower. Must be in range [0.0, 1.0]   [default: 0.97]" max="1.0" min="0.0" name="ppercidentity" optional="True" type="float" value="0.97" />
+    <param label="--p-evalue: NUMBER       BLAST expectation (E) value threshold for saving hits. Reject if E value is higher than threshold. This threshold is disabled by default.    [optional]" name="pevalue" optional="False" type="text" />
+    <param label="--p-perc-query-aligned: NUMBER Percent of query sequence that must align to reference in order to be accepted as a hit. [default: 0.97]" name="ppercqueryaligned" optional="True" type="float" value="0.97" />
+    <param label="--p-left-justify: " name="pleftjustify" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="False">False</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sequencehits.qza" name="osequencehits" />
+    <data format="qza" label="${tool.name} on ${on_string}: sequencemisses.qza" name="osequencemisses" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Exclude sequences by alignment
-##############################
+###############################################################
 
 This method aligns feature sequences to a set of reference sequences to
 identify sequences that hit/miss the reference within a specified
@@ -76,7 +88,7 @@
     Sequences to test for exclusion
 reference_sequences : FeatureData[Sequence]
     Reference sequences to align against feature sequences
-method : Str % Choices('blast', 'vsearch', 'blastn-short'), optional
+method : Str % Choices('blast', 'blastn-short')¹ | Str % Choices('vsearch')², optional
     Alignment method to use for matching feature sequences against
     reference sequences
 perc_identity : Float % Range(0.0, 1.0, inclusive_end=True), optional
@@ -88,6 +100,10 @@
 perc_query_aligned : Float, optional
     Percent of query sequence that must align to reference in order to be
     accepted as a hit.
+threads : Int % Range(1, None), optional
+    Number of jobs to execute. Only applies to vsearch method.
+left_justify : Bool % Choices(False)¹ | Bool², optional
+    Reject match if the pairwise alignment begins with gaps
 
 Returns
 -------
@@ -95,9 +111,9 @@
     Subset of feature sequences that align to reference sequences
 sequence_misses : FeatureData[Sequence]
     Subset of feature sequences that do not align to reference sequences
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_quality-control_filter-reads.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" ?>
+<tool id="qiime_quality-control_filter-reads" name="qiime quality-control filter-reads"
+      version="2020.8">
+  <description>Filter demultiplexed sequences by alignment to reference database.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime quality-control filter-reads
+
+--i-demultiplexed-sequences=$idemultiplexedsequences
+
+--i-database=$idatabase
+
+--p-n-threads=$pnthreads
+
+#if str($pmode) != 'None':
+--p-mode=$pmode
+#end if
+
+#if str($psensitivity) != 'None':
+--p-sensitivity=$psensitivity
+#end if
+
+--p-ref-gap-open-penalty=$prefgapopenpenalty
+
+--p-ref-gap-ext-penalty=$prefgapextpenalty
+
+#if $pnoexcludeseqs:
+ --p-no-exclude-seqs
+#end if
+
+--o-filtered-sequences=ofilteredsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofilteredsequences.qza $ofilteredsequences
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-sequences: ARTIFACT SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality²] The sequences to be trimmed.               [required]" name="idemultiplexedsequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-database: ARTIFACT  Bowtie2 indexed database. Bowtie2Index                                                    [required]" name="idatabase" optional="False" type="data" />
+    <param label="--p-mode: " name="pmode" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="local">local</option>
+      <option value="global">global</option>
+    </param>
+    <param label="--p-sensitivity: " name="psensitivity" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="very-fast">very-fast</option>
+      <option value="fast">fast</option>
+      <option value="sensitive">sensitive</option>
+      <option value="very-sensitive">very-sensitive</option>
+    </param>
+    <param label="--p-ref-gap-open-penalty: INTEGER Range(1, None)       Reference gap open penalty.              [default: 5]" min="1" name="prefgapopenpenalty" optional="True" type="integer" value="5" />
+    <param label="--p-ref-gap-ext-penalty: INTEGER Range(1, None)       Reference gap extend penalty.            [default: 3]" min="1" name="prefgapextpenalty" optional="True" type="integer" value="3" />
+    <param label="--p-no-exclude-seqs: Do not exclude sequences that align to reference. Set this option to False to exclude sequences that do not align to the reference database.      [default: True]" name="pnoexcludeseqs" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Filter demultiplexed sequences by alignment to reference database.
+###############################################################
+
+Filter out (or keep) demultiplexed single- or paired-end sequences that
+align to a reference database, using bowtie2 and samtools. This method can
+be used to filter out human DNA sequences and other contaminants in any
+FASTQ sequence data (e.g., shotgun genome or amplicon sequence data), or
+alternatively (when exclude_seqs is False) to only keep sequences that do
+align to the reference.
+
+Parameters
+----------
+demultiplexed_sequences : SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality²]
+    The sequences to be trimmed.
+database : Bowtie2Index
+    Bowtie2 indexed database.
+n_threads : Int % Range(1, None), optional
+    Number of alignment threads to launch.
+mode : Str % Choices('local', 'global'), optional
+    Bowtie2 alignment settings. See bowtie2 manual for more details.
+sensitivity : Str % Choices('very-fast', 'fast', 'sensitive', 'very-sensitive'), optional
+    Bowtie2 alignment sensitivity. See bowtie2 manual for details.
+ref_gap_open_penalty : Int % Range(1, None), optional
+    Reference gap open penalty.
+ref_gap_ext_penalty : Int % Range(1, None), optional
+    Reference gap extend penalty.
+exclude_seqs : Bool, optional
+    Exclude sequences that align to reference. Set this option to False to
+    exclude sequences that do not align to the reference database.
+
+Returns
+-------
+filtered_sequences : SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality²]
+    The resulting filtered sequences.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_quality-filter_q-score-joined.xml	Thu Sep 03 09:46:00 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-<?xml version="1.0" ?>
-<tool id="qiime_quality-filter_q-score-joined" name="qiime quality-filter q-score-joined" version="2019.7">
-	<description> - Quality filter based on joined sequence quality scores.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime quality-filter q-score-joined
-
---i-demux=$idemux
-
-#if str($pminquality):
- --p-min-quality=$pminquality
-#end if
-
-#if str($pqualitywindow):
- --p-quality-window=$pqualitywindow
-#end if
-
-#if str($pminlengthfraction):
- --p-min-length-fraction=$pminlengthfraction
-#end if
-
-#if str($pmaxambiguous):
- --p-max-ambiguous=$pmaxambiguous
-#end if
-
---o-filtered-sequences=ofilteredsequences
---o-filter-stats=ofilterstats
-;
-cp ofilteredsequences.qza $ofilteredsequences;
-cp ofilterstats.qza $ofilterstats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demux: ARTIFACT SampleData[JoinedSequencesWithQuality] The demultiplexed sequence data to be quality filtered.                                    [required]" name="idemux" optional="False" type="data"/>
-		<param label="--p-min-quality: INTEGER The minimum acceptable PHRED score. All PHRED scores less that this value are considered to be low PHRED scores.                                    [default: 4]" name="pminquality" optional="True" type="integer" value="4"/>
-		<param label="--p-quality-window: INTEGER The maximum number of low PHRED scores that can be observed in direct succession before truncating a sequence read.                             [default: 3]" name="pqualitywindow" optional="True" type="integer" value="3"/>
-		<param label="--p-min-length-fraction: NUMBER The minimum length that a sequence read can be following truncation and still be retained. This length should be provided as a fraction of the input sequence length.                                 [default: 0.75]" name="pminlengthfraction" optional="True" type="float" value="0.75"/>
-		<param label="--p-max-ambiguous: INTEGER The maximum number of ambiguous (i.e., N) base calls. This is applied after trimming sequences based on `min-length-fraction`.                     [default: 0]" name="pmaxambiguous" optional="True" type="integer" value="0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: filterstats.qza" name="ofilterstats"/>
-	</outputs>
-	<help><![CDATA[
-Quality filter based on joined sequence quality scores.
-#######################################################
-
-This method filters joined sequence based on quality scores and the
-presence of ambiguous base calls.
-
-Parameters
-----------
-demux : SampleData[JoinedSequencesWithQuality]
-    The demultiplexed sequence data to be quality filtered.
-min_quality : Int, optional
-    The minimum acceptable PHRED score. All PHRED scores less that this
-    value are considered to be low PHRED scores.
-quality_window : Int, optional
-    The maximum number of low PHRED scores that can be observed in direct
-    succession before truncating a sequence read.
-min_length_fraction : Float, optional
-    The minimum length that a sequence read can be following truncation and
-    still be retained. This length should be provided as a fraction of the
-    input sequence length.
-max_ambiguous : Int, optional
-    The maximum number of ambiguous (i.e., N) base calls. This is applied
-    after trimming sequences based on `min_length_fraction`.
-
-Returns
--------
-filtered_sequences : SampleData[JoinedSequencesWithQuality]
-    The resulting quality-filtered sequences.
-filter_stats : QualityFilterStats
-    Summary statistics of the filtering process.
-	]]></help>
-<macros>
-    <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
--- a/qiime2/qiime_quality-filter_q-score.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_quality-filter_q-score.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,57 +1,61 @@
 <?xml version="1.0" ?>
-<tool id="qiime_quality-filter_q-score" name="qiime quality-filter q-score" version="2019.7">
-	<description> - Quality filter based on sequence quality scores.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_quality-filter_q-score" name="qiime quality-filter q-score"
+      version="2020.8">
+  <description>Quality filter based on sequence quality scores.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime quality-filter q-score
 
 --i-demux=$idemux
 
-#if str($pminquality):
- --p-min-quality=$pminquality
-#end if
+--p-min-quality=$pminquality
 
-#if str($pqualitywindow):
- --p-quality-window=$pqualitywindow
-#end if
+--p-quality-window=$pqualitywindow
 
-#if str($pminlengthfraction):
- --p-min-length-fraction=$pminlengthfraction
-#end if
+--p-min-length-fraction=$pminlengthfraction
 
-#if str($pmaxambiguous):
- --p-max-ambiguous=$pmaxambiguous
-#end if
+--p-max-ambiguous=$pmaxambiguous
 
 --o-filtered-sequences=ofilteredsequences
+
 --o-filter-stats=ofilterstats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp ofilteredsequences.qza $ofilteredsequences;
 cp ofilterstats.qza $ofilterstats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demux: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] The demultiplexed sequence data to be quality filtered.                                    [required]" name="idemux" optional="False" type="data"/>
-		<param label="--p-min-quality: INTEGER The minimum acceptable PHRED score. All PHRED scores less that this value are considered to be low PHRED scores.                                    [default: 4]" name="pminquality" optional="True" type="integer" value="4"/>
-		<param label="--p-quality-window: INTEGER The maximum number of low PHRED scores that can be observed in direct succession before truncating a sequence read.                             [default: 3]" name="pqualitywindow" optional="True" type="integer" value="3"/>
-		<param label="--p-min-length-fraction: NUMBER The minimum length that a sequence read can be following truncation and still be retained. This length should be provided as a fraction of the input sequence length.                                 [default: 0.75]" name="pminlengthfraction" optional="True" type="float" value="0.75"/>
-		<param label="--p-max-ambiguous: INTEGER The maximum number of ambiguous (i.e., N) base calls. This is applied after trimming sequences based on `min-length-fraction`.                     [default: 0]" name="pmaxambiguous" optional="True" type="integer" value="0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: filterstats.qza" name="ofilterstats"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demux: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]¹ | SampleData[JoinedSequencesWithQuality]² The demultiplexed sequence data to be quality filtered.                                    [required]" name="idemux" optional="False" type="data" />
+    <param label="--p-min-quality: INTEGER The minimum acceptable PHRED score. All PHRED scores less that this value are considered to be low PHRED scores.                                    [default: 4]" name="pminquality" optional="True" type="integer" value="4" />
+    <param label="--p-quality-window: INTEGER The maximum number of low PHRED scores that can be observed in direct succession before truncating a sequence read.                             [default: 3]" name="pqualitywindow" optional="True" type="integer" value="3" />
+    <param label="--p-min-length-fraction: NUMBER The minimum length that a sequence read can be following truncation and still be retained. This length should be provided as a fraction of the input sequence length.                                 [default: 0.75]" name="pminlengthfraction" optional="True" type="float" value="0.75" />
+    <param label="--p-max-ambiguous: INTEGER The maximum number of ambiguous (i.e., N) base calls. This is applied after trimming sequences based on `min-length-fraction`.                     [default: 0]" name="pmaxambiguous" optional="True" type="integer" value="0" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: filterstats.qza" name="ofilterstats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Quality filter based on sequence quality scores.
-################################################
+###############################################################
 
 This method filters sequence based on quality scores and the presence of
 ambiguous base calls.
 
 Parameters
 ----------
-demux : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]
+demux : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]¹ | SampleData[JoinedSequencesWithQuality]²
     The demultiplexed sequence data to be quality filtered.
 min_quality : Int, optional
     The minimum acceptable PHRED score. All PHRED scores less that this
@@ -69,13 +73,13 @@
 
 Returns
 -------
-filtered_sequences : SampleData[SequencesWithQuality]
+filtered_sequences : SampleData[SequencesWithQuality]¹ | SampleData[JoinedSequencesWithQuality]²
     The resulting quality-filtered sequences.
 filter_stats : QualityFilterStats
     Summary statistics of the filtering process.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_classify-samples-from-dist.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_classify-samples-from-dist.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,85 +1,127 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_classify-samples-from-dist" name="qiime sample-classifier classify-samples-from-dist" version="2019.7">
-	<description> - Run k-nearest-neighbors on a labeled distance matrix.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_classify-samples-from-dist" name="qiime sample-classifier classify-samples-from-dist"
+      version="2020.8">
+  <description>Run k-nearest-neighbors on a labeled distance matrix.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier classify-samples-from-dist
 
 --i-distance-matrix=$idistancematrix
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($pk):
- --p-k=$pk
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#if str($ppalette) != 'None':
- --p-palette=$ppalette
-#end if
+--m-metadata-column=$mmetadatacolumn
 
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+--p-k=$pk
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
 #end if
 
+--o-predictions=opredictions
 
---o-predictions=opredictions
 --o-accuracy-results=oaccuracyresults
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opredictions.qza $opredictions;
-qiime tools export --input-path oaccuracyresults.qzv --output-path out   && mkdir -p '$oaccuracyresults.files_path'
+cp opredictions.qza $opredictions
+
+;
+qiime tools export  oaccuracyresults.qzv --output-path out
+&& mkdir -p '$oaccuracyresults.files_path'
 && cp -r out/* '$oaccuracyresults.files_path'
 && mv '$oaccuracyresults.files_path/index.html' '$oaccuracyresults'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     a distance matrix                            [required]" name="idistancematrix" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-k: INTEGER        Number of nearest neighbors                [default: 1]" name="pk" optional="True" type="integer" value="1"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="YellowOrangeBrown">YellowOrangeBrown</option>
-			<option value="YellowOrangeRed">YellowOrangeRed</option>
-			<option value="OrangeRed">OrangeRed</option>
-			<option value="PurpleRed">PurpleRed</option>
-			<option value="RedPurple">RedPurple</option>
-			<option value="BluePurple">BluePurple</option>
-			<option value="GreenBlue">GreenBlue</option>
-			<option value="PurpleBlue">PurpleBlue</option>
-			<option value="YellowGreen">YellowGreen</option>
-			<option value="summer">summer</option>
-			<option value="copper">copper</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="sirocco">sirocco</option>
-			<option value="drifting">drifting</option>
-			<option value="melancholy">melancholy</option>
-			<option value="enigma">enigma</option>
-			<option value="eros">eros</option>
-			<option value="spectre">spectre</option>
-			<option value="ambition">ambition</option>
-			<option value="mysteriousstains">mysteriousstains</option>
-			<option value="daydream">daydream</option>
-			<option value="solano">solano</option>
-			<option value="navarro">navarro</option>
-			<option value="dandelions">dandelions</option>
-			<option value="deepblue">deepblue</option>
-			<option value="verve">verve</option>
-			<option value="greyscale">greyscale</option>
-		</param>
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-distance-matrix: ARTIFACT DistanceMatrix     a distance matrix                            [required]" name="idistancematrix" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-k: INTEGER        Number of nearest neighbors                [default: 1]" name="pk" optional="True" type="integer" value="1" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="YellowOrangeBrown">YellowOrangeBrown</option>
+      <option value="YellowOrangeRed">YellowOrangeRed</option>
+      <option value="OrangeRed">OrangeRed</option>
+      <option value="PurpleRed">PurpleRed</option>
+      <option value="RedPurple">RedPurple</option>
+      <option value="BluePurple">BluePurple</option>
+      <option value="GreenBlue">GreenBlue</option>
+      <option value="PurpleBlue">PurpleBlue</option>
+      <option value="YellowGreen">YellowGreen</option>
+      <option value="summer">summer</option>
+      <option value="copper">copper</option>
+      <option value="viridis">viridis</option>
+      <option value="cividis">cividis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="sirocco">sirocco</option>
+      <option value="drifting">drifting</option>
+      <option value="melancholy">melancholy</option>
+      <option value="enigma">enigma</option>
+      <option value="eros">eros</option>
+      <option value="spectre">spectre</option>
+      <option value="ambition">ambition</option>
+      <option value="mysteriousstains">mysteriousstains</option>
+      <option value="daydream">daydream</option>
+      <option value="solano">solano</option>
+      <option value="navarro">navarro</option>
+      <option value="dandelions">dandelions</option>
+      <option value="deepblue">deepblue</option>
+      <option value="verve">verve</option>
+      <option value="greyscale">greyscale</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="html" label="${tool.name} on ${on_string}: accuracyresults.qzv" name="oaccuracyresults"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="html" label="${tool.name} on ${on_string}: accuracyresults.html" name="oaccuracyresults" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Run k-nearest-neighbors on a labeled distance matrix.
-#####################################################
+###############################################################
 
 Run k-nearest-neighbors on a labeled distance matrix. Return cross-
 validated (leave one out) predictions and  accuracy. k = 1 by default
@@ -92,7 +134,7 @@
     Categorical metadata column to use as prediction target.
 k : Int, optional
     Number of nearest neighbors
-palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
+palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'cividis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
     The color palette to use for plotting.
 
 Returns
@@ -101,9 +143,9 @@
     leave one out predictions for each sample
 accuracy_results : Visualization
     Accuracy results visualization.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_classify-samples-ncv.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_classify-samples-ncv.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,43 +1,60 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_classify-samples-ncv" name="qiime sample-classifier classify-samples-ncv" version="2019.7">
-	<description> - Nested cross-validated supervised learning classifier.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_classify-samples-ncv" name="qiime sample-classifier classify-samples-ncv"
+      version="2020.8">
+  <description>Nested cross-validated supervised learning classifier.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier classify-samples-ncv
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+
+--m-metadata-column=$mmetadatacolumn
 
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
-
-
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
+--p-n-jobs=$pnjobs
 
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
-
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
-#end if
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $pparametertuning:
@@ -45,51 +62,62 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
+--o-predictions=opredictions
+
+--o-feature-importance=ofeatureimportance
+
 --o-probabilities=oprobabilities
---o-predictions=opredictions
---o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp oprobabilities.qza $oprobabilities;
-cp opredictions.qza $opredictions;
-cp ofeatureimportance.qza $ofeatureimportance
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestClassifier">RandomForestClassifier</option>
-			<option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
-			<option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
-			<option value="AdaBoostClassifier">AdaBoostClassifier</option>
-			<option value="KNeighborsClassifier">KNeighborsClassifier</option>
-			<option value="LinearSVC">LinearSVC</option>
-			<option value="SVC">SVC</option>
-		</param>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
+cp oprobabilities.qza $oprobabilities
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestClassifier">RandomForestClassifier</option>
+      <option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
+      <option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
+      <option value="AdaBoostClassifier">AdaBoostClassifier</option>
+      <option value="KNeighborsClassifier">KNeighborsClassifier</option>
+      <option value="LinearSVC">LinearSVC</option>
+      <option value="SVC">SVC</option>
+    </param>
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: probabilities.qza" name="oprobabilities"/>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    <data format="qza" label="${tool.name} on ${on_string}: probabilities.qza" name="oprobabilities" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Nested cross-validated supervised learning classifier.
-######################################################
+###############################################################
 
 Predicts a categorical sample metadata column using a supervised learning
 classifier. Uses nested stratified k-fold cross validation for automated
@@ -108,6 +136,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -132,9 +162,9 @@
     Importance of each input feature to model accuracy.
 probabilities : SampleData[Probabilities]
     Predicted class probabilities for each input sample.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_classify-samples.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_classify-samples.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,44 +1,64 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_classify-samples" name="qiime sample-classifier classify-samples" version="2019.7">
-	<description> - Train and test a cross-validated supervised learning classifier.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_classify-samples" name="qiime sample-classifier classify-samples"
+      version="2020.8">
+  <description>Train and test a cross-validated supervised learning classifier.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier classify-samples
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($ptestsize):
- --p-test-size=$ptestsize
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#if str($pstep):
- --p-step=$pstep
-#end if
+--m-metadata-column=$mmetadatacolumn
+
 
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--p-test-size=$ptestsize
+
+--p-step=$pstep
+
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
+--p-n-jobs=$pnjobs
 
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
-
-#if $pnestimators:
- --p-n-estimators=$pnestimators
-#end if
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $poptimizefeatureselection:
@@ -50,111 +70,121 @@
 #end if
 
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
+--o-sample-estimator=osampleestimator
 
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
+--o-feature-importance=ofeatureimportance
+
+--o-predictions=opredictions
 
+--o-model-summary=omodelsummary
 
+--o-accuracy-results=oaccuracyresults
 
 --o-probabilities=oprobabilities
---o-sample-estimator=osampleestimator
---o-feature-importance=ofeatureimportance
---o-predictions=opredictions
---o-model-summary=omodelsummary
---o-accuracy-results=oaccuracyresults
+
+--o-heatmap=oheatmap
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oprobabilities.qza $oprobabilities
+
 ;
-cp oprobabilities.qza $oprobabilities;
-cp osampleestimator.qza $osampleestimator;
-cp ofeatureimportance.qza $ofeatureimportance;
-cp opredictions.qza $opredictions;
-qiime tools export --input-path omodelsummary.qzv --output-path out   && mkdir -p '$omodelsummary.files_path'
-&& cp -r out/* '$omodelsummary.files_path'
-&& mv '$omodelsummary.files_path/index.html' '$omodelsummary';
-qiime tools export --input-path oaccuracyresults.qzv --output-path out   && mkdir -p '$oaccuracyresults.files_path'
-&& cp -r out/* '$oaccuracyresults.files_path'
-&& mv '$oaccuracyresults.files_path/index.html' '$oaccuracyresults'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" name="ptestsize" optional="True" type="float" value="0.2" min="0" max="1" exclusive_start="True"/>
-		<param label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" name="pstep" optional="True" type="float" value="0.05" min="0" max="1" exclusive_start="True"/>
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestClassifier">RandomForestClassifier</option>
-			<option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
-			<option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
-			<option value="AdaBoostClassifier">AdaBoostClassifier</option>
-			<option value="KNeighborsClassifier">KNeighborsClassifier</option>
-			<option value="LinearSVC">LinearSVC</option>
-			<option value="SVC">SVC</option>
-		</param>
-		<param label="--p-optimize-feature-selection: --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="YellowOrangeBrown">YellowOrangeBrown</option>
-			<option value="YellowOrangeRed">YellowOrangeRed</option>
-			<option value="OrangeRed">OrangeRed</option>
-			<option value="PurpleRed">PurpleRed</option>
-			<option value="RedPurple">RedPurple</option>
-			<option value="BluePurple">BluePurple</option>
-			<option value="GreenBlue">GreenBlue</option>
-			<option value="PurpleBlue">PurpleBlue</option>
-			<option value="YellowGreen">YellowGreen</option>
-			<option value="summer">summer</option>
-			<option value="copper">copper</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="sirocco">sirocco</option>
-			<option value="drifting">drifting</option>
-			<option value="melancholy">melancholy</option>
-			<option value="enigma">enigma</option>
-			<option value="eros">eros</option>
-			<option value="spectre">spectre</option>
-			<option value="ambition">ambition</option>
-			<option value="mysteriousstains">mysteriousstains</option>
-			<option value="daydream">daydream</option>
-			<option value="solano">solano</option>
-			<option value="navarro">navarro</option>
-			<option value="dandelions">dandelions</option>
-			<option value="deepblue">deepblue</option>
-			<option value="verve">verve</option>
-			<option value="greyscale">greyscale</option>
-		</param>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
+qiime tools export  oheatmap.qzv --output-path out
+&& mkdir -p '$oheatmap.files_path'
+&& cp -r out/* '$oheatmap.files_path'
+&& mv '$oheatmap.files_path/index.html' '$oheatmap'
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Categorical metadata column to use as prediction target.                                      [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param exclude_min="True" label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" max="1.0" min="0.0" name="ptestsize" optional="True" type="float" value="0.2" />
+    <param exclude_min="True" label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" max="1.0" min="0.0" name="pstep" optional="True" type="float" value="0.05" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestClassifier">RandomForestClassifier</option>
+      <option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
+      <option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
+      <option value="AdaBoostClassifier">AdaBoostClassifier</option>
+      <option value="KNeighborsClassifier">KNeighborsClassifier</option>
+      <option value="LinearSVC">LinearSVC</option>
+      <option value="SVC">SVC</option>
+    </param>
+    <param label="--p-optimize-feature-selection: --p-optimize-feature-selection: / --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="YellowOrangeBrown">YellowOrangeBrown</option>
+      <option value="YellowOrangeRed">YellowOrangeRed</option>
+      <option value="OrangeRed">OrangeRed</option>
+      <option value="PurpleRed">PurpleRed</option>
+      <option value="RedPurple">RedPurple</option>
+      <option value="BluePurple">BluePurple</option>
+      <option value="GreenBlue">GreenBlue</option>
+      <option value="PurpleBlue">PurpleBlue</option>
+      <option value="YellowGreen">YellowGreen</option>
+      <option value="summer">summer</option>
+      <option value="copper">copper</option>
+      <option value="viridis">viridis</option>
+      <option value="cividis">cividis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="sirocco">sirocco</option>
+      <option value="drifting">drifting</option>
+      <option value="melancholy">melancholy</option>
+      <option value="enigma">enigma</option>
+      <option value="eros">eros</option>
+      <option value="spectre">spectre</option>
+      <option value="ambition">ambition</option>
+      <option value="mysteriousstains">mysteriousstains</option>
+      <option value="daydream">daydream</option>
+      <option value="solano">solano</option>
+      <option value="navarro">navarro</option>
+      <option value="dandelions">dandelions</option>
+      <option value="deepblue">deepblue</option>
+      <option value="verve">verve</option>
+      <option value="greyscale">greyscale</option>
+    </param>
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: probabilities.qza" name="oprobabilities"/>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="html" label="${tool.name} on ${on_string}: modelsummary.qzv" name="omodelsummary"/>
-		<data format="html" label="${tool.name} on ${on_string}: accuracyresults.qzv" name="oaccuracyresults"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="html" label="${tool.name} on ${on_string}: modelsummary.html" name="omodelsummary" />
+    <data format="html" label="${tool.name} on ${on_string}: accuracyresults.html" name="oaccuracyresults" />
+    <data format="qza" label="${tool.name} on ${on_string}: probabilities.qza" name="oprobabilities" />
+    <data format="html" label="${tool.name} on ${on_string}: heatmap.html" name="oheatmap" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Train and test a cross-validated supervised learning classifier.
-################################################################
+###############################################################
 
 Predicts a categorical sample metadata column using a supervised learning
 classifier. Splits input data into training and test sets. The training set
@@ -182,6 +212,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -195,7 +227,7 @@
     elimination.
 parameter_tuning : Bool, optional
     Automatically tune hyperparameters using random grid search.
-palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
+palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'cividis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
     The color palette to use for plotting.
 missing_samples : Str % Choices('error', 'ignore'), optional
     How to handle missing samples in metadata. "error" will fail if missing
@@ -218,9 +250,11 @@
     Accuracy results visualization.
 probabilities : SampleData[Probabilities]
     Predicted class probabilities for each input sample.
-	]]></help>
-<macros>
+heatmap : Visualization
+    A heatmap of the top 50 most important features from the table.
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_confusion-matrix.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_confusion-matrix.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,83 +1,148 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_confusion-matrix" name="qiime sample-classifier confusion-matrix" version="2019.7">
-	<description> - Make a confusion matrix from sample classifier predictions.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_confusion-matrix" name="qiime sample-classifier confusion-matrix"
+      version="2020.8">
+  <description>Make a confusion matrix from sample classifier predictions.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier confusion-matrix
 
 --i-predictions=$ipredictions
---m-truth-column="$mtruthcolumn"
---m-truth-file=mtruthfile
+
+#if str($iprobabilities) != 'None':
+--i-probabilities=$iprobabilities
+#end if
+
+#if str($mtruthfile) != 'None':
+--m-truth-file=$mtruthfile
+#end if
+
+#if '__ob__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__ob__', '[')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__cb__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__cb__', ']')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if 'X' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('X', '\\')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__sq__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__sq__', "'")
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__db__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__db__', '"')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+
+--m-truth-column=$mtruthcolumn
+
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
+#end if
+
+#if str($pvmin) != 'None':
+--p-vmin=$pvmin
+#end if
+
+#if str($pvmax) != 'None':
+--p-vmax=$pvmax
 #end if
 
 #if str($ppalette) != 'None':
- --p-palette=$ppalette
+--p-palette=$ppalette
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp oprobabilities.qza $oprobabilities
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-cp mtruthfile.qza $mtruthfile
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-predictions: ARTIFACT SampleData[ClassifierPredictions] Predicted values to plot on x axis. Should be predictions of categorical data produced by a sample classifier.                                  [required]" name="ipredictions" optional="False" type="data"/>
-		<param label="--m-truth-column: COLUMN  MetadataColumn[Categorical] Metadata column (true values) to plot on y axis. [required]" name="mtruthcolumn" optional="False" type="text"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
-		<param label="--p-palette: " name="ppalette" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="YellowOrangeBrown">YellowOrangeBrown</option>
-			<option value="YellowOrangeRed">YellowOrangeRed</option>
-			<option value="OrangeRed">OrangeRed</option>
-			<option value="PurpleRed">PurpleRed</option>
-			<option value="RedPurple">RedPurple</option>
-			<option value="BluePurple">BluePurple</option>
-			<option value="GreenBlue">GreenBlue</option>
-			<option value="PurpleBlue">PurpleBlue</option>
-			<option value="YellowGreen">YellowGreen</option>
-			<option value="summer">summer</option>
-			<option value="copper">copper</option>
-			<option value="viridis">viridis</option>
-			<option value="plasma">plasma</option>
-			<option value="inferno">inferno</option>
-			<option value="magma">magma</option>
-			<option value="sirocco">sirocco</option>
-			<option value="drifting">drifting</option>
-			<option value="melancholy">melancholy</option>
-			<option value="enigma">enigma</option>
-			<option value="eros">eros</option>
-			<option value="spectre">spectre</option>
-			<option value="ambition">ambition</option>
-			<option value="mysteriousstains">mysteriousstains</option>
-			<option value="daydream">daydream</option>
-			<option value="solano">solano</option>
-			<option value="navarro">navarro</option>
-			<option value="dandelions">dandelions</option>
-			<option value="deepblue">deepblue</option>
-			<option value="verve">verve</option>
-			<option value="greyscale">greyscale</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-		<data format="qza" label="${tool.name} on ${on_string}: truthfile.qza" name="mtruthfile"/>
-	</outputs>
-	<help><![CDATA[
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-predictions: ARTIFACT SampleData[ClassifierPredictions] Predicted values to plot on x axis. Should be predictions of categorical data produced by a sample classifier.                                  [required]" name="ipredictions" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-probabilities: ARTIFACT SampleData[Probabilities] Predicted class probabilities for each input sample. [optional]" name="iprobabilities" optional="False" type="data" />
+    <param label="--m-truth-file: METADATA" name="mtruthfile" optional="False" type="data" />
+    <param label="--m-truth-column: COLUMN  MetadataColumn[Categorical] Metadata column (true values) to plot on y axis. [required]" name="mtruthcolumn" optional="False" type="text" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--p-vmin: " name="pvmin" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="auto">auto</option>
+    </param>
+    <param label="--p-vmax: " name="pvmax" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="auto">auto</option>
+    </param>
+    <param label="--p-palette: " name="ppalette" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="YellowOrangeBrown">YellowOrangeBrown</option>
+      <option value="YellowOrangeRed">YellowOrangeRed</option>
+      <option value="OrangeRed">OrangeRed</option>
+      <option value="PurpleRed">PurpleRed</option>
+      <option value="RedPurple">RedPurple</option>
+      <option value="BluePurple">BluePurple</option>
+      <option value="GreenBlue">GreenBlue</option>
+      <option value="PurpleBlue">PurpleBlue</option>
+      <option value="YellowGreen">YellowGreen</option>
+      <option value="summer">summer</option>
+      <option value="copper">copper</option>
+      <option value="viridis">viridis</option>
+      <option value="cividis">cividis</option>
+      <option value="plasma">plasma</option>
+      <option value="inferno">inferno</option>
+      <option value="magma">magma</option>
+      <option value="sirocco">sirocco</option>
+      <option value="drifting">drifting</option>
+      <option value="melancholy">melancholy</option>
+      <option value="enigma">enigma</option>
+      <option value="eros">eros</option>
+      <option value="spectre">spectre</option>
+      <option value="ambition">ambition</option>
+      <option value="mysteriousstains">mysteriousstains</option>
+      <option value="daydream">daydream</option>
+      <option value="solano">solano</option>
+      <option value="navarro">navarro</option>
+      <option value="dandelions">dandelions</option>
+      <option value="deepblue">deepblue</option>
+      <option value="verve">verve</option>
+      <option value="greyscale">greyscale</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Make a confusion matrix from sample classifier predictions.
-###########################################################
+###############################################################
 
 Make a confusion matrix and calculate accuracy of predicted vs. true values
-for a set of samples classified using a sample classifier.
+for a set of samples classified using a sample classifier. If per-sample
+class probabilities are provided, will also generate Receiver Operating
+Characteristic curves and calculate area under the curve for each class.
 
 Parameters
 ----------
@@ -86,20 +151,28 @@
     categorical data produced by a sample classifier.
 truth : MetadataColumn[Categorical]
     Metadata column (true values) to plot on y axis.
+probabilities : SampleData[Probabilities], optional
+    Predicted class probabilities for each input sample.
 missing_samples : Str % Choices('error', 'ignore'), optional
     How to handle missing samples in metadata. "error" will fail if missing
     samples are detected. "ignore" will cause the feature table and
     metadata to be filtered, so that only samples found in both files are
     retained.
-palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
+vmin : Float | Str % Choices('auto'), optional
+    The minimum value to use for anchoring the colormap. If "auto", vmin is
+    set to the minimum value in the data.
+vmax : Float | Str % Choices('auto'), optional
+    The maximum value to use for anchoring the colormap. If "auto", vmax is
+    set to the maximum value in the data.
+palette : Str % Choices('YellowOrangeBrown', 'YellowOrangeRed', 'OrangeRed', 'PurpleRed', 'RedPurple', 'BluePurple', 'GreenBlue', 'PurpleBlue', 'YellowGreen', 'summer', 'copper', 'viridis', 'cividis', 'plasma', 'inferno', 'magma', 'sirocco', 'drifting', 'melancholy', 'enigma', 'eros', 'spectre', 'ambition', 'mysteriousstains', 'daydream', 'solano', 'navarro', 'dandelions', 'deepblue', 'verve', 'greyscale'), optional
     The color palette to use for plotting.
 
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_fit-classifier.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_fit-classifier.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,40 +1,62 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_fit-classifier" name="qiime sample-classifier fit-classifier" version="2019.7">
-	<description> - Fit a supervised learning classifier.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_fit-classifier" name="qiime sample-classifier fit-classifier"
+      version="2020.8">
+  <description>Fit a supervised learning classifier.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier fit-classifier
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
-
-#if str($pstep):
- --p-step=$pstep
-#end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($pcv):
- --p-cv=$pcv
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
-
-#if str($prandomstate):
- --p-random-state="$prandomstate"
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+--m-metadata-column=$mmetadatacolumn
 
 
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
+--p-step=$pstep
+
+--p-cv=$pcv
+
+#if str($prandomstate):
+  --p-random-state=$prandomstate
 #end if
+--p-n-jobs=$pnjobs
+
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $poptimizefeatureselection:
@@ -46,58 +68,61 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
-
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
-
-
-
 --o-sample-estimator=osampleestimator
+
 --o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp osampleestimator.qza $osampleestimator;
 cp ofeatureimportance.qza $ofeatureimportance
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" name="pstep" optional="True" type="float" value="0.05" min="0" max="1" exclusive_start="True"/>
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestClassifier">RandomForestClassifier</option>
-			<option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
-			<option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
-			<option value="AdaBoostClassifier">AdaBoostClassifier</option>
-			<option value="KNeighborsClassifier">KNeighborsClassifier</option>
-			<option value="LinearSVC">LinearSVC</option>
-			<option value="SVC">SVC</option>
-		</param>
-		<param label="--p-optimize-feature-selection: --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param exclude_min="True" label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" max="1.0" min="0.0" name="pstep" optional="True" type="float" value="0.05" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestClassifier">RandomForestClassifier</option>
+      <option value="ExtraTreesClassifier">ExtraTreesClassifier</option>
+      <option value="GradientBoostingClassifier">GradientBoostingClassifier</option>
+      <option value="AdaBoostClassifier">AdaBoostClassifier</option>
+      <option value="KNeighborsClassifier">KNeighborsClassifier</option>
+      <option value="LinearSVC">LinearSVC</option>
+      <option value="SVC">SVC</option>
+    </param>
+    <param label="--p-optimize-feature-selection: --p-optimize-feature-selection: / --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Fit a supervised learning classifier.
-#####################################
+###############################################################
 
 Fit a supervised learning classifier. Outputs the fit estimator (for
 prediction of test samples and/or unknown samples) and the relative
@@ -119,6 +144,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -144,9 +171,9 @@
     Trained sample classifier.
 feature_importance : FeatureData[Importance]
     Importance of each input feature to model accuracy.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_fit-regressor.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_fit-regressor.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,39 +1,62 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_fit-regressor" name="qiime sample-classifier fit-regressor" version="2019.7">
-	<description> - Fit a supervised learning regressor.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_fit-regressor" name="qiime sample-classifier fit-regressor"
+      version="2020.8">
+  <description>Fit a supervised learning regressor.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier fit-regressor
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($pstep):
- --p-step=$pstep
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--m-metadata-column=$mmetadatacolumn
+
+
+--p-step=$pstep
+
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
+--p-n-jobs=$pnjobs
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
-
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
-#end if
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $poptimizefeatureselection:
@@ -45,62 +68,64 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
-
-
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
-
-
-
 --o-sample-estimator=osampleestimator
+
 --o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp osampleestimator.qza $osampleestimator;
 cp ofeatureimportance.qza $ofeatureimportance
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" name="pstep" optional="True" type="float" value="0.05" min="0" max="1" exclusive_start="True"/>
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestRegressor">RandomForestRegressor</option>
-			<option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
-			<option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
-			<option value="AdaBoostRegressor">AdaBoostRegressor</option>
-			<option value="ElasticNet">ElasticNet</option>
-			<option value="Ridge">Ridge</option>
-			<option value="Lasso">Lasso</option>
-			<option value="KNeighborsRegressor">KNeighborsRegressor</option>
-			<option value="LinearSVR">LinearSVR</option>
-			<option value="SVR">SVR</option>
-		</param>
-		<param label="--p-optimize-feature-selection: --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param exclude_min="True" label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" max="1.0" min="0.0" name="pstep" optional="True" type="float" value="0.05" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestRegressor">RandomForestRegressor</option>
+      <option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
+      <option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
+      <option value="AdaBoostRegressor">AdaBoostRegressor</option>
+      <option value="ElasticNet">ElasticNet</option>
+      <option value="Ridge">Ridge</option>
+      <option value="Lasso">Lasso</option>
+      <option value="KNeighborsRegressor">KNeighborsRegressor</option>
+      <option value="LinearSVR">LinearSVR</option>
+      <option value="SVR">SVR</option>
+    </param>
+    <param label="--p-optimize-feature-selection: --p-optimize-feature-selection: / --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Fit a supervised learning regressor.
-####################################
+###############################################################
 
 Fit a supervised learning regressor. Outputs the fit estimator (for
 prediction of test samples and/or unknown samples) and the relative
@@ -122,6 +147,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -144,12 +171,11 @@
 Returns
 -------
 sample_estimator : SampleEstimator[Regressor]
-	\
 feature_importance : FeatureData[Importance]
     Importance of each input feature to model accuracy.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_heatmap.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_heatmap.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,37 +1,90 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_heatmap" name="qiime sample-classifier heatmap" version="2019.7">
-	<description> - Generate heatmap of important features.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_heatmap" name="qiime sample-classifier heatmap"
+      version="2020.8">
+  <description>Generate heatmap of important features.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier heatmap
 
 --i-table=$itable
+
 --i-importance=$iimportance
-
-
+# if $input_files_msamplemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-sample-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-sample-metadata-file=$list_dict_to_string($input_files_msamplemetadatafile)
+# end if
 
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if '__ob__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__ob__', '[')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__cb__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__cb__', ']')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if 'X' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('X', '\\')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__sq__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__sq__', "'")
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
+#end if
+#if '__db__' in str($msamplemetadatacolumn):
+  #set $msamplemetadatacolumn_temp = $msamplemetadatacolumn.replace('__db__', '"')
+  #set $msamplemetadatacolumn = $msamplemetadatacolumn_temp
 #end if
 
-
-
+#if str($msamplemetadatacolumn):
+  --m-sample-metadata-column=$msamplemetadatacolumn
+#end if
+# if $input_files_mfeaturemetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-feature-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-feature-metadata-file=$list_dict_to_string($input_files_mfeaturemetadatafile)
+# end if
 
-
-#if str($mmetadatacolumn):
- --m-metadata-column="$mmetadatacolumn"
+#if '__ob__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__ob__', '[')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__cb__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__cb__', ']')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if 'X' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('X', '\\')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__sq__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__sq__', "'")
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
+#end if
+#if '__db__' in str($mfeaturemetadatacolumn):
+  #set $mfeaturemetadatacolumn_temp = $mfeaturemetadatacolumn.replace('__db__', '"')
+  #set $mfeaturemetadatacolumn = $mfeaturemetadatacolumn_temp
 #end if
 
-#if str($pfeaturecount):
- --p-feature-count=$pfeaturecount
+#if str($mfeaturemetadatacolumn):
+  --m-feature-metadata-column=$mfeaturemetadatacolumn
 #end if
 
-#if str($pimportancethreshold):
- --p-importance-threshold=$pimportancethreshold
-#end if
+--p-feature-count=$pfeaturecount
+
+--p-importance-threshold=$pimportancethreshold
 
 #if $pgroupsamples:
  --p-group-samples
@@ -41,274 +94,296 @@
  --p-no-normalize
 #end if
 
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
 #if str($pmetric) != 'None':
- --p-metric=$pmetric
+--p-metric=$pmetric
 #end if
 
 #if str($pmethod) != 'None':
- --p-method=$pmethod
+--p-method=$pmethod
 #end if
 
 #if str($pcluster) != 'None':
- --p-cluster=$pcluster
+--p-cluster=$pcluster
 #end if
 
 #if str($pcolorscheme) != 'None':
- --p-color-scheme=$pcolorscheme
+--p-color-scheme=$pcolorscheme
 #end if
 
 --o-heatmap=oheatmap
+
 --o-filtered-table=ofilteredtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path oheatmap.qzv --output-path out   && mkdir -p '$oheatmap.files_path'
-&& cp -r out/* '$oheatmap.files_path'
-&& mv '$oheatmap.files_path/index.html' '$oheatmap';
 cp ofilteredtable.qza $ofilteredtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-importance: ARTIFACT FeatureData[Importance] Feature importances.                       [required]" name="iimportance" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Categorical] Metadata file to convert to feature table. [optional]" name="mmetadatacolumn" optional="True" type="text"/>
-		<param label="--p-feature-count: INTEGER Range(0, None)       Filter feature table to include top N most important features. Set to zero to include all features. [default: 50]" name="pfeaturecount" optional="True" type="integer" value="50" min="0"/>
-		<param label="--p-importance-threshold: NUMBER Range(0, None)       Filter feature table to exclude any features with an importance score less than this threshold. Set to zero to include all features.            [default: 0]" name="pimportancethreshold" optional="True" type="float" value="0" min="0"/>
-		<param label="--p-group-samples: --p-no-group-samples Group samples by metadata.           [default: False]" name="pgroupsamples" selected="False" type="boolean"/>
-		<param label="--p-no-normalize: Normalize the feature table by adding a psuedocount of 1 and then taking the log10 of the table. [default: False]" name="pnonormalize" selected="False" type="boolean"/>
-		<param label="--p-metric: " name="pmetric" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="kulsinski">kulsinski</option>
-			<option value="correlation">correlation</option>
-			<option value="hamming">hamming</option>
-			<option value="canberra">canberra</option>
-			<option value="sqeuclidean">sqeuclidean</option>
-			<option value="sokalmichener">sokalmichener</option>
-			<option value="cityblock">cityblock</option>
-			<option value="braycurtis">braycurtis</option>
-			<option value="matching">matching</option>
-			<option value="russellrao">russellrao</option>
-			<option value="cosine">cosine</option>
-			<option value="yule">yule</option>
-			<option value="minkowski">minkowski</option>
-			<option value="euclidean">euclidean</option>
-			<option value="rogerstanimoto">rogerstanimoto</option>
-			<option value="seuclidean">seuclidean</option>
-			<option value="jaccard">jaccard</option>
-			<option value="sokalsneath">sokalsneath</option>
-			<option value="chebyshev">chebyshev</option>
-			<option value="dice">dice</option>
-			<option value="mahalanobis">mahalanobis</option>
-		</param>
-		<param label="--p-method: " name="pmethod" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="complete">complete</option>
-			<option value="centroid">centroid</option>
-			<option value="weighted">weighted</option>
-			<option value="single">single</option>
-			<option value="ward">ward</option>
-			<option value="average">average</option>
-			<option value="median">median</option>
-		</param>
-		<param label="--p-cluster: " name="pcluster" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="features">features</option>
-			<option value="both">both</option>
-			<option value="samples">samples</option>
-			<option value="none">none</option>
-		</param>
-		<param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="bone">bone</option>
-			<option value="PRGn_r">PRGn_r</option>
-			<option value="Vega10_r">Vega10_r</option>
-			<option value="GnBu">GnBu</option>
-			<option value="hsv">hsv</option>
-			<option value="binary_r">binary_r</option>
-			<option value="GnBu_r">GnBu_r</option>
-			<option value="icefire">icefire</option>
-			<option value="winter">winter</option>
-			<option value="BuGn_r">BuGn_r</option>
-			<option value="plasma_r">plasma_r</option>
-			<option value="Vega20_r">Vega20_r</option>
-			<option value="summer_r">summer_r</option>
-			<option value="cool_r">cool_r</option>
-			<option value="Spectral">Spectral</option>
-			<option value="gist_heat_r">gist_heat_r</option>
-			<option value="Vega20b_r">Vega20b_r</option>
-			<option value="mako_r">mako_r</option>
-			<option value="RdBu_r">RdBu_r</option>
-			<option value="cubehelix">cubehelix</option>
-			<option value="tab20b_r">tab20b_r</option>
-			<option value="CMRmap">CMRmap</option>
-			<option value="Greys">Greys</option>
-			<option value="PuOr">PuOr</option>
-			<option value="cubehelix_r">cubehelix_r</option>
-			<option value="Wistia">Wistia</option>
-			<option value="gnuplot2">gnuplot2</option>
-			<option value="bwr">bwr</option>
-			<option value="gnuplot_r">gnuplot_r</option>
-			<option value="viridis">viridis</option>
-			<option value="gist_ncar_r">gist_ncar_r</option>
-			<option value="gist_ncar">gist_ncar</option>
-			<option value="plasma">plasma</option>
-			<option value="PuRd">PuRd</option>
-			<option value="afmhot">afmhot</option>
-			<option value="icefire_r">icefire_r</option>
-			<option value="tab20b">tab20b</option>
-			<option value="gist_yarg_r">gist_yarg_r</option>
-			<option value="hot">hot</option>
-			<option value="YlOrRd_r">YlOrRd_r</option>
-			<option value="Vega20c">Vega20c</option>
-			<option value="Dark2_r">Dark2_r</option>
-			<option value="Set3">Set3</option>
-			<option value="PuBu">PuBu</option>
-			<option value="magma">magma</option>
-			<option value="Pastel2">Pastel2</option>
-			<option value="terrain">terrain</option>
-			<option value="autumn_r">autumn_r</option>
-			<option value="spectral">spectral</option>
-			<option value="brg">brg</option>
-			<option value="Set3_r">Set3_r</option>
-			<option value="coolwarm">coolwarm</option>
-			<option value="Set2_r">Set2_r</option>
-			<option value="Paired_r">Paired_r</option>
-			<option value="tab20c_r">tab20c_r</option>
-			<option value="mako">mako</option>
-			<option value="gist_rainbow_r">gist_rainbow_r</option>
-			<option value="RdBu">RdBu</option>
-			<option value="PuBu_r">PuBu_r</option>
-			<option value="jet_r">jet_r</option>
-			<option value="gist_earth_r">gist_earth_r</option>
-			<option value="Greys_r">Greys_r</option>
-			<option value="gray">gray</option>
-			<option value="winter_r">winter_r</option>
-			<option value="rocket">rocket</option>
-			<option value="Set2">Set2</option>
-			<option value="seismic_r">seismic_r</option>
-			<option value="Pastel1">Pastel1</option>
-			<option value="RdYlGn_r">RdYlGn_r</option>
-			<option value="copper">copper</option>
-			<option value="spring_r">spring_r</option>
-			<option value="BuGn">BuGn</option>
-			<option value="Greens">Greens</option>
-			<option value="Blues">Blues</option>
-			<option value="PiYG_r">PiYG_r</option>
-			<option value="YlGnBu">YlGnBu</option>
-			<option value="Paired">Paired</option>
-			<option value="YlGn_r">YlGn_r</option>
-			<option value="RdPu_r">RdPu_r</option>
-			<option value="BrBG_r">BrBG_r</option>
-			<option value="bone_r">bone_r</option>
-			<option value="RdYlBu">RdYlBu</option>
-			<option value="gist_rainbow">gist_rainbow</option>
-			<option value="bwr_r">bwr_r</option>
-			<option value="inferno_r">inferno_r</option>
-			<option value="inferno">inferno</option>
-			<option value="gist_stern_r">gist_stern_r</option>
-			<option value="gray_r">gray_r</option>
-			<option value="Purples">Purples</option>
-			<option value="RdGy">RdGy</option>
-			<option value="hot_r">hot_r</option>
-			<option value="YlOrBr_r">YlOrBr_r</option>
-			<option value="nipy_spectral">nipy_spectral</option>
-			<option value="nipy_spectral_r">nipy_spectral_r</option>
-			<option value="ocean">ocean</option>
-			<option value="Set1">Set1</option>
-			<option value="Dark2">Dark2</option>
-			<option value="Oranges">Oranges</option>
-			<option value="Pastel1_r">Pastel1_r</option>
-			<option value="Oranges_r">Oranges_r</option>
-			<option value="Pastel2_r">Pastel2_r</option>
-			<option value="YlGn">YlGn</option>
-			<option value="Vega20b">Vega20b</option>
-			<option value="PuRd_r">PuRd_r</option>
-			<option value="PuBuGn_r">PuBuGn_r</option>
-			<option value="afmhot_r">afmhot_r</option>
-			<option value="spring">spring</option>
-			<option value="tab20_r">tab20_r</option>
-			<option value="PuBuGn">PuBuGn</option>
-			<option value="gist_yarg">gist_yarg</option>
-			<option value="PiYG">PiYG</option>
-			<option value="flag">flag</option>
-			<option value="rainbow_r">rainbow_r</option>
-			<option value="hsv_r">hsv_r</option>
-			<option value="prism_r">prism_r</option>
-			<option value="ocean_r">ocean_r</option>
-			<option value="magma_r">magma_r</option>
-			<option value="flag_r">flag_r</option>
-			<option value="Blues_r">Blues_r</option>
-			<option value="gnuplot2_r">gnuplot2_r</option>
-			<option value="gist_gray">gist_gray</option>
-			<option value="spectral_r">spectral_r</option>
-			<option value="CMRmap_r">CMRmap_r</option>
-			<option value="rainbow">rainbow</option>
-			<option value="gnuplot">gnuplot</option>
-			<option value="vlag">vlag</option>
-			<option value="Set1_r">Set1_r</option>
-			<option value="Accent">Accent</option>
-			<option value="coolwarm_r">coolwarm_r</option>
-			<option value="brg_r">brg_r</option>
-			<option value="pink_r">pink_r</option>
-			<option value="YlOrBr">YlOrBr</option>
-			<option value="Vega20c_r">Vega20c_r</option>
-			<option value="Wistia_r">Wistia_r</option>
-			<option value="RdGy_r">RdGy_r</option>
-			<option value="tab20">tab20</option>
-			<option value="BrBG">BrBG</option>
-			<option value="rocket_r">rocket_r</option>
-			<option value="OrRd_r">OrRd_r</option>
-			<option value="YlGnBu_r">YlGnBu_r</option>
-			<option value="viridis_r">viridis_r</option>
-			<option value="copper_r">copper_r</option>
-			<option value="gist_heat">gist_heat</option>
-			<option value="Vega10">Vega10</option>
-			<option value="PuOr_r">PuOr_r</option>
-			<option value="binary">binary</option>
-			<option value="pink">pink</option>
-			<option value="Reds">Reds</option>
-			<option value="Purples_r">Purples_r</option>
-			<option value="cool">cool</option>
-			<option value="prism">prism</option>
-			<option value="terrain_r">terrain_r</option>
-			<option value="BuPu_r">BuPu_r</option>
-			<option value="Spectral_r">Spectral_r</option>
-			<option value="Greens_r">Greens_r</option>
-			<option value="gist_gray_r">gist_gray_r</option>
-			<option value="RdYlGn">RdYlGn</option>
-			<option value="tab20c">tab20c</option>
-			<option value="Reds_r">Reds_r</option>
-			<option value="tab10">tab10</option>
-			<option value="summer">summer</option>
-			<option value="gist_stern">gist_stern</option>
-			<option value="tab10_r">tab10_r</option>
-			<option value="YlOrRd">YlOrRd</option>
-			<option value="jet">jet</option>
-			<option value="Vega20">Vega20</option>
-			<option value="vlag_r">vlag_r</option>
-			<option value="RdPu">RdPu</option>
-			<option value="OrRd">OrRd</option>
-			<option value="Accent_r">Accent_r</option>
-			<option value="autumn">autumn</option>
-			<option value="BuPu">BuPu</option>
-			<option value="RdYlBu_r">RdYlBu_r</option>
-			<option value="gist_earth">gist_earth</option>
-			<option value="seismic">seismic</option>
-			<option value="PRGn">PRGn</option>
-		</param>
 
-
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
-
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-importance: ARTIFACT FeatureData[Importance] Feature importances.                       [required]" name="iimportance" optional="False" type="data" />
+    <repeat name="input_files_msamplemetadatafile" optional="True" title="--m-sample-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-sample-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-sample-metadata-column: COLUMN  MetadataColumn[Categorical] Sample metadata column to use for sample labeling or grouping.                                  [optional]" name="msamplemetadatacolumn" optional="False" type="text" />
+    <repeat name="input_files_mfeaturemetadatafile" optional="True" title="--m-feature-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-feature-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-feature-metadata-column: COLUMN  MetadataColumn[Categorical] Feature metadata (e.g., taxonomy) to use for labeling features in the heatmap.          [optional]" name="mfeaturemetadatacolumn" optional="False" type="text" />
+    <param label="--p-feature-count: INTEGER Range(0, None)       Filter feature table to include top N most important features. Set to zero to include all features. [default: 50]" min="0" name="pfeaturecount" optional="True" type="integer" value="50" />
+    <param label="--p-importance-threshold: NUMBER Range(0, None)       Filter feature table to exclude any features with an importance score less than this threshold. Set to zero to include all features.            [default: 0]" min="0" name="pimportancethreshold" optional="True" type="integer" value="0" />
+    <param label="--p-group-samples: --p-group-samples: / --p-no-group-samples Group samples by sample metadata.    [default: False]" name="pgroupsamples" selected="False" type="boolean" />
+    <param label="--p-no-normalize: Do not normalize the feature table by adding a psuedocount of 1 and then taking the log10 of the table. [default: True]" name="pnonormalize" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--p-metric: " name="pmetric" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="euclidean">euclidean</option>
+      <option value="cityblock">cityblock</option>
+      <option value="matching">matching</option>
+      <option value="russellrao">russellrao</option>
+      <option value="sokalmichener">sokalmichener</option>
+      <option value="kulsinski">kulsinski</option>
+      <option value="chebyshev">chebyshev</option>
+      <option value="hamming">hamming</option>
+      <option value="dice">dice</option>
+      <option value="yule">yule</option>
+      <option value="rogerstanimoto">rogerstanimoto</option>
+      <option value="braycurtis">braycurtis</option>
+      <option value="cosine">cosine</option>
+      <option value="minkowski">minkowski</option>
+      <option value="correlation">correlation</option>
+      <option value="sokalsneath">sokalsneath</option>
+      <option value="seuclidean">seuclidean</option>
+      <option value="canberra">canberra</option>
+      <option value="mahalanobis">mahalanobis</option>
+      <option value="jaccard">jaccard</option>
+      <option value="sqeuclidean">sqeuclidean</option>
+    </param>
+    <param label="--p-method: " name="pmethod" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="centroid">centroid</option>
+      <option value="median">median</option>
+      <option value="weighted">weighted</option>
+      <option value="average">average</option>
+      <option value="single">single</option>
+      <option value="complete">complete</option>
+      <option value="ward">ward</option>
+    </param>
+    <param label="--p-cluster: " name="pcluster" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="both">both</option>
+      <option value="none">none</option>
+      <option value="features">features</option>
+      <option value="samples">samples</option>
+    </param>
+    <param label="--p-color-scheme: " name="pcolorscheme" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Spectral">Spectral</option>
+      <option value="flag">flag</option>
+      <option value="jet">jet</option>
+      <option value="Vega20">Vega20</option>
+      <option value="terrain">terrain</option>
+      <option value="jet_r">jet_r</option>
+      <option value="Vega20c_r">Vega20c_r</option>
+      <option value="Oranges_r">Oranges_r</option>
+      <option value="spectral">spectral</option>
+      <option value="summer">summer</option>
+      <option value="BuPu_r">BuPu_r</option>
+      <option value="tab20b_r">tab20b_r</option>
+      <option value="Pastel1">Pastel1</option>
+      <option value="gnuplot_r">gnuplot_r</option>
+      <option value="seismic">seismic</option>
+      <option value="icefire">icefire</option>
+      <option value="Set1">Set1</option>
+      <option value="bwr">bwr</option>
+      <option value="coolwarm_r">coolwarm_r</option>
+      <option value="ocean_r">ocean_r</option>
+      <option value="gist_gray_r">gist_gray_r</option>
+      <option value="autumn">autumn</option>
+      <option value="BrBG">BrBG</option>
+      <option value="Pastel2">Pastel2</option>
+      <option value="GnBu">GnBu</option>
+      <option value="Vega20b_r">Vega20b_r</option>
+      <option value="tab20c">tab20c</option>
+      <option value="Paired">Paired</option>
+      <option value="YlOrRd_r">YlOrRd_r</option>
+      <option value="icefire_r">icefire_r</option>
+      <option value="cubehelix_r">cubehelix_r</option>
+      <option value="CMRmap_r">CMRmap_r</option>
+      <option value="RdBu">RdBu</option>
+      <option value="YlGn_r">YlGn_r</option>
+      <option value="gray_r">gray_r</option>
+      <option value="mako_r">mako_r</option>
+      <option value="OrRd_r">OrRd_r</option>
+      <option value="Vega10">Vega10</option>
+      <option value="Set3">Set3</option>
+      <option value="RdYlGn_r">RdYlGn_r</option>
+      <option value="hsv">hsv</option>
+      <option value="cool_r">cool_r</option>
+      <option value="Spectral_r">Spectral_r</option>
+      <option value="rainbow">rainbow</option>
+      <option value="cividis">cividis</option>
+      <option value="Blues_r">Blues_r</option>
+      <option value="PuOr_r">PuOr_r</option>
+      <option value="binary_r">binary_r</option>
+      <option value="RdGy">RdGy</option>
+      <option value="Pastel2_r">Pastel2_r</option>
+      <option value="Pastel1_r">Pastel1_r</option>
+      <option value="Dark2">Dark2</option>
+      <option value="vlag">vlag</option>
+      <option value="binary">binary</option>
+      <option value="pink">pink</option>
+      <option value="Purples">Purples</option>
+      <option value="cividis_r">cividis_r</option>
+      <option value="gray">gray</option>
+      <option value="seismic_r">seismic_r</option>
+      <option value="Greys">Greys</option>
+      <option value="tab20">tab20</option>
+      <option value="BuPu">BuPu</option>
+      <option value="RdBu_r">RdBu_r</option>
+      <option value="gnuplot2_r">gnuplot2_r</option>
+      <option value="Accent_r">Accent_r</option>
+      <option value="magma">magma</option>
+      <option value="copper_r">copper_r</option>
+      <option value="inferno">inferno</option>
+      <option value="nipy_spectral_r">nipy_spectral_r</option>
+      <option value="pink_r">pink_r</option>
+      <option value="copper">copper</option>
+      <option value="Dark2_r">Dark2_r</option>
+      <option value="YlGnBu_r">YlGnBu_r</option>
+      <option value="Wistia_r">Wistia_r</option>
+      <option value="spectral_r">spectral_r</option>
+      <option value="cubehelix">cubehelix</option>
+      <option value="tab20_r">tab20_r</option>
+      <option value="viridis">viridis</option>
+      <option value="RdYlBu">RdYlBu</option>
+      <option value="Blues">Blues</option>
+      <option value="rocket_r">rocket_r</option>
+      <option value="Set1_r">Set1_r</option>
+      <option value="brg_r">brg_r</option>
+      <option value="bone_r">bone_r</option>
+      <option value="gist_ncar_r">gist_ncar_r</option>
+      <option value="afmhot">afmhot</option>
+      <option value="RdYlBu_r">RdYlBu_r</option>
+      <option value="gist_earth_r">gist_earth_r</option>
+      <option value="RdGy_r">RdGy_r</option>
+      <option value="Vega10_r">Vega10_r</option>
+      <option value="gist_rainbow_r">gist_rainbow_r</option>
+      <option value="spring">spring</option>
+      <option value="Set3_r">Set3_r</option>
+      <option value="magma_r">magma_r</option>
+      <option value="mako">mako</option>
+      <option value="PuRd">PuRd</option>
+      <option value="gnuplot2">gnuplot2</option>
+      <option value="Paired_r">Paired_r</option>
+      <option value="Vega20b">Vega20b</option>
+      <option value="Accent">Accent</option>
+      <option value="hsv_r">hsv_r</option>
+      <option value="ocean">ocean</option>
+      <option value="gist_earth">gist_earth</option>
+      <option value="afmhot_r">afmhot_r</option>
+      <option value="bone">bone</option>
+      <option value="rocket">rocket</option>
+      <option value="RdYlGn">RdYlGn</option>
+      <option value="bwr_r">bwr_r</option>
+      <option value="RdPu_r">RdPu_r</option>
+      <option value="BuGn">BuGn</option>
+      <option value="PuBu">PuBu</option>
+      <option value="hot_r">hot_r</option>
+      <option value="Vega20c">Vega20c</option>
+      <option value="gist_yarg">gist_yarg</option>
+      <option value="tab10">tab10</option>
+      <option value="coolwarm">coolwarm</option>
+      <option value="winter_r">winter_r</option>
+      <option value="plasma_r">plasma_r</option>
+      <option value="Wistia">Wistia</option>
+      <option value="BuGn_r">BuGn_r</option>
+      <option value="Set2">Set2</option>
+      <option value="Vega20_r">Vega20_r</option>
+      <option value="hot">hot</option>
+      <option value="brg">brg</option>
+      <option value="BrBG_r">BrBG_r</option>
+      <option value="gist_heat">gist_heat</option>
+      <option value="YlOrRd">YlOrRd</option>
+      <option value="inferno_r">inferno_r</option>
+      <option value="viridis_r">viridis_r</option>
+      <option value="gist_stern_r">gist_stern_r</option>
+      <option value="tab20c_r">tab20c_r</option>
+      <option value="gist_gray">gist_gray</option>
+      <option value="Reds_r">Reds_r</option>
+      <option value="flag_r">flag_r</option>
+      <option value="Purples_r">Purples_r</option>
+      <option value="vlag_r">vlag_r</option>
+      <option value="summer_r">summer_r</option>
+      <option value="Greys_r">Greys_r</option>
+      <option value="PRGn">PRGn</option>
+      <option value="PiYG">PiYG</option>
+      <option value="gist_ncar">gist_ncar</option>
+      <option value="Oranges">Oranges</option>
+      <option value="Reds">Reds</option>
+      <option value="GnBu_r">GnBu_r</option>
+      <option value="RdPu">RdPu</option>
+      <option value="YlOrBr_r">YlOrBr_r</option>
+      <option value="autumn_r">autumn_r</option>
+      <option value="YlGn">YlGn</option>
+      <option value="CMRmap">CMRmap</option>
+      <option value="gnuplot">gnuplot</option>
+      <option value="rainbow_r">rainbow_r</option>
+      <option value="PiYG_r">PiYG_r</option>
+      <option value="Greens">Greens</option>
+      <option value="YlOrBr">YlOrBr</option>
+      <option value="prism_r">prism_r</option>
+      <option value="winter">winter</option>
+      <option value="gist_yarg_r">gist_yarg_r</option>
+      <option value="Set2_r">Set2_r</option>
+      <option value="nipy_spectral">nipy_spectral</option>
+      <option value="plasma">plasma</option>
+      <option value="OrRd">OrRd</option>
+      <option value="Greens_r">Greens_r</option>
+      <option value="tab10_r">tab10_r</option>
+      <option value="YlGnBu">YlGnBu</option>
+      <option value="prism">prism</option>
+      <option value="PRGn_r">PRGn_r</option>
+      <option value="gist_heat_r">gist_heat_r</option>
+      <option value="terrain_r">terrain_r</option>
+      <option value="tab20b">tab20b</option>
+      <option value="PuBuGn">PuBuGn</option>
+      <option value="PuBu_r">PuBu_r</option>
+      <option value="spring_r">spring_r</option>
+      <option value="gist_rainbow">gist_rainbow</option>
+      <option value="cool">cool</option>
+      <option value="PuOr">PuOr</option>
+      <option value="PuRd_r">PuRd_r</option>
+      <option value="gist_stern">gist_stern</option>
+      <option value="PuBuGn_r">PuBuGn_r</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: heatmap.qzv" name="oheatmap"/>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: heatmap.html" name="oheatmap" />
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Generate heatmap of important features.
-#######################################
+###############################################################
 
 Generate a heatmap of important features. Features are filtered based on
-importance scores; samples are optionally grouped by metadata; and a
+importance scores; samples are optionally grouped by sample metadata; and a
 heatmap is generated that displays (normalized) feature abundances per
 sample.
 
@@ -319,8 +394,11 @@
     prediction.
 importance : FeatureData[Importance]
     Feature importances.
-metadata : MetadataColumn[Categorical], optional
-    Metadata file to convert to feature table.
+sample_metadata : MetadataColumn[Categorical], optional
+    Sample metadata column to use for sample labeling or grouping.
+feature_metadata : MetadataColumn[Categorical], optional
+    Feature metadata (e.g., taxonomy) to use for labeling features in the
+    heatmap.
 feature_count : Int % Range(0, None), optional
     Filter feature table to include top N most important features. Set to
     zero to include all features.
@@ -328,19 +406,24 @@
     Filter feature table to exclude any features with an importance score
     less than this threshold. Set to zero to include all features.
 group_samples : Bool, optional
-    Group samples by metadata.
+    Group samples by sample metadata.
 normalize : Bool, optional
     Normalize the feature table by adding a psuedocount of 1 and then
     taking the log10 of the table.
-metric : Str % Choices('sokalmichener', 'yule', 'russellrao', 'rogerstanimoto', 'minkowski', 'correlation', 'jaccard', 'cosine', 'chebyshev', 'euclidean', 'sqeuclidean', 'cityblock', 'matching', 'dice', 'mahalanobis', 'kulsinski', 'seuclidean', 'sokalsneath', 'canberra', 'hamming', 'braycurtis'), optional
+missing_samples : Str % Choices('error', 'ignore'), optional
+    How to handle missing samples in metadata. "error" will fail if missing
+    samples are detected. "ignore" will cause the feature table and
+    metadata to be filtered, so that only samples found in both files are
+    retained.
+metric : Str % Choices('yule', 'seuclidean', 'sokalmichener', 'sokalsneath', 'hamming', 'canberra', 'cityblock', 'russellrao', 'jaccard', 'braycurtis', 'minkowski', 'euclidean', 'kulsinski', 'cosine', 'sqeuclidean', 'correlation', 'dice', 'rogerstanimoto', 'mahalanobis', 'chebyshev', 'matching'), optional
     Metrics exposed by seaborn (see http://seaborn.pydata.org/generated/sea
     born.clustermap.html#seaborn.clustermap for more detail).
-method : Str % Choices('average', 'complete', 'median', 'centroid', 'single', 'ward', 'weighted'), optional
+method : Str % Choices('complete', 'average', 'ward', 'median', 'weighted', 'centroid', 'single'), optional
     Clustering methods exposed by seaborn (see http://seaborn.pydata.org/ge
     nerated/seaborn.clustermap.html#seaborn.clustermap for more detail).
-cluster : Str % Choices('features', 'samples', 'none', 'both'), optional
+cluster : Str % Choices('both', 'features', 'none', 'samples'), optional
     Specify which axes to cluster.
-color_scheme : Str % Choices('rocket', 'RdYlBu_r', 'winter', 'viridis', 'BrBG', 'magma_r', 'YlOrBr', 'seismic', 'Set1', 'gist_yarg_r', 'gist_rainbow', 'autumn_r', 'Wistia_r', 'cool_r', 'hsv_r', 'flag', 'Vega20b_r', 'mako_r', 'coolwarm', 'Vega20_r', 'jet', 'cubehelix_r', 'bwr_r', 'brg', 'RdPu', 'gist_ncar', 'RdPu_r', 'cool', 'gnuplot_r', 'Set3', 'ocean_r', 'tab20b', 'tab20b_r', 'OrRd_r', 'Spectral_r', 'gray', 'OrRd', 'prism_r', 'Wistia', 'hot', 'icefire', 'plasma', 'Purples_r', 'viridis_r', 'gnuplot2_r', 'CMRmap', 'YlGnBu_r', 'Set3_r', 'PuRd_r', 'Reds_r', 'gray_r', 'Dark2', 'Vega20b', 'Paired', 'gist_yarg', 'RdYlGn_r', 'Greens', 'YlGnBu', 'tab20', 'gnuplot', 'PuBuGn_r', 'spectral_r', 'tab20c_r', 'gist_rainbow_r', 'hot_r', 'spring_r', 'gist_gray', 'Blues_r', 'Spectral', 'magma', 'GnBu_r', 'inferno_r', 'tab10', 'gist_gray_r', 'seismic_r', 'spring', 'BuPu_r', 'spectral', 'BrBG_r', 'PiYG', 'inferno', 'YlOrBr_r', 'Set1_r', 'YlOrRd_r', 'summer', 'vlag', 'Oranges_r', 'Dark2_r', 'binary_r', 'icefire_r', 'RdYlGn', 'hsv', 'gist_heat', 'PRGn_r', 'pink_r', 'Pastel2_r', 'copper_r', 'BuGn', 'gist_stern_r', 'PuRd', 'gist_earth_r', 'YlOrRd', 'Reds', 'gist_earth', 'Greens_r', 'Vega10', 'ocean', 'brg_r', 'rainbow_r', 'tab20_r', 'Purples', 'Blues', 'Accent', 'afmhot_r', 'Set2_r', 'RdBu', 'Vega20c', 'Pastel1', 'RdGy_r', 'PuBuGn', 'copper', 'PuOr', 'jet_r', 'YlGn_r', 'gist_heat_r', 'PuOr_r', 'bone', 'BuGn_r', 'terrain_r', 'mako', 'Vega20c_r', 'Paired_r', 'PuBu_r', 'tab20c', 'Pastel1_r', 'flag_r', 'plasma_r', 'Oranges', 'autumn', 'bone_r', 'GnBu', 'bwr', 'Greys', 'RdBu_r', 'RdGy', 'winter_r', 'gnuplot2', 'coolwarm_r', 'pink', 'nipy_spectral', 'Greys_r', 'summer_r', 'Vega20', 'BuPu', 'afmhot', 'gist_stern', 'binary', 'PiYG_r', 'YlGn', 'rocket_r', 'cubehelix', 'rainbow', 'Accent_r', 'CMRmap_r', 'PRGn', 'PuBu', 'tab10_r', 'prism', 'vlag_r', 'Set2', 'gist_ncar_r', 'nipy_spectral_r', 'Pastel2', 'terrain', 'RdYlBu', 'Vega10_r'), optional
+color_scheme : Str % Choices('YlGn', 'flag', 'Greens_r', 'RdPu_r', 'OrRd', 'Set1_r', 'RdYlGn', 'inferno_r', 'Accent_r', 'bwr', 'PuOr', 'seismic_r', 'RdGy_r', 'tab20b_r', 'Oranges', 'spectral', 'RdYlGn_r', 'nipy_spectral_r', 'gist_gray', 'binary', 'gist_yarg_r', 'cubehelix', 'viridis_r', 'autumn', 'bone_r', 'terrain_r', 'RdPu', 'inferno', 'PRGn', 'YlGnBu', 'mako', 'gray', 'tab20_r', 'Oranges_r', 'gist_stern_r', 'Dark2_r', 'Purples_r', 'coolwarm', 'RdYlBu', 'tab10', 'copper_r', 'YlOrRd_r', 'gray_r', 'magma', 'Set3_r', 'BuGn', 'viridis', 'icefire_r', 'PuOr_r', 'YlOrBr', 'winter_r', 'hsv', 'gist_earth_r', 'rocket_r', 'Vega20b', 'autumn_r', 'gnuplot', 'Paired', 'PuRd_r', 'BrBG_r', 'plasma_r', 'Set2', 'prism', 'winter', 'seismic', 'RdGy', 'Blues_r', 'Reds_r', 'gist_ncar_r', 'Reds', 'afmhot', 'Greys', 'rainbow', 'tab10_r', 'GnBu_r', 'gnuplot2', 'pink', 'tab20b', 'BuGn_r', 'PuRd', 'gist_stern', 'magma_r', 'prism_r', 'tab20c_r', 'BuPu', 'cividis_r', 'BrBG', 'Wistia_r', 'gist_gray_r', 'ocean_r', 'summer_r', 'mako_r', 'CMRmap_r', 'cool_r', 'coolwarm_r', 'Greens', 'RdBu', 'icefire', 'spectral_r', 'Vega20', 'brg', 'Paired_r', 'BuPu_r', 'gist_rainbow', 'CMRmap', 'cool', 'gist_earth', 'bwr_r', 'rocket', 'YlGn_r', 'Vega20b_r', 'Wistia', 'Vega20c_r', 'Accent', 'plasma', 'Set1', 'PuBu_r', 'Purples', 'RdYlBu_r', 'brg_r', 'flag_r', 'Set3', 'hot_r', 'Blues', 'Pastel1_r', 'YlOrBr_r', 'hsv_r', 'Pastel2', 'Pastel1', 'bone', 'tab20', 'PuBuGn_r', 'terrain', 'gist_rainbow_r', 'Spectral_r', 'Pastel2_r', 'RdBu_r', 'summer', 'gist_ncar', 'OrRd_r', 'copper', 'tab20c', 'PuBuGn', 'Set2_r', 'vlag', 'jet_r', 'gist_heat_r', 'PRGn_r', 'Vega10', 'jet', 'Spectral', 'rainbow_r', 'binary_r', 'ocean', 'spring', 'Dark2', 'Vega20_r', 'vlag_r', 'PiYG', 'PuBu', 'YlGnBu_r', 'afmhot_r', 'nipy_spectral', 'gnuplot2_r', 'cividis', 'gnuplot_r', 'Greys_r', 'cubehelix_r', 'spring_r', 'PiYG_r', 'gist_yarg', 'gist_heat', 'Vega20c', 'GnBu', 'YlOrRd', 'hot', 'Vega10_r', 'pink_r'), optional
     Color scheme for heatmap.
 
 Returns
@@ -349,9 +432,9 @@
     Heatmap of important features.
 filtered_table : FeatureTable[Frequency]
     Filtered feature table containing data displayed in heatmap.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_metatable.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_metatable.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,68 +1,79 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_metatable" name="qiime sample-classifier metatable" version="2019.7">
-	<description> - Convert (and merge) positive numeric metadata (in)to feature table.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_metatable" name="qiime sample-classifier metatable"
+      version="2020.8">
+  <description>Convert (and merge) positive numeric metadata (in)to feature table.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier metatable
 
-
 #if str($itable) != 'None':
- --i-table=$itable
+--i-table=$itable
 #end if
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
 #if str($pmissingvalues) != 'None':
- --p-missing-values=$pmissingvalues
+--p-missing-values=$pmissingvalues
+#end if
+
+#if $pdropallunique:
+ --p-drop-all-unique
 #end if
 
+--o-converted-table=oconvertedtable
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-
---o-converted-table=oconvertedtable
 ;
 cp oconvertedtable.qza $oconvertedtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [optional]" name="itable" optional="True" type="data"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
-		<param label="--p-missing-values: " name="pmissingvalues" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="drop_samples">drop_samples</option>
-			<option value="drop_features">drop_features</option>
-			<option value="error">error</option>
-			<option value="fill">fill</option>
-		</param>
 
-		<repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" />
-		</repeat>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [optional]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple          Metadata file to convert to feature table. arguments will be merged)                                                     [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--p-missing-values: " name="pmissingvalues" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="drop_samples">drop_samples</option>
+      <option value="drop_features">drop_features</option>
+      <option value="error">error</option>
+      <option value="fill">fill</option>
+    </param>
+    <param label="--p-drop-all-unique: --p-drop-all-unique: / --p-no-drop-all-unique If True, columns that contain a unique value for every ID will be dropped.                    [default: False]" name="pdropallunique" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: convertedtable.qza" name="oconvertedtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: convertedtable.qza" name="oconvertedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Convert (and merge) positive numeric metadata (in)to feature table.
-###################################################################
+###############################################################
 
 Convert numeric sample metadata from TSV file into a feature table.
 Optionally merge with an existing feature table. Only numeric metadata will
@@ -72,11 +83,10 @@
 missing_samples="error" to raise an error if samples found in the table are
 missing from the metadata file. The metadata file can always contain a
 superset of samples. Note that columns will be dropped if they are non-
-numeric, contain only unique values, contain no unique values (zero
-variance), contain only empty cells, or contain negative values. This
-method currently only converts postive numeric metadata into feature data.
-Tip: convert categorical columns to dummy variables to include them in the
-output feature table.
+numeric, contain no unique values (zero variance), contain only empty
+cells, or contain negative values. This method currently only converts
+postive numeric metadata into feature data. Tip: convert categorical
+columns to dummy variables to include them in the output feature table.
 
 Parameters
 ----------
@@ -94,14 +104,17 @@
     How to handle missing values (nans) in metadata. Either "drop_samples"
     with missing values, "drop_features" with missing values, "fill"
     missing values with zeros, or "error" if any missing values are found.
+drop_all_unique : Bool, optional
+    If True, columns that contain a unique value for every ID will be
+    dropped.
 
 Returns
 -------
 converted_table : FeatureTable[Frequency]
     Converted feature table
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_predict-classification.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_predict-classification.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,35 +1,47 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_predict-classification" name="qiime sample-classifier predict-classification" version="2019.7">
-	<description> - Use trained classifier to predict target values for new samples.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_predict-classification" name="qiime sample-classifier predict-classification"
+      version="2020.8">
+  <description>Use trained classifier to predict target values for new samples.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier predict-classification
 
 --i-table=$itable
+
 --i-sample-estimator=$isampleestimator
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+--p-n-jobs=$pnjobs
 
 --o-predictions=opredictions
+
+--o-probabilities=oprobabilities
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opredictions.qza $opredictions
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Classifier] Sample classifier trained with fit_classifier. [required]" name="isampleestimator" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-	</outputs>
-	<help><![CDATA[
+cp oprobabilities.qza $oprobabilities
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Classifier] Sample classifier trained with fit_classifier. [required]" name="isampleestimator" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="qza" label="${tool.name} on ${on_string}: probabilities.qza" name="oprobabilities" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Use trained classifier to predict target values for new samples.
-################################################################
+###############################################################
 
 Use trained estimator to predict target values for new samples. These will
 typically be unseen samples, e.g., test data (derived manually or from
@@ -44,14 +56,18 @@
     prediction.
 sample_estimator : SampleEstimator[Classifier]
     Sample classifier trained with fit_classifier.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 
 Returns
 -------
 predictions : SampleData[ClassifierPredictions]
     Predicted target values for each input sample.
-	]]></help>
-<macros>
+probabilities : SampleData[Probabilities]
+    Predicted class probabilities for each input sample.
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_predict-regression.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_predict-regression.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,33 +1,42 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_predict-regression" name="qiime sample-classifier predict-regression" version="2019.7">
-	<description> - Use trained regressor to predict target values for new samples.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_predict-regression" name="qiime sample-classifier predict-regression"
+      version="2020.8">
+  <description>Use trained regressor to predict target values for new samples.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier predict-regression
 
 --i-table=$itable
+
 --i-sample-estimator=$isampleestimator
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+--p-n-jobs=$pnjobs
 
 --o-predictions=opredictions
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp opredictions.qza $opredictions
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Regressor] Sample regressor trained with fit_regressor. [required]" name="isampleestimator" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Regressor] Sample regressor trained with fit_regressor. [required]" name="isampleestimator" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Use trained regressor to predict target values for new samples.
 ###############################################################
 
@@ -44,14 +53,16 @@
     prediction.
 sample_estimator : SampleEstimator[Regressor]
     Sample regressor trained with fit_regressor.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 
 Returns
 -------
 predictions : SampleData[RegressorPredictions]
     Predicted target values for each input sample.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_regress-samples-ncv.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_regress-samples-ncv.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,36 +1,60 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_regress-samples-ncv" name="qiime sample-classifier regress-samples-ncv" version="2019.7">
-	<description> - Nested cross-validated supervised learning regressor.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_regress-samples-ncv" name="qiime sample-classifier regress-samples-ncv"
+      version="2020.8">
+  <description>Nested cross-validated supervised learning regressor.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier regress-samples-ncv
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($pcv):
- --p-cv=$pcv
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
-
-#if str($prandomstate):
- --p-random-state="$prandomstate"
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
-
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
+--m-metadata-column=$mmetadatacolumn
 
 
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
+--p-cv=$pcv
+
+#if str($prandomstate):
+  --p-random-state=$prandomstate
 #end if
+--p-n-jobs=$pnjobs
+
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $pstratify:
@@ -42,64 +66,66 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
-
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
-#end if
-
-
-
 --o-predictions=opredictions
+
 --o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp opredictions.qza $opredictions;
 cp ofeatureimportance.qza $ofeatureimportance
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestRegressor">RandomForestRegressor</option>
-			<option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
-			<option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
-			<option value="AdaBoostRegressor">AdaBoostRegressor</option>
-			<option value="ElasticNet">ElasticNet</option>
-			<option value="Ridge">Ridge</option>
-			<option value="Lasso">Lasso</option>
-			<option value="KNeighborsRegressor">KNeighborsRegressor</option>
-			<option value="LinearSVR">LinearSVR</option>
-			<option value="SVR">SVR</option>
-		</param>
-		<param label="--p-stratify: --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                     [default: False]" name="pstratify" selected="False" type="boolean"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
 
-
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestRegressor">RandomForestRegressor</option>
+      <option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
+      <option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
+      <option value="AdaBoostRegressor">AdaBoostRegressor</option>
+      <option value="ElasticNet">ElasticNet</option>
+      <option value="Ridge">Ridge</option>
+      <option value="Lasso">Lasso</option>
+      <option value="KNeighborsRegressor">KNeighborsRegressor</option>
+      <option value="LinearSVR">LinearSVR</option>
+      <option value="SVR">SVR</option>
+    </param>
+    <param label="--p-stratify: --p-stratify: / --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                     [default: False]" name="pstratify" selected="False" type="boolean" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-	</outputs>
-	<help><![CDATA[
-Nested cross-validated supervised learning classifier.
-######################################################
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    
+  </outputs>
 
-Predicts a categorical sample metadata column using a supervised learning
-classifier. Uses nested stratified k-fold cross validation for automated
+  <help><![CDATA[
+Nested cross-validated supervised learning regressor.
+###############################################################
+
+Predicts a continuous sample metadata column using a supervised learning
+regressor. Uses nested stratified k-fold cross validation for automated
 hyperparameter optimization and sample prediction. Outputs predicted values
 for each input sample, and relative importance of each feature for model
 accuracy.
@@ -109,20 +135,25 @@
 table : FeatureTable[Frequency]
     Feature table containing all features that should be used for target
     prediction.
-metadata : MetadataColumn[Categorical]
-    Categorical metadata column to use as prediction target.
+metadata : MetadataColumn[Numeric]
+    Numeric metadata column to use as prediction target.
 cv : Int % Range(1, None), optional
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
     time and memory requirements. This parameter only affects ensemble
     estimators, such as Random Forest, AdaBoost, ExtraTrees, and
     GradientBoosting.
-estimator : Str % Choices('RandomForestClassifier', 'ExtraTreesClassifier', 'GradientBoostingClassifier', 'AdaBoostClassifier', 'KNeighborsClassifier', 'LinearSVC', 'SVC'), optional
+estimator : Str % Choices('RandomForestRegressor', 'ExtraTreesRegressor', 'GradientBoostingRegressor', 'AdaBoostRegressor', 'ElasticNet', 'Ridge', 'Lasso', 'KNeighborsRegressor', 'LinearSVR', 'SVR'), optional
     Estimator method to use for sample prediction.
+stratify : Bool, optional
+    Evenly stratify training and test data among metadata categories. If
+    True, all values in column must match at least two samples.
 parameter_tuning : Bool, optional
     Automatically tune hyperparameters using random grid search.
 missing_samples : Str % Choices('error', 'ignore'), optional
@@ -133,13 +164,13 @@
 
 Returns
 -------
-predictions : SampleData[ClassifierPredictions]
+predictions : SampleData[RegressorPredictions]
     Predicted target values for each input sample.
 feature_importance : FeatureData[Importance]
     Importance of each input feature to model accuracy.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_regress-samples.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_regress-samples.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,44 +1,64 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_regress-samples" name="qiime sample-classifier regress-samples" version="2019.7">
-	<description> - Train and test a cross-validated supervised learning regressor.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_regress-samples" name="qiime sample-classifier regress-samples"
+      version="2020.8">
+  <description>Train and test a cross-validated supervised learning regressor.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier regress-samples
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-#if str($ptestsize):
- --p-test-size=$ptestsize
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
-#if str($pstep):
- --p-step=$pstep
-#end if
+--m-metadata-column=$mmetadatacolumn
+
 
-#if str($pcv):
- --p-cv=$pcv
-#end if
+--p-test-size=$ptestsize
+
+--p-step=$pstep
+
+--p-cv=$pcv
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
-#set $pnjobs = '${GALAXY_SLOTS:-4}'
+--p-n-jobs=$pnjobs
 
-#if str($pnjobs):
- --p-n-jobs="$pnjobs"
-#end if
-
-
-#if str($pnestimators):
- --p-n-estimators=$pnestimators
-#end if
+--p-n-estimators=$pnestimators
 
 #if str($pestimator) != 'None':
- --p-estimator=$pestimator
+--p-estimator=$pestimator
 #end if
 
 #if $poptimizefeatureselection:
@@ -54,78 +74,85 @@
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
-#end if
-
-
-
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+--p-missing-samples=$pmissingsamples
 #end if
 
+--o-sample-estimator=osampleestimator
 
-
+--o-feature-importance=ofeatureimportance
 
---o-sample-estimator=osampleestimator
---o-feature-importance=ofeatureimportance
 --o-predictions=opredictions
+
 --o-model-summary=omodelsummary
+
 --o-accuracy-results=oaccuracyresults
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp osampleestimator.qza $osampleestimator;
-cp ofeatureimportance.qza $ofeatureimportance;
-cp opredictions.qza $opredictions;
-qiime tools export --input-path omodelsummary.qzv --output-path out   && mkdir -p '$omodelsummary.files_path'
+cp opredictions.qza $opredictions
+
+;
+qiime tools export  omodelsummary.qzv --output-path out
+&& mkdir -p '$omodelsummary.files_path'
 && cp -r out/* '$omodelsummary.files_path'
-&& mv '$omodelsummary.files_path/index.html' '$omodelsummary';
-qiime tools export --input-path oaccuracyresults.qzv --output-path out   && mkdir -p '$oaccuracyresults.files_path'
+&& mv '$omodelsummary.files_path/index.html' '$omodelsummary'
+
+;
+qiime tools export  oaccuracyresults.qzv --output-path out
+&& mkdir -p '$oaccuracyresults.files_path'
 && cp -r out/* '$oaccuracyresults.files_path'
 && mv '$oaccuracyresults.files_path/index.html' '$oaccuracyresults'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" name="ptestsize" optional="True" type="float" value="0.2" min="0" max="1" />
-		<param label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" name="pstep" optional="True" type="float" value="0.05" min="0" max="1" />
-		<param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" name="pcv" optional="True" type="integer" value="5" min="1"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" name="pnestimators" optional="True" type="integer" value="100" min="1"/>
-		<param label="--p-estimator: " name="pestimator" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="RandomForestRegressor">RandomForestRegressor</option>
-			<option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
-			<option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
-			<option value="AdaBoostRegressor">AdaBoostRegressor</option>
-			<option value="ElasticNet">ElasticNet</option>
-			<option value="Ridge">Ridge</option>
-			<option value="Lasso">Lasso</option>
-			<option value="KNeighborsRegressor">KNeighborsRegressor</option>
-			<option value="LinearSVR">LinearSVR</option>
-			<option value="SVR">SVR</option>
-		</param>
-		<param label="--p-optimize-feature-selection: --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean"/>
-		<param label="--p-stratify: --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                     [default: False]" name="pstratify" selected="False" type="boolean"/>
-		<param label="--p-parameter-tuning: --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
 
-
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
-
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param exclude_min="True" label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" max="1.0" min="0.0" name="ptestsize" optional="True" type="float" value="0.2" />
+    <param exclude_min="True" label="--p-step: PROPORTION Range(0.0, 1.0, inclusive_start=False) If optimize-feature-selection is True, step is the percentage of features to remove at each iteration. [default: 0.05]" max="1.0" min="0.0" name="pstep" optional="True" type="float" value="0.05" />
+    <param label="--p-cv: INTEGER       Number of k-fold cross-validations to perform. Range(1, None)                                                [default: 5]" min="1" name="pcv" optional="True" type="integer" value="5" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-n-estimators: INTEGER Range(1, None)     Number of trees to grow for estimation. More trees will improve predictive accuracy up to a threshold level, but will also increase time and memory requirements. This parameter only affects ensemble estimators, such as Random Forest, AdaBoost, ExtraTrees, and GradientBoosting.        [default: 100]" min="1" name="pnestimators" optional="True" type="integer" value="100" />
+    <param label="--p-estimator: " name="pestimator" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="RandomForestRegressor">RandomForestRegressor</option>
+      <option value="ExtraTreesRegressor">ExtraTreesRegressor</option>
+      <option value="GradientBoostingRegressor">GradientBoostingRegressor</option>
+      <option value="AdaBoostRegressor">AdaBoostRegressor</option>
+      <option value="ElasticNet">ElasticNet</option>
+      <option value="Ridge">Ridge</option>
+      <option value="Lasso">Lasso</option>
+      <option value="KNeighborsRegressor">KNeighborsRegressor</option>
+      <option value="LinearSVR">LinearSVR</option>
+      <option value="SVR">SVR</option>
+    </param>
+    <param label="--p-optimize-feature-selection: --p-optimize-feature-selection: / --p-no-optimize-feature-selection Automatically optimize input feature selection using recursive feature elimination.         [default: False]" name="poptimizefeatureselection" selected="False" type="boolean" />
+    <param label="--p-stratify: --p-stratify: / --p-no-stratify Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                     [default: False]" name="pstratify" selected="False" type="boolean" />
+    <param label="--p-parameter-tuning: --p-parameter-tuning: / --p-no-parameter-tuning Automatically tune hyperparameters using random grid search.                                [default: False]" name="pparametertuning" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator"/>
-		<data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance"/>
-		<data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions"/>
-		<data format="html" label="${tool.name} on ${on_string}: modelsummary.qzv" name="omodelsummary"/>
-		<data format="html" label="${tool.name} on ${on_string}: accuracyresults.qzv" name="oaccuracyresults"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: sampleestimator.qza" name="osampleestimator" />
+    <data format="qza" label="${tool.name} on ${on_string}: featureimportance.qza" name="ofeatureimportance" />
+    <data format="qza" label="${tool.name} on ${on_string}: predictions.qza" name="opredictions" />
+    <data format="html" label="${tool.name} on ${on_string}: modelsummary.html" name="omodelsummary" />
+    <data format="html" label="${tool.name} on ${on_string}: accuracyresults.html" name="oaccuracyresults" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Train and test a cross-validated supervised learning regressor.
 ###############################################################
 
@@ -155,6 +182,8 @@
     Number of k-fold cross-validations to perform.
 random_state : Int, optional
     Seed used by random number generator.
+n_jobs : Int, optional
+    Number of jobs to run in parallel.
 n_estimators : Int % Range(1, None), optional
     Number of trees to grow for estimation. More trees will improve
     predictive accuracy up to a threshold level, but will also increase
@@ -190,9 +219,9 @@
     the trained estimator.
 accuracy_results : Visualization
     Accuracy results visualization.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_scatterplot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_scatterplot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,45 +1,84 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_scatterplot" name="qiime sample-classifier scatterplot" version="2019.7">
-	<description> - Make 2D scatterplot and linear regression of regressor predictions.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_scatterplot" name="qiime sample-classifier scatterplot"
+      version="2020.8">
+  <description>Make 2D scatterplot and linear regression of regressor predictions.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier scatterplot
 
 --i-predictions=$ipredictions
---m-truth-column="$mtruthcolumn"
+
+#if str($mtruthfile) != 'None':
+--m-truth-file=$mtruthfile
+#end if
 
---m-truth-file="$mtruthfile"
+#if '__ob__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__ob__', '[')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__cb__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__cb__', ']')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if 'X' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('X', '\\')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__sq__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__sq__', "'")
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+#if '__db__' in str($mtruthcolumn):
+  #set $mtruthcolumn_temp = $mtruthcolumn.replace('__db__', '"')
+  #set $mtruthcolumn = $mtruthcolumn_temp
+#end if
+
+--m-truth-column=$mtruthcolumn
+
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp ofeatureimportance.qza $ofeatureimportance
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-predictions: ARTIFACT SampleData[RegressorPredictions] Predicted values to plot on y axis. Must be predictions of numeric data produced by a sample regressor.                                   [required]" name="ipredictions" optional="False" type="data"/>
-		<param label="--m-truth-column: COLUMN  MetadataColumn[Numeric] Metadata column (true values) to plot on x axis. [required]" name="mtruthcolumn" optional="False" type="text"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<param label="--m-truth-file: Metadata file or artifact viewable as metadata." name="mtruthfile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-predictions: ARTIFACT SampleData[RegressorPredictions] Predicted values to plot on y axis. Must be predictions of numeric data produced by a sample regressor.                                   [required]" name="ipredictions" optional="False" type="data" />
+    <param label="--m-truth-file: METADATA" name="mtruthfile" optional="False" type="data" />
+    <param label="--m-truth-column: COLUMN  MetadataColumn[Numeric] Metadata column (true values) to plot on x axis. [required]" name="mtruthcolumn" optional="False" type="text" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Make 2D scatterplot and linear regression of regressor predictions.
-###################################################################
+###############################################################
 
 Make a 2D scatterplot and linear regression of predicted vs. true values
 for a set of samples predicted using a sample regressor.
@@ -60,9 +99,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_split-table.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_split-table.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,68 +1,101 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_split-table" name="qiime sample-classifier split-table" version="2019.7">
-	<description> - Split a feature table into training and testing sets.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_sample-classifier_split-table" name="qiime sample-classifier split-table"
+      version="2020.8">
+  <description>Split a feature table into training and testing sets.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime sample-classifier split-table
 
 --i-table=$itable
---m-metadata-column="$mmetadatacolumn"
-
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
-
-#if $metadatafile:
- --m-metadata-file=$metadatafile
+#if '__ob__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__ob__', '[')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__cb__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__cb__', ']')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if 'X' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('X', '\\')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__sq__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__sq__', "'")
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
+#end if
+#if '__db__' in str($mmetadatacolumn):
+  #set $mmetadatacolumn_temp = $mmetadatacolumn.replace('__db__', '"')
+  #set $mmetadatacolumn = $mmetadatacolumn_temp
 #end if
 
+--m-metadata-column=$mmetadatacolumn
 
 
-
-#if str($ptestsize):
- --p-test-size=$ptestsize
-#end if
+--p-test-size=$ptestsize
 
 #if str($prandomstate):
- --p-random-state="$prandomstate"
+  --p-random-state=$prandomstate
 #end if
-
 #if $pnostratify:
  --p-no-stratify
 #end if
 
 #if str($pmissingsamples) != 'None':
- --p-missing-samples=$pmissingsamples
+--p-missing-samples=$pmissingsamples
 #end if
 
 --o-training-table=otrainingtable
+
 --o-test-table=otesttable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp otrainingtable.qza $otrainingtable;
-cp otesttable.qza $otesttable;
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data"/>
-		<param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric | Categorical] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text"/>
-		<param label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" name="ptestsize" optional="True" type="float" value="0.2" min="0" max="1" exclusive_end="True"/>
-		<param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="True" type="integer"/>
-		<param label="--p-no-stratify: Evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                      [default: False]" name="pnostratify" selected="False" type="boolean"/>
-		<param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="error">error</option>
-			<option value="ignore">ignore</option>
-		</param>
+cp otesttable.qza $otesttable
 
-		<param label="--m-metadata-file METADATA" name="metadatafile" type="data" format="tabular,qza,no_unzip.zip" />
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶] Feature table containing all features that should be used for target prediction.                  [required]" name="itable" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="True" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA" name="additional_input" optional="True" type="data" />
+    </repeat>
+    <param label="--m-metadata-column: COLUMN  MetadataColumn[Numeric | Categorical] Numeric metadata column to use as prediction target. [required]" name="mmetadatacolumn" optional="False" type="text" />
+    <param exclude_min="True" label="--p-test-size: PROPORTION Range(0.0, 1.0, inclusive_start=False) Fraction of input samples to exclude from training set and use for classifier testing.          [default: 0.2]" max="1.0" min="0.0" name="ptestsize" optional="True" type="float" value="0.2" />
+    <param label="--p-random-state: INTEGER Seed used by random number generator.        [optional]" name="prandomstate" optional="False" type="text" />
+    <param label="--p-no-stratify: Do not evenly stratify training and test data among metadata categories. If True, all values in column must match at least two samples.                      [default: True]" name="pnostratify" selected="False" type="boolean" />
+    <param label="--p-missing-samples: " name="pmissingsamples" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="error">error</option>
+      <option value="ignore">ignore</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: trainingtable.qza" name="otrainingtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: testtable.qza" name="otesttable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: trainingtable.qza" name="otrainingtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: testtable.qza" name="otesttable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Split a feature table into training and testing sets.
-#####################################################
+###############################################################
 
 Split a feature table into training and testing sets. By default stratifies
 training and test sets on a metadata column, such that values in that
@@ -70,7 +103,7 @@
 
 Parameters
 ----------
-table : FeatureTable[Frequency]
+table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
     Feature table containing all features that should be used for target
     prediction.
 metadata : MetadataColumn[Numeric | Categorical]
@@ -91,13 +124,13 @@
 
 Returns
 -------
-training_table : FeatureTable[Frequency]
+training_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
     Feature table containing training samples
-test_table : FeatureTable[Frequency]
+test_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
     Feature table containing test samples
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_sample-classifier_summarize.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_sample-classifier_summarize.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,29 +1,46 @@
 <?xml version="1.0" ?>
-<tool id="qiime_sample-classifier_summarize" name="qiime sample-classifier summarize" version="2019.7">
-	<description> - Summarize parameter and feature extraction information for a trained estimator.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
-qiime sample-classifier summarize 
+<tool id="qiime_sample-classifier_summarize" name="qiime sample-classifier summarize"
+      version="2020.8">
+  <description>Summarize parameter and feature extraction information for a trained estimator.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime sample-classifier summarize
 
 --i-sample-estimator=$isampleestimator
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp otesttable.qza $otesttable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
 && mv '$ovisualization.files_path/index.html' '$ovisualization'
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Classifier | Regressor] Sample estimator trained with fit_classifier or fit_regressor.                               [required]" name="isampleestimator" optional="False" type="data"/>
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sample-estimator: ARTIFACT SampleEstimator[Classifier | Regressor] Sample estimator trained with fit_classifier or fit_regressor.                               [required]" name="isampleestimator" optional="False" type="data" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Summarize parameter and feature extraction information for a trained estimator.
-###############################################################################
+###############################################################
+
 
 Summarize parameter and feature extraction information for a trained
 estimator.
@@ -36,9 +53,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_taxa_barplot.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_taxa_barplot.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,72 +1,67 @@
 <?xml version="1.0" ?>
-<tool id="qiime_taxa_barplot" name="qiime taxa barplot" version="2019.7">
-	<description> - Visualize taxonomy with an interactive bar plot</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_taxa_barplot" name="qiime taxa barplot"
+      version="2020.8">
+  <description>Visualize taxonomy with an interactive bar plot</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime taxa barplot
 
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-	--i-taxonomy '$tax'
-#else:
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	--i-taxonomy '$tax'
-#end if
-
-
 --i-table=$itable
 
-#if $input_files_mmetadatafile:
-#def list_dict_to_string(list_dict):
-	#set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
-	#for d in list_dict[1:]:
-		#set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
-	#end for
-	#return $file_list
-#end def
- --m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
-#end if
+--i-taxonomy=$itaxonomy
+# if $input_files_mmetadatafile:
+  # def list_dict_to_string(list_dict):
+    # set $file_list = list_dict[0]['additional_input'].__getattr__('file_name')
+    # for d in list_dict[1:]:
+      # set $file_list = $file_list + ' --m-metadata-file=' + d['additional_input'].__getattr__('file_name')
+    # end for
+    # return $file_list
+  # end def
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
 
 --o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-qiime tools export --input-path ovisualization.qzv --output-path out   && mkdir -p '$ovisualization.files_path'
+cp otesttable.qza $otesttable
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
 && cp -r out/* '$ovisualization.files_path'
-&& mv '$ovisualization.files_path/index.html' '$ovisualization';
-	]]></command>
-	<inputs>
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
 
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to visualize at various taxonomic levels.                                    [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-taxonomy: ARTIFACT FeatureData[Taxonomy] Taxonomic annotations for features in the provided feature table. All features in the feature table must have a corresponding taxonomic annotation. Taxonomic annotations that are not present in the feature table will be ignored.                           [required]" name="itaxonomy" optional="False" type="data" />
+    <repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file">
+      <param format="tabular,qza,no_unzip.zip" label="--m-metadata-file: METADATA... (multiple            The sample metadata. arguments will be merged)                                                        [required]" name="additional_input" optional="False" type="data" />
+    </repeat>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to visualize at various taxonomic levels.                                    [required]" name="itable" optional="False" type="data"/>
-
-		<repeat name="input_files_mmetadatafile" optional="False" title="--m-metadata-file  [required]">
-			<param label="--m-metadata-file: Metadata file or artifact viewable as metadata. This option may be supplied multiple times to merge metadata. [optional]" name="additional_input" type="data" format="tabular,qza,no_unzip.zip" optional="False" />
-		</repeat>
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
 
-	</inputs>
-	<outputs>
-		<data format="html" label="${tool.name} on ${on_string}: visualization.qzv" name="ovisualization"/>
-	</outputs>
-	<help><![CDATA[
+  <help><![CDATA[
 Visualize taxonomy with an interactive bar plot
-###############################################
+###############################################################
 
 This visualizer produces an interactive barplot visualization of
 taxonomies. Interactive features include multi-level sorting, plot
@@ -87,9 +82,9 @@
 Returns
 -------
 visualization : Visualization
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_taxa_collapse.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_taxa_collapse.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,58 +1,45 @@
 <?xml version="1.0" ?>
-<tool id="qiime_taxa_collapse" name="qiime taxa collapse" version="2019.7">
-	<description> - Collapse features by their taxonomy at the specified level</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_taxa_collapse" name="qiime taxa collapse"
+      version="2020.8">
+  <description>Collapse features by their taxonomy at the specified level</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime taxa collapse
 
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-	--i-taxonomy '$tax'
-#else:
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	--i-taxonomy '$tax'
-#end if
-
-
 --i-table=$itable
 
-#if str($plevel):
- --p-level="$plevel"
+--i-taxonomy=$itaxonomy
+
+--p-level=$plevel
+
+--o-collapsed-table=ocollapsedtable
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
---o-collapsed-table=ocollapsedtable
 ;
 cp ocollapsedtable.qza $ocollapsedtable
-	]]></command>
-	<inputs>
 
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
-		
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to be collapsed.             [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-taxonomy: ARTIFACT FeatureData[Taxonomy] Taxonomic annotations for features in the provided feature table. All features in the feature table must have a corresponding taxonomic annotation. Taxonomic annotations that are not present in the feature table will be ignored.                           [required]" name="itaxonomy" optional="False" type="data" />
+    <param label="--p-level: INTEGER      The taxonomic level at which the features should be collapsed. All ouput features will have exactly this many levels of taxonomic annotation.       [required]" name="plevel" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to be collapsed.             [required]" name="itable" optional="False" type="data"/>
-		<param label="--p-level: INTEGER      The taxonomic level at which the features should be collapsed. All ouput features will have exactly this many levels of taxonomic annotation.       [required]" name="plevel" optional="False" value="" type="integer"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: collapsedtable.qza" name="ocollapsedtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: collapsedtable.qza" name="ocollapsedtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Collapse features by their taxonomy at the specified level
-##########################################################
+###############################################################
 
 Collapse groups of features that have the same taxonomic assignment through
 the specified level. The frequencies of all features will be summed when
@@ -77,9 +64,9 @@
 collapsed_table : FeatureTable[Frequency]
     The resulting feature table, where all features are now taxonomic
     annotations with the user-specified number of levels.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_taxa_filter-seqs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_taxa_filter-seqs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,77 +1,63 @@
 <?xml version="1.0" ?>
-<tool id="qiime_taxa_filter-seqs" name="qiime taxa filter-seqs" version="2019.7">
-	<description> - Taxonomy-based feature sequence filter.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_taxa_filter-seqs" name="qiime taxa filter-seqs"
+      version="2020.8">
+  <description>Taxonomy-based feature sequence filter.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime taxa filter-seqs
 
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-	--i-taxonomy '$tax'
-#else:
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	--i-taxonomy '$tax'
-#end if
-
-
 --i-sequences=$isequences
 
+--i-taxonomy=$itaxonomy
+
 #if str($pinclude):
- --p-include="$pinclude"
-#end if
-
-#if str($pexclude):
- --p-exclude="$pexclude"
+  --p-include=$pinclude
 #end if
-
-#if str($pquerydelimiter):
- --p-query-delimiter="$pquerydelimiter"
+#if str($pexclude):
+  --p-exclude=$pexclude
 #end if
-
+#if str($pquerydelimiter):
+  --p-query-delimiter=$pquerydelimiter
+#end if
 #if str($pmode) != 'None':
- --p-mode=$pmode
+--p-mode=$pmode
 #end if
 
 --o-filtered-sequences=ofilteredsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofilteredsequences.qza $ofilteredsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] Feature sequences to be filtered.         [required]" name="isequences" optional="False" type="data"/>
 
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] Feature sequences to be filtered.         [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-taxonomy: ARTIFACT FeatureData[Taxonomy] Taxonomic annotations for features in the provided feature sequences. All features in the feature sequences must have a corresponding taxonomic annotation. Taxonomic annotations for features that are not present in the feature sequences will be ignored.                                  [required]" name="itaxonomy" optional="False" type="data" />
+    <param label="--p-include: TEXT        One or more search terms that indicate which taxa should be included in the resulting sequences. If providing more than one term, terms should be delimited by the query-delimiter character. By default, all taxa will be included.       [optional]" name="pinclude" optional="False" type="text" />
+    <param label="--p-exclude: TEXT        One or more search terms that indicate which taxa should be excluded from the resulting sequences. If providing more than one term, terms should be delimited by the query-delimiter character. By default, no taxa will be excluded.        [optional]" name="pexclude" optional="False" type="text" />
+    <param label="--p-query-delimiter: TEXT The string used to delimit multiple search terms provided to include or exclude. This parameter should only need to be modified if the default delimiter (a comma) is used in the provided taxonomic annotations.                [default: \',\']" name="pquerydelimiter" optional="False" type="text" value="\',\'" />
+    <param label="--p-mode: " name="pmode" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="exact">exact</option>
+      <option value="contains">contains</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param label="--p-include: TEXT        One or more search terms that indicate which taxa should be included in the resulting sequences. If providing more than one term, terms should be delimited by the query-delimiter character. By default, all taxa will be included.       [optional]" name="pinclude" optional="True" type="text"/>
-		<param label="--p-exclude: TEXT        One or more search terms that indicate which taxa should be excluded from the resulting sequences. If providing more than one term, terms should be delimited by the query-delimiter character. By default, no taxa will be excluded.        [optional]" name="pexclude" optional="True" type="text"/>
-		<param label="--p-query-delimiter: TEXT The string used to delimit multiple search terms provided to include or exclude. This parameter should only need to be modified if the default delimiter (a comma) is used in the provided taxonomic annotations.                [default: ',']" name="pquerydelimiter" optional="True" type="text" value=","/>
-		<param label="--p-mode: " name="pmode" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="exact">exact</option>
-			<option value="contains">contains</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredsequences.qza" name="ofilteredsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Taxonomy-based feature sequence filter.
-#######################################
+###############################################################
 
 This method filters sequences based on their taxonomic annotations.
 Features can be retained in the result by specifying one or more include
@@ -113,9 +99,9 @@
 -------
 filtered_sequences : FeatureData[Sequence]
     The taxonomy-filtered feature sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_taxa_filter-table.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_taxa_filter-table.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,77 +1,63 @@
 <?xml version="1.0" ?>
-<tool id="qiime_taxa_filter-table" name="qiime taxa filter-table" version="2019.7">
-	<description> - Taxonomy-based feature table filter.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_taxa_filter-table" name="qiime taxa filter-table"
+      version="2020.8">
+  <description>Taxonomy-based feature table filter.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime taxa filter-table
 
-
-#if str( $id_to_taxonomy_fp.selector ) == 'history'
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp
-	--i-taxonomy '$tax'
-#else:
-	#set $tax = $id_to_taxonomy_fp.taxonomy_fp.fields.path
-	--i-taxonomy '$tax'
-#end if
-
-
 --i-table=$itable
 
+--i-taxonomy=$itaxonomy
+
 #if str($pinclude):
- --p-include="$pinclude"
-#end if
-
-#if str($pexclude):
- --p-exclude="$pexclude"
+  --p-include=$pinclude
 #end if
-
-#if str($pquerydelimiter):
- --p-query-delimiter="$pquerydelimiter"
+#if str($pexclude):
+  --p-exclude=$pexclude
 #end if
-
+#if str($pquerydelimiter):
+  --p-query-delimiter=$pquerydelimiter
+#end if
 #if str($pmode) != 'None':
- --p-mode=$pmode
+--p-mode=$pmode
 #end if
 
 --o-filtered-table=ofilteredtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
 cp ofilteredtable.qza $ofilteredtable
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to be filtered.              [required]" name="itable" optional="False" type="data"/>
 
-		<conditional name="id_to_taxonomy_fp" optional="True">
-		   <param name="selector" type="select" label="Reference taxonomy to query">
-			  <option value="cached">Public databases</option>
-			  <option value="history">Databases from your history</option>
-		   </param>
-		   <when value="cached">
-			  <param argument="--taxonomy_fp" label="Reference taxonomy" type="select" optional="True">
-				 <options from_data_table="qiime_taxonomy" />
-			  </param>
-		   </when>
-		   <when value="history">
-			  <param argument="--taxonomy_fp" type="data" format="qza,no_unzip.zip" label="Reference databases" optional="True" />
-		   </when>
-		</conditional>
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table to be filtered.              [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-taxonomy: ARTIFACT FeatureData[Taxonomy] Taxonomic annotations for features in the provided feature table. All features in the feature table must have a corresponding taxonomic annotation. Taxonomic annotations for features that are not present in the feature table will be ignored.             [required]" name="itaxonomy" optional="False" type="data" />
+    <param label="--p-include: TEXT       One or more search terms that indicate which taxa should be included in the resulting table. If providing more than one term, terms should be delimited by the query-delimiter character. By default, all taxa will be included.        [optional]" name="pinclude" optional="False" type="text" />
+    <param label="--p-exclude: TEXT       One or more search terms that indicate which taxa should be excluded from the resulting table. If providing more than one term, terms should be delimited by the query-delimiter character. By default, no taxa will be excluded.         [optional]" name="pexclude" optional="False" type="text" />
+    <param label="--p-query-delimiter: TEXT The string used to delimit multiple search terms provided to include or exclude. This parameter should only need to be modified if the default delimiter (a comma) is used in the provided taxonomic annotations. [default: \',\']" name="pquerydelimiter" optional="False" type="text" value="\',\'" />
+    <param label="--p-mode: " name="pmode" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="exact">exact</option>
+      <option value="contains">contains</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
 
-		<param label="--p-include: TEXT       One or more search terms that indicate which taxa should be included in the resulting table. If providing more than one term, terms should be delimited by the query-delimiter character. By default, all taxa will be included.        [optional]" name="pinclude" optional="True" type="text"/>
-		<param label="--p-exclude: TEXT       One or more search terms that indicate which taxa should be excluded from the resulting table. If providing more than one term, terms should be delimited by the query-delimiter character. By default, no taxa will be excluded.         [optional]" name="pexclude" optional="True" type="text"/>
-		<param label="--p-query-delimiter: TEXT The string used to delimit multiple search terms provided to include or exclude. This parameter should only need to be modified if the default delimiter (a comma) is used in the provided taxonomic annotations. [default: ',']" name="pquerydelimiter" optional="True" type="text" value=","/>
-		<param label="--p-mode: " name="pmode" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="exact">exact</option>
-			<option value="contains">contains</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable"/>
-	</outputs>
-	<help><![CDATA[
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: filteredtable.qza" name="ofilteredtable" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Taxonomy-based feature table filter.
-####################################
+###############################################################
 
 This method filters features from a table based on their taxonomic
 annotations. Features can be retained in the resulting table by specifying
@@ -115,9 +101,9 @@
 -------
 filtered_table : FeatureTable[Frequency]
     The taxonomy-filtered feature table.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_tools_import.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_tools_import.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -19,13 +19,14 @@
 
 #def is_fastq($f_test)
 	#set $f = open($f_test, 'rb')
+	#set $fastq = str($f.readline()[0])
 	#if str($f.readline()[0]) == '@'
 		#$f.close()
 		#return True
 	#end if
 
 	#$f.close()
-	#return False
+	#return $fastq
 #end def
 
 
@@ -34,33 +35,36 @@
 	## Symlinks creation or On the fly creation of a combo file
 	#for $f in $input_type.list_list:
 
-		#set $is_fastq_file = $is_fastq(str($f))
+		#set $is_fastq_file = $is_fastq(str($f))			
 
 		#if $is_fastq_file:
 			#set $file_for_processing = "'input/" + $f.name + '.gz' + "'"
-			gzip -c ${f} > $file_for_processing;
+			gzip -c ${f} > $file_for_processing;	
+			##echo $is_fastq_file;			
 		#else
 			#set $file_for_processing = "'input/" + $f.name + "'"
-			ln -s ${f}  $file_for_processing;
+			ln -s ${f}  $file_for_processing;	
+			##echo $is_fastq_file;
 		#end if
 	#end for
 	#if 'SingleEndFastqManifestPhred' in str($inputformat):
-			#set $cwd = str($outputpath.extra_files_path) + "_manifest_file.txt"
-			#set $m_file = open(str($cwd), 'w')
-			$m_file.write("sample-id,absolute-filepath,direction\n")
+			#set $cwf = str($outputpath.extra_files_path) + "_manifest_file.txt"
+			#set $tt = str("sample-id,absolute-filepath,direction")
+			echo $tt >> $cwf;
 			#for $f in $input_type.list_list:
-				$m_file.write(str($f.name).split("_")[0]+",$PWD/input/"+str($f.name)+".gz,forward\n")
+				#set $tt = str($f.name).split("_")[0]+",$PWD/input/"+str($f.name).split(".")[0]+".fastq.gz,forward\n"
+				echo $tt >> $cwf;	 
 			#end for
-			$m_file.close()
-			#set $in_= str($cwd)
+			
+			#set $in_= str($cwf)
 		#end if
 	
 
 #elif $input_type.type == 'list_paired_collection':
   
-	#set $cwd = str($outputpath.extra_files_path) + "_manifest_file.txt"
-	#set $m_file = open(str($cwd), 'w')
-	$m_file.write("sample-id,absolute-filepath,direction\n")	
+	#set $cwf = str($outputpath.extra_files_path) + "_manifest_file.txt"
+	#set $tt = str("sample-id,absolute-filepath,direction")
+	echo $tt >> $cwf;
 
 	#for $pair in $input_type.list_paired_collection:
 		#set $forward_is_fastq_file = $is_fastq(str($pair.forward))
@@ -68,29 +72,36 @@
 		
 		#if $forward_is_fastq_file:
 	 		gzip -c ${pair.forward} > input/${pair.name}_R1_001.fastq.gz;
-	 		$m_file.write(str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R1_001.fastq.gz,forward\n")
+	 		#set $tt = str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R1_001.fastq.gz,forward\n"
+			echo $tt >> $cwf;			
 		#else
 	  		ln -s ${pair.forward} input/${pair.name}_R1_001.fastq.gz;
-			$m_file.write(str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R1_001.fastq.gz,forward\n")
+			#set $tt = str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R1_001.fastq.gz,forward\n"
+			echo $tt >> $cwf;		
         #end if
 
 	 	#if $reverse_is_fastq_file:
 	 		gzip -c ${pair.reverse} > input/${pair.name}_R2_001.fastq.gz;
-			$m_file.write(str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R2_001.fastq.gz,reverse\n")
+			#set $tt = str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R2_001.fastq.gz,reverse\n"
+			echo $tt >> $cwf;			
         #else
 	  		ln -s ${pair.reverse} input/${pair.name}_R2_001.fastq.gz;
-			$m_file.write(str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R2_001.fastq.gz,reverse\n")
+			#set $tt = str($pair.name).split("_")[0]+",$PWD/input/"+str($pair.name)+"_R2_001.fastq.gz,reverse\n"
+			echo $tt >> $cwf;			
 	  	#end if
 	#end for
 
 	
-	$m_file.close()
-	#if 'PairedEndFastqManifestPhred' in str($inputformat):
-		#set $in_= str($cwd)
+	
+	#if 'PairedEndFastqManifestPhred' in str($inputformat) or 'SingleEndFastqManifestPhred33V2' in str($inputformat) or 'SingleEndFastqManifestPhred33' in str($inputformat):
+		
+		#set $in_= str($cwf)
+		
 	#elif  'Casava' in str($inputformat):
 		#set $in_= 'input'
 	#end if
 
+	
 #else
 	#set $res = $is_fastq(str($file))
 
@@ -268,9 +279,9 @@
 	<outputs>
 		<data format="qza" label="${tool.name} on ${on_string}: outputpath.qza" name="outputpath"/>
 	</outputs>
-	    <stdio>
+	    <!--<stdio>
         <exit_code range="2"   level="warning"   description="Error" />
-    </stdio>
+    </stdio>-->
 	<help>
 </help>
 <macros>
--- a/qiime2/qiime_vsearch_cluster-features-closed-reference.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_cluster-features-closed-reference.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,78 +1,78 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_cluster-features-closed-reference" name="qiime vsearch cluster-features-closed-reference" version="2019.7">
-	<description> -  Closed-reference clustering of features.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_cluster-features-closed-reference" name="qiime vsearch cluster-features-closed-reference"
+      version="2020.8">
+  <description> Closed-reference clustering of features.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch cluster-features-closed-reference
+
 --i-sequences=$isequences
+
 --i-table=$itable
+
 --i-reference-sequences=$ireferencesequences
 
-#if str($ppercidentity):
-  --p-perc-identity="$ppercidentity"
-#end if
+--p-perc-identity=$ppercidentity
 
 #if str($pstrand) != 'None':
- --p-strand=$pstrand
+--p-strand=$pstrand
 #end if
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
+--p-threads=$pthreads
 
 --o-clustered-table=oclusteredtable
+
 --o-clustered-sequences=oclusteredsequences
+
 --o-unmatched-sequences=ounmatchedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp oclusteredtable.qza $oclusteredtable;
-cp oclusteredsequences.qza $oclusteredsequences;
 cp ounmatchedsequences.qza $ounmatchedsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The sequences to use as cluster centroids. [required]" name="ireferencesequences" optional="False" type="data"/>
-		<param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch's --id parameter.                                [required]" name="ppercidentity" optional="False" type="float" value="" min="0" max="1" exclude_max="False" />
-		<param label="--p-strand: " name="pstrand" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="plus">plus</option>
-			<option value="both">both</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: unmatchedsequences.qza" name="ounmatchedsequences"/>
-	</outputs>
-	<help><![CDATA[
-Open-reference clustering of features.
-######################################
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The sequences to use as cluster centroids. [required]" name="ireferencesequences" optional="False" type="data" />
+    <param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch\'s --id parameter.                                [required]" name="ppercidentity" optional="False" type="text" />
+    <param label="--p-strand: " name="pstrand" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="plus">plus</option>
+      <option value="both">both</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: unmatchedsequences.qza" name="ounmatchedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
+ Closed-reference clustering of features.
+###############################################################
 
 Given a feature table and the associated feature sequences, cluster the
 features against a reference database based on user-specified percent
-identity threshold of their sequences. Any sequences that don't match are
-then clustered de novo. This is not a general-purpose clustering method,
-but rather is intended to be used for clustering the results of quality-
-filtering/dereplication methods, such as DADA2, or for re-clustering a
-FeatureTable at a lower percent identity than it was originally clustered
-at. When a group of features in the input table are clustered into a single
-feature, the frequency of that single feature in a given sample is the sum
-of the frequencies of the features that were clustered in that sample.
-Feature identifiers will be inherited from the centroid feature of each
-cluster. For features that match a reference sequence, the centroid feature
-is that reference sequence, so its identifier will become the feature
-identifier. The clustered_sequences result will contain feature
-representative sequences that are derived from the sequences input for all
-features in clustered_table. This will always be the most abundant sequence
-in the cluster. The new_reference_sequences result will contain the entire
-reference database, plus feature representative sequences for any de novo
-features. This is intended to be used as a reference database in subsequent
-iterations of cluster_features_open_reference, if applicable. See the
-vsearch documentation for details on how sequence clustering is performed.
+identity threshold of their sequences. This is not a general-purpose
+closed-reference clustering method, but rather is intended to be used for
+clustering the results of quality-filtering/dereplication methods, such as
+DADA2, or for re-clustering a FeatureTable at a lower percent identity than
+it was originally clustered at. When a group of features in the input table
+are clustered into a single feature, the frequency of that single feature
+in a given sample is the sum of the frequencies of the features that were
+clustered in that sample. Feature identifiers will be inherited from the
+centroid feature of each cluster. See the vsearch documentation for details
+on how sequence clustering is performed.
 
 Parameters
 ----------
@@ -88,20 +88,23 @@
 strand : Str % Choices('plus', 'both'), optional
     Search plus (i.e., forward) or both (i.e., forward and reverse
     complement) strands.
+threads : Int % Range(0, 256, inclusive_end=True), optional
+    The number of threads to use for computation. Passing 0 will launch one
+    thread per CPU core.
 
 Returns
 -------
 clustered_table : FeatureTable[Frequency]
     The table following clustering of features.
 clustered_sequences : FeatureData[Sequence]
-    Sequences representing clustered features.
-new_reference_sequences : FeatureData[Sequence]
-    The new reference sequences. This can be used for subsequent runs of
-    open-reference clustering for consistent definitions of features across
-    open-reference feature tables.
-	]]></help>
-<macros>
+    The sequences representing clustered features, relabeled by the
+    reference IDs.
+unmatched_sequences : FeatureData[Sequence]
+    The sequences which failed to match any reference sequences. This
+    output maps to vsearch's --notmatched parameter.
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_cluster-features-de-novo.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_cluster-features-de-novo.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,40 +1,50 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_cluster-features-de-novo" name="qiime vsearch cluster-features-de-novo" version="2019.7">
-	<description> - De novo clustering of features.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_cluster-features-de-novo" name="qiime vsearch cluster-features-de-novo"
+      version="2020.8">
+  <description>De novo clustering of features.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch cluster-features-de-novo
 
 --i-sequences=$isequences
+
 --i-table=$itable
---p-perc-identity="$ppercidentity"
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
+--p-perc-identity=$ppercidentity
+
+--p-threads=$pthreads
 
 --o-clustered-table=oclusteredtable
+
 --o-clustered-sequences=oclusteredsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp oclusteredtable.qza $oclusteredtable;
 cp oclusteredsequences.qza $oclusteredsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data"/>
-		
-		<param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch's --id parameter.                                [required]" name="ppercidentity" optional="False" min="0" max="1" value="" exclude_min="True" exclude_max="False" type="float"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data" />
+    <param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch\'s --id parameter.                                [required]" name="ppercidentity" optional="False" type="text" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 De novo clustering of features.
-###############################
+###############################################################
 
 Given a feature table and the associated feature sequences, cluster the
 features based on user-specified percent identity threshold of their
@@ -58,15 +68,19 @@
 perc_identity : Float % Range(0, 1, inclusive_start=False, inclusive_end=True)
     The percent identity at which clustering should be performed. This
     parameter maps to vsearch's --id parameter.
+threads : Int % Range(0, 256, inclusive_end=True), optional
+    The number of threads to use for computation. Passing 0 will launch one
+    thread per CPU core.
+
 Returns
 -------
 clustered_table : FeatureTable[Frequency]
     The table following clustering of features.
 clustered_sequences : FeatureData[Sequence]
     Sequences representing clustered features.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_cluster-features-open-reference.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_cluster-features-open-reference.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,54 +1,65 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_cluster-features-open-reference" name="qiime vsearch cluster-features-open-reference" version="2019.7">
-	<description> -  Open-reference clustering of features.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_cluster-features-open-reference" name="qiime vsearch cluster-features-open-reference"
+      version="2020.8">
+  <description> Open-reference clustering of features.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch cluster-features-open-reference
 
 --i-sequences=$isequences
+
 --i-table=$itable
+
 --i-reference-sequences=$ireferencesequences
---p-perc-identity="$ppercidentity"
+
+--p-perc-identity=$ppercidentity
 
 #if str($pstrand) != 'None':
- --p-strand=$pstrand
+--p-strand=$pstrand
 #end if
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
+--p-threads=$pthreads
 
 --o-clustered-table=oclusteredtable
+
 --o-clustered-sequences=oclusteredsequences
+
 --o-new-reference-sequences=onewreferencesequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp oclusteredtable.qza $oclusteredtable;
-cp oclusteredsequences.qza $oclusteredsequences;
 cp onewreferencesequences.qza $onewreferencesequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The sequences to use as cluster centroids. [required]" name="ireferencesequences" optional="False" type="data"/>
 
-		<param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch's --id parameter.                                [required]" name="ppercidentity" optional="False" min="0" max="1" exclude_min="True" exclude_max="False" value="" type="float"/>
-		<param label="--p-strand: " name="pstrand" optional="True" type="select">
-			<option selected="True" value="None">Selection is Optional</option>
-			<option value="plus">plus</option>
-			<option value="both">both</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences"/>
-		<data format="qza" label="${tool.name} on ${on_string}: newreferencesequences.qza" name="onewreferencesequences"/>
-	</outputs>
-	<help><![CDATA[
-Open-reference clustering of features.
-######################################
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The sequences corresponding to the features in table.                                    [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] The feature table to be clustered.        [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The sequences to use as cluster centroids. [required]" name="ireferencesequences" optional="False" type="data" />
+    <param label="--p-perc-identity: PROPORTION Range(0, 1, inclusive_start=False, inclusive_end=True)   The percent identity at which clustering should be performed. This parameter maps to vsearch\'s --id parameter.                                [required]" name="ppercidentity" optional="False" type="text" />
+    <param label="--p-strand: " name="pstrand" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="plus">plus</option>
+      <option value="both">both</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredtable.qza" name="oclusteredtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: clusteredsequences.qza" name="oclusteredsequences" />
+    <data format="qza" label="${tool.name} on ${on_string}: newreferencesequences.qza" name="onewreferencesequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
+ Open-reference clustering of features.
+###############################################################
 
 Given a feature table and the associated feature sequences, cluster the
 features against a reference database based on user-specified percent
@@ -86,6 +97,9 @@
 strand : Str % Choices('plus', 'both'), optional
     Search plus (i.e., forward) or both (i.e., forward and reverse
     complement) strands.
+threads : Int % Range(0, 256, inclusive_end=True), optional
+    The number of threads to use for computation. Passing 0 will launch one
+    thread per CPU core.
 
 Returns
 -------
@@ -97,9 +111,9 @@
     The new reference sequences. This can be used for subsequent runs of
     open-reference clustering for consistent definitions of features across
     open-reference feature tables.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_dereplicate-sequences.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_dereplicate-sequences.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,10 +1,11 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_dereplicate-sequences" name="qiime vsearch dereplicate-sequences" version="2019.7">
-	<description> - Dereplicate sequences.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_dereplicate-sequences" name="qiime vsearch dereplicate-sequences"
+      version="2020.8">
+  <description>Dereplicate sequences.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch dereplicate-sequences
 
 --i-sequences=$isequences
@@ -14,22 +15,33 @@
 #end if
 
 --o-dereplicated-table=odereplicatedtable
+
 --o-dereplicated-sequences=odereplicatedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp odereplicatedtable.qza $odereplicatedtable;
 cp odereplicatedsequences.qza $odereplicatedsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[Sequences] | SampleData[SequencesWithQuality] | SampleData[JoinedSequencesWithQuality] The sequences to be dereplicated.         [required]" name="isequences" optional="False" type="data"/>
-		<param label="--p-derep-prefix: --p-no-derep-prefix Merge sequences with identical prefixes. If a sequence is identical to the prefix of two or more longer sequences, it is clustered with the shortest of them. If they are equally long, it is clustered with the most abundant.             [default: False]" name="pderepprefix" selected="False" type="boolean"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: dereplicatedtable.qza" name="odereplicatedtable"/>
-		<data format="qza" label="${tool.name} on ${on_string}: dereplicatedsequences.qza" name="odereplicatedsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[Sequences] | SampleData[SequencesWithQuality] | SampleData[JoinedSequencesWithQuality] The sequences to be dereplicated.         [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-derep-prefix: --p-derep-prefix: / --p-no-derep-prefix Merge sequences with identical prefixes. If a sequence is identical to the prefix of two or more longer sequences, it is clustered with the shortest of them. If they are equally long, it is clustered with the most abundant.             [default: False]" name="pderepprefix" selected="False" type="boolean" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: dereplicatedtable.qza" name="odereplicatedtable" />
+    <data format="qza" label="${tool.name} on ${on_string}: dereplicatedsequences.qza" name="odereplicatedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Dereplicate sequences.
-######################
+###############################################################
 
 Dereplicate sequence data and create a feature table and feature
 representative sequences. Feature identifiers in the resulting artifacts
@@ -53,9 +65,9 @@
     The table of dereplicated sequences.
 dereplicated_sequences : FeatureData[Sequence]
     The dereplicated sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2/qiime_vsearch_fastq-stats.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" ?>
+<tool id="qiime_vsearch_fastq-stats" name="qiime vsearch fastq-stats"
+      version="2020.8">
+  <description>Fastq stats with vsearch.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
+qiime vsearch fastq-stats
+
+--i-sequences=$isequences
+
+#if str($pthreads) != 'None':
+--p-threads=$pthreads
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odereplicatedsequences.qza $odereplicatedsequences
+
+;
+qiime tools export  ovisualization.qzv --output-path out
+&& mkdir -p '$ovisualization.files_path'
+&& cp -r out/* '$ovisualization.files_path'
+&& mv '$ovisualization.files_path/index.html' '$ovisualization'
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT SampleData[SequencesWithQuality | PairedEndSequencesWithQuality] Fastq sequences                           [required]" name="isequences" optional="False" type="data" />
+    <param label="--p-threads: " name="pthreads" optional="True" type="select">
+      <option selected="True" value="None">Selection is Optional</option>
+      <option value="Int % Range(1">Int % Range(1</option>
+      <option value="None">None</option>
+    </param>
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <help><![CDATA[
+Fastq stats with vsearch.
+###############################################################
+
+A fastq overview via vsearch's fastq_stats, fastq_eestats and
+fastq_eestats2 utilities. Please see https://github.com/torognes/vsearch
+for detailed documentation of these tools.
+
+Parameters
+----------
+sequences : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]
+    Fastq sequences
+threads : Int % Range(1, None) | Str % Choices('auto'), optional
+    The number of threads used for computation.
+
+Returns
+-------
+visualization : Visualization
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_join-pairs.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_join-pairs.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,92 +1,87 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_join-pairs" name="qiime vsearch join-pairs" version="2019.7">
-	<description> - Join paired-end reads.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_join-pairs" name="qiime vsearch join-pairs"
+      version="2020.8">
+  <description>Join paired-end reads.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch join-pairs
 
 --i-demultiplexed-seqs=$idemultiplexedseqs
 
 #if str($ptruncqual):
- --p-truncqual="$ptruncqual"
+  --p-truncqual=$ptruncqual
 #end if
-
-#if str($pminlen):
- --p-minlen=$pminlen
-#end if
+--p-minlen=$pminlen
 
 #if str($pmaxns):
- --p-maxns="$pmaxns"
+  --p-maxns=$pmaxns
 #end if
-
 #if $pallowmergestagger:
  --p-allowmergestagger
 #end if
 
-#if str($pminovlen):
- --p-minovlen=$pminovlen
-#end if
+--p-minovlen=$pminovlen
 
-#if str($pmaxdiffs):
- --p-maxdiffs=$pmaxdiffs
-#end if
+--p-maxdiffs=$pmaxdiffs
 
 #if str($pminmergelen):
- --p-minmergelen="$pminmergelen"
+  --p-minmergelen=$pminmergelen
 #end if
-
 #if str($pmaxmergelen):
- --p-maxmergelen="$pmaxmergelen"
+  --p-maxmergelen=$pmaxmergelen
 #end if
-
 #if str($pmaxee):
- --p-maxee="$pmaxee"
+  --p-maxee=$pmaxee
 #end if
+--p-qmin=$pqmin
+
+--p-qminout=$pqminout
+
+--p-qmax=$pqmax
 
-#if str($pqmin):
- --p-qmin=$pqmin
-#end if
+--p-qmaxout=$pqmaxout
+
+--p-threads=$pthreads
 
-#if str($pqminout):
- --p-qminout=$pqminout
+--o-joined-sequences=ojoinedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-#if str($pqmax):
- --p-qmax=$pqmax
-#end if
-
-#if str($pqmaxout):
- --p-qmaxout=$pqmaxout
-#end if
-
---o-joined-sequences=ojoinedsequences
 ;
 cp ojoinedsequences.qza $ojoinedsequences
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[PairedEndSequencesWithQuality] The demultiplexed paired-end sequences to be joined. [required]" name="idemultiplexedseqs" optional="False" type="data"/>
-		<param label="--p-truncqual: INTEGER  Truncate sequences at the first base with the Range(0, None)       specified quality score value or lower.    [optional]" name="ptruncqual" optional="True" min="0" type="integer"/>
-		<param label="--p-minlen: INTEGER     Sequences shorter than minlen after truncation are Range(0, None)       discarded.                               [default: 1]" name="pminlen" optional="True" type="integer" min="0" value="1"/>
-		<param label="--p-maxns: INTEGER      Sequences with more than maxns N characters are Range(0, None)       discarded.                                 [optional]" name="pmaxns" optional="True" min="0" type="integer"/>
-		<param label="--p-allowmergestagger: --p-no-allowmergestagger Allow joining of staggered read pairs. [default: False]" name="pallowmergestagger" selected="False" type="boolean"/>
-		<param label="--p-minovlen: INTEGER   Minimum overlap length of forward and reverse reads Range(0, None)       for joining.                            [default: 10]" name="pminovlen" optional="True" type="integer" min="0" value="10"/>
-		<param label="--p-maxdiffs: INTEGER   Maximum number of mismatches in the forward/reverse Range(0, None)       read overlap for joining.               [default: 10]" name="pmaxdiffs" optional="True" type="integer" min="0" value="10"/>
-		<param label="--p-minmergelen: INTEGER Range(0, None)       Minimum length of the joined read to be retained. [optional]" name="pminmergelen" optional="True" min="0" type="integer"/>
-		<param label="--p-maxmergelen: INTEGER Range(0, None)       Maximum length of the joined read to be retained. [optional]" name="pmaxmergelen" optional="True" min="0" type="integer"/>
-		<param label="--p-maxee: NUMBER       Maximum number of expected errors in the joined read Range(0.0, None)     to be retained.                            [optional]" name="pmaxee" optional="True" min="0" type="float"/>
-		<param label="--p-qmin: INTEGER Range(-5, 2, inclusive_end=True) The minimum allowed quality score in the input. [default: 0]" name="pqmin" optional="True" type="integer" min="-5" max="2" exclude_max="False" value="0"/>
-		<param label="--p-qminout: INTEGER Range(-5, 2, inclusive_end=True) The minimum allowed quality score to use in output. [default: 0]" name="pqminout" optional="True" type="integer" min="-5" max="2" exclude_max="False" value="0"/>
-		<param label="--p-qmax: INTEGER Range(40, 41, inclusive_end=True) The maximum allowed quality score in the input. [default: 41]" name="pqmax" optional="True" type="integer" min="40" max="41" exclude_max="False" value="41"/>
-		<param label="--p-qmaxout: INTEGER Range(40, 41, inclusive_end=True) The maximum allowed quality score to use in output. [default: 41]" name="pqmaxout" optional="True" type="integer" min="40" max="41" exclude_max="False" value="41"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: joinedsequences.qza" name="ojoinedsequences"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-demultiplexed-seqs: ARTIFACT SampleData[PairedEndSequencesWithQuality] The demultiplexed paired-end sequences to be joined. [required]" name="idemultiplexedseqs" optional="False" type="data" />
+    <param label="--p-truncqual: INTEGER  Truncate sequences at the first base with the Range(0, None)       specified quality score value or lower.    [optional]" name="ptruncqual" optional="False" type="text" />
+    <param label="--p-minlen: INTEGER     Sequences shorter than minlen after truncation are Range(0, None)       discarded.                               [default: 1]" min="0" name="pminlen" optional="True" type="integer" value="1" />
+    <param label="--p-maxns: INTEGER      Sequences with more than maxns N characters are Range(0, None)       discarded.                                 [optional]" name="pmaxns" optional="False" type="text" />
+    <param label="--p-allowmergestagger: --p-allowmergestagger: / --p-no-allowmergestagger Allow joining of staggered read pairs. [default: False]" name="pallowmergestagger" selected="False" type="boolean" />
+    <param label="--p-minovlen: INTEGER   Minimum overlap length of forward and reverse reads Range(0, None)       for joining.                            [default: 10]" min="0" name="pminovlen" optional="True" type="integer" value="10" />
+    <param label="--p-maxdiffs: INTEGER   Maximum number of mismatches in the forward/reverse Range(0, None)       read overlap for joining.               [default: 10]" min="0" name="pmaxdiffs" optional="True" type="integer" value="10" />
+    <param label="--p-minmergelen: INTEGER Range(0, None)       Minimum length of the joined read to be retained. [optional]" name="pminmergelen" optional="False" type="text" />
+    <param label="--p-maxmergelen: INTEGER Range(0, None)       Maximum length of the joined read to be retained. [optional]" name="pmaxmergelen" optional="False" type="text" />
+    <param label="--p-maxee: NUMBER       Maximum number of expected errors in the joined read Range(0.0, None)     to be retained.                            [optional]" name="pmaxee" optional="False" type="text" />
+    <param exclude_max="False" label="--p-qmin: INTEGER Range(-5, 2, inclusive_end=True) The minimum allowed quality score in the input. [default: 0]" max="2" min="-5" name="pqmin" optional="True" type="integer" value="0" />
+    <param exclude_max="False" label="--p-qminout: INTEGER Range(-5, 2, inclusive_end=True) The minimum allowed quality score to use in output. [default: 0]" max="2" min="-5" name="pqminout" optional="True" type="integer" value="0" />
+    <param exclude_max="False" label="--p-qmax: INTEGER Range(40, 41, inclusive_end=True) The maximum allowed quality score in the input. [default: 41]" max="41" min="40" name="pqmax" optional="True" type="integer" value="41" />
+    <param exclude_max="False" label="--p-qmaxout: INTEGER Range(40, 41, inclusive_end=True) The maximum allowed quality score to use in output. [default: 41]" max="41" min="40" name="pqmaxout" optional="True" type="integer" value="41" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: joinedsequences.qza" name="ojoinedsequences" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Join paired-end reads.
-######################
+###############################################################
 
 Join paired-end sequence reads using vsearch's merge_pairs function. The
 qmin, qminout, qmax, and qmaxout parameters should only need to be modified
@@ -126,14 +121,17 @@
     The maximum allowed quality score in the input.
 qmaxout : Int % Range(40, 41, inclusive_end=True), optional
     The maximum allowed quality score to use in output.
+threads : Int % Range(0, 8, inclusive_end=True), optional
+    The number of threads to use for computation. Does not scale much past
+    4 threads.
 
 Returns
 -------
 joined_sequences : SampleData[JoinedSequencesWithQuality]
     The joined sequences.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_uchime-denovo.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_uchime-denovo.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,61 +1,63 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_uchime-denovo" name="qiime vsearch uchime-denovo" version="2019.7">
-	<description> - De novo chimera filtering with vsearch.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_uchime-denovo" name="qiime vsearch uchime-denovo"
+      version="2020.8">
+  <description>De novo chimera filtering with vsearch.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch uchime-denovo
 
 --i-sequences=$isequences
+
 --i-table=$itable
 
-#if str($pdn):
- --p-dn=$pdn
-#end if
+--p-dn=$pdn
 
-#if str($pmindiffs):
- --p-mindiffs=$pmindiffs
-#end if
+--p-mindiffs=$pmindiffs
 
-#if str($pmindiv):
- --p-mindiv=$pmindiv
-#end if
+--p-mindiv=$pmindiv
 
-#if str($pminh):
- --p-minh=$pminh
-#end if
+--p-minh=$pminh
 
-#if str($pxn):
- --p-xn=$pxn
-#end if
+--p-xn=$pxn
 
 --o-chimeras=ochimeras
+
 --o-nonchimeras=ononchimeras
+
 --o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
 ;
-cp ochimeras.qza $ochimeras;
-cp ononchimeras.qza $ononchimeras;
 cp ostats.qza $ostats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The feature sequences to be chimera-checked. [required]" name="isequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table (used for computing total feature abundances).                              [required]" name="itable" optional="False" type="data"/>
 
-		<param label="--p-dn: NUMBER           No vote pseudo-count, corresponding to the Range(0.0, None)      parameter n in the chimera scoring function. [default: 1.4]" name="pdn" optional="True" type="float" min="0" value="1.4"/>
-		<param label="--p-mindiffs: INTEGER    Minimum number of differences per segment. Range(1, None)                                                [default: 3]" name="pmindiffs" optional="True" type="integer" min="1" value="3"/>
-		<param label="--p-mindiv: NUMBER       Minimum divergence from closest parent. Range(0.0, None)                                            [default: 0.8]" name="pmindiv" optional="True" type="float" min="0" value="0.8"/>
-		<param label="--p-minh: PROPORTION Range(0.0, 1.0, inclusive_end=True) Minimum score (h). Increasing this value tends to reduce the number of false positives and to decrease sensitivity.                         [default: 0.28]" name="pminh" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.28"/>
-		<param label="--p-xn: NUMBER Range(1.0, None, inclusive_start=False) No vote weight, corresponding to the parameter beta in the scoring function.              [default: 8.0]" name="pxn" optional="True" type="float" min="1" exclude_max="True" value="8.0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: chimeras.qza" name="ochimeras"/>
-		<data format="qza" label="${tool.name} on ${on_string}: nonchimeras.qza" name="ononchimeras"/>
-		<data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats"/>
-	</outputs>
-	<help><![CDATA[
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The feature sequences to be chimera-checked. [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table (used for computing total feature abundances).                              [required]" name="itable" optional="False" type="data" />
+    <param label="--p-dn: NUMBER           No vote pseudo-count, corresponding to the Range(0.0, None)      parameter n in the chimera scoring function. [default: 1.4]" min="0.0" name="pdn" optional="True" type="float" value="1.4" />
+    <param label="--p-mindiffs: INTEGER    Minimum number of differences per segment. Range(1, None)                                                [default: 3]" min="1" name="pmindiffs" optional="True" type="integer" value="3" />
+    <param label="--p-mindiv: NUMBER       Minimum divergence from closest parent. Range(0.0, None)                                            [default: 0.8]" min="0.0" name="pmindiv" optional="True" type="float" value="0.8" />
+    <param exclude_max="False" label="--p-minh: PROPORTION Range(0.0, 1.0, inclusive_end=True) Minimum score (h). Increasing this value tends to reduce the number of false positives and to decrease sensitivity.                         [default: 0.28]" max="1.0" min="0.0" name="pminh" optional="True" type="float" value="0.28" />
+    <param exclude_min="True" label="--p-xn: NUMBER Range(1.0, None, inclusive_start=False) No vote weight, corresponding to the parameter beta in the scoring function.              [default: 8.0]" max="None" min="1.0" name="pxn" optional="True" type="float" value="8.0" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: chimeras.qza" name="ochimeras" />
+    <data format="qza" label="${tool.name} on ${on_string}: nonchimeras.qza" name="ononchimeras" />
+    <data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 De novo chimera filtering with vsearch.
-#######################################
+###############################################################
 
 Apply the vsearch uchime_denovo method to identify chimeric feature
 sequences. The results of this method can be used to filter chimeric
@@ -90,9 +92,9 @@
     The non-chimeric sequences.
 stats : UchimeStats
     Summary statistics from chimera checking.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file
--- a/qiime2/qiime_vsearch_uchime-ref.xml	Thu Sep 03 09:46:00 2020 +0000
+++ b/qiime2/qiime_vsearch_uchime-ref.xml	Thu Sep 03 09:51:29 2020 +0000
@@ -1,67 +1,68 @@
 <?xml version="1.0" ?>
-<tool id="qiime_vsearch_uchime-ref" name="qiime vsearch uchime-ref" version="2019.7">
-	<description> - Reference-based chimera filtering with vsearch.</description>
-	<requirements>
-		<requirement type="package" version="2019.7">qiime2</requirement>
-	</requirements>
-	<command><![CDATA[
+<tool id="qiime_vsearch_uchime-ref" name="qiime vsearch uchime-ref"
+      version="2020.8">
+  <description>Reference-based chimera filtering with vsearch.</description>
+  <requirements>
+    <requirement type="package" version="2020.8">qiime2</requirement>
+  </requirements>
+  <command><![CDATA[
 qiime vsearch uchime-ref
 
 --i-sequences=$isequences
+
 --i-table=$itable
+
 --i-reference-sequences=$ireferencesequences
 
-#if str($pdn):
- --p-dn=$pdn
-#end if
+--p-dn=$pdn
+
+--p-mindiffs=$pmindiffs
 
-#if str($pmindiffs):
- --p-mindiffs=$pmindiffs
-#end if
+--p-mindiv=$pmindiv
+
+--p-minh=$pminh
+
+--p-xn=$pxn
 
-#if str($pmindiv):
- --p-mindiv=$pmindiv
-#end if
+--p-threads=$pthreads
+
+--o-chimeras=ochimeras
 
-#if str($pminh):
- --p-minh=$pminh
-#end if
+--o-nonchimeras=ononchimeras
 
-#if str($pxn):
- --p-xn=$pxn
+--o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
 #end if
 
-#set $pthreads = '${GALAXY_SLOTS:-4}'
-#if str($pthreads):
- --p-threads="$pthreads"
-#end if
-
---o-chimeras=ochimeras
---o-nonchimeras=ononchimeras
---o-stats=ostats
 ;
-cp ochimeras.qza $ochimeras;
-cp ononchimeras.qza $ononchimeras;
 cp ostats.qza $ostats
-	]]></command>
-	<inputs>
-		<param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The feature sequences to be chimera-checked. [required]" name="isequences" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table (used for computing total feature abundances).                              [required]" name="itable" optional="False" type="data"/>
-		<param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The non-chimeric reference sequences.     [required]" name="ireferencesequences" optional="False" type="data"/>
-		<param label="--p-dn: NUMBER           No vote pseudo-count, corresponding to the Range(0.0, None)      parameter n in the chimera scoring function. [default: 1.4]" name="pdn" optional="True" type="float" min="0" value="1.4"/>
-		<param label="--p-mindiffs: INTEGER    Minimum number of differences per segment. Range(1, None)                                                [default: 3]" name="pmindiffs" optional="True" type="integer" min="1" value="3"/>
-		<param label="--p-mindiv: NUMBER       Minimum divergence from closest parent. Range(0.0, None)                                            [default: 0.8]" name="pmindiv" optional="True" type="float" min="0" value="0.8"/>
-		<param label="--p-minh: PROPORTION Range(0.0, 1.0, inclusive_end=True) Minimum score (h). Increasing this value tends to reduce the number of false positives and to decrease sensitivity.                         [default: 0.28]" name="pminh" optional="True" type="float" min="0" max="1" exclude_max="False" value="0.28"/>
-		<param label="--p-xn: NUMBER Range(1.0, None, inclusive_start=False) No vote weight, corresponding to the parameter beta in the scoring function.              [default: 8.0]" name="pxn" optional="True" type="float" min="1" exclude_min="True" value="8.0"/>
-	</inputs>
-	<outputs>
-		<data format="qza" label="${tool.name} on ${on_string}: chimeras.qza" name="ochimeras"/>
-		<data format="qza" label="${tool.name} on ${on_string}: nonchimeras.qza" name="ononchimeras"/>
-		<data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats"/>
-	</outputs>
-	<help><![CDATA[
+
+  ]]></command>
+  <inputs>
+    <param format="qza,no_unzip.zip" label="--i-sequences: ARTIFACT FeatureData[Sequence] The feature sequences to be chimera-checked. [required]" name="isequences" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-table: ARTIFACT FeatureTable[Frequency] Feature table (used for computing total feature abundances).                              [required]" name="itable" optional="False" type="data" />
+    <param format="qza,no_unzip.zip" label="--i-reference-sequences: ARTIFACT FeatureData[Sequence] The non-chimeric reference sequences.     [required]" name="ireferencesequences" optional="False" type="data" />
+    <param label="--p-dn: NUMBER           No vote pseudo-count, corresponding to the Range(0.0, None)      parameter n in the chimera scoring function. [default: 1.4]" min="0.0" name="pdn" optional="True" type="float" value="1.4" />
+    <param label="--p-mindiffs: INTEGER    Minimum number of differences per segment. Range(1, None)                                                [default: 3]" min="1" name="pmindiffs" optional="True" type="integer" value="3" />
+    <param label="--p-mindiv: NUMBER       Minimum divergence from closest parent. Range(0.0, None)                                            [default: 0.8]" min="0.0" name="pmindiv" optional="True" type="float" value="0.8" />
+    <param exclude_max="False" label="--p-minh: PROPORTION Range(0.0, 1.0, inclusive_end=True) Minimum score (h). Increasing this value tends to reduce the number of false positives and to decrease sensitivity.                         [default: 0.28]" max="1.0" min="0.0" name="pminh" optional="True" type="float" value="0.28" />
+    <param exclude_min="True" label="--p-xn: NUMBER Range(1.0, None, inclusive_start=False) No vote weight, corresponding to the parameter beta in the scoring function.              [default: 8.0]" max="None" min="1.0" name="pxn" optional="True" type="float" value="8.0" />
+    <param label="--examples: Show usage examples and exit." name="examples" optional="False" type="data" />
+    
+  </inputs>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: chimeras.qza" name="ochimeras" />
+    <data format="qza" label="${tool.name} on ${on_string}: nonchimeras.qza" name="ononchimeras" />
+    <data format="qza" label="${tool.name} on ${on_string}: stats.qza" name="ostats" />
+    
+  </outputs>
+
+  <help><![CDATA[
 Reference-based chimera filtering with vsearch.
-###############################################
+###############################################################
 
 Apply the vsearch uchime_ref method to identify chimeric feature sequences.
 The results of this method can be used to filter chimeric features from the
@@ -101,9 +102,9 @@
     The non-chimeric sequences.
 stats : UchimeStats
     Summary statistics from chimera checking.
-	]]></help>
-<macros>
+  ]]></help>
+  <macros>
     <import>qiime_citation.xml</import>
-</macros>
-<expand macro="qiime_citation"/>
-</tool>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file