changeset 20:d93d8888f0b0 draft

Uploaded
author florianbegusch
date Fri, 04 Sep 2020 12:44:24 +0000
parents 6c48f8d82424
children a98d7ab297f1
files qiime2-2020.8/merge_feature_table_and_taxonomy.xml qiime2-2020.8/qiime_alignment_mafft-add.xml qiime2-2020.8/qiime_alignment_mafft.xml qiime2-2020.8/qiime_alignment_mask.xml qiime2-2020.8/qiime_citation.xml qiime2-2020.8/qiime_composition_add-pseudocount.xml qiime2-2020.8/qiime_composition_ancom.xml qiime2-2020.8/qiime_cutadapt_demux-paired.xml qiime2-2020.8/qiime_cutadapt_demux-single.xml qiime2-2020.8/qiime_cutadapt_trim-paired.xml qiime2-2020.8/qiime_cutadapt_trim-single.xml qiime2-2020.8/qiime_dada2_denoise-paired.xml qiime2-2020.8/qiime_dada2_denoise-pyro.xml qiime2-2020.8/qiime_dada2_denoise-single.xml qiime2-2020.8/qiime_deblur_denoise-16S.xml qiime2-2020.8/qiime_deblur_denoise-other.xml qiime2-2020.8/qiime_deblur_visualize-stats.xml qiime2-2020.8/qiime_demux_emp-paired.xml qiime2-2020.8/qiime_demux_emp-single.xml qiime2-2020.8/qiime_demux_filter-samples.xml qiime2-2020.8/qiime_demux_subsample-paired.xml qiime2-2020.8/qiime_demux_subsample-single.xml qiime2-2020.8/qiime_demux_summarize.xml qiime2-2020.8/qiime_diversity-lib_alpha-passthrough.xml qiime2-2020.8/qiime_diversity-lib_beta-passthrough.xml qiime2-2020.8/qiime_diversity-lib_beta-phylogenetic-passthrough.xml qiime2-2020.8/qiime_diversity-lib_bray-curtis.xml qiime2-2020.8/qiime_diversity-lib_faith-pd.xml qiime2-2020.8/qiime_diversity-lib_jaccard.xml qiime2-2020.8/qiime_diversity-lib_observed-features.xml qiime2-2020.8/qiime_diversity-lib_pielou-evenness.xml qiime2-2020.8/qiime_diversity-lib_shannon-entropy.xml qiime2-2020.8/qiime_diversity-lib_unweighted-unifrac.xml qiime2-2020.8/qiime_diversity-lib_weighted-unifrac.xml qiime2-2020.8/qiime_diversity_adonis.xml qiime2-2020.8/qiime_diversity_alpha-correlation.xml qiime2-2020.8/qiime_diversity_alpha-group-significance.xml qiime2-2020.8/qiime_diversity_alpha-phylogenetic.xml qiime2-2020.8/qiime_diversity_alpha-rarefaction.xml qiime2-2020.8/qiime_diversity_alpha.xml qiime2-2020.8/qiime_diversity_beta-correlation.xml qiime2-2020.8/qiime_diversity_beta-group-significance.xml qiime2-2020.8/qiime_diversity_beta-phylogenetic.xml qiime2-2020.8/qiime_diversity_beta-rarefaction.xml qiime2-2020.8/qiime_diversity_beta.xml qiime2-2020.8/qiime_diversity_bioenv.xml qiime2-2020.8/qiime_diversity_core-metrics-phylogenetic.xml qiime2-2020.8/qiime_diversity_core-metrics.xml qiime2-2020.8/qiime_diversity_filter-distance-matrix.xml qiime2-2020.8/qiime_diversity_mantel.xml qiime2-2020.8/qiime_diversity_pcoa-biplot.xml qiime2-2020.8/qiime_diversity_pcoa.xml qiime2-2020.8/qiime_diversity_procrustes-analysis.xml qiime2-2020.8/qiime_emperor_biplot.xml qiime2-2020.8/qiime_emperor_plot.xml qiime2-2020.8/qiime_emperor_procrustes-plot.xml qiime2-2020.8/qiime_feature-classifier_classify-consensus-blast.xml qiime2-2020.8/qiime_feature-classifier_classify-consensus-vsearch.xml qiime2-2020.8/qiime_feature-classifier_classify-hybrid-vsearch-sklearn.xml qiime2-2020.8/qiime_feature-classifier_classify-sklearn.xml qiime2-2020.8/qiime_feature-classifier_extract-reads.xml qiime2-2020.8/qiime_feature-classifier_fit-classifier-naive-bayes.xml qiime2-2020.8/qiime_feature-classifier_fit-classifier-sklearn.xml qiime2-2020.8/qiime_feature-table_core-features.xml qiime2-2020.8/qiime_feature-table_filter-features.xml qiime2-2020.8/qiime_feature-table_filter-samples.xml qiime2-2020.8/qiime_feature-table_filter-seqs.xml qiime2-2020.8/qiime_feature-table_group.xml qiime2-2020.8/qiime_feature-table_heatmap.xml qiime2-2020.8/qiime_feature-table_merge-seqs.xml qiime2-2020.8/qiime_feature-table_merge-taxa.xml qiime2-2020.8/qiime_feature-table_merge.xml qiime2-2020.8/qiime_feature-table_presence-absence.xml qiime2-2020.8/qiime_feature-table_rarefy.xml qiime2-2020.8/qiime_feature-table_relative-frequency.xml qiime2-2020.8/qiime_feature-table_rename-ids.xml qiime2-2020.8/qiime_feature-table_subsample.xml qiime2-2020.8/qiime_feature-table_summarize.xml qiime2-2020.8/qiime_feature-table_tabulate-seqs.xml qiime2-2020.8/qiime_feature-table_transpose.xml qiime2-2020.8/qiime_fragment-insertion_classify-otus-experimental.xml qiime2-2020.8/qiime_fragment-insertion_filter-features.xml qiime2-2020.8/qiime_fragment-insertion_sepp.xml qiime2-2020.8/qiime_gneiss_assign-ids.xml qiime2-2020.8/qiime_gneiss_correlation-clustering.xml qiime2-2020.8/qiime_gneiss_dendrogram-heatmap.xml qiime2-2020.8/qiime_gneiss_gradient-clustering.xml qiime2-2020.8/qiime_gneiss_ilr-hierarchical.xml qiime2-2020.8/qiime_gneiss_ilr-phylogenetic.xml qiime2-2020.8/qiime_longitudinal_anova.xml qiime2-2020.8/qiime_longitudinal_feature-volatility.xml qiime2-2020.8/qiime_longitudinal_first-differences.xml qiime2-2020.8/qiime_longitudinal_first-distances.xml qiime2-2020.8/qiime_longitudinal_linear-mixed-effects.xml qiime2-2020.8/qiime_longitudinal_maturity-index.xml qiime2-2020.8/qiime_longitudinal_nmit.xml qiime2-2020.8/qiime_longitudinal_pairwise-differences.xml qiime2-2020.8/qiime_longitudinal_pairwise-distances.xml qiime2-2020.8/qiime_longitudinal_plot-feature-volatility.xml qiime2-2020.8/qiime_longitudinal_volatility.xml qiime2-2020.8/qiime_phylogeny_align-to-tree-mafft-fasttree.xml qiime2-2020.8/qiime_phylogeny_align-to-tree-mafft-iqtree.xml qiime2-2020.8/qiime_phylogeny_align-to-tree-mafft-raxml.xml qiime2-2020.8/qiime_phylogeny_fasttree.xml qiime2-2020.8/qiime_phylogeny_filter-table.xml qiime2-2020.8/qiime_phylogeny_iqtree-ultrafast-bootstrap.xml qiime2-2020.8/qiime_phylogeny_iqtree.xml qiime2-2020.8/qiime_phylogeny_midpoint-root.xml qiime2-2020.8/qiime_phylogeny_raxml-rapid-bootstrap.xml qiime2-2020.8/qiime_phylogeny_raxml.xml qiime2-2020.8/qiime_phylogeny_robinson-foulds.xml qiime2-2020.8/qiime_quality-control_bowtie2-build.xml qiime2-2020.8/qiime_quality-control_evaluate-composition.xml qiime2-2020.8/qiime_quality-control_evaluate-seqs.xml qiime2-2020.8/qiime_quality-control_evaluate-taxonomy.xml qiime2-2020.8/qiime_quality-control_exclude-seqs.xml qiime2-2020.8/qiime_quality-control_filter-reads.xml qiime2-2020.8/qiime_quality-filter_q-score.xml qiime2-2020.8/qiime_sample-classifier_classify-samples-from-dist.xml qiime2-2020.8/qiime_sample-classifier_classify-samples-ncv.xml qiime2-2020.8/qiime_sample-classifier_classify-samples.xml qiime2-2020.8/qiime_sample-classifier_confusion-matrix.xml qiime2-2020.8/qiime_sample-classifier_fit-classifier.xml qiime2-2020.8/qiime_sample-classifier_fit-regressor.xml qiime2-2020.8/qiime_sample-classifier_heatmap.xml qiime2-2020.8/qiime_sample-classifier_metatable.xml qiime2-2020.8/qiime_sample-classifier_predict-classification.xml qiime2-2020.8/qiime_sample-classifier_predict-regression.xml qiime2-2020.8/qiime_sample-classifier_regress-samples-ncv.xml qiime2-2020.8/qiime_sample-classifier_regress-samples.xml qiime2-2020.8/qiime_sample-classifier_scatterplot.xml qiime2-2020.8/qiime_sample-classifier_split-table.xml qiime2-2020.8/qiime_sample-classifier_summarize.xml qiime2-2020.8/qiime_taxa_barplot.xml qiime2-2020.8/qiime_taxa_collapse.xml qiime2-2020.8/qiime_taxa_filter-seqs.xml qiime2-2020.8/qiime_taxa_filter-table.xml qiime2-2020.8/qiime_tools_export.xml qiime2-2020.8/qiime_tools_export_collection.xml qiime2-2020.8/qiime_tools_export_paired_collection.xml qiime2-2020.8/qiime_tools_import.xml qiime2-2020.8/qiime_vsearch_cluster-features-closed-reference.xml qiime2-2020.8/qiime_vsearch_cluster-features-de-novo.xml qiime2-2020.8/qiime_vsearch_cluster-features-open-reference.xml qiime2-2020.8/qiime_vsearch_dereplicate-sequences.xml qiime2-2020.8/qiime_vsearch_fastq-stats.xml qiime2-2020.8/qiime_vsearch_join-pairs.xml qiime2-2020.8/qiime_vsearch_uchime-denovo.xml qiime2-2020.8/qiime_vsearch_uchime-ref.xml
diffstat 149 files changed, 18911 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/merge_feature_table_and_taxonomy.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,34 @@
+<?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-2020.8/qiime_alignment_mafft-add.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_alignment_mafft.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,74 @@
+<?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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_alignment_mask.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" ?>
+<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 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 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
+presented in Lane (1991).
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    The alignment to be masked.
+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.
+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.
+
+Returns
+-------
+masked_alignment : FeatureData[AlignedSequence]
+    The masked alignment.
+  ]]></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-2020.8/qiime_citation.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,24 @@
+<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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_composition_add-pseudocount.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" ?>
+<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($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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to which pseudocounts should be added.
+pseudocount : Int, optional
+    The value to add to all counts in the feature table.
+
+Returns
+-------
+composition_table : FeatureTable[Composition]
+    The resulting feature table.
+  ]]></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-2020.8/qiime_composition_ancom.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" ?>
+<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 '__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($ptransformfunction) != 'None':
+--p-transform-function=$ptransformfunction
+#end if
+
+#if str($pdifferencefunction) != 'None':
+--p-difference-function=$pdifferencefunction
+#end if
+
+--o-visualization=ovisualization
+
+#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: 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.
+
+Parameters
+----------
+table : FeatureTable[Composition]
+    The feature table to be used for ANCOM computation.
+metadata : MetadataColumn[Categorical]
+    The categorical sample metadata column to test for differential
+    abundance across.
+transform_function : Str % Choices('sqrt', 'log', 'clr'), optional
+    The method applied to transform feature values before generating
+    volcano plots.
+difference_function : Str % Choices('mean_difference', 'f_statistic'), optional
+    The method applied to visualize fold difference in feature abundances
+    across groups for volcano plots.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_cutadapt_demux-paired.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,170 @@
+<?xml version="1.0" ?>
+<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(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 '__ob__' in str($mforwardbarcodescolumn):
+  #set $mforwardbarcodescolumn_temp = $mforwardbarcodescolumn.replace('__ob__', '[')
+  #set $mforwardbarcodescolumn = $mforwardbarcodescolumn_temp
+#end if
+#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($mreversebarcodescolumn):
+  --m-reverse-barcodes-column=$mreversebarcodescolumn
+#end if
+
+--p-error-rate=$perrorrate
+
+--p-minimum-length=$pminimumlength
+
+#if $pmixedorientation:
+ --p-mixed-orientation
+#end if
+
+--o-per-sample-sequences=opersamplesequences
+
+--o-untrimmed-sequences=ountrimmedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ountrimmedsequences.qza $ountrimmedsequences
+
+  ]]></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>
+
+  <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
+a separate barcode file).
+
+Parameters
+----------
+seqs : MultiplexedPairedEndBarcodeInSequence
+    The paired-end sequences to be demultiplexed.
+forward_barcodes : MetadataColumn[Categorical]
+    The sample metadata column listing the per-sample barcodes for the
+    forward reads.
+reverse_barcodes : MetadataColumn[Categorical], optional
+    The sample metadata column listing the per-sample barcodes for the
+    reverse reads.
+error_rate : Float % Range(0, 1, inclusive_end=True), optional
+    The level of error tolerance, specified as the maximum allowable error
+    rate.
+batch_size : Int % Range(0, None), optional
+    The number of samples cutadapt demultiplexes 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.
+minimum_length : Int % Range(1, None), optional
+    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
+-------
+per_sample_sequences : SampleData[PairedEndSequencesWithQuality]
+    The resulting demultiplexed sequences.
+untrimmed_sequences : MultiplexedPairedEndBarcodeInSequence
+    The sequences that were unmatched to barcodes.
+  ]]></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-2020.8/qiime_cutadapt_demux-single.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" ?>
+<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 $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 '__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
+
+
+--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 ountrimmedsequences.qza $ountrimmedsequences
+
+  ]]></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
+are expected to be located within the sequence data (versus the header, or
+a separate barcode file).
+
+Parameters
+----------
+seqs : MultiplexedSingleEndBarcodeInSequence
+    The single-end sequences to be demultiplexed.
+barcodes : MetadataColumn[Categorical]
+    The sample metadata column listing the per-sample barcodes.
+error_rate : Float % Range(0, 1, inclusive_end=True), optional
+    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%).
+batch_size : Int % Range(0, None), optional
+    The number of samples cutadapt demultiplexes 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.
+minimum_length : Int % Range(1, None), optional
+    Discard reads shorter than specified value. Note, the cutadapt default
+    of 0 has been overridden, because that value produces empty sequence
+    records.
+
+Returns
+-------
+per_sample_sequences : SampleData[SequencesWithQuality]
+    The resulting demultiplexed sequences.
+untrimmed_sequences : MultiplexedSingleEndBarcodeInSequence
+    The sequences that were unmatched to barcodes.
+  ]]></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-2020.8/qiime_cutadapt_trim-paired.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,219 @@
+<?xml version="1.0" ?>
+<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
+
+--p-cores=$pcores
+
+#if str($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 '__cb__' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('__cb__', ']')
+  #set $panywheref = $panywheref_temp
+#end if
+#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 '__db__' in str($panywheref):
+  #set $panywheref_temp = $panywheref.replace('__db__', '"')
+  #set $panywheref = $panywheref_temp
+#end if
+
+#if str($panywheref):
+  --p-anywhere-f=$panywheref
+#end if
+
+#if str($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 '__cb__' in str($panywherer):
+  #set $panywherer_temp = $panywherer.replace('__cb__', ']')
+  #set $panywherer = $panywherer_temp
+#end if
+#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 '__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
+
+--p-error-rate=$perrorrate
+
+#if $pnoindels:
+ --p-no-indels
+#end if
+
+--p-times=$ptimes
+
+--p-overlap=$poverlap
+
+#if $pmatchreadwildcards:
+ --p-match-read-wildcards
+#end if
+
+#if $pnomatchadapterwildcards:
+ --p-no-match-adapter-wildcards
+#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="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.
+###############################################################
+
+Search demultiplexed paired-end sequences for adapters and remove them. The
+parameter descriptions in this method are adapted from the official
+cutadapt docs - please see those docs at https://cutadapt.readthedocs.io
+for complete details.
+
+Parameters
+----------
+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
+    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.
+front_f : List[Str], optional
+    Sequence of an adapter ligated to the 5' end. The 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.
+anywhere_f : List[Str], optional
+    Sequence of an adapter that may be ligated to the 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.
+adapter_r : 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
+    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.
+front_r : List[Str], optional
+    Sequence of an adapter ligated to the 5' end. The 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.
+anywhere_r : List[Str], optional
+    Sequence of an adapter that may be ligated to the 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.
+error_rate : Float % Range(0, 1, inclusive_end=True), optional
+    Maximum allowed error rate.
+indels : Bool, optional
+    Allow insertions or deletions of bases when matching adapters.
+times : Int % Range(1, None), optional
+    Remove multiple occurrences of an adapter if it is repeated, up to
+    `times` times.
+overlap : Int % Range(1, None), optional
+    Require at least `overlap` bases of overlap between read and adapter
+    for an adapter to be found.
+match_read_wildcards : Bool, optional
+    Interpret IUPAC wildcards (e.g., N) in reads.
+match_adapter_wildcards : Bool, optional
+    Interpret IUPAC wildcards (e.g., N) in adapters.
+minimum_length : Int % Range(1, None), optional
+    Discard reads shorter than specified value. Note, the cutadapt default
+    of 0 has been overridden, because that value produces empty sequence
+    records.
+discard_untrimmed : Bool, optional
+    Discard reads in which no adapter was found.
+
+Returns
+-------
+trimmed_sequences : SampleData[PairedEndSequencesWithQuality]
+    The resulting trimmed sequences.
+  ]]></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-2020.8/qiime_cutadapt_trim-single.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,167 @@
+<?xml version="1.0" ?>
+<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
+
+--p-cores=$pcores
+
+#if $padapter:
+ --p-adapter
+#end if
+
+#if str($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 '__db__' in str($panywhere):
+  #set $panywhere_temp = $panywhere.replace('__db__', '"')
+  #set $panywhere = $panywhere_temp
+#end if
+
+#if str($panywhere):
+  --p-anywhere=$panywhere
+#end if
+
+--p-error-rate=$perrorrate
+
+#if $pnoindels:
+ --p-no-indels
+#end if
+
+--p-times=$ptimes
+
+--p-overlap=$poverlap
+
+#if $pmatchreadwildcards:
+ --p-match-read-wildcards
+#end if
+
+#if $pnomatchadapterwildcards:
+ --p-no-match-adapter-wildcards
+#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[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.
+###############################################################
+
+Search demultiplexed single-end sequences for adapters and remove them. The
+parameter descriptions in this method are adapted from the official
+cutadapt docs - please see those docs at https://cutadapt.readthedocs.io
+for complete details.
+
+Parameters
+----------
+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
+    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.
+front : List[Str], optional
+    Sequence of an adapter ligated to the 5' end. The 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.
+anywhere : List[Str], optional
+    Sequence of an adapter that may be ligated to the 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.
+error_rate : Float % Range(0, 1, inclusive_end=True), optional
+    Maximum allowed error rate.
+indels : Bool, optional
+    Allow insertions or deletions of bases when matching adapters.
+times : Int % Range(1, None), optional
+    Remove multiple occurrences of an adapter if it is repeated, up to
+    `times` times.
+overlap : Int % Range(1, None), optional
+    Require at least `overlap` bases of overlap between read and adapter
+    for an adapter to be found.
+match_read_wildcards : Bool, optional
+    Interpret IUPAC wildcards (e.g., N) in reads.
+match_adapter_wildcards : Bool, optional
+    Interpret IUPAC wildcards (e.g., N) in adapters.
+minimum_length : Int % Range(1, None), optional
+    Discard reads shorter than specified value. Note, the cutadapt default
+    of 0 has been overridden, because that value produces empty sequence
+    records.
+discard_untrimmed : Bool, optional
+    Discard reads in which no adapter was found.
+
+Returns
+-------
+trimmed_sequences : SampleData[SequencesWithQuality]
+    The resulting trimmed sequences.
+  ]]></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-2020.8/qiime_dada2_denoise-paired.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,187 @@
+<?xml version="1.0" ?>
+<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
+
+--p-trunc-len-r=$ptrunclenr
+
+--p-trim-left-f=$ptrimleftf
+
+--p-trim-left-r=$ptrimleftr
+
+--p-max-ee-f=$pmaxeef
+
+--p-max-ee-r=$pmaxeer
+
+--p-trunc-q=$ptruncq
+
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
+#end if
+
+#if str($pchimeramethod) != 'None':
+--p-chimera-method=$pchimeramethod
+#end if
+
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+
+--p-n-threads=$pnthreads
+
+--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
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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>
+
+  <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.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[PairedEndSequencesWithQuality]
+    The paired-end demultiplexed sequences to be denoised.
+trunc_len_f : Int
+    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
+trunc_len_r : Int
+    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
+trim_left_f : Int, optional
+    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.
+trim_left_r : Int, optional
+    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.
+max_ee_f : Float, optional
+    Forward reads with number of expected errors higher than this value
+    will be discarded.
+max_ee_r : Float, optional
+    Reverse reads with number of expected errors higher than this value
+    will be discarded.
+trunc_q : Int, optional
+    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.
+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
+    sequences found chimeric in a sufficient fraction of samples are
+    removed.
+min_fold_parent_over_abundance : Float, optional
+    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".
+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
+    model.
+hashed_feature_ids : Bool, optional
+    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.
+
+Returns
+-------
+table : FeatureTable[Frequency]
+    The resulting feature table.
+representative_sequences : FeatureData[Sequence]
+    The resulting feature sequences. Each feature in the feature table will
+    be represented by exactly one sequence, and these sequences will be the
+    joined paired-end sequences.
+denoising_stats : SampleData[DADA2Stats]
+  ]]></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-2020.8/qiime_dada2_denoise-pyro.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,166 @@
+<?xml version="1.0" ?>
+<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
+
+--p-trunc-len=$ptrunclen
+
+--p-trim-left=$ptrimleft
+
+--p-max-ee=$pmaxee
+
+--p-trunc-q=$ptruncq
+
+--p-max-len=$pmaxlen
+
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
+#end if
+
+#if str($pchimeramethod) != 'None':
+--p-chimera-method=$pchimeramethod
+#end if
+
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+
+--p-n-threads=$pnthreads
+
+--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
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[SequencesWithQuality]
+    The single-end demultiplexed pyrosequencing sequences (e.g. 454,
+    IonTorrent) to be denoised.
+trunc_len : Int
+    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
+trim_left : Int, optional
+    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.
+max_ee : Float, optional
+    Reads with number of expected errors higher than this value will be
+    discarded.
+trunc_q : Int, optional
+    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.
+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.
+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
+    sequences found chimeric in a sufficient fraction of samples are
+    removed.
+min_fold_parent_over_abundance : Float, optional
+    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".
+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
+    model.
+hashed_feature_ids : Bool, optional
+    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.
+
+Returns
+-------
+table : FeatureTable[Frequency]
+    The resulting feature table.
+representative_sequences : FeatureData[Sequence]
+    The resulting feature sequences. Each feature in the feature table will
+    be represented by exactly one sequence.
+denoising_stats : SampleData[DADA2Stats]
+  ]]></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-2020.8/qiime_dada2_denoise-single.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,159 @@
+<?xml version="1.0" ?>
+<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
+
+--p-trunc-len=$ptrunclen
+
+--p-trim-left=$ptrimleft
+
+--p-max-ee=$pmaxee
+
+--p-trunc-q=$ptruncq
+
+#if str($ppoolingmethod) != 'None':
+--p-pooling-method=$ppoolingmethod
+#end if
+
+#if str($pchimeramethod) != 'None':
+--p-chimera-method=$pchimeramethod
+#end if
+
+--p-min-fold-parent-over-abundance=$pminfoldparentoverabundance
+
+--p-n-threads=$pnthreads
+
+--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
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" 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.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]
+    The single-end demultiplexed sequences to be denoised.
+trunc_len : Int
+    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
+trim_left : Int, optional
+    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.
+max_ee : Float, optional
+    Reads with number of expected errors higher than this value will be
+    discarded.
+trunc_q : Int, optional
+    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.
+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
+    sequences found chimeric in a sufficient fraction of samples are
+    removed.
+min_fold_parent_over_abundance : Float, optional
+    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".
+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
+    model.
+hashed_feature_ids : Bool, optional
+    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.
+
+Returns
+-------
+table : FeatureTable[Frequency]
+    The resulting feature table.
+representative_sequences : FeatureData[Sequence]
+    The resulting feature sequences. Each feature in the feature table will
+    be represented by exactly one sequence.
+denoising_stats : SampleData[DADA2Stats]
+  ]]></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-2020.8/qiime_deblur_denoise-16S.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" ?>
+<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
+
+--p-trim-length=$ptrimlength
+
+--p-left-trim-len=$plefttrimlen
+
+#if $psamplestats:
+ --p-sample-stats
+#end if
+
+--p-mean-error=$pmeanerror
+
+--p-indel-prob=$pindelprob
+
+--p-indel-max=$pindelmax
+
+--p-min-reads=$pminreads
+
+--p-min-size=$pminsize
+
+--p-jobs-to-start=$pjobstostart
+
+#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 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" 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
+supported at this time. The specific reference used is the 88% OTUs from
+Greengenes 13_8. This mode of operation should only be used when data were
+generated from a 16S amplicon protocol on an Illumina platform. The
+reference is only used to assess whether each sequence is likely to be 16S
+by a local alignment using SortMeRNA with a permissive e-value; the
+reference is not used to characterize the sequences.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality]
+    The demultiplexed sequences to be denoised.
+trim_length : Int
+    Sequence trim length, specify -1 to disable trimming.
+left_trim_len : Int % Range(0, None), optional
+    Sequence trimming from the 5' end. A value of 0 will disable this trim.
+sample_stats : Bool, optional
+    If true, gather stats per sample.
+mean_error : Float, optional
+    The mean per nucleotide error, used for original sequence estimate.
+indel_prob : Float, optional
+    Insertion/deletion (indel) probability (same for N indels).
+indel_max : Int, optional
+    Maximum number of insertion/deletions.
+min_reads : Int, optional
+    Retain only features appearing at least min_reads times across all
+    samples in the resulting feature table.
+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.
+
+Returns
+-------
+table : FeatureTable[Frequency]
+    The resulting denoised feature table.
+representative_sequences : FeatureData[Sequence]
+    The resulting feature sequences.
+stats : DeblurStats
+    Per-sample stats if requested.
+  ]]></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-2020.8/qiime_deblur_denoise-other.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,132 @@
+<?xml version="1.0" ?>
+<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
+
+--p-trim-length=$ptrimlength
+
+--p-left-trim-len=$plefttrimlen
+
+#if $psamplestats:
+ --p-sample-stats
+#end if
+
+--p-mean-error=$pmeanerror
+
+--p-indel-prob=$pindelprob
+
+--p-indel-max=$pindelmax
+
+--p-min-reads=$pminreads
+
+--p-min-size=$pminsize
+
+--p-jobs-to-start=$pjobstostart
+
+#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 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" 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
+are supported at this time. This mode of execution is particularly useful
+when operating on non-16S data. For example, to apply Deblur to 18S data,
+you would want to specify a reference composed of 18S sequences in order to
+filter out sequences which do not appear to be 18S. The assessment is
+performed by local alignment using SortMeRNA with a permissive e-value
+threshold.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality]
+    The demultiplexed sequences to be denoised.
+reference_seqs : FeatureData[Sequence]
+    Positive filtering database. Keep all sequences aligning to these
+    sequences.
+trim_length : Int
+    Sequence trim length, specify -1 to disable trimming.
+left_trim_len : Int % Range(0, None), optional
+    Sequence trimming from the 5' end. A value of 0 will disable this trim.
+sample_stats : Bool, optional
+    If true, gather stats per sample.
+mean_error : Float, optional
+    The mean per nucleotide error, used for original sequence estimate.
+indel_prob : Float, optional
+    Insertion/deletion (indel) probability (same for N indels).
+indel_max : Int, optional
+    Maximum number of insertion/deletions.
+min_reads : Int, optional
+    Retain only features appearing at least min_reads times across all
+    samples in the resulting feature table.
+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.
+
+Returns
+-------
+table : FeatureTable[Frequency]
+    The resulting denoised feature table.
+representative_sequences : FeatureData[Sequence]
+    The resulting feature sequences.
+stats : DeblurStats
+    Per-sample stats if requested.
+  ]]></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-2020.8/qiime_deblur_visualize-stats.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" ?>
+<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
+
+;
+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" />
+    <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
+
+Parameters
+----------
+deblur_stats : DeblurStats
+    Summary statistics of the Deblur process.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_demux_emp-paired.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" ?>
+<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
+# 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 '__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:
+ --p-no-golay-error-correction
+#end if
+
+#if $prevcompbarcodes:
+ --p-rev-comp-barcodes
+#end if
+
+#if $prevcompmappingbarcodes:
+ --p-rev-comp-mapping-barcodes
+#end if
+
+--o-per-sample-sequences=opersamplesequences
+
+--o-error-correction-details=oerrorcorrectiondetails
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oerrorcorrectiondetails.qza $oerrorcorrectiondetails
+
+  ]]></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
+sequencing protocol. Details about this protocol can be found at
+http://www.earthmicrobiome.org/protocols-and-standards/
+
+Parameters
+----------
+seqs : EMPPairedEndSequences
+    The paired-end sequences to be demultiplexed.
+barcodes : MetadataColumn[Categorical]
+    The sample metadata column containing the per-sample barcodes.
+golay_error_correction : Bool, optional
+    Perform 12nt Golay error correction on the barcode reads.
+rev_comp_barcodes : Bool, optional
+    If provided, the barcode sequence reads will be reverse complemented
+    prior to demultiplexing.
+rev_comp_mapping_barcodes : Bool, optional
+    If provided, the barcode sequences in the sample metadata will be
+    reverse complemented prior to demultiplexing.
+
+Returns
+-------
+per_sample_sequences : SampleData[PairedEndSequencesWithQuality]
+    The resulting demultiplexed sequences.
+error_correction_details : ErrorCorrectionDetails
+    Detail about the barcode error corrections.
+  ]]></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-2020.8/qiime_demux_emp-single.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" ?>
+<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
+# 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 '__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:
+ --p-no-golay-error-correction
+#end if
+
+#if $prevcompbarcodes:
+ --p-rev-comp-barcodes
+#end if
+
+#if $prevcompmappingbarcodes:
+ --p-rev-comp-mapping-barcodes
+#end if
+
+--o-per-sample-sequences=opersamplesequences
+
+--o-error-correction-details=oerrorcorrectiondetails
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oerrorcorrectiondetails.qza $oerrorcorrectiondetails
+
+  ]]></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
+protocol. Details about this protocol can be found at
+http://www.earthmicrobiome.org/protocols-and-standards/
+
+Parameters
+----------
+seqs : RawSequences | EMPSingleEndSequences | EMPPairedEndSequences
+    The single-end sequences to be demultiplexed.
+barcodes : MetadataColumn[Categorical]
+    The sample metadata column containing the per-sample barcodes.
+golay_error_correction : Bool, optional
+    Perform 12nt Golay error correction on the barcode reads.
+rev_comp_barcodes : Bool, optional
+    If provided, the barcode sequence reads will be reverse complemented
+    prior to demultiplexing.
+rev_comp_mapping_barcodes : Bool, optional
+    If provided, the barcode sequences in the sample metadata will be
+    reverse complemented prior to demultiplexing.
+
+Returns
+-------
+per_sample_sequences : SampleData[SequencesWithQuality]
+    The resulting demultiplexed sequences.
+error_correction_details : ErrorCorrectionDetails
+    Detail about the barcode error corrections.
+  ]]></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-2020.8/qiime_demux_filter-samples.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,113 @@
+<?xml version="1.0" ?>
+<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
+
+--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
+#end if
+
+#if $pexcludeids:
+ --p-exclude-ids
+#end if
+
+--o-filtered-demux=ofiltereddemux
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofiltereddemux.qza $ofiltereddemux
+
+  ]]></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
+`exclude_ids` parameter allows for filtering of all samples not specified.
+
+Parameters
+----------
+demux : SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality² | JoinedSequencesWithQuality³]
+    The demultiplexed data from which samples should be filtered.
+metadata : Metadata
+    Sample metadata indicating which sample ids to filter. The optional
+    `where` parameter may be used to filter 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.
+where : Str, optional
+    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.
+exclude_ids : Bool, optional
+    Defaults to False. If True, the samples selected by the `metadata` and
+    optional `where` parameter will be excluded from the filtered data.
+
+Returns
+-------
+filtered_demux : SampleData[SequencesWithQuality¹ | PairedEndSequencesWithQuality² | JoinedSequencesWithQuality³]
+    Filtered demultiplexed data.
+  ]]></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-2020.8/qiime_demux_subsample-paired.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" ?>
+<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
+
+--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" 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
+parameter. The number of output samples will always be equal to the number
+of input samples, even if some of those samples contain no sequences after
+subsampling.
+
+Parameters
+----------
+sequences : SampleData[PairedEndSequencesWithQuality]
+    The demultiplexed sequences to be subsampled.
+fraction : Float % Range(0, 1, inclusive_start=False)
+    The fraction of sequences to retain in subsample.
+
+Returns
+-------
+subsampled_sequences : SampleData[PairedEndSequencesWithQuality]
+    The subsampled sequences.
+  ]]></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-2020.8/qiime_demux_subsample-single.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" ?>
+<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
+
+--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" 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
+parameter. The number of output samples will always be equal to the number
+of input samples, even if some of those samples contain no sequences after
+subsampling.
+
+Parameters
+----------
+sequences : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality]
+    The demultiplexed sequences to be subsampled.
+fraction : Float % Range(0, 1, inclusive_start=False)
+    The fraction of sequences to retain in subsample.
+
+Returns
+-------
+subsampled_sequences : SampleData[SequencesWithQuality]
+    The subsampled sequences.
+  ]]></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-2020.8/qiime_demux_summarize.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<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
+# 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
+
+--p-n=$pn
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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>
+    <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.
+
+Parameters
+----------
+data : SampleData[SequencesWithQuality | PairedEndSequencesWithQuality | JoinedSequencesWithQuality]
+    The demultiplexed sequences to be summarized.
+n : Int, optional
+    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.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity-lib_alpha-passthrough.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_beta-passthrough.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_beta-phylogenetic-passthrough.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_bray-curtis.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_faith-pd.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_jaccard.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_observed-features.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_pielou-evenness.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_shannon-entropy.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_unweighted-unifrac.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_diversity-lib_weighted-unifrac.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_diversity_adonis.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,108 @@
+<?xml version="1.0" ?>
+<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
+
+--p-formula=$pformula
+
+--p-permutations=$ppermutations
+
+--p-n-jobs=$pnjobs
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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'
+
+;
+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" />
+    <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
+function partitions sums of squares of a multivariate data set, and is
+directly analogous to MANOVA (multivariate analysis of variance). This
+action differs from beta_group_significance in that it accepts R formulae
+to perform multi-way ADONIS tests; beta_group_signficance only performs
+one-way tests. For more details see
+http://cc.oulu.fi/~jarioksa/softhelp/vegan/html/adonis.html
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+metadata : Metadata
+    Sample metadata containing formula terms.
+formula : Str
+    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.
+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>
+    <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-2020.8/qiime_diversity_alpha-correlation.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" ?>
+<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 str($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+#if $pintersectids:
+ --p-intersect-ids
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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.
+
+Parameters
+----------
+alpha_diversity : SampleData[AlphaDiversity]
+    Vector of alpha diversity values by sample.
+metadata : Metadata
+    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>
+    <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-2020.8/qiime_diversity_alpha-group-significance.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" ?>
+<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
+--m-metadata-file=$list_dict_to_string($input_files_mmetadatafile)
+# end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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'
+
+;
+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.
+
+Parameters
+----------
+alpha_diversity : SampleData[AlphaDiversity]
+    Vector of alpha diversity values by sample.
+metadata : Metadata
+    The sample metadata.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_alpha-phylogenetic.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" ?>
+<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 | 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 | RelativeFrequency | PresenceAbsence]
+    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]
+    Vector containing per-sample alpha diversities.
+  ]]></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-2020.8/qiime_diversity_alpha-rarefaction.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,141 @@
+<?xml version="1.0" ?>
+<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($iphylogeny) != 'None':
+--i-phylogeny=$iphylogeny
+#end if
+
+--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
+
+--p-min-depth=$pmindepth
+
+--p-steps=$psteps
+
+--p-iterations=$piterations
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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-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>
+
+  <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
+compute is controlled by the `steps` parameter, with n `iterations` being
+computed at each rarefaction depth. If sample metadata is provided, samples
+may be grouped based on distinct values within a metadata column.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table to compute rarefaction curves from.
+max_depth : Int % Range(1, None)
+    The maximum rarefaction depth. Must be greater than min_depth.
+phylogeny : Phylogeny[Rooted], optional
+    Optional phylogeny for phylogenetic metrics.
+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
+    The minimum rarefaction depth.
+steps : Int % Range(2, None), optional
+    The number of rarefaction depths to include between min_depth and
+    max_depth.
+iterations : Int % Range(1, None), optional
+    The number of rarefied feature tables to compute at each step.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_alpha.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" ?>
+<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 | 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 | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples for which alpha diversity
+    should be computed.
+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>
+    <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-2020.8/qiime_diversity_beta-correlation.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,160 @@
+<?xml version="1.0" ?>
+<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
+
+
+#if str($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+--p-permutations=$ppermutations
+
+#if $pintersectids:
+ --p-intersect-ids
+#end if
+
+#if str($plabel1):
+  --p-label1=$plabel1
+#end if
+#if str($plabel2):
+  --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 str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+;
+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" />
+    <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>
+
+  <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.
+Actions used internally: `distance-matrix` from q2-metadata and `mantel`
+from q2-diversity.
+
+Parameters
+----------
+metadata : MetadataColumn[Numeric]
+    Numeric metadata column from which to compute pairwise Euclidean
+    distances
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+method : Str % Choices('spearman', 'pearson'), optional
+    The correlation test to be applied in the Mantel test.
+permutations : Int % Range(0, None), optional
+    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).
+intersect_ids : Bool, optional
+    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.
+label1 : Str, optional
+    Label for `distance_matrix` in the output visualization.
+label2 : Str, optional
+    Label for `metadata_distance_matrix` in the output visualization.
+
+Returns
+-------
+metadata_distance_matrix : DistanceMatrix
+    The Distance Matrix produced from the metadata column and used in the
+    mantel test
+mantel_scatter_visualization : Visualization
+    Scatter plot rendering of the manteltest results
+  ]]></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-2020.8/qiime_diversity_beta-group-significance.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,132 @@
+<?xml version="1.0" ?>
+<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
+# 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($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+#if $ppairwise:
+ --p-pairwise
+#end if
+
+--p-permutations=$ppermutations
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp odistancematrix.qza $odistancematrix
+
+;
+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" />
+    <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.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+metadata : MetadataColumn[Categorical]
+    Categorical sample metadata column.
+method : Str % Choices('permanova', 'anosim', 'permdisp'), optional
+    The group significance test to be applied.
+pairwise : Bool, optional
+    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.
+permutations : Int, optional
+    The number of permutations to be run when computing p-values.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_beta-phylogenetic.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" ?>
+<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
+
+#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 | 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 | RelativeFrequency | PresenceAbsence]
+    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('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
+    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-2020.8/qiime_diversity_beta-rarefaction.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" ?>
+<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 $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-sampling-depth=$psamplingdepth
+
+--p-iterations=$piterations
+
+#if str($pcorrelationmethod) != 'None':
+--p-correlation-method=$pcorrelationmethod
+#end if
+
+#if str($pcolorscheme) != 'None':
+--p-color-scheme=$pcolorscheme
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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 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>
+
+  <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
+visualizer will provide: an Emperor jackknifed PCoA plot, samples clustered
+by UPGMA or neighbor joining with support calculation, and a heatmap
+showing the correlation between rarefaction trials of that beta diversity
+metric.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table upon which to perform beta diversity rarefaction
+    analyses.
+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
+    rarefaction trial will be used for the tree, and the remaining trials
+    are used to calculate the support of the internal nodes of that tree.
+metadata : Metadata
+    The sample metadata used for the Emperor jackknifed PCoA plot.
+sampling_depth : Int % Range(1, None)
+    The total frequency that each sample should be rarefied to prior to
+    computing the diversity metric.
+iterations : Int % Range(2, None), optional
+    Number of times to rarefy the feature table at a given sampling depth.
+phylogeny : Phylogeny[Rooted], optional
+    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. [required for phylogenetic metrics]
+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
+    The matplotlib color scheme to generate the heatmap with.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_beta.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" ?>
+<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
+
+--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 | 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 | RelativeFrequency | PresenceAbsence]
+    The feature table containing the samples over which beta diversity
+    should be computed.
+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>
+    <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-2020.8/qiime_diversity_bioenv.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" ?>
+<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
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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
+metadata will be considered, and samples which are missing data will be
+dropped. The output visualization will indicate how many samples were
+dropped due to missing data, if any were dropped.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+metadata : Metadata
+    The sample metadata.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_core-metrics-phylogenetic.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,205 @@
+<?xml version="1.0" ?>
+<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
+
+--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 str($pnjobsorthreads) != 'None':
+--p-n-jobs-or-threads=$pnjobsorthreads
+#end if
+
+--o-rarefied-table=orarefiedtable
+
+--o-faith-pd-vector=ofaithpdvector
+
+--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 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  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  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  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" 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>
+
+  <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples over which diversity metrics
+    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.
+sampling_depth : Int % Range(1, None)
+    The total frequency that each sample should be rarefied to prior to
+    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
+-------
+rarefied_table : FeatureTable[Frequency]
+    The resulting rarefied feature table.
+faith_pd_vector : SampleData[AlphaDiversity]
+    Vector of Faith PD 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]
+    Vector of Pielou's evenness values by sample.
+unweighted_unifrac_distance_matrix : DistanceMatrix
+    Matrix of unweighted UniFrac distances between pairs of samples.
+weighted_unifrac_distance_matrix : DistanceMatrix
+    Matrix of weighted UniFrac distances between pairs of samples.
+jaccard_distance_matrix : DistanceMatrix
+    Matrix of Jaccard distances between pairs of samples.
+bray_curtis_distance_matrix : DistanceMatrix
+    Matrix of Bray-Curtis distances between pairs of samples.
+unweighted_unifrac_pcoa_results : PCoAResults
+    PCoA matrix computed from unweighted UniFrac distances between samples.
+weighted_unifrac_pcoa_results : PCoAResults
+    PCoA matrix computed from weighted UniFrac distances between samples.
+jaccard_pcoa_results : PCoAResults
+    PCoA matrix computed from Jaccard distances between samples.
+bray_curtis_pcoa_results : PCoAResults
+    PCoA matrix computed from Bray-Curtis distances between samples.
+unweighted_unifrac_emperor : Visualization
+    Emperor plot of the PCoA matrix computed from unweighted UniFrac.
+weighted_unifrac_emperor : Visualization
+    Emperor plot of the PCoA matrix computed from weighted UniFrac.
+jaccard_emperor : Visualization
+    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>
+    <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-2020.8/qiime_diversity_core-metrics.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,156 @@
+<?xml version="1.0" ?>
+<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
+
+--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 $pwithreplacement:
+ --p-with-replacement
+#end if
+
+#if str($pnjobs) != 'None':
+--p-n-jobs=$pnjobs
+#end if
+
+--o-rarefied-table=orarefiedtable
+
+--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 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  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" 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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples over which diversity metrics
+    should be computed.
+sampling_depth : Int % Range(1, None)
+    The total frequency that each sample should be rarefied to prior to
+    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_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]
+    Vector of Pielou's evenness values by sample.
+jaccard_distance_matrix : DistanceMatrix
+    Matrix of Jaccard distances between pairs of samples.
+bray_curtis_distance_matrix : DistanceMatrix
+    Matrix of Bray-Curtis distances between pairs of samples.
+jaccard_pcoa_results : PCoAResults
+    PCoA matrix computed from Jaccard distances between samples.
+bray_curtis_pcoa_results : PCoAResults
+    PCoA matrix computed from Bray-Curtis distances between samples.
+jaccard_emperor : Visualization
+    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>
+    <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-2020.8/qiime_diversity_filter-distance-matrix.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,114 @@
+<?xml version="1.0" ?>
+<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 '__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
+#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" />
+    <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>
+
+  <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
+retaining only the samples not matching that criteria, if `exclude_ids` is
+True). See the filtering tutorial on https://docs.qiime2.org for additional
+details.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Distance matrix to filter by sample.
+metadata : Metadata
+    Sample metadata used with `where` parameter when selecting samples to
+    retain, or with `exclude_ids` when selecting samples to discard.
+where : Str, optional
+    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.
+exclude_ids : Bool, optional
+    If `True`, the samples selected by `metadata` or `where` parameters
+    will be excluded from the filtered distance matrix instead of being
+    retained.
+
+Returns
+-------
+filtered_distance_matrix : DistanceMatrix
+    Distance matrix filtered to include samples matching search criteria
+  ]]></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-2020.8/qiime_diversity_mantel.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,111 @@
+<?xml version="1.0" ?>
+<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
+#end if
+
+--p-permutations=$ppermutations
+
+#if $pintersectids:
+ --p-intersect-ids
+#end if
+
+#if str($plabel1):
+  --p-label1=$plabel1
+#end if
+#if str($plabel2):
+  --p-label2=$plabel2
+#end if
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofiltereddistancematrix.qza $ofiltereddistancematrix
+
+;
+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]" 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
+results. Thus, comparing distance matrix X to distance matrix Y is
+equivalent to comparing Y to X.  Note: the order of samples within the two
+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/skbio.stats.distance.mantel
+
+Parameters
+----------
+dm1 : DistanceMatrix
+    Matrix of distances between pairs of samples.
+dm2 : DistanceMatrix
+    Matrix of distances between pairs of samples.
+method : Str % Choices('spearman', 'pearson'), optional
+    The correlation test to be applied in the Mantel test.
+permutations : Int % Range(0, None), optional
+    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).
+intersect_ids : Bool, optional
+    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.
+label1 : Str, optional
+    Label for `dm1` in the output visualization.
+label2 : Str, optional
+    Label for `dm2` in the output visualization.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_diversity_pcoa-biplot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" ?>
+<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" />
+    <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
+recommended that these variables be normalized in cases of dimensionally
+heterogeneous physical variables.
+
+Parameters
+----------
+pcoa : PCoAResults
+    The PCoA where the features will be projected onto.
+features : FeatureTable[RelativeFrequency]
+    Variables to project onto the PCoA matrix
+
+Returns
+-------
+biplot : PCoAResults % Properties('biplot')
+    The resulting PCoA 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-2020.8/qiime_diversity_pcoa.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" ?>
+<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
+#end if
+--o-pcoa=opcoa
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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="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.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    The distance matrix on which PCoA should be computed.
+number_of_dimensions : Int % Range(1, None), optional
+    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.
+
+Returns
+-------
+pcoa : PCoAResults
+    The resulting PCoA 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-2020.8/qiime_diversity_procrustes-analysis.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+<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
+
+--p-dimensions=$pdimensions
+
+--o-transformed-reference=otransformedreference
+
+--o-transformed-other=otransformedother
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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]" 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
+
+Parameters
+----------
+reference : PCoAResults
+    The ordination matrix to which data is fitted to.
+other : PCoAResults
+    The ordination matrix that's fitted to the reference ordination.
+dimensions : Int % Range(1, None), optional
+
+Returns
+-------
+transformed_reference : PCoAResults
+    A normalized version of the "reference" ordination matrix.
+transformed_other : PCoAResults
+    A normalized and fitted version of the "other" ordination 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-2020.8/qiime_emperor_biplot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" ?>
+<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 $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 $pinvert:
+ --p-invert
+#end if
+
+--p-number-of-features=$pnumberoffeatures
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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. Vectors representing the n most
+important features are then plotted in the emperor visualization (5
+largest, by default).
+
+Parameters
+----------
+biplot : PCoAResults % Properties('biplot')
+    The principal coordinates matrix to be plotted.
+sample_metadata : Metadata
+    The sample metadata
+feature_metadata : Metadata, optional
+    The feature metadata (useful to manipulate the arrows in the plot).
+ignore_missing_samples : Bool, optional
+    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.
+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. “Importance” is calculated for each feature based on the
+    vector’s magnitude (euclidean distance from origin).
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_emperor_plot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" ?>
+<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 str($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
+
+;
+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" />
+    <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>
+
+  <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.
+
+Parameters
+----------
+pcoa : PCoAResults
+    The principal coordinates matrix to be plotted.
+metadata : Metadata
+    The sample metadata.
+custom_axes : List[Str], optional
+    Numeric sample metadata columns that should be included as axes in the
+    Emperor plot.
+ignore_missing_samples : Bool, optional
+    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.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_emperor_procrustes-plot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" ?>
+<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 str($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
+
+;
+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'
+
+  ]]></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>
+
+  <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
+
+Parameters
+----------
+reference_pcoa : PCoAResults
+    The reference ordination matrix to be plotted.
+other_pcoa : PCoAResults
+    The "other" ordination matrix to be plotted (the one that was fitted to
+    the reference).
+metadata : Metadata
+    The sample metadata.
+custom_axes : List[Str], optional
+    Numeric sample metadata columns that should be included as axes in the
+    Emperor plot.
+ignore_missing_samples : Bool, optional
+    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.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_feature-classifier_classify-consensus-blast.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" ?>
+<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
+
+--i-reference-taxonomy=$ireferencetaxonomy
+
+--p-maxaccepts=$pmaxaccepts
+
+--p-perc-identity=$ppercidentity
+
+--p-query-cov=$pquerycov
+
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
+#end if
+
+--p-evalue=$pevalue
+
+--p-min-consensus=$pminconsensus
+
+#if str($punassignablelabel):
+  --p-unassignable-label=$punassignablelabel
+#end if
+--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" />
+    <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
+taxonomy to each query sequence from among maxaccepts hits, min_consensus
+of which share that taxonomic assignment. Note that maxaccepts selects the
+first N hits with > perc_identity similarity to query, not the top N
+matches. For top N hits, use classify-consensus-vsearch.
+
+Parameters
+----------
+query : FeatureData[Sequence]
+    Sequences to classify taxonomically.
+reference_reads : FeatureData[Sequence]
+    reference sequences.
+reference_taxonomy : FeatureData[Taxonomy]
+    reference taxonomy labels.
+maxaccepts : Int % Range(1, None), optional
+    Maximum number of hits to keep for each query. Must be in range [1,
+    infinity]. BLAST will choose the first N hits in the reference database
+    that exceed perc_identity similarity to query.
+perc_identity : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    Reject match if percent identity to query is lower. Must be in range
+    [0.0, 1.0].
+query_cov : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    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].
+strand : Str % Choices('both', 'plus', 'minus'), optional
+    Align against reference sequences in forward ("plus"), reverse
+    ("minus"), or both directions ("both").
+evalue : Float, optional
+    BLAST expectation value (E) threshold for saving hits.
+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. Must be in range (0.5, 1.0].
+unassignable_label : Str, optional
+
+Returns
+-------
+classification : FeatureData[Taxonomy]
+    Taxonomy classifications of query sequences.
+  ]]></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-2020.8/qiime_feature-classifier_classify-consensus-vsearch.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,197 @@
+<?xml version="1.0" ?>
+<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($pmaxaccepts) != 'None':
+--p-maxaccepts=$pmaxaccepts
+#end if
+
+--p-perc-identity=$ppercidentity
+
+--p-query-cov=$pquerycov
+
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
+#end if
+
+--p-min-consensus=$pminconsensus
+
+#if str($punassignablelabel):
+  --p-unassignable-label=$punassignablelabel
+#end if
+#if $psearchexact:
+ --p-search-exact
+#end if
+
+#if $ptophitsonly:
+ --p-top-hits-only
+#end if
+
+#if str($pmaxhits) != 'None':
+--p-maxhits=$pmaxhits
+#end if
+
+#if str($pmaxrejects) != 'None':
+--p-maxrejects=$pmaxrejects
+#end if
+
+#if $pnooutputnohits:
+ --p-no-output-no-hits
+#end if
+
+--p-weak-id=$pweakid
+
+--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" />
+    <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>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
+
+  <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
+taxonomy to each query sequence from among maxaccepts top hits,
+min_consensus of which share that taxonomic assignment. Unlike classify-
+consensus-blast, this method searches the entire reference database before
+choosing the top N hits, not the first N hits.
+
+Parameters
+----------
+query : FeatureData[Sequence]
+    Sequences to classify taxonomically.
+reference_reads : FeatureData[Sequence]
+    reference sequences.
+reference_taxonomy : FeatureData[Taxonomy]
+    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. 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
+    Reject match if query alignment coverage per high-scoring pair is
+    lower.
+strand : Str % Choices('both', 'plus'), optional
+    Align against reference sequences in forward ("plus") or both
+    directions ("both").
+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.
+unassignable_label : Str, optional
+search_exact : Bool, optional
+    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.
+top_hits_only : Bool, optional
+    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.
+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.
+
+Returns
+-------
+classification : FeatureData[Taxonomy]
+    The resulting taxonomy classifications.
+  ]]></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-2020.8/qiime_feature-classifier_classify-hybrid-vsearch-sklearn.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,214 @@
+<?xml version="1.0" ?>
+<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
+
+--i-reference-taxonomy=$ireferencetaxonomy
+
+--i-classifier=$iclassifier
+
+#if str($pmaxaccepts) != 'None':
+--p-maxaccepts=$pmaxaccepts
+#end if
+
+--p-perc-identity=$ppercidentity
+
+--p-query-cov=$pquerycov
+
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
+#end if
+
+--p-min-consensus=$pminconsensus
+
+#if str($pmaxhits) != 'None':
+--p-maxhits=$pmaxhits
+#end if
+
+#if str($pmaxrejects) != 'None':
+--p-maxrejects=$pmaxrejects
+#end if
+
+#if str($pconfidence) != 'None':
+--p-confidence=$pconfidence
+#end if
+
+#if str($preadorientation) != 'None':
+--p-read-orientation=$preadorientation
+#end if
+
+--p-threads=$pthreads
+
+#if $pnoprefilter:
+ --p-no-prefilter
+#end if
+
+--p-sample-size=$psamplesize
+
+--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" />
+    <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>
+
+  <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
+classifier. First performs rough positive filter to remove artifact and
+low-coverage sequences (use "prefilter" parameter to toggle this step on or
+off). Second, performs VSEARCH exact match between query and
+reference_reads to find exact matches, followed by least common ancestor
+consensus taxonomy assignment from among maxaccepts top hits, min_consensus
+of which share that taxonomic assignment. Query sequences without an exact
+match are then classified with a pre-trained sklearn taxonomy classifier to
+predict the most likely taxonomic lineage.
+
+Parameters
+----------
+query : FeatureData[Sequence]
+    Sequences to classify taxonomically.
+reference_reads : FeatureData[Sequence]
+    reference sequences.
+reference_taxonomy : FeatureData[Taxonomy]
+    reference taxonomy labels.
+classifier : TaxonomicClassifier
+    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. 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
+    rough pre-filter. This parameter is ignored if `prefilter` is disabled.
+query_cov : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    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.
+strand : Str % Choices('both', 'plus'), optional
+    Align against reference sequences in forward ("plus") or both
+    directions ("both").
+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 /
+    threads, 20000).
+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', 'auto'), optional
+    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.
+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
+    Randomly extract the given number of sequences from the reference
+    database to use for prefiltering. This parameter is ignored if
+    `prefilter` is disabled.
+randseed : Int % Range(0, None), optional
+    Use integer as a seed for the pseudo-random generator 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.
+
+Returns
+-------
+classification : FeatureData[Taxonomy]
+    The resulting taxonomy classifications.
+  ]]></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-2020.8/qiime_feature-classifier_classify-sklearn.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" ?>
+<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
+
+--i-reads=$ireads
+
+--i-classifier=$iclassifier
+
+--p-n-jobs=$pnjobs
+
+#if str($pconfidence) != 'None':
+--p-confidence=$pconfidence
+#end if
+
+#if str($preadorientation) != 'None':
+--p-read-orientation=$preadorientation
+#end if
+
+--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-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.
+
+Parameters
+----------
+reads : FeatureData[Sequence]
+    The feature data to be classified.
+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 "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 % 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', '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. "auto" will
+    autodetect orientation based on the confidence estimates for the first
+    100 reads.
+
+Returns
+-------
+classification : FeatureData[Taxonomy]
+  ]]></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-2020.8/qiime_feature-classifier_extract-reads.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,130 @@
+<?xml version="1.0" ?>
+<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=$isequences
+
+--p-f-primer=$pfprimer
+
+--p-r-primer=$prprimer
+
+--p-trim-right=$ptrimright
+
+--p-trunc-len=$ptrunclen
+
+--p-trim-left=$ptrimleft
+
+--p-identity=$pidentity
+
+--p-min-length=$pminlength
+
+--p-max-length=$pmaxlength
+
+--p-n-jobs=$pnjobs
+
+#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>
+    <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>
+
+  <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 (5' -> 3').
+r_primer : Str
+    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 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 trim_right and trunc_len.
+identity : Float, optional
+    minimum combined primer match identity threshold.
+min_length : Int % Range(0, None), optional
+    Minimum amplicon length. Shorter amplicons are discarded. Applied after
+    trimming and truncation, so be aware that trimming may impact sequence
+    retention. Set to zero to disable min length filtering.
+max_length : Int % Range(0, None), optional
+    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>
+    <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-2020.8/qiime_feature-classifier_fit-classifier-naive-bayes.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,208 @@
+<?xml version="1.0" ?>
+<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-reads=$ireferencereads
+
+--i-reference-taxonomy=$ireferencetaxonomy
+
+#if str($iclassweight) != 'None':
+--i-class-weight=$iclassweight
+#end if
+
+--p-classify--alpha=$pclassifyalpha
+
+--p-classify--chunk-size=$pclassifychunksize
+
+#if str($pclassifyclassprior):
+  --p-classify--class-prior=$pclassifyclassprior
+#end if
+#if $pclassifyfitprior:
+ --p-classify--fit-prior
+#end if
+
+#if $pfeatextalternatesign:
+ --p-feat-ext--alternate-sign
+#end if
+
+#if str($pfeatextanalyzer):
+  --p-feat-ext--analyzer=$pfeatextanalyzer
+#end if
+#if $pfeatextbinary:
+ --p-feat-ext--binary
+#end if
+
+#if str($pfeatextdecodeerror):
+  --p-feat-ext--decode-error=$pfeatextdecodeerror
+#end if
+#if str($pfeatextencoding):
+  --p-feat-ext--encoding=$pfeatextencoding
+#end if
+#if str($pfeatextinput):
+  --p-feat-ext--input=$pfeatextinput
+#end if
+#if $pnofeatextlowercase:
+ --p-no-feat-ext--lowercase
+#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 '__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 str($pfeatextngramrange):
+  --p-feat-ext--ngram-range=$pfeatextngramrange
+#end if
+
+#if str($pfeatextnorm):
+  --p-feat-ext--norm=$pfeatextnorm
+#end if
+#if str($pfeatextpreprocessor):
+  --p-feat-ext--preprocessor=$pfeatextpreprocessor
+#end if
+#if str($pfeatextstopwords):
+  --p-feat-ext--stop-words=$pfeatextstopwords
+#end if
+#if str($pfeatextstripaccents):
+  --p-feat-ext--strip-accents=$pfeatextstripaccents
+#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 str($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-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__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>
+    <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-2020.8/qiime_feature-classifier_fit-classifier-sklearn.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" ?>
+<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($iclassweight) != 'None':
+--i-class-weight=$iclassweight
+#end if
+
+--p-classifier-specification=$pclassifierspecification
+
+--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-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>
+    <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-2020.8/qiime_feature-table_core-features.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" ?>
+<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
+
+--p-min-fraction=$pminfraction
+
+--p-max-fraction=$pmaxfraction
+
+--p-steps=$psteps
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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 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>
+
+  <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
+----------
+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
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_feature-table_filter-features.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,138 @@
+<?xml version="1.0" ?>
+<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
+
+--p-min-frequency=$pminfrequency
+
+#if str($pmaxfrequency):
+  --p-max-frequency=$pmaxfrequency
+#end if
+--p-min-samples=$pminsamples
+
+#if str($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
+#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] 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>
+
+  <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
+the filtering tutorial on https://docs.qiime2.org for additional details.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table from which features should be filtered.
+min_frequency : Int, optional
+    The minimum total frequency that a feature must have to be retained.
+max_frequency : Int, optional
+    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).
+min_samples : Int, optional
+    The minimum number of samples that a feature must be observed in to be
+    retained.
+max_samples : Int, optional
+    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).
+metadata : Metadata, optional
+    Feature metadata used with `where` parameter when selecting features to
+    retain, or with `exclude_ids` when selecting features to discard.
+where : Str, optional
+    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.
+exclude_ids : Bool, optional
+    If true, the features selected by `metadata` or `where` parameters will
+    be excluded from the filtered table instead of being retained.
+
+Returns
+-------
+filtered_table : FeatureTable[Frequency]
+    The resulting feature table filtered by feature.
+  ]]></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-2020.8/qiime_feature-table_filter-samples.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,137 @@
+<?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
+
+--p-min-frequency=$pminfrequency
+
+#if str($pmaxfrequency):
+  --p-max-frequency=$pmaxfrequency
+#end if
+--p-min-features=$pminfeatures
+
+#if str($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
+#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="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
+the filtering tutorial on https://docs.qiime2.org for additional details.
+
+Parameters
+----------
+table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴]
+    The feature table from which samples should be filtered.
+min_frequency : Int, optional
+    The minimum total frequency that a sample must have to be retained.
+max_frequency : Int, optional
+    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).
+min_features : Int, optional
+    The minimum number of features that a sample must have to be retained.
+max_features : Int, optional
+    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).
+metadata : Metadata, optional
+    Sample metadata used with `where` parameter when selecting samples to
+    retain, or with `exclude_ids` when selecting samples to discard.
+where : Str, optional
+    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.
+exclude_ids : Bool, optional
+    If true, the samples selected by `metadata` or `where` parameters will
+    be excluded from the filtered table instead of being retained.
+
+Returns
+-------
+filtered_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Composition⁴]
+    The resulting feature table filtered by sample.
+  ]]></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-2020.8/qiime_feature-table_filter-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,130 @@
+<?xml version="1.0" ?>
+<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
+# 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
+#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
+#end if
+
+#if $pexcludeids:
+ --p-exclude-ids
+#end if
+
+--o-filtered-data=ofiltereddata
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofiltereddata.qza $ofiltereddata
+
+  ]]></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>
+
+  <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.
+This method can filter based on ids in a table or a metadata file, but not
+both (i.e., the table and metadata options are mutually exclusive).
+
+Parameters
+----------
+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.
+metadata : Metadata, optional
+    Feature metadata used for id-based filtering, with `where` parameter
+    when selecting features to retain, or with `exclude_ids` when selecting
+    features to discard.
+where : Str, optional
+    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.
+exclude_ids : Bool, optional
+    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.
+
+Returns
+-------
+filtered_data : FeatureData[Sequence¹ | AlignedSequence²]
+    The resulting filtered sequences.
+  ]]></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-2020.8/qiime_feature-table_group.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" ?>
+<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
+# 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
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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="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>
+
+  <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The table to group samples or features on.
+axis : Str % Choices('sample', 'feature')
+    Along which axis to group. Each ID in the given axis must exist in
+    `metadata`.
+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('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;
+    `median-ceiling` will take the ceiling of the median of these
+    frequencies.
+
+Returns
+-------
+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>
+    <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-2020.8/qiime_feature-table_heatmap.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,410 @@
+<?xml version="1.0" ?>
+<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
+
+#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 '__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:
+ --p-no-normalize
+#end if
+
+#if str($ptitle):
+  --p-title=$ptitle
+#end if
+#if str($pmetric) != 'None':
+--p-metric=$pmetric
+#end if
+
+#if str($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+#if str($pcluster) != 'None':
+--p-cluster=$pcluster
+#end if
+
+#if str($pcolorscheme) != 'None':
+--p-color-scheme=$pcolorscheme
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+containing taxonomic annotations, use `qiime taxa collapse` to collapse the
+feature table at the desired taxonomic level.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to visualize.
+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('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('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('both', 'features', 'none', 'samples'), optional
+    Specify which axes to cluster.
+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>
+    <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-2020.8/qiime_feature-table_merge-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" ?>
+<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
+
+--o-merged-data=omergeddata
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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: 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
+in the inputs, the data from the first will be propagated to the result.
+
+Parameters
+----------
+data : List[FeatureData[Sequence]]
+    The collection of feature sequences to be merged.
+
+Returns
+-------
+merged_data : FeatureData[Sequence]
+    The resulting collection of feature sequences containing all feature
+    sequences provided.
+  ]]></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-2020.8/qiime_feature-table_merge-taxa.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+<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
+
+--o-merged-data=omergeddata
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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: 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
+feature id in the inputs, the data from the first will be propagated to the
+result.
+
+Parameters
+----------
+data : List[FeatureData[Taxonomy]]
+    The collection of feature taxonomies to be merged.
+
+Returns
+-------
+merged_data : FeatureData[Taxonomy]
+    The resulting collection of feature taxonomies containing all feature
+    taxonomies provided.
+  ]]></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-2020.8/qiime_feature-table_merge.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" ?>
+<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 str($poverlapmethod) != 'None':
+--p-overlap-method=$poverlapmethod
+#end if
+
+--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: 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.
+
+Parameters
+----------
+tables : List[FeatureTable[Frequency]]
+    The collection of feature tables to be merged.
+overlap_method : Str % Choices('error_on_overlapping_sample', 'error_on_overlapping_feature', 'sum'), optional
+    Method for handling overlapping ids.
+
+Returns
+-------
+merged_table : FeatureTable[Frequency]
+    The resulting merged feature table.
+  ]]></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-2020.8/qiime_feature-table_presence-absence.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" ?>
+<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
+
+#if $itable:
+ --i-table
+#end if
+
+#if $opresenceabsencetable:
+ --o-presence-absence-table
+#end if
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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.
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency]
+    The feature table to be converted into presence/absence abundances.
+
+Returns
+-------
+presence_absence_table : FeatureTable[PresenceAbsence]
+    The resulting presence/absence feature table.
+  ]]></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-2020.8/qiime_feature-table_rarefy.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" ?>
+<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
+
+--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" 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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to be rarefied.
+sampling_depth : Int % 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.
+with_replacement : Bool, optional
+    Rarefy with replacement by sampling from the multinomial distribution
+    instead of rarefying without replacement.
+
+Returns
+-------
+rarefied_table : FeatureTable[Frequency]
+    The resulting rarefied feature table.
+  ]]></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-2020.8/qiime_feature-table_relative-frequency.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" ?>
+<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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to be converted into relative frequencies.
+
+Returns
+-------
+relative_frequency_table : FeatureTable[RelativeFrequency]
+    The resulting relative frequency feature table.
+  ]]></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-2020.8/qiime_feature-table_rename-ids.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_feature-table_subsample.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" ?>
+<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
+
+--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" 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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to be sampled.
+subsampling_depth : Int % 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.
+axis : Str % Choices('sample', 'feature')
+    The axis to sample over. If "sample" then samples will be randomly
+    selected to be retained. If "feature" then a random set of features
+    will be selected to be retained.
+
+Returns
+-------
+sampled_table : FeatureTable[Frequency]
+    The resulting subsampled feature table.
+  ]]></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-2020.8/qiime_feature-table_summarize.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" ?>
+<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 $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
+
+;
+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="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.
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | PresenceAbsence]
+    The feature table to be summarized.
+sample_metadata : Metadata, optional
+    The sample metadata.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_feature-table_tabulate-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" ?>
+<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
+# 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
+
+;
+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>
+    <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 | AlignedSequence]
+    The feature sequences to be tabulated.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_feature-table_transpose.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" ?>
+<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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table to be transposed.
+
+Returns
+-------
+transposed_feature_table : FeatureTable[Frequency]
+    The resulting transposed feature table.
+  ]]></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-2020.8/qiime_fragment-insertion_classify-otus-experimental.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" ?>
+<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
+
+--i-reference-taxonomy=$ireferencetaxonomy
+
+--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" />
+    <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>
+
+  <outputs>
+    <data format="qza" label="${tool.name} on ${on_string}: classification.qza" name="oclassification" />
+    
+  </outputs>
+
+  <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
+the reference taxonomy.
+
+Parameters
+----------
+representative_sequences : FeatureData[Sequence]
+    The sequences used for a 'sepp' run to produce the 'tree'.
+tree : Phylogeny[Rooted]
+    The tree resulting from inserting fragments into a reference phylogeny,
+    i.e. the output of function 'sepp'
+reference_taxonomy : FeatureData[Taxonomy]
+    Reference taxonomic table that maps every OTU-ID into a taxonomic
+    lineage string.
+
+Returns
+-------
+classification : FeatureData[Taxonomy]
+    Taxonomic lineages for inserted fragments.
+  ]]></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-2020.8/qiime_fragment-insertion_filter-features.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<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 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" />
+    <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
+get inserted by SEPP into a reference phylogeny. To be able to use the
+feature-table for downstream analyses like computing Faith's PD or UniFrac,
+the feature-table must be cleared of fragments that are not part of the
+phylogenetic tree, because their path length can otherwise not be
+determined. Typically, the number of rejected fragments is low (<= 10), but
+it might be worth to inspect the ratio of reads assigned to those rejected
+fragments.
+
+Parameters
+----------
+table : 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.
+tree : Phylogeny[Rooted]
+    The tree resulting from inserting fragments into a reference phylogeny,
+    i.e. the output of function 'sepp'
+
+Returns
+-------
+filtered_table : FeatureTable[Frequency]
+    The input table minus those fragments that were not part of the tree.
+    This feature-table can be used for downstream analyses like
+    phylogenetic alpha- or beta- diversity computation.
+removed_table : FeatureTable[Frequency]
+    Those fragments that got removed from the input table, because they
+    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>
+    <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-2020.8/qiime_fragment-insertion_sepp.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" ?>
+<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
+
+--i-reference-database=$ireferencedatabase
+
+--p-alignment-subset-size=$palignmentsubsetsize
+
+--p-placement-subset-size=$pplacementsubsetsize
+
+--p-threads=$pthreads
+
+#if $pdebug:
+ --p-debug
+#end if
+
+--o-tree=otree
+
+--o-placements=oplacements
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oplacements.qza $oplacements
+
+  ]]></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>
+
+  <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 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.
+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. Further reading:
+    https://github.com/smirarab/sepp/blob/master/tutorial/sepp-
+    tutorial.md#sample-datasets-default-parameters.
+threads : Int, optional
+    The number of threads to use.
+debug : Bool, optional
+    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.
+placements : Placements
+    Information about the feature placements within the reference 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-2020.8/qiime_gneiss_assign-ids.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" ?>
+<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 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" />
+    <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
+table columns with the tree tip names
+
+Parameters
+----------
+input_table : FeatureTable[Frequency]
+    The input table of counts.
+input_tree : Phylogeny[Rooted]
+    The input tree with potential missing ids.
+
+Returns
+-------
+output_table : FeatureTable[Frequency]
+    A table with features matching the tree tips.
+output_tree : Hierarchy
+    A tree with uniquely identifying ids.
+  ]]></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-2020.8/qiime_gneiss_correlation-clustering.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" ?>
+<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
+
+--p-pseudocount=$ppseudocount
+
+--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] 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
+based on the degree of proportionality between features.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table containing the samples in which the columns will be
+    clustered.
+pseudocount : Float, optional
+    The value to add to zero counts in the feature table.
+
+Returns
+-------
+clustering : 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.
+  ]]></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-2020.8/qiime_gneiss_dendrogram-heatmap.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,222 @@
+<?xml version="1.0" ?>
+<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
+# 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-pseudocount=$ppseudocount
+
+--p-ndim=$pndim
+
+#if str($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+#if str($pcolormap) != 'None':
+--p-color-map=$pcolormap
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+specified by the tree.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    The feature table that will be plotted as a heatmap. This table is
+    assumed to have strictly positive values.
+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 : MetadataColumn[Categorical]
+    Categorical metadata column to group the samples.
+pseudocount : Float, optional
+    The pseudocount to add to avoid division by zero.
+ndim : Int, optional
+    Number of dimensions to highlight.
+method : Str % Choices('clr', 'log'), optional
+    Specifies how the data should be normalized for display.Options include
+    'log' or 'clr' (default='clr').
+color_map : Str % Choices('viridis', 'inferno', 'plasma', 'magma', 'Blues', 'BuGn', 'BuPu', 'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu', 'Reds', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'afmhot', 'autumn', 'bone', 'cool', 'copper', 'gist_heat', 'gray', 'hot', 'pink', 'spring', 'summer', 'winter', 'BrBG', 'bwr', 'coolwarm', 'PiYG', 'PRGn', 'PuOr', 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral', 'seismic', 'Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3', 'Vega10', 'Vega20', 'Vega20b', 'Vega20c', 'gist_earth', 'terrain', 'ocean', 'gist_stern', 'brg', 'CMRmap', 'cubehelix', 'gnuplot', 'gnuplot2', 'gist_ncar', 'nipy_spectral', 'jet', 'rainbow', 'gist_rainbow', 'hsv', 'flag', 'prism'), optional
+    Specifies the color map for plotting the heatmap. See
+    https://matplotlib.org/examples/color/colormaps_reference.html for more
+    details.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_gneiss_gradient-clustering.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,108 @@
+<?xml version="1.0" ?>
+<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
+
+#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 $pignoremissingsamples:
+ --p-ignore-missing-samples
+#end if
+
+#if $pnoweighted:
+ --p-no-weighted
+#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 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
+based on the mean difference of gradients that each feature is observed in.
+This method is primarily used to sort the table to reveal the underlying
+block-like structures.
+
+Parameters
+----------
+table : FeatureTable[Frequency | RelativeFrequency | Composition]
+    The feature table containing the samples in which the columns will be
+    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.
+
+Returns
+-------
+clustering : 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.
+  ]]></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-2020.8/qiime_gneiss_ilr-hierarchical.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" ?>
+<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
+
+--p-pseudocount=$ppseudocount
+
+--o-balances=obalances
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency | Composition]
+    The feature table containing the samples in which the ilr transform
+    will be performed.
+tree : Hierarchy
+    A hierarchy of feature identifiers that 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.
+pseudocount : Float, optional
+    The value to add to zero counts in the feature table.
+
+Returns
+-------
+balances : FeatureTable[Balance]
+    The resulting balances from the ilr transform.
+  ]]></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-2020.8/qiime_gneiss_ilr-phylogenetic.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" ?>
+<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
+
+--p-pseudocount=$ppseudocount
+
+--o-balances=obalances
+
+--o-hierarchy=ohierarchy
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency | Composition]
+    The feature table containing the samples in which the ilr transform
+    will be performed.
+tree : Phylogeny[Rooted]
+    A rooted phylogeny of feature identifiers that 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.
+pseudocount : Float, optional
+    The value to add to zero counts in the feature table.
+
+Returns
+-------
+balances : FeatureTable[Balance]
+    The resulting balances from the ilr transform.
+hierarchy : Hierarchy
+    Hierarchy from bifurcated phylogeny
+  ]]></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-2020.8/qiime_longitudinal_anova.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" ?>
+<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 $pformula:
+ --p-formula
+#end if
+
+#if str($psstype) != 'None':
+--p-sstype=$psstype
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ohierarchy.qza $ohierarchy
+
+;
+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>
+    <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>
+
+  <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
+examine pairwise differences between categorical sample groups.
+
+Parameters
+----------
+metadata : Metadata
+    Sample metadata containing formula terms.
+formula : Str
+    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.
+sstype : Str % Choices('I', 'II', 'III'), optional
+    Type of sum of squares calculation to perform (I, II, or III).
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_longitudinal_feature-volatility.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,242 @@
+<?xml version="1.0" ?>
+<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
+
+
+#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
+#end if
+
+--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
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+#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 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" />
+    <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>
+
+  <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
+states using interactive feature volatility plots. A supervised learning
+regressor is used to identify important features and assess their ability
+to predict sample states. state_column will typically be a measure of time,
+but any numeric metadata column can be used.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata containing collection time (state) values for each sample.
+    Must contain exclusively numeric values.
+individual_id_column : Str, optional
+    Metadata column containing IDs for individual subjects.
+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('RandomForestRegressor', 'ExtraTreesRegressor', 'GradientBoostingRegressor', 'AdaBoostRegressor', 'ElasticNet', 'Ridge', 'Lasso', 'KNeighborsRegressor', 'LinearSVR', 'SVR'), optional
+    Estimator method to use for sample prediction.
+parameter_tuning : Bool, optional
+    Automatically tune hyperparameters using random grid search.
+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.
+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
+-------
+filtered_table : FeatureTable[RelativeFrequency]
+    Feature table containing only important features.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+volatility_plot : Visualization
+    Interactive volatility plot visualization.
+accuracy_results : Visualization
+    Accuracy results visualization.
+sample_estimator : SampleEstimator[Regressor]
+    Trained sample regressor.
+  ]]></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-2020.8/qiime_longitudinal_first-differences.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,169 @@
+<?xml version="1.0" ?>
+<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
+
+#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 '__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
+
+
+--p-metric=$pmetric
+
+#if str($preplicatehandling) != 'None':
+--p-replicate-handling=$preplicatehandling
+#end if
+
+#if str($pbaseline):
+  --p-baseline=$pbaseline
+#end if
+--o-first-differences=ofirstdifferences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofirstdifferences.qza $ofirstdifferences
+
+  ]]></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>
+
+  <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
+more states. First differences can be performed on a metadata column
+(including artifacts that can be input as metadata) or a feature in a
+feature table. Outputs a data series of first differences for each
+individual subject at each sequential pair of states, labeled by the
+SampleID of the second state (e.g., paired differences between time 0 and
+time 1 would be labeled by the SampleIDs at time 1). This file can be used
+as input to linear mixed effects models or other longitudinal or diversity
+methods to compare changes in first differences across time or among groups
+of subjects. Also supports differences from baseline (or other static
+comparison state) by setting the "baseline" parameter.
+
+Parameters
+----------
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata column containing state (time) variable information.
+individual_id_column : Str
+    Metadata column containing IDs for individual subjects.
+metric : Str
+    Numerical metadata or artifact column to test.
+replicate_handling : Str % Choices('error', 'random', 'drop'), optional
+    Choose how replicate samples are handled. If replicates are detected,
+    "error" causes method to fail; "drop" will discard all replicated
+    samples; "random" chooses one representative at random from among
+    replicates.
+baseline : Float, optional
+    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.
+table : FeatureTable[RelativeFrequency], optional
+    Feature table to optionally use for computing first differences.
+
+Returns
+-------
+first_differences : SampleData[FirstDifferences]
+    Series of first differences.
+  ]]></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-2020.8/qiime_longitudinal_first-distances.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,161 @@
+<?xml version="1.0" ?>
+<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
+# 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
+
+--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" />
+    <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>
+
+  <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
+method is similar to the "first differences" method, except that it
+requires a distance matrix as input and calculates first differences as
+distances between successive states. Outputs a data series of first
+distances for each individual subject at each sequential pair of states,
+labeled by the SampleID of the second state (e.g., paired distances between
+time 0 and time 1 would be labeled by the SampleIDs at time 1). This file
+can be used as input to linear mixed effects models or other longitudinal
+or diversity methods to compare changes in first distances across time or
+among groups of subjects. Also supports distance from baseline (or other
+static comparison state) by setting the "baseline" parameter.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata column containing state (time) variable information.
+individual_id_column : Str
+    Metadata column containing IDs for individual subjects.
+baseline : Float, optional
+    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.
+replicate_handling : Str % Choices('error', 'random', 'drop'), optional
+    Choose how replicate samples are handled. If replicates are detected,
+    "error" causes method to fail; "drop" will discard all replicated
+    samples; "random" chooses one representative at random from among
+    replicates.
+
+Returns
+-------
+first_distances : SampleData[FirstDifferences]
+    Series of first distances.
+  ]]></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-2020.8/qiime_longitudinal_linear-mixed-effects.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,240 @@
+<?xml version="1.0" ?>
+<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 '__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($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
+#end if
+
+#if str($prandomeffects):
+  --p-random-effects=$prandomeffects
+#end if
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if $plowess:
+ --p-lowess
+#end if
+
+--p-ci=$pci
+
+#if $pformula:
+ --p-formula
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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 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>
+
+  <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
+variable, "metric". Perform LME and plot line plots of each group column. A
+feature table artifact is required input, though whether "metric" is
+derived from the feature table or metadata is optional.
+
+Parameters
+----------
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata column containing state (time) variable information.
+individual_id_column : Str
+    Metadata column containing IDs for individual subjects.
+metric : Str, optional
+    Dependent variable column name. Must be a column name located in the
+    metadata or feature table files.
+group_columns : Str, optional
+    Comma-separated list (without spaces) of metadata columns to use as
+    independent covariates used to determine mean structure of "metric".
+random_effects : Str, optional
+    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.
+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', 'cividis'), optional
+    Color palette to use for generating boxplots.
+lowess : Bool, optional
+    Estimate locally weighted scatterplot smoothing. Note that this will
+    eliminate confidence interval plotting.
+ci : Float % Range(0, 100), optional
+    Size of the confidence interval for the regression estimate.
+formula : Str, optional
+    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.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_longitudinal_maturity-index.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,299 @@
+<?xml version="1.0" ?>
+<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
+# 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
+#end if
+
+#if str($pestimator) != 'None':
+--p-estimator=$pestimator
+#end if
+
+--p-n-estimators=$pnestimators
+
+--p-test-size=$ptestsize
+
+--p-step=$pstep
+
+--p-cv=$pcv
+
+#if str($prandomstate):
+  --p-random-state=$prandomstate
+#end if
+--p-n-jobs=$pnjobs
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if $poptimizefeatureselection:
+ --p-optimize-feature-selection
+#end if
+
+#if $pstratify:
+ --p-stratify
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#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 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  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" />
+    <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.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
+predict age as a function of microbiota composition. The model is trained
+on a subset of control group samples, then predicts the column value for
+all samples. This visualization computes maturity index z-scores to compare
+relative "maturity" between each group, as described in
+doi:10.1038/nature13421. This method can be used to predict between-group
+differences in relative trajectory across any type of continuous metadata
+gradient, e.g., intestinal microbiome development by age, microbial
+succession during wine fermentation, or microbial community differences
+along environmental gradients, as a function of two or more different
+"treatment" groups.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    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.
+group_by : Str
+    Categorical metadata column to use for plotting and significance
+    testing between main treatment groups.
+control : Str
+    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.
+individual_id_column : Str, optional
+    Optional metadata column containing IDs for individual subjects. Adds
+    individual subject (spaghetti) vectors to volatility charts if a column
+    name is provided.
+estimator : Str % Choices('RandomForestRegressor', 'ExtraTreesRegressor', 'GradientBoostingRegressor', 'AdaBoostRegressor', 'ElasticNet', 'Ridge', 'Lasso', 'KNeighborsRegressor', 'LinearSVR', 'SVR'), optional
+    Regression model to use for prediction.
+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.
+test_size : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    Fraction of input samples to exclude from training set and use for
+    classifier testing.
+step : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    If optimize_feature_selection is True, step is the percentage of
+    features to remove at each iteration.
+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.
+parameter_tuning : Bool, optional
+    Automatically tune hyperparameters using random grid search.
+optimize_feature_selection : Bool, optional
+    Automatically optimize input feature selection using recursive feature
+    elimination.
+stratify : Bool, optional
+    Evenly stratify training and test data among metadata categories. If
+    True, all values in column must match at least two samples.
+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.
+feature_count : Int % Range(0, None), optional
+    Filter feature table to include top N most important features. Set to
+    zero to include all features.
+
+Returns
+-------
+sample_estimator : SampleEstimator[Regressor]
+    Trained sample estimator.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+predictions : SampleData[RegressorPredictions]
+    Predicted target values for each input sample.
+model_summary : Visualization
+    Summarized parameter and (if enabled) feature selection information for
+    the trained estimator.
+accuracy_results : Visualization
+    Accuracy results visualization.
+maz_scores : SampleData[RegressorPredictions]
+    Microbiota-for-age z-score predictions.
+clustermap : Visualization
+    Heatmap of important feature abundance at each time point in each
+    group.
+volatility_plots : Visualization
+    Interactive volatility plots of MAZ and maturity scores, target
+    (column) predictions, and the sample metadata.
+  ]]></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-2020.8/qiime_longitudinal_nmit.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,122 @@
+<?xml version="1.0" ?>
+<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 '__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
+#end if
+
+#if str($pdistmethod) != 'None':
+--p-dist-method=$pdistmethod
+#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[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>
+
+  <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
+composition. For more details and citation, please see
+doi.org/10.1002/gepi.22065
+
+Parameters
+----------
+table : FeatureTable[RelativeFrequency]
+    Feature table to use for microbial interdependence test.
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+individual_id_column : Str
+    Metadata column containing IDs for individual subjects.
+corr_method : Str % Choices('kendall', 'pearson', 'spearman'), optional
+    The temporal correlation test to be applied.
+dist_method : Str % Choices('fro', 'nuc'), optional
+    Temporal distance method, see numpy.linalg.norm for details.
+
+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-2020.8/qiime_longitudinal_pairwise-differences.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,237 @@
+<?xml version="1.0" ?>
+<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
+
+#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 '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+
+--p-individual-id-column=$pindividualidcolumn
+
+
+#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
+#end if
+
+#if $pparametric:
+ --p-parametric
+#end if
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if str($preplicatehandling) != 'None':
+--p-replicate-handling=$preplicatehandling
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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[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>
+
+  <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
+timepoints (e.g., in a longitudinal study design), or identical samples
+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
+----------
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+metric : Str
+    Numerical metadata or artifact column to test.
+state_column : Str
+    Metadata column containing state (e.g., Time) across which samples are
+    paired.
+state_1 : Str
+    Baseline state column value.
+state_2 : Str
+    State column value to pair with baseline.
+individual_id_column : Str
+    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.
+group_column : Str, optional
+    Metadata column on which to separate groups for comparison
+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', '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,
+    "error" causes method to fail; "drop" will discard all replicated
+    samples; "random" chooses one representative at random from among
+    replicates.
+table : FeatureTable[RelativeFrequency], optional
+    Feature table to optionally use for paired comparisons.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_longitudinal_pairwise-distances.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,234 @@
+<?xml version="1.0" ?>
+<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
+# 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 '__db__' in str($pindividualidcolumn):
+  #set $pindividualidcolumn_temp = $pindividualidcolumn.replace('__db__', '"')
+  #set $pindividualidcolumn = $pindividualidcolumn_temp
+#end if
+
+--p-individual-id-column=$pindividualidcolumn
+
+
+#if $pparametric:
+ --p-parametric
+#end if
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if str($preplicatehandling) != 'None':
+--p-replicate-handling=$preplicatehandling
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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
+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
+pairwise distance between each subject pair differs between groups (e.g.,
+groups of subjects receiving different treatments) and produces boxplots of
+paired distance distributions for each group.
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    Matrix of distances between pairs of samples.
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+group_column : Str
+    Metadata column on which to separate groups for comparison
+state_column : Str
+    Metadata column containing state (e.g., Time) across which samples are
+    paired.
+state_1 : Str
+    Baseline state column value.
+state_2 : Str
+    State column value to pair with baseline.
+individual_id_column : Str
+    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.
+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', '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,
+    "error" causes method to fail; "drop" will discard all replicated
+    samples; "random" chooses one representative at random from among
+    replicates.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_longitudinal_plot-feature-volatility.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,235 @@
+<?xml version="1.0" ?>
+<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
+# 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
+#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
+#end if
+
+#if str($pyscale) != 'None':
+--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 str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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'
+
+  ]]></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>
+
+  <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 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.
+
+Parameters
+----------
+table : FeatureTable[RelativeFrequency]
+    Feature table containing features found in importances.
+importances : FeatureData[Importance]
+    Feature importance scores.
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata column containing state (time) variable information.
+individual_id_column : Str, optional
+    Metadata column containing IDs for individual subjects.
+default_group_column : Str, optional
+    The default metadata column on which to separate groups for comparison
+    (all categorical metadata columns will be available in the
+    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>
+    <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-2020.8/qiime_longitudinal_volatility.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,208 @@
+<?xml version="1.0" ?>
+<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
+
+#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 '__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
+#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
+#end if
+
+#if str($pdefaultmetric):
+  --p-default-metric=$pdefaultmetric
+#end if
+#if str($pyscale) != 'None':
+--p-yscale=$pyscale
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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 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>
+
+  <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
+"state_column" parameter). Any numeric metadata column (and metadata-
+transformable artifacts, e.g., alpha diversity results) can be plotted on
+the y-axis, and are selectable using the "metric_column" selector. Metric
+values are averaged to compare across any categorical metadata column using
+the "group_column" selector. Longitudinal volatility for individual
+subjects sampled over time is co-plotted as "spaghetti" plots if the
+"individual_id_column" parameter is used. state_column will typically be a
+measure of time, but any numeric metadata column can be used.
+
+Parameters
+----------
+metadata : Metadata
+    Sample metadata file containing individual_id_column.
+state_column : Str
+    Metadata column containing state (time) variable information.
+individual_id_column : Str, optional
+    Metadata column containing IDs for individual subjects.
+default_group_column : Str, optional
+    The default metadata column on which to separate groups for comparison
+    (all categorical metadata columns will be available in the
+    visualization).
+default_metric : Str, optional
+    Numeric metadata or artifact column to test by default (all numeric
+    metadata columns will be available in the visualization).
+table : FeatureTable[RelativeFrequency], optional
+    Feature table containing metrics.
+yscale : Str % Choices('linear', 'pow', 'sqrt', 'log'), optional
+    y-axis scaling strategy to apply.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_phylogeny_align-to-tree-mafft-fasttree.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" ?>
+<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
+
+#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
+
+--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 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
+or ambiguously aligned will be removed (masked). The resulting masked
+alignment will be used to infer a phylogenetic tree 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 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
+    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.
+
+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-2020.8/qiime_phylogeny_align-to-tree-mafft-iqtree.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_phylogeny_align-to-tree-mafft-raxml.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_phylogeny_fasttree.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" ?>
+<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
+
+#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" />
+    <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.
+
+Parameters
+----------
+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>
+    <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-2020.8/qiime_phylogeny_filter-table.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" ?>
+<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" />
+    <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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table that features should be filtered from.
+tree : Phylogeny[Rooted | Unrooted]
+    Tree where tip identifiers are the feature identifiers that should be
+    retained in the table.
+
+Returns
+-------
+filtered_table : FeatureTable[Frequency]
+    The resulting feature table.
+  ]]></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-2020.8/qiime_phylogeny_iqtree-ultrafast-bootstrap.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,513 @@
+<?xml version="1.0" ?>
+<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
+#end if
+#if str($pncores) != 'None':
+--p-n-cores=$pncores
+#end if
+
+#set $pncoresmax = '${GALAXY_SLOTS:-4}'
+
+#if str($pncoresmax):
+  --p-n-cores-max=$pncoresmax
+#end if
+
+--p-n-runs=$pnruns
+
+#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
+#end if
+#if str($pperturbnnistrength):
+  --p-perturb-nni-strength=$pperturbnnistrength
+#end if
+#if str($psprradius):
+  --p-spr-radius=$psprradius
+#end if
+#if str($pnmaxufbootiter):
+  --p-n-max-ufboot-iter=$pnmaxufbootiter
+#end if
+#if str($pnufbootsteps):
+  --p-n-ufboot-steps=$pnufbootsteps
+#end if
+#if str($pmincorufboot):
+  --p-min-cor-ufboot=$pmincorufboot
+#end if
+#if str($pepbreakufboot):
+  --p-ep-break-ufboot=$pepbreakufboot
+#end if
+#if $pallnni:
+ --p-allnni
+#end if
+
+#if str($palrt):
+  --p-alrt=$palrt
+#end if
+#if $pabayes:
+ --p-abayes
+#end if
+
+#if str($plbp):
+  --p-lbp=$plbp
+#end if
+#if $pbnni:
+ --p-bnni
+#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="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.
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    Aligned sequences to be used for phylogenetic reconstruction.
+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.
+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.
+bootstrap_replicates : Int % Range(1000, None), optional
+    The number of bootstrap searches to perform. Minimum of 1000
+    recomended.
+n_init_pars_trees : Int % Range(1, None), optional
+    Number of initial parsimony trees. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+n_top_init_trees : Int % Range(1, None), optional
+    Number of top initial trees. If not set, program defaults will be used.
+    See IQ-TREE manual for details.
+n_best_retain_trees : Int % Range(1, None), optional
+    Number of best trees retained during search. If not set, program
+    defaults will be used. See IQ-TREE manual for details.
+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.
+spr_radius : Int % Range(1, None), optional
+    Radius for parsimony SPR search. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+n_max_ufboot_iter : Int % Range(1, None), optional
+    Maximum number of iterations. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+n_ufboot_steps : Int % Range(1, None), optional
+    Number of iterations for UFBoot stopping rule. If not set, program
+    defaults will be used.See IQ-TREE manual for details.
+min_cor_ufboot : Float % Range(0.51, 0.99), optional
+    Minimum correlation coefficient. If not set, program defaults will be
+    used.See IQ-TREE manual for details.
+ep_break_ufboot : Float % Range(0.01, 0.99), optional
+    Epsilon value to break tie. If not set, program defaults will be used.
+    See IQ-TREE manual for details.
+allnni : Bool, optional
+    Perform more thorough NNI search.
+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. 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.
+    Values reported in the order of: alrt, lbp, abayes, ufboot.
+lbp : Int % Range(1000, None), optional
+    Single branch test method. Number of bootstrap 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.
+bnni : Bool, optional
+    Optimize UFBoot trees by NNI on bootstrap alignment. This option
+    reduces the risk of overestimating branch supports with UFBoot due to
+    severe model violations.
+safe : Bool, optional
+    Safe likelihood kernel to avoid numerical underflow.
+
+Returns
+-------
+tree : Phylogeny[Unrooted]
+    The resulting 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-2020.8/qiime_phylogeny_iqtree.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,484 @@
+<?xml version="1.0" ?>
+<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
+#end if
+#if str($pncores) != 'None':
+--p-n-cores=$pncores
+#end if
+
+#set $pncoresmax = '${GALAXY_SLOTS:-4}'
+
+#if str($pncoresmax):
+  --p-n-cores-max=$pncoresmax
+#end if
+
+--p-n-runs=$pnruns
+
+#if str($psubstitutionmodel) != 'None':
+--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
+#end if
+#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
+#end if
+#if str($pperturbnnistrength):
+  --p-perturb-nni-strength=$pperturbnnistrength
+#end if
+#if str($psprradius):
+  --p-spr-radius=$psprradius
+#end if
+#if $pallnni:
+ --p-allnni
+#end if
+
+#if $pfast:
+ --p-fast
+#end if
+
+#if str($palrt):
+  --p-alrt=$palrt
+#end if
+#if $pabayes:
+ --p-abayes
+#end if
+
+#if str($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="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.
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    Aligned sequences to be used for phylogenetic reconstruction.
+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.
+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.
+n_init_pars_trees : Int % Range(1, None), optional
+    Number of initial parsimony trees. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+n_top_init_trees : Int % Range(1, None), optional
+    Number of top initial trees. If not set, program defaults will be used.
+    See IQ-TREE manual for details.
+n_best_retain_trees : Int % Range(1, None), optional
+    Number of best trees retained during search. If not set, program
+    defaults will be used. See IQ-TREE manual for details.
+n_iter : Int % Range(1, None), optional
+    Fix number of iterations to stop. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+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.
+spr_radius : Int % Range(1, None), optional
+    Radius for parsimony SPR search. If not set, program defaults will be
+    used. See IQ-TREE manual for details.
+allnni : Bool, optional
+    Perform more thorough NNI search.
+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. 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:
+    alrt, lbp, abayes.
+lbp : Int % Range(1000, None), optional
+    Single branch test method. Number of bootstrap 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.
+safe : Bool, optional
+    Safe likelihood kernel to avoid numerical underflow.
+
+Returns
+-------
+tree : Phylogeny[Unrooted]
+    The resulting 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-2020.8/qiime_phylogeny_midpoint-root.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" ?>
+<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" />
+    <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.
+
+Parameters
+----------
+tree : Phylogeny[Unrooted]
+    The phylogenetic tree to be rooted.
+
+Returns
+-------
+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-2020.8/qiime_phylogeny_raxml-rapid-bootstrap.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,109 @@
+<?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
+#end if
+#if str($prapidbootstrapseed):
+  --p-rapid-bootstrap-seed=$prapidbootstrapseed
+#end if
+--p-bootstrap-replicates=$pbootstrapreplicates
+
+--p-n-threads=$pnthreads
+
+#if str($praxmlversion) != 'None':
+--p-raxml-version=$praxmlversion
+#end if
+
+#if str($psubstitutionmodel) != 'None':
+--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="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:
+https://sco.h-its.org/exelixis/web/software/raxml/
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    Aligned sequences to be used for phylogenetic reconstruction.
+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.
+rapid_bootstrap_seed : Int, optional
+    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
+    version will run 10-30% faster than the SSE3 version.
+substitution_model : Str % Choices('GTRGAMMA', 'GTRGAMMAI', 'GTRCAT', 'GTRCATI'), optional
+    Model of Nucleotide Substitution
+
+Returns
+-------
+tree : Phylogeny[Unrooted]
+    The resulting 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-2020.8/qiime_phylogeny_raxml.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" ?>
+<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
+--p-n-searches=$pnsearches
+
+--p-n-threads=$pnthreads
+
+#if str($praxmlversion) != 'None':
+--p-raxml-version=$praxmlversion
+#end if
+
+#if str($psubstitutionmodel) != 'None':
+--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="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/
+
+Parameters
+----------
+alignment : FeatureData[AlignedSequence]
+    Aligned sequences to be used for phylogenetic reconstruction.
+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.
+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
+    version will run 10-30% faster than the SSE3 version.
+substitution_model : Str % Choices('GTRGAMMA', 'GTRGAMMAI', 'GTRCAT', 'GTRCATI'), optional
+    Model of Nucleotide Substitution.
+
+Returns
+-------
+tree : Phylogeny[Unrooted]
+    The resulting 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-2020.8/qiime_phylogeny_robinson-foulds.xml	Fri Sep 04 12:44:24 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-2020.8/qiime_quality-control_bowtie2-build.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_quality-control_evaluate-composition.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,214 @@
+<?xml version="1.0" ?>
+<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 str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if $pnoplottar:
+ --p-no-plot-tar
+#end if
+
+#if $pnoplottdr:
+ --p-no-plot-tdr
+#end if
+
+#if $pplotrvalue:
+ --p-plot-r-value
+#end if
+
+#if $pnoplotrsquared:
+ --p-no-plot-r-squared
+#end if
+
+#if $pplotbraycurtis:
+ --p-plot-bray-curtis
+#end if
+
+#if $pplotjaccard:
+ --p-plot-jaccard
+#end if
+
+#if $pplotobservedfeatures:
+ --p-plot-observed-features
+#end if
+
+#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
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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-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>
+
+  <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
+###############################################################
+
+This visualizer compares the feature composition of pairs of observed and
+expected samples containing the same sample ID in two separate feature
+tables. Typically, feature composition will consist of taxonomy
+classifications or other semicolon-delimited feature annotations. Taxon
+accuracy rate, taxon detection rate, and linear regression scores between
+expected and observed observations are calculated at each semicolon-
+delimited rank, and plots of per-level accuracy and observation
+correlations are plotted. A histogram of distance between false positive
+observations and the nearest expected feature is also generated, where
+distance equals the number of rank differences between the observed feature
+and the nearest common lineage in the expected feature. This visualizer is
+most suitable for testing per-run data quality on sequencing runs that
+contain mock communities or other samples with known composition. Also
+suitable for sanity checks of bioinformatics pipeline performance.
+
+Parameters
+----------
+expected_features : FeatureTable[RelativeFrequency]
+    Expected feature compositions
+observed_features : FeatureTable[RelativeFrequency]
+    Observed feature compositions
+depth : Int, optional
+    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 =
+    root, 7 = species for the greengenes reference sequence database).
+palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow'), optional
+    Color palette to utilize for plotting.
+plot_tar : Bool, optional
+    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)).
+plot_tdr : Bool, optional
+    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)).
+plot_r_value : Bool, optional
+    Plot expected vs. observed linear regression r value on score plot.
+plot_r_squared : Bool, optional
+    Plot expected vs. observed linear regression r-squared value on score
+    plot.
+plot_bray_curtis : Bool, optional
+    Plot expected vs. observed Bray-Curtis dissimilarity scores on score
+    plot.
+plot_jaccard : Bool, optional
+    Plot expected vs. observed Jaccard distances scores on score plot.
+plot_observed_features : Bool, optional
+    Plot observed features count on score plot.
+plot_observed_features_ratio : Bool, optional
+    Plot ratio of observed:expected features on score plot.
+metadata : MetadataColumn[Categorical], optional
+    Optional sample metadata that maps observed_features sample IDs to
+    expected_features sample IDs.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_quality-control_evaluate-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" ?>
+<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
+
+;
+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" />
+    <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
+alignment. The intended use is to align observed sequences against expected
+sequences (e.g., from a mock community) to determine the frequency of
+mismatches between observed sequences and the most similar expected
+sequences, e.g., as a measure of sequencing/method error. However, any
+sequences may be provided as input to generate a report on pairwise
+alignment quality against a set of reference sequences.
+
+Parameters
+----------
+query_sequences : FeatureData[Sequence]
+    Sequences to test for exclusion
+reference_sequences : FeatureData[Sequence]
+    Reference sequences to align against feature sequences
+show_alignments : Bool, optional
+    Option to plot pairwise alignments of query sequences and their top
+    hits.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_quality-control_evaluate-taxonomy.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,151 @@
+<?xml version="1.0" ?>
+<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 $ifeaturetable:
+ --i-feature-table
+#end if
+
+--p-depth=$pdepth
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if $pnorequireexpids:
+ --p-no-require-exp-ids
+#end if
+
+#if $pnorequireobsids:
+ --p-no-require-obs-ids
+#end if
+
+#if str($psampleid):
+  --p-sample-id=$psampleid
+#end if
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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'
+
+;
+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 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
+level, up to maximum level specified by the depth parameter. These metrics
+are calculated at each semicolon-delimited rank. This action is useful for
+comparing the accuracy of taxonomic assignment, e.g., between different
+taxonomy classifiers or other bioinformatics methods. Expected taxonomies
+should be derived from simulated or mock community sequences that have
+known taxonomic affiliations.
+
+Parameters
+----------
+expected_taxa : FeatureData[Taxonomy]
+    Expected taxonomic assignments
+observed_taxa : FeatureData[Taxonomy]
+    Observed taxonomic assignments
+depth : Int
+    Maximum depth of semicolon-delimited taxonomic ranks to test (e.g., 1 =
+    root, 7 = species for the greengenes reference sequence database).
+palette : Str % Choices('Set1', 'Set2', 'Set3', 'Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'tab10', 'tab20', 'tab20b', 'tab20c', 'viridis', 'plasma', 'inferno', 'magma', 'terrain', 'rainbow'), optional
+    Color palette to utilize for plotting.
+require_exp_ids : Bool, optional
+    Require that all features found in observed taxa must be found in
+    expected taxa or raise error.
+require_obs_ids : Bool, optional
+    Require that all features found in expected taxa must be found in
+    observed taxa or raise error.
+feature_table : FeatureTable[RelativeFrequency], optional
+    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.
+sample_id : Str, optional
+    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.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_quality-control_exclude-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" ?>
+<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
+#end if
+
+--p-perc-identity=$ppercidentity
+
+#if str($pevalue):
+  --p-evalue=$pevalue
+#end if
+--p-perc-query-aligned=$ppercqueryaligned
+
+--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 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="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
+perc_identity, evalue, and perc_query_aligned. This method could be used to
+define a positive filter, e.g., extract only feature sequences that align
+to a certain clade of bacteria; or to define a negative filter, e.g.,
+identify sequences that align to contaminant or human DNA sequences that
+should be excluded from subsequent analyses. Note that filtering is
+performed based on the perc_identity, perc_query_aligned, and evalue
+thresholds (the latter only if method==BLAST and an evalue is set). Set
+perc_identity==0 and/or perc_query_aligned==0 to disable these filtering
+thresholds as necessary.
+
+Parameters
+----------
+query_sequences : FeatureData[Sequence]
+    Sequences to test for exclusion
+reference_sequences : FeatureData[Sequence]
+    Reference sequences to align against feature sequences
+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
+    Reject match if percent identity to reference is lower. Must be in
+    range [0.0, 1.0]
+evalue : Float, optional
+    BLAST expectation (E) value threshold for saving hits. Reject if E
+    value is higher than threshold. This threshold is disabled by default.
+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
+-------
+sequence_hits : FeatureData[Sequence]
+    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>
+    <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-2020.8/qiime_quality-control_filter-reads.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_quality-filter_q-score.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" ?>
+<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
+
+--p-min-quality=$pminquality
+
+--p-quality-window=$pqualitywindow
+
+--p-min-length-fraction=$pminlengthfraction
+
+--p-max-ambiguous=$pmaxambiguous
+
+--o-filtered-sequences=ofilteredsequences
+
+--o-filter-stats=ofilterstats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ofilterstats.qza $ofilterstats
+
+  ]]></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]¹ | 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[SequencesWithQuality]¹ | 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>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_sample-classifier_classify-samples-from-dist.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,151 @@
+<?xml version="1.0" ?>
+<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
+# 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-k=$pk
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+--o-predictions=opredictions
+
+--o-accuracy-results=oaccuracyresults
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+
+Parameters
+----------
+distance_matrix : DistanceMatrix
+    a distance matrix
+metadata : MetadataColumn[Categorical]
+    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', '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
+-------
+predictions : SampleData[ClassifierPredictions]
+    leave one out predictions for each sample
+accuracy_results : Visualization
+    Accuracy results visualization.
+  ]]></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-2020.8/qiime_sample-classifier_classify-samples-ncv.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,170 @@
+<?xml version="1.0" ?>
+<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
+# 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-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
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-predictions=opredictions
+
+--o-feature-importance=ofeatureimportance
+
+--o-probabilities=oprobabilities
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+hyperparameter optimization and sample prediction. Outputs predicted values
+for each input sample, and relative importance of each feature for model
+accuracy.
+
+Parameters
+----------
+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.
+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 method to use for sample prediction.
+parameter_tuning : Bool, optional
+    Automatically tune hyperparameters using random grid search.
+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
+-------
+predictions : SampleData[ClassifierPredictions]
+    Predicted target values for each input sample.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+probabilities : SampleData[Probabilities]
+    Predicted class probabilities for each input sample.
+  ]]></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-2020.8/qiime_sample-classifier_classify-samples.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,260 @@
+<?xml version="1.0" ?>
+<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
+# 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-test-size=$ptestsize
+
+--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
+#end if
+
+#if $poptimizefeatureselection:
+ --p-optimize-feature-selection
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($ppalette) != 'None':
+--p-palette=$ppalette
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-sample-estimator=osampleestimator
+
+--o-feature-importance=ofeatureimportance
+
+--o-predictions=opredictions
+
+--o-model-summary=omodelsummary
+
+--o-accuracy-results=oaccuracyresults
+
+--o-probabilities=oprobabilities
+
+--o-heatmap=oheatmap
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp oprobabilities.qza $oprobabilities
+
+;
+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'
+
+  ]]></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>
+
+  <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
+is used to train and test the estimator using a stratified k-fold cross-
+validation scheme. This includes optional steps for automated feature
+extraction and hyperparameter optimization. The test set validates
+classification accuracy of the optimized estimator. Outputs classification
+results for test set. For more details on the learning algorithm, see
+http://scikit-learn.org/stable/supervised_learning.html
+
+Parameters
+----------
+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.
+test_size : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    Fraction of input samples to exclude from training set and use for
+    classifier testing.
+step : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    If optimize_feature_selection is True, step is the percentage of
+    features to remove at each iteration.
+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 method to use for sample prediction.
+optimize_feature_selection : Bool, optional
+    Automatically optimize input feature selection using recursive feature
+    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', '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
+    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
+-------
+sample_estimator : SampleEstimator[Classifier]
+    Trained sample estimator.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+predictions : SampleData[ClassifierPredictions]
+    Predicted target values for each input sample.
+model_summary : Visualization
+    Summarized parameter and (if enabled) feature selection information for
+    the trained estimator.
+accuracy_results : Visualization
+    Accuracy results visualization.
+probabilities : SampleData[Probabilities]
+    Predicted class probabilities for each input sample.
+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>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_sample-classifier_confusion-matrix.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,178 @@
+<?xml version="1.0" ?>
+<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
+
+#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
+#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
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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'
+
+  ]]></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. If per-sample
+class probabilities are provided, will also generate Receiver Operating
+Characteristic curves and calculate area under the curve for each class.
+
+Parameters
+----------
+predictions : SampleData[ClassifierPredictions]
+    Predicted values to plot on x axis. Should be predictions of
+    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.
+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>
+    <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-2020.8/qiime_sample-classifier_fit-classifier.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,179 @@
+<?xml version="1.0" ?>
+<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
+# 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-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
+#end if
+
+#if $poptimizefeatureselection:
+ --p-optimize-feature-selection
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-sample-estimator=osampleestimator
+
+--o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+importance of each feature for model accuracy. Optionally use k-fold cross-
+validation for automatic recursive feature elimination and hyperparameter
+tuning.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+metadata : MetadataColumn[Categorical]
+    Numeric metadata column to use as prediction target.
+step : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    If optimize_feature_selection is True, step is the percentage of
+    features to remove at each iteration.
+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 method to use for sample prediction.
+optimize_feature_selection : Bool, optional
+    Automatically optimize input feature selection using recursive feature
+    elimination.
+parameter_tuning : Bool, optional
+    Automatically tune hyperparameters using random grid search.
+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
+-------
+sample_estimator : SampleEstimator[Classifier]
+    Trained sample classifier.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+  ]]></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-2020.8/qiime_sample-classifier_fit-regressor.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" ?>
+<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
+# 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-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
+#end if
+
+#if $poptimizefeatureselection:
+ --p-optimize-feature-selection
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-sample-estimator=osampleestimator
+
+--o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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
+importance of each feature for model accuracy. Optionally use k-fold cross-
+validation for automatic recursive feature elimination and hyperparameter
+tuning.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+metadata : MetadataColumn[Numeric]
+    Numeric metadata column to use as prediction target.
+step : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    If optimize_feature_selection is True, step is the percentage of
+    features to remove at each iteration.
+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('RandomForestRegressor', 'ExtraTreesRegressor', 'GradientBoostingRegressor', 'AdaBoostRegressor', 'ElasticNet', 'Ridge', 'Lasso', 'KNeighborsRegressor', 'LinearSVR', 'SVR'), optional
+    Estimator method to use for sample prediction.
+optimize_feature_selection : Bool, optional
+    Automatically optimize input feature selection using recursive feature
+    elimination.
+parameter_tuning : Bool, optional
+    Automatically tune hyperparameters using random grid search.
+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
+-------
+sample_estimator : SampleEstimator[Regressor]
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+  ]]></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-2020.8/qiime_sample-classifier_heatmap.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,440 @@
+<?xml version="1.0" ?>
+<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 '__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 '__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
+
+--p-feature-count=$pfeaturecount
+
+--p-importance-threshold=$pimportancethreshold
+
+#if $pgroupsamples:
+ --p-group-samples
+#end if
+
+#if $pnonormalize:
+ --p-no-normalize
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+#if str($pmetric) != 'None':
+--p-metric=$pmetric
+#end if
+
+#if str($pmethod) != 'None':
+--p-method=$pmethod
+#end if
+
+#if str($pcluster) != 'None':
+--p-cluster=$pcluster
+#end if
+
+#if str($pcolorscheme) != 'None':
+--p-color-scheme=$pcolorscheme
+#end if
+
+--o-heatmap=oheatmap
+
+--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 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>
+
+  <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 sample metadata; and a
+heatmap is generated that displays (normalized) feature abundances per
+sample.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+importance : FeatureData[Importance]
+    Feature importances.
+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.
+importance_threshold : Float % Range(0, None), optional
+    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 sample metadata.
+normalize : Bool, optional
+    Normalize the feature table by adding a psuedocount of 1 and then
+    taking the log10 of the table.
+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('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('both', 'features', 'none', 'samples'), optional
+    Specify which axes to cluster.
+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
+-------
+heatmap : Visualization
+    Heatmap of important features.
+filtered_table : FeatureTable[Frequency]
+    Filtered feature table containing data displayed in heatmap.
+  ]]></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-2020.8/qiime_sample-classifier_metatable.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" ?>
+<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
+#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
+#end if
+
+#if str($pmissingvalues) != 'None':
+--p-missing-values=$pmissingvalues
+#end if
+
+#if $pdropallunique:
+ --p-drop-all-unique
+#end if
+
+--o-converted-table=oconvertedtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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="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>
+
+  <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
+be converted; categorical columns will be silently dropped. By default, if
+a table is used as input only samples found in both the table and metadata
+(intersection) are merged, and others are silently dropped. Set
+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 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
+----------
+metadata : Metadata
+    Metadata file to convert to feature table.
+table : FeatureTable[Frequency], optional
+    Feature table containing all features that should be used for target
+    prediction.
+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.
+missing_values : Str % Choices('drop_samples', 'drop_features', 'error', 'fill'), optional
+    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>
+    <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-2020.8/qiime_sample-classifier_predict-classification.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" ?>
+<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
+
+--p-n-jobs=$pnjobs
+
+--o-predictions=opredictions
+
+--o-probabilities=oprobabilities
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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
+split_table) or samples with unknown values, but can theoretically be any
+samples present in a feature table that contain overlapping features with
+the feature table used to train the estimator.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    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.
+probabilities : SampleData[Probabilities]
+    Predicted class probabilities for each input sample.
+  ]]></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-2020.8/qiime_sample-classifier_predict-regression.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+<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
+
+--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" />
+    <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.
+###############################################################
+
+Use trained estimator to predict target values for new samples. These will
+typically be unseen samples, e.g., test data (derived manually or from
+split_table) or samples with unknown values, but can theoretically be any
+samples present in a feature table that contain overlapping features with
+the feature table used to train the estimator.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    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>
+    <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-2020.8/qiime_sample-classifier_regress-samples-ncv.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,176 @@
+<?xml version="1.0" ?>
+<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
+# 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-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
+#end if
+
+#if $pstratify:
+ --p-stratify
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-predictions=opredictions
+
+--o-feature-importance=ofeatureimportance
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" />
+    <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>
+
+  <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 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.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+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('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
+    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
+-------
+predictions : SampleData[RegressorPredictions]
+    Predicted target values for each input sample.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+  ]]></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-2020.8/qiime_sample-classifier_regress-samples.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,227 @@
+<?xml version="1.0" ?>
+<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
+# 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-test-size=$ptestsize
+
+--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
+#end if
+
+#if $poptimizefeatureselection:
+ --p-optimize-feature-selection
+#end if
+
+#if $pstratify:
+ --p-stratify
+#end if
+
+#if $pparametertuning:
+ --p-parameter-tuning
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--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 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  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" />
+    <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>
+
+  <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.
+###############################################################
+
+Predicts a continuous sample metadata column using a supervised learning
+regressor. Splits input data into training and test sets. The training set
+is used to train and test the estimator using a stratified k-fold cross-
+validation scheme. This includes optional steps for automated feature
+extraction and hyperparameter optimization. The test set validates
+classification accuracy of the optimized estimator. Outputs classification
+results for test set. For more details on the learning algorithm, see
+http://scikit-learn.org/stable/supervised_learning.html
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table containing all features that should be used for target
+    prediction.
+metadata : MetadataColumn[Numeric]
+    Numeric metadata column to use as prediction target.
+test_size : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    Fraction of input samples to exclude from training set and use for
+    classifier testing.
+step : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    If optimize_feature_selection is True, step is the percentage of
+    features to remove at each iteration.
+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('RandomForestRegressor', 'ExtraTreesRegressor', 'GradientBoostingRegressor', 'AdaBoostRegressor', 'ElasticNet', 'Ridge', 'Lasso', 'KNeighborsRegressor', 'LinearSVR', 'SVR'), optional
+    Estimator method to use for sample prediction.
+optimize_feature_selection : Bool, optional
+    Automatically optimize input feature selection using recursive feature
+    elimination.
+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
+    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
+-------
+sample_estimator : SampleEstimator[Regressor]
+    Trained sample estimator.
+feature_importance : FeatureData[Importance]
+    Importance of each input feature to model accuracy.
+predictions : SampleData[RegressorPredictions]
+    Predicted target values for each input sample.
+model_summary : Visualization
+    Summarized parameter and (if enabled) feature selection information for
+    the trained estimator.
+accuracy_results : Visualization
+    Accuracy results visualization.
+  ]]></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-2020.8/qiime_sample-classifier_scatterplot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" ?>
+<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
+
+#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
+#end if
+
+--o-visualization=ovisualization
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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-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>
+
+  <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.
+
+Parameters
+----------
+predictions : SampleData[RegressorPredictions]
+    Predicted values to plot on y axis. Must be predictions of numeric data
+    produced by a sample regressor.
+truth : MetadataColumn[Numeric]
+    Metadata column (true values) to plot on x axis.
+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>
+    <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-2020.8/qiime_sample-classifier_split-table.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,136 @@
+<?xml version="1.0" ?>
+<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
+# 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-test-size=$ptestsize
+
+#if str($prandomstate):
+  --p-random-state=$prandomstate
+#end if
+#if $pnostratify:
+ --p-no-stratify
+#end if
+
+#if str($pmissingsamples) != 'None':
+--p-missing-samples=$pmissingsamples
+#end if
+
+--o-training-table=otrainingtable
+
+--o-test-table=otesttable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp otesttable.qza $otesttable
+
+  ]]></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>
+
+  <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
+column are evenly represented across training and test sets.
+
+Parameters
+----------
+table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
+    Feature table containing all features that should be used for target
+    prediction.
+metadata : MetadataColumn[Numeric | Categorical]
+    Numeric metadata column to use as prediction target.
+test_size : Float % Range(0.0, 1.0, inclusive_start=False), optional
+    Fraction of input samples to exclude from training set and use for
+    classifier testing.
+random_state : Int, optional
+    Seed used by random number generator.
+stratify : Bool, optional
+    Evenly stratify training and test data among metadata categories. If
+    True, all values in column must match at least two samples.
+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
+-------
+training_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
+    Feature table containing training samples
+test_table : FeatureTable[Frequency¹ | RelativeFrequency² | PresenceAbsence³ | Balance⁴ | PercentileNormalized⁵ | Design⁶]
+    Feature table containing test samples
+  ]]></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-2020.8/qiime_sample-classifier_summarize.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" ?>
+<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
+
+;
+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" />
+    <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.
+
+Parameters
+----------
+sample_estimator : SampleEstimator[Classifier | Regressor]
+    Sample estimator trained with fit_classifier or fit_regressor.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_taxa_barplot.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" ?>
+<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
+
+--i-table=$itable
+
+--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
+
+;
+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'
+
+;
+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 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>
+
+  <outputs>
+    <data format="html" label="${tool.name} on ${on_string}: visualization.html" name="ovisualization" />
+    
+  </outputs>
+
+  <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
+recoloring, sample relabeling, and SVG figure export.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table to visualize at various taxonomic levels.
+taxonomy : 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.
+metadata : Metadata
+    The sample metadata.
+
+Returns
+-------
+visualization : Visualization
+  ]]></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-2020.8/qiime_taxa_collapse.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" ?>
+<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
+
+--i-table=$itable
+
+--i-taxonomy=$itaxonomy
+
+--p-level=$plevel
+
+--o-collapsed-table=ocollapsedtable
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+cp ocollapsedtable.qza $ocollapsedtable
+
+  ]]></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>
+
+  <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
+they are collapsed.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table to be collapsed.
+taxonomy : 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.
+level : Int
+    The taxonomic level at which the features should be collapsed. All
+    ouput features will have exactly this many levels of taxonomic
+    annotation.
+
+Returns
+-------
+collapsed_table : FeatureTable[Frequency]
+    The resulting feature table, where all features are now taxonomic
+    annotations with the user-specified number of levels.
+  ]]></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-2020.8/qiime_taxa_filter-seqs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" ?>
+<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
+
+--i-sequences=$isequences
+
+--i-taxonomy=$itaxonomy
+
+#if str($pinclude):
+  --p-include=$pinclude
+#end if
+#if str($pexclude):
+  --p-exclude=$pexclude
+#end if
+#if str($pquerydelimiter):
+  --p-query-delimiter=$pquerydelimiter
+#end if
+#if str($pmode) != 'None':
+--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" />
+    <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>
+
+  <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
+search terms, and can be filtered out of the result by specifying one or
+more exclude search terms. If both include and exclude are provided, the
+inclusion critera will be applied before the exclusion critera. Either
+include or exclude terms (or both) must be provided.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    Feature sequences to be filtered.
+taxonomy : 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.
+include : Str, optional
+    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.
+exclude : Str, optional
+    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.
+query_delimiter : Str, optional
+    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.
+mode : Str % Choices('exact', 'contains'), optional
+    Mode for determining if a search term matches a taxonomic annotation.
+    "contains" requires that the annotation has the term as a substring;
+    "exact" requires that the annotation is a perfect match to a search
+    term.
+
+Returns
+-------
+filtered_sequences : FeatureData[Sequence]
+    The taxonomy-filtered feature sequences.
+  ]]></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-2020.8/qiime_taxa_filter-table.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,109 @@
+<?xml version="1.0" ?>
+<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
+
+--i-table=$itable
+
+--i-taxonomy=$itaxonomy
+
+#if str($pinclude):
+  --p-include=$pinclude
+#end if
+#if str($pexclude):
+  --p-exclude=$pexclude
+#end if
+#if str($pquerydelimiter):
+  --p-query-delimiter=$pquerydelimiter
+#end if
+#if str($pmode) != 'None':
+--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" />
+    <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>
+
+  <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
+one or more include search terms, and can be filtered out of the resulting
+table by specifying one or more exclude search terms. If both include and
+exclude are provided, the inclusion critera will be applied before the
+exclusion critera. Either include or exclude terms (or both) must be
+provided. Any samples that have a total frequency of zero after filtering
+will be removed from the resulting table.
+
+Parameters
+----------
+table : FeatureTable[Frequency]
+    Feature table to be filtered.
+taxonomy : 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.
+include : Str, optional
+    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.
+exclude : Str, optional
+    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.
+query_delimiter : Str, optional
+    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.
+mode : Str % Choices('exact', 'contains'), optional
+    Mode for determining if a search term matches a taxonomic annotation.
+    "contains" requires that the annotation has the term as a substring;
+    "exact" requires that the annotation is a perfect match to a search
+    term.
+
+Returns
+-------
+filtered_table : FeatureTable[Frequency]
+    The taxonomy-filtered feature table.
+  ]]></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-2020.8/qiime_tools_export.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" ?>
+<tool id="qiime_tools_export" name="qiime tools export --input-path" version="2020.8">
+	<description> - Export data from a QIIME 2 Artifact or Visualization.</description>
+	<requirements>
+		<requirement type="package" version="2020.8">qiime2</requirement>
+	</requirements>
+	<command><![CDATA[qiime tools export --input-path $isequences --output-path test
+	]]></command>
+	<inputs>
+	<param format="qza,no_unzip.zip" label="Input artifact to export! [required]" name="isequences" optional="False" type="data"/></inputs>
+	
+	<outputs>
+    <data format="txt" name="report">
+        <discover_datasets pattern="__designation_and_ext__" directory="test" visible="true" />
+    </data>
+	</outputs>
+	
+	<!--<outputs>
+	
+   <collection type="list" label="Exported artifact" name="output1">
+     <discover_datasets pattern="*.*" directory="test" />
+   </collection>
+ </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-2020.8/qiime_tools_export_collection.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tool id="qiime_tools_export_collection" name="qiime tools export --input-path collection" version="2020.8">
+   <description>- Export data from a QIIME 2 Artifact or Visualization.</description>
+   <requirements>
+      <requirement type="package" version="2020.8">qiime2</requirement>
+   </requirements>
+   <command><![CDATA[qiime tools export --input-path $isequences --output-path test && cd test && gunzip *]]></command>
+   <inputs>
+      <param format="qza,no_unzip.zip" label="Input artifact to export! [required]" name="isequences" optional="False" type="data" />
+   </inputs>
+
+   <outputs>
+      <collection type="list" label="Export artifact to collection" name="output">
+         <discover_datasets pattern="__designation_and_ext__" directory="test" />
+      </collection>
+   </outputs>
+   <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-2020.8/qiime_tools_export_paired_collection.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tool id="qiime_tools_export_paired_collection" name="qiime tools export --input-path to paired collection" version="2020.8">
+   <description>- Export data from a QIIME 2 Artifact or Visualization.</description>
+   <requirements>
+      <requirement type="package" version="2020.8">qiime2</requirement>
+   </requirements>
+   <command><![CDATA[qiime tools export --input-path $isequences --output-path test && cd test && gunzip *]]></command>
+   <inputs>
+      <param format="qza,no_unzip.zip" label="Input artifact to export! [required]" name="isequences" optional="False" type="data" />
+   </inputs>
+
+   <outputs>
+      <collection type="paired" label="Export artifact to collection" name="output">
+         <discover_datasets pattern="__designation_and_ext__" directory="test" />
+      </collection>
+   </outputs>
+   <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-2020.8/qiime_tools_import.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,291 @@
+<?xml version="1.0" ?>
+<tool id="qiime_tools_import" name="qiime tools import" version="2020.8">
+	<description> - Import data into a new QIIME 2 Artifact.</description>
+	<requirements>
+		<requirement type="package" version="2020.8">qiime2</requirement>
+	</requirements>
+	<command>
+<![CDATA[
+mkdir input;
+
+#set $in_= 'input'
+
+
+#if '__ob__' in str($semantic_type):
+	#set $type_temp = str($semantic_type).replace('__ob__', '[')
+	#set $type_temp = str($type_temp).replace('__cb__', ']')
+	#set $semantic_type = $type_temp
+#end if
+
+#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 $fastq
+#end def
+
+
+## Symlinks creation or On the fly creation of a combo file
+#if $input_type.type == 'list_list'
+	## 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))			
+
+		#if $is_fastq_file:
+			#set $file_for_processing = "'input/" + $f.name + '.gz' + "'"
+			gzip -c ${f} > $file_for_processing;	
+			##echo $is_fastq_file;			
+		#else
+			#set $file_for_processing = "'input/" + $f.name + "'"
+			ln -s ${f}  $file_for_processing;	
+			##echo $is_fastq_file;
+		#end if
+	#end for
+	#if 'SingleEndFastqManifestPhred' in str($inputformat):
+			#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:
+				#set $tt = str($f.name).split("_")[0]+",$PWD/input/"+str($f.name).split(".")[0]+".fastq.gz,forward\n"
+				echo $tt >> $cwf;	 
+			#end for
+			
+			#set $in_= str($cwf)
+		#end if
+	
+
+#elif $input_type.type == 'list_paired_collection':
+  
+	#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))
+		#set $reverse_is_fastq_file = $is_fastq(str($pair.reverse))
+		
+		#if $forward_is_fastq_file:
+	 		gzip -c ${pair.forward} > input/${pair.name}_R1_001.fastq.gz;
+	 		#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;
+			#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;
+			#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;
+			#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
+
+	
+	
+	#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))
+
+	#if $res
+		gzip -c ${file} > ${file.name}.gz;
+		#set $in_= $file.name + '.gz'
+
+	#else
+		#set $in_= str($file)
+	#end if
+   
+   #if "MultiplexedSingleEndBarcodeInSequence" in str($semantic_type):      
+ 			mv *_R1_* forward.fastq.gz;
+	    #set $in_= 'forward.fastq.gz';
+   #end if 
+
+#end if
+
+
+## rename files to predefined names for "MultiplexedPairedEndBarcodeInSequence"
+#if "MultiplexedPairedEndBarcodeInSequence" in str($semantic_type):
+		mv input/*_R1_* input/forward.fastq.gz;
+		mv input/*_R2_* input/reverse.fastq.gz;
+#end if
+
+
+qiime tools import
+
+--input-path=$in_
+
+#if str($inputformat) != 'None':
+	#if '__ob__' in str($inputformat):
+  		#set $inputformat_temp = str($inputformat).replace('__ob__', '[')
+		#set $inputformat_temp = str($inputformat_temp).replace('__cb__', ']')
+  		#set $inputformat = $inputformat_temp
+	#end if
+ --input-format="$inputformat"
+#end if
+
+--type="$semantic_type"
+
+--output-path=outputpath.qza
+
+;
+cp outputpath.qza $outputpath
+]]>
+	</command>
+	<inputs>
+		<conditional name="input_type">
+			<param name="type" type="select" label="Select a way to provide data, either using a file or a list" help="">
+				<option value="regular">Input file</option>
+                <option selected="true" value="list_paired_collection">Multiple pairs - Combo mode (list:paired collection)</option>
+				<option value="list_list">Input list</option>
+			</param>
+
+			<when value="regular">
+				<param name="file" type="data" multiple="false" label="Input file" />
+			</when>
+		 	<when value="list_paired_collection">
+            	<param name="list_paired_collection" type="data_collection" collection_type="list:paired" label="Fastq pairs (collection)" help="Dataset collection made from multiple pairs of files" />
+         	</when>
+			<when value="list_list">
+				<param name="list_list" type="data_collection" collection_type="list" label="Input list" />
+			</when>
+		</conditional>
+
+		<param label="--type: The semantic type of the artifact that will be created upon importing. [required]" name="semantic_type" optional="False" type="select">
+			<option value="DeblurStats">DeblurStats</option>
+			<option value="DistanceMatrix">DistanceMatrix</option>
+			<option value="EMPPairedEndSequences">EMPPairedEndSequences</option>
+			<option value="EMPSingleEndSequences">EMPSingleEndSequences</option>
+			<option value="ErrorCorrectionDetails">ErrorCorrectionDetails</option>
+			<option value="FeatureData[AlignedSequence]">FeatureData[AlignedSequence]</option>
+			<option value="FeatureData[Importance]">FeatureData[Importance]</option>
+			<option value="FeatureData[PairedEndSequence]">FeatureData[PairedEndSequence]</option>
+			<option value="FeatureData[Sequence]">FeatureData[Sequence]</option>
+			<option value="FeatureData[Taxonomy]">FeatureData[Taxonomy]</option>
+			<option value="FeatureTable[Balance]">FeatureTable[Balance]</option>
+			<option value="FeatureTable[Composition]">FeatureTable[Composition]</option>
+			<option value="FeatureTable[Frequency]">FeatureTable[Frequency]</option>
+			<option value="FeatureTable[PercentileNormalized]">FeatureTable[PercentileNormalized]</option>
+			<option value="FeatureTable[PresenceAbsence]">FeatureTable[PresenceAbsence]</option>
+			<option value="FeatureTable[RelativeFrequency]">FeatureTable[RelativeFrequency]</option>
+			<option value="Hierarchy">Hierarchy</option>
+			<option value="MultiplexedPairedEndBarcodeInSequence">MultiplexedPairedEndBarcodeInSequence</option>
+			<option value="MultiplexedSingleEndBarcodeInSequence">MultiplexedSingleEndBarcodeInSequence</option>
+			<option value="PCoAResults">PCoAResults</option>
+			<option value="Phylogeny[Rooted]">Phylogeny[Rooted]</option>
+			<option value="Phylogeny[Unrooted]">Phylogeny[Unrooted]</option>
+			<option value="Placements">Placements</option>
+			<option value="QualityFilterStats">QualityFilterStats</option>
+			<option value="RawSequences">RawSequences</option>
+			<option value="SampleData[AlphaDiversity]">SampleData[AlphaDiversity]</option>
+			<option value="SampleData[BooleanSeries]">SampleData[BooleanSeries]</option>
+			<option value="SampleData[ClassifierPredictions]">SampleData[ClassifierPredictions]</option>
+			<option value="SampleData[DADA2Stats]">SampleData[DADA2Stats]</option>
+			<option value="SampleData[FirstDifferences]">SampleData[FirstDifferences]</option>
+			<option value="SampleData[JoinedSequencesWithQuality]">SampleData[JoinedSequencesWithQuality]</option>
+			<option selected="True" value="SampleData[PairedEndSequencesWithQuality]">SampleData[PairedEndSequencesWithQuality]</option>
+			<option value="SampleData[RegressorPredictions]">SampleData[RegressorPredictions]</option>
+			<option value="SampleData[SequencesWithQuality]">SampleData[SequencesWithQuality]</option>
+			<option value="SampleData[Sequences]">SampleData[Sequences]</option>
+			<option value="SampleData[Classifier]">SampleData[Classifier]</option>
+			<option value="SampleData[Regressor]">SampleData[Regressor]</option>
+			<option value="TaxonomicClassifier">TaxonomicClassifier</option>
+			<option value="UchimeStats">UchimeStats</option>
+		</param>
+
+		<param label="--input-format: The format of the data to be imported. If not provided, data must be in the format expected by the semantic type provided via --type." name="inputformat" optional="True" type="select">
+			<option value="AlignedDNAFASTAFormat">AlignedDNAFASTAFormat</option>
+			<option value="AlignedDNASequencesDirectoryFormat">AlignedDNASequencesDirectoryFormat</option>
+			<option value="AlphaDiversityDirectoryFormat">AlphaDiversityDirectoryFormat</option>
+			<option value="AlphaDiversityFormat">AlphaDiversityFormat</option>
+			<option value="BIOMV100DirFmt">BIOMV100DirFmt</option>
+			<option value="BIOMV100Format">BIOMV100Format</option>
+			<option value="BIOMV210DirFmt">BIOMV210DirFmt</option>
+			<option value="BIOMV210Format">BIOMV210Format</option>
+			<option value="BooleanSeriesDirectoryFormat">BooleanSeriesDirectoryFormat</option>
+			<option value="BooleanSeriesFormat">BooleanSeriesFormat</option>
+			<option value="CasavaOneEightLanelessPerSampleDirFmt">CasavaOneEightLanelessPerSampleDirFmt</option>
+			<option value="CasavaOneEightSingleLanePerSampleDirFmt">CasavaOneEightSingleLanePerSampleDirFmt</option>
+			<option value="DADA2StatsDirFmt">DADA2StatsDirFmt</option>
+			<option value="DADA2StatsFormat">DADA2StatsFormat</option>
+			<option value="DNAFASTAFormat">DNAFASTAFormat</option>
+			<option value="DNASequencesDirectoryFormat">DNASequencesDirectoryFormat</option>
+			<option value="DeblurStatsDirFmt">DeblurStatsDirFmt</option>
+			<option value="DeblurStatsFmt">DeblurStatsFmt</option>
+			<option value="DistanceMatrixDirectoryFormat">DistanceMatrixDirectoryFormat</option>
+			<option value="EMPPairedEndCasavaDirFmt">EMPPairedEndCasavaDirFmt</option>
+			<option value="EMPPairedEndDirFmt">EMPPairedEndDirFmt</option>
+			<option value="EMPSingleEndCasavaDirFmt">EMPSingleEndCasavaDirFmt</option>
+			<option value="EMPSingleEndDirFmt">EMPSingleEndDirFmt</option>
+			<option value="ErrorCorrectionDetailsDirFmt">ErrorCorrectionDetailsDirFmt</option>
+			<option value="FastqGzFormat">FastqGzFormat</option>
+			<option value="FirstDifferencesDirectoryFormat">FirstDifferencesDirectoryFormat</option>
+			<option value="FirstDifferencesFormat">FirstDifferencesFormat</option>
+			<option value="HeaderlessTSVTaxonomyDirectoryFormat">HeaderlessTSVTaxonomyDirectoryFormat</option>
+			<option value="HeaderlessTSVTaxonomyFormat">HeaderlessTSVTaxonomyFormat</option>
+			<option value="ImportanceDirectoryFormat">ImportanceDirectoryFormat</option>
+			<option value="ImportanceFormat">ImportanceFormat</option>
+			<option value="LSMatFormat">LSMatFormat</option>
+			<option value="MultiplexedPairedEndBarcodeInSequenceDirFmt">MultiplexedPairedEndBarcodeInSequenceDirFmt</option>
+			<option value="MultiplexedSingleEndBarcodeInSequenceDirFmt">MultiplexedSingleEndBarcodeInSequenceDirFmt</option>
+			<option value="NewickDirectoryFormat">NewickDirectoryFormat</option>
+			<option value="NewickFormat">NewickFormat</option>
+			<option value="OrdinationDirectoryFormat">OrdinationDirectoryFormat</option>
+			<option value="OrdinationFormat">OrdinationFormat</option>
+			<option value="PairedDNASequencesDirectoryFormat">PairedDNASequencesDirectoryFormat</option>
+			<option value="PairedEndFastqManifestPhred33">PairedEndFastqManifestPhred33</option>
+			<option value="PairedEndFastqManifestPhred33V2">PairedEndFastqManifestPhred33V2</option>
+			<option value="PairedEndFastqManifestPhred64">PairedEndFastqManifestPhred64</option>
+			<option value="PairedEndFastqManifestPhred64V2">PairedEndFastqManifestPhred64V2</option>
+			<option value="PlacementsDirFmt">PlacementsDirFmt</option>
+			<option value="PlacementsFormat">PlacementsFormat</option>
+			<option value="PredictionsDirectoryFormat">PredictionsDirectoryFormat</option>
+			<option value="PredictionsFormat">PredictionsFormat</option>
+			<option value="QIIME1DemuxDirFmt">QIIME1DemuxDirFmt</option>
+			<option value="QIIME1DemuxFormat">QIIME1DemuxFormat</option>
+			<option value="QualityFilterStatsDirFmt">QualityFilterStatsDirFmt</option>
+			<option value="QualityFilterStatsFmt">QualityFilterStatsFmt</option>
+			<option value="SampleEstimatorDirFmt">SampleEstimatorDirFmt</option>
+			<option value="SingleEndFastqManifestPhred33">SingleEndFastqManifestPhred33</option>
+			<option value="SingleEndFastqManifestPhred33V2">SingleEndFastqManifestPhred33V2</option>
+			<option value="SingleEndFastqManifestPhred64">SingleEndFastqManifestPhred64</option>
+			<option value="SingleEndFastqManifestPhred64V2">SingleEndFastqManifestPhred64V2</option>
+			<option value="SingleLanePerSamplePairedEndFastqDirFmt">SingleLanePerSamplePairedEndFastqDirFmt</option>
+			<option value="SingleLanePerSampleSingleEndFastqDirFmt">SingleLanePerSampleSingleEndFastqDirFmt</option>
+			<option value="TSVTaxonomyDirectoryFormat">TSVTaxonomyDirectoryFormat</option>
+			<option value="TSVTaxonomyFormat">TSVTaxonomyFormat</option>
+			<option value="TaxonomicClassiferTemporaryPickleDirFmt">TaxonomicClassiferTemporaryPickleDirFmt</option>
+			<option value="UchimeStatsDirFmt">UchimeStatsDirFmt</option>
+			<option value="UchimeStatsFmt">UchimeStatsFmt</option>
+		</param>
+	</inputs>
+	<outputs>
+		<data format="qza" label="${tool.name} on ${on_string}: outputpath.qza" name="outputpath"/>
+	</outputs>
+	    <!--<stdio>
+        <exit_code range="2"   level="warning"   description="Error" />
+    </stdio>-->
+	<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-2020.8/qiime_vsearch_cluster-features-closed-reference.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" ?>
+<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
+
+--p-perc-identity=$ppercidentity
+
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
+#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 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="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. 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
+----------
+sequences : FeatureData[Sequence]
+    The sequences corresponding to the features in table.
+table : FeatureTable[Frequency]
+    The feature table to be clustered.
+reference_sequences : FeatureData[Sequence]
+    The sequences to use as cluster centroids.
+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.
+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]
+    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>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_vsearch_cluster-features-de-novo.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" ?>
+<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
+
+--p-threads=$pthreads
+
+--o-clustered-table=oclusteredtable
+
+--o-clustered-sequences=oclusteredsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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" 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
+sequences. This is not a general-purpose de novo 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 and sequences will be inherited from the centroid
+feature of each cluster. See the vsearch documentation for details on how
+sequence clustering is performed.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The sequences corresponding to the features in table.
+table : FeatureTable[Frequency]
+    The feature table to be clustered.
+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>
+    <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-2020.8/qiime_vsearch_cluster-features-open-reference.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" ?>
+<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
+
+#if str($pstrand) != 'None':
+--p-strand=$pstrand
+#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 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" 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
+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.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The sequences corresponding to the features in table.
+table : FeatureTable[Frequency]
+    The feature table to be clustered.
+reference_sequences : FeatureData[Sequence]
+    The sequences to use as cluster centroids.
+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.
+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>
+    <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-2020.8/qiime_vsearch_dereplicate-sequences.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" ?>
+<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
+
+#if $pderepprefix:
+ --p-derep-prefix
+#end if
+
+--o-dereplicated-table=odereplicatedtable
+
+--o-dereplicated-sequences=odereplicatedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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-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
+will be the sha1 hash of the sequence defining each feature. If clustering
+of features into OTUs is desired, the resulting artifacts can be passed to
+the cluster_features_* methods in this plugin.
+
+Parameters
+----------
+sequences : SampleData[Sequences] | SampleData[SequencesWithQuality] | SampleData[JoinedSequencesWithQuality]
+    The sequences to be dereplicated.
+derep_prefix : Bool, optional
+    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.
+
+Returns
+-------
+dereplicated_table : FeatureTable[Frequency]
+    The table of dereplicated sequences.
+dereplicated_sequences : FeatureData[Sequence]
+    The dereplicated sequences.
+  ]]></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-2020.8/qiime_vsearch_fastq-stats.xml	Fri Sep 04 12:44:24 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qiime2-2020.8/qiime_vsearch_join-pairs.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" ?>
+<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
+#end if
+--p-minlen=$pminlen
+
+#if str($pmaxns):
+  --p-maxns=$pmaxns
+#end if
+#if $pallowmergestagger:
+ --p-allowmergestagger
+#end if
+
+--p-minovlen=$pminovlen
+
+--p-maxdiffs=$pmaxdiffs
+
+#if str($pminmergelen):
+  --p-minmergelen=$pminmergelen
+#end if
+#if str($pmaxmergelen):
+  --p-maxmergelen=$pmaxmergelen
+#end if
+#if str($pmaxee):
+  --p-maxee=$pmaxee
+#end if
+--p-qmin=$pqmin
+
+--p-qminout=$pqminout
+
+--p-qmax=$pqmax
+
+--p-qmaxout=$pqmaxout
+
+--p-threads=$pthreads
+
+--o-joined-sequences=ojoinedsequences
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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="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
+when working with older fastq sequence data. See the vsearch documentation
+for details on how paired-end joining is performed, and for more
+information on the parameters to this method.
+
+Parameters
+----------
+demultiplexed_seqs : SampleData[PairedEndSequencesWithQuality]
+    The demultiplexed paired-end sequences to be joined.
+truncqual : Int % Range(0, None), optional
+    Truncate sequences at the first base with the specified quality score
+    value or lower.
+minlen : Int % Range(0, None), optional
+    Sequences shorter than minlen after truncation are discarded.
+maxns : Int % Range(0, None), optional
+    Sequences with more than maxns N characters are discarded.
+allowmergestagger : Bool, optional
+    Allow joining of staggered read pairs.
+minovlen : Int % Range(0, None), optional
+    Minimum overlap length of forward and reverse reads for joining.
+maxdiffs : Int % Range(0, None), optional
+    Maximum number of mismatches in the forward/reverse read overlap for
+    joining.
+minmergelen : Int % Range(0, None), optional
+    Minimum length of the joined read to be retained.
+maxmergelen : Int % Range(0, None), optional
+    Maximum length of the joined read to be retained.
+maxee : Float % Range(0.0, None), optional
+    Maximum number of expected errors in the joined read to be retained.
+qmin : Int % Range(-5, 2, inclusive_end=True), optional
+    The minimum allowed quality score in the input.
+qminout : Int % Range(-5, 2, inclusive_end=True), optional
+    The minimum allowed quality score to use in output.
+qmax : Int % Range(40, 41, inclusive_end=True), optional
+    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>
+    <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-2020.8/qiime_vsearch_uchime-denovo.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" ?>
+<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
+
+--p-dn=$pdn
+
+--p-mindiffs=$pmindiffs
+
+--p-mindiv=$pmindiv
+
+--p-minh=$pminh
+
+--p-xn=$pxn
+
+--o-chimeras=ochimeras
+
+--o-nonchimeras=ononchimeras
+
+--o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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]" 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
+features from the corresponding feature table. For additional details,
+please refer to the vsearch documentation.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The feature sequences to be chimera-checked.
+table : FeatureTable[Frequency]
+    Feature table (used for computing total feature abundances).
+dn : Float % Range(0.0, None), optional
+    No vote pseudo-count, corresponding to the parameter n in the chimera
+    scoring function.
+mindiffs : Int % Range(1, None), optional
+    Minimum number of differences per segment.
+mindiv : Float % Range(0.0, None), optional
+    Minimum divergence from closest parent.
+minh : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    Minimum score (h). Increasing this value tends to reduce the number of
+    false positives and to decrease sensitivity.
+xn : Float % Range(1.0, None, inclusive_start=False), optional
+    No vote weight, corresponding to the parameter beta in the scoring
+    function.
+
+Returns
+-------
+chimeras : FeatureData[Sequence]
+    The chimeric sequences.
+nonchimeras : FeatureData[Sequence]
+    The non-chimeric sequences.
+stats : UchimeStats
+    Summary statistics from chimera checking.
+  ]]></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-2020.8/qiime_vsearch_uchime-ref.xml	Fri Sep 04 12:44:24 2020 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" ?>
+<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
+
+--p-dn=$pdn
+
+--p-mindiffs=$pmindiffs
+
+--p-mindiv=$pmindiv
+
+--p-minh=$pminh
+
+--p-xn=$pxn
+
+--p-threads=$pthreads
+
+--o-chimeras=ochimeras
+
+--o-nonchimeras=ononchimeras
+
+--o-stats=ostats
+
+#if str($examples) != 'None':
+--examples=$examples
+#end if
+
+;
+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]" 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
+corresponding feature table. For additional details, please refer to the
+vsearch documentation.
+
+Parameters
+----------
+sequences : FeatureData[Sequence]
+    The feature sequences to be chimera-checked.
+table : FeatureTable[Frequency]
+    Feature table (used for computing total feature abundances).
+reference_sequences : FeatureData[Sequence]
+    The non-chimeric reference sequences.
+dn : Float % Range(0.0, None), optional
+    No vote pseudo-count, corresponding to the parameter n in the chimera
+    scoring function.
+mindiffs : Int % Range(1, None), optional
+    Minimum number of differences per segment.
+mindiv : Float % Range(0.0, None), optional
+    Minimum divergence from closest parent.
+minh : Float % Range(0.0, 1.0, inclusive_end=True), optional
+    Minimum score (h). Increasing this value tends to reduce the number of
+    false positives and to decrease sensitivity.
+xn : Float % Range(1.0, None, inclusive_start=False), optional
+    No vote weight, corresponding to the parameter beta in the scoring
+    function.
+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
+-------
+chimeras : FeatureData[Sequence]
+    The chimeric sequences.
+nonchimeras : FeatureData[Sequence]
+    The non-chimeric sequences.
+stats : UchimeStats
+    Summary statistics from chimera checking.
+  ]]></help>
+  <macros>
+    <import>qiime_citation.xml</import>
+  </macros>
+  <expand macro="qiime_citation"/>
+</tool>
\ No newline at end of file