changeset 7:7bfe1f843858

Support Mothur v1.20 trim.seqs - added name parameter and optional trim.names output phylo.diversity - group optional, put group and groups in conditional - breaks get.lineage remove.lineage - allow multiple taxons dist.shared - added processors consensus.seqs - add cutoff parameter trim.seqs,phylo.diversity,get.lineage,remove.lineage,dist.shared,consensus.seqs new tools - chimera.uchime deunique.tree count.seqs shared/relabund files - Column headings refactor lib/galaxy/datatypes/metagenomics.py add filters to label and group selects in tool configs mothur_wrapper.py updated with new tools params
author Jim Johnson <jj@umn.edu>
date Mon, 27 Jun 2011 10:12:25 -0500
parents ce6e81622c6a
children 3249eb52a9c1
files mothur/README mothur/lib/galaxy/datatypes/metagenomics.py mothur/suite_config.xml mothur/tools/mothur/bin.seqs.xml mothur/tools/mothur/chimera.uchime.xml mothur/tools/mothur/classify.otu.xml mothur/tools/mothur/cluster.fragments.xml mothur/tools/mothur/collect.shared.xml mothur/tools/mothur/collect.single.xml mothur/tools/mothur/consensus.seqs.xml mothur/tools/mothur/corr.axes.xml mothur/tools/mothur/count.seqs.xml mothur/tools/mothur/degap.seqs.xml mothur/tools/mothur/deunique.seqs.xml mothur/tools/mothur/deunique.tree.xml mothur/tools/mothur/dist.shared.xml mothur/tools/mothur/get.groups.xml mothur/tools/mothur/get.lineage.xml mothur/tools/mothur/get.oturep.xml mothur/tools/mothur/get.relabund.xml mothur/tools/mothur/get.seqs.xml mothur/tools/mothur/get.sharedseqs.xml mothur/tools/mothur/heatmap.bin.xml mothur/tools/mothur/heatmap.sim.xml mothur/tools/mothur/indicator.xml mothur/tools/mothur/merge.groups.xml mothur/tools/mothur/metastats.xml mothur/tools/mothur/mothur_wrapper.py mothur/tools/mothur/normalize.shared.xml mothur/tools/mothur/pca.xml mothur/tools/mothur/phylo.diversity.xml mothur/tools/mothur/pre.cluster.xml mothur/tools/mothur/rarefaction.shared.xml mothur/tools/mothur/rarefaction.single.xml mothur/tools/mothur/remove.lineage.xml mothur/tools/mothur/remove.rare.xml mothur/tools/mothur/remove.seqs.xml mothur/tools/mothur/screen.seqs.xml mothur/tools/mothur/split.abund.xml mothur/tools/mothur/split.groups.xml mothur/tools/mothur/sub.sample.xml mothur/tools/mothur/summary.shared.xml mothur/tools/mothur/tree.shared.xml mothur/tools/mothur/trim.seqs.xml mothur/tools/mothur/unique.seqs.xml mothur/tools/mothur/venn.xml mothur/tools/suite_config.xml
diffstat 47 files changed, 781 insertions(+), 777 deletions(-) [+]
line wrap: on
line diff
--- a/mothur/README	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/README	Mon Jun 27 10:12:25 2011 -0500
@@ -1,6 +1,6 @@
 Provides galaxy tools for the Mothur metagenomics package -  http://www.mothur.org/wiki/Main_Page 
 
-Install mothur v.1.19.0 on your galaxy system so galaxy can execute the mothur command
+Install mothur v.1.20.0 on your galaxy system so galaxy can execute the mothur command
   ( This version of wrappers is designed for Mothur version 1.19 - it may work on later versions )
   http://www.mothur.org/wiki/Download_mothur
   http://www.mothur.org/wiki/Installation
@@ -145,6 +145,7 @@
       <tool file="mothur/make.fastq.xml"/>
       <tool file="mothur/fastq.info.xml"/>
       <tool file="mothur/summary.seqs.xml"/>
+      <tool file="mothur/count.seqs.xml"/>
       <tool file="mothur/reverse.seqs.xml"/>
       <tool file="mothur/list.seqs.xml"/>
       <tool file="mothur/get.seqs.xml"/>
@@ -174,6 +175,7 @@
       <tool file="mothur/chimera.check.xml"/>
       <tool file="mothur/chimera.pintail.xml"/>
       <tool file="mothur/chimera.slayer.xml"/>
+      <tool file="mothur/chimera.uchime.xml"/>
     <label text="Mothur Operational Taxonomy Unit" id="mothur_taxonomy_unit"/>
       <tool file="mothur/pre.cluster.xml"/>
       <tool file="mothur/cluster.fragments.xml"/>
@@ -229,6 +231,7 @@
       <tool file="mothur/phylo.diversity.xml"/>
       <tool file="mothur/clearcut.xml"/>
       <tool file="mothur/indicator.xml"/>
+      <tool file="mothur/deunique.tree.xml"/>
       <tool file="mothur/TreeVector.xml"/>
   </section> <!-- metagenomics_mothur -->
 
@@ -237,8 +240,6 @@
 Each mothur command has it's own tool_config (.xml) file, but all call the same python wrapper code: mothur_wrapper.py
 
 * Every mothur tool will call mothur_wrapper.py script with a --cmd= parameter that gives the mothur command name.
-* Many mothur commands require date to be read into memory (using read.dist, read.otu, read.tree) before executed the command,  
-  these are accomplished in the tool_config and mothur_wrapper.py with --READ_cmd= and --READ_<option> parameters. 
 * Every tool will produce the logfile of the mothur run as an output.
 * When the outputs of a mothur command could be determined in advance, they are included in the --result= parameter to mothur_wrapper.py
 * When the number of outputs cannot be determined in advance, the name patterns and datatypes of the ouputs 
@@ -264,10 +265,7 @@
  # Each item  conatins:   a regex pattern for matching filenames and  a galaxy datatype (separated by :)
  # The regex match.groups()[0] is used as the id name of the dataset, and must result in  unique name for each output
  --new_datasets='^\S+?\.((\S+)\.(unique|[0-9.]*)\.dist)$:lower.dist'
- # Many mothur commands first require data to be read into memory using: read.otu, read.dist, or read.tree
- # This prequisite command and its params are prefixed with 'READ_'
- --READ_cmd='read.otu'
- --READ_list=/home/galaxy/data/database/files/001/dataset_1557.dat
- --READ_group='/home/galaxy/data/database/files/001/dataset_1545.dat'
- --READ_label='unique,0.07'
 
+ ## 
+ ## NOTE:   The "read" commands were eliminated with Mothur version 1.18
+ ##
--- a/mothur/lib/galaxy/datatypes/metagenomics.py	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/lib/galaxy/datatypes/metagenomics.py	Mon Jun 27 10:12:25 2011 -0500
@@ -22,7 +22,7 @@
 
 ## Mothur Classes 
 
-class Otu( data.Text ):
+class Otu( Tabular ):
     file_ext = 'otu'
 
     def sniff( self, filename ):
@@ -70,6 +70,7 @@
         """
         Determines whether the file is a otu (operational taxonomic unit) format
         label<TAB>count[<TAB>value(1..n)]
+        
         """
         try:
             fh = open( filename )
@@ -107,15 +108,32 @@
 class Rabund( Sabund ):
     file_ext = 'rabund'
 
-
-class SharedRabund( Rabund ):
-    file_ext = 'shared'
-
-    def sniff( self, filename ):
+class GroupAbund( Otu ):
+    file_ext = 'grpabund'
+    def init_meta( self, dataset, copy_from=None ):
+        Otu.init_meta( self, dataset, copy_from=copy_from )
+    def set_meta( self, dataset, overwrite = True, skip=1, max_data_lines = 100000, **kwd ):
+        # See if file starts with header line
+        if dataset.has_data():
+            try:
+                fh = open( dataset.file_name )
+                line = fh.readline()
+                line = line.strip()
+                linePieces = line.split('\t')
+                if linePieces[0] == 'label' and linePieces[1] == 'Group':
+                    skip=1
+                else:
+                    skip=0
+            finally:
+                fh.close()
+        Otu.set_meta( self, dataset, overwrite, skip, max_data_lines, **kwd)
+    def sniff( self, filename, vals_are_int=False):
         """
         Determines whether the file is a otu (operational taxonomic unit) Shared format
         label<TAB>group<TAB>count[<TAB>value(1..n)]
+        The first line is column headings as of Mothur v 1.20
         """
+        log.info( "sniff GroupAbund vals_are_int %s" % vals_are_int)
         try:
             fh = open( filename )
             count = 0
@@ -129,14 +147,18 @@
                         linePieces = line.split('\t')
                         if len(linePieces) < 3:
                             return False
-                        try:
-                            check = int(linePieces[2])
-                            if check + 3 != len(linePieces):
+                        if count > 0 or linePieces[0] != 'label':
+                            try:
+                                check = int(linePieces[2])
+                                if check + 3 != len(linePieces):
+                                    return False
+                                for i in range( 3, len(linePieces)):
+                                    if vals_are_int:
+                                        ival = int(linePieces[i])
+                                    else:
+                                        fval = float(linePieces[i])
+                            except ValueError:
                                 return False
-                            for i in range( 3, len(linePieces)):
-                                ival = int(linePieces[i])
-                        except ValueError:
-                            return False
                         count += 1
                         if count >= 5:
                             return True
@@ -149,46 +171,35 @@
             fh.close()
         return False
 
-class RelAbund( Rabund ):
+class SharedRabund( GroupAbund ):
+    file_ext = 'shared'
+
+
+    def sniff( self, filename ):
+        """
+        Determines whether the file is a otu (operational taxonomic unit) Shared format
+        label<TAB>group<TAB>count[<TAB>value(1..n)]
+        The first line is column headings as of Mothur v 1.20
+        """
+        # return GroupAbund.sniff(self,filename,True)
+        isme = GroupAbund.sniff(self,filename,True)
+        log.info( "is SharedRabund %s" % isme)
+        return isme
+        
+
+class RelAbund( GroupAbund ):
     file_ext = 'relabund'
 
     def sniff( self, filename ):
         """
         Determines whether the file is a otu (operational taxonomic unit) Relative Abundance format
         label<TAB>group<TAB>count[<TAB>value(1..n)]
+        The first line is column headings as of Mothur v 1.20
         """
-        try:
-            fh = open( filename )
-            count = 0
-            while True:
-                line = fh.readline()
-                line = line.strip()
-                if not line:
-                    break #EOF
-                if line:
-                    if line[0] != '@':
-                        linePieces = line.split('\t')
-                        if len(linePieces) < 3:
-                            return False
-                        try:
-                            check = int(linePieces[2])
-                            if check + 3 != len(linePieces):
-                                return False
-                            for i in range( 3, len(linePieces)):
-                                fval = float(linePieces[i])
-                        except ValueError:
-                            return False
-                        count += 1
-                        if count >= 5:
-                            return True
-            fh.close()
-            if count < 5 and count > 0:
-                return True
-        except:
-            pass
-        finally:
-            fh.close()
-        return False
+        # return GroupAbund.sniff(self,filename,False)
+        isme = GroupAbund.sniff(self,filename,False)
+        log.info( "is RelAbund %s" % isme)
+        return isme
 
 class SecondaryStructureMap(Tabular):
     file_ext = 'map'
--- a/mothur/suite_config.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/suite_config.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,270 +1,279 @@
-<suite id="Mothur_toolsuite" name="Mothur Metagenomics" version="1.19.0">
+<suite id="Mothur_toolsuite" name="Mothur Metagenomics" version="1.20.0">
   <description>Mothur metagenomics commands as Galaxy tools</description>
-    <tool id="mothur_align_check" name="Align.check" version="1.19.0">
-     <description>Calculate the number of potentially misaligned bases</description>
-    </tool>
-    <tool id="mothur_align_seqs" name="Align.seqs" version="1.19.0">
-     <description>Align sequences to a template alignment</description>
-    </tool>
-    <tool id="mothur_amova" name="Amova" version="1.19.0">
-     <description>Analysis of molecular variance</description>
-    </tool>
-    <tool id="mothur_anosim" name="Anosim" version="1.19.0">
-     <description>Non-parametric multivariate analysis of changes in community structure</description>
-    </tool>
-    <tool id="mothur_bin_seqs" name="Bin.seqs" version="1.19.0">
-     <description>Order Sequences by OTU</description>
-    </tool>
-    <tool id="mothur_chimera_bellerophon" name="Chimera.bellerophon" version="1.19.0">
-     <description>Find putative chimeras using bellerophon</description>
-    </tool>
-    <tool id="mothur_chimera_ccode" name="Chimera.ccode" version="1.19.0">
-     <description>Find putative chimeras using ccode</description>
-    </tool>
-    <tool id="mothur_chimera_check" name="Chimera.check" version="1.19.0">
-     <description>Find putative chimeras using chimeraCheck</description>
-    </tool>
-    <tool id="mothur_chimera_pintail" name="Chimera.pintail" version="1.19.0">
-     <description>Find putative chimeras using pintail</description>
-    </tool>
-    <tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.19.0">
-     <description>Find putative chimeras using slayer</description>
-    </tool>
-    <tool id="mothur_chop_seqs" name="Chop.seqs" version="1.19.0">
-     <description>Trim sequences to a specified length</description>
-    </tool>
-    <tool id="mothur_classify_otu" name="Classify.otu" version="1.19.0">
-     <description>Assign sequences to taxonomy</description>
-    </tool>
-    <tool id="mothur_classify_seqs" name="Classify.seqs" version="1.19.0">
-     <description>Assign sequences to taxonomy</description>
-    </tool>
-    <tool id="mothur_clearcut" name="Clearcut" version="1.19.0">
-     <description>Generate a tree using relaxed neighbor joining</description>
-    </tool>
-    <tool id="mothur_cluster_classic" name="Cluster.classic" version="1.19.0">
-     <description>Assign sequences to OTUs (Dotur implementation)</description>
-    </tool>
-    <tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.19.0">
-     <description> Group sequences that are part of a larger sequence</description>
-    </tool>
-    <tool id="mothur_cluster_split" name="Cluster.split" version="1.19.0">
-     <description>Assign sequences to OTUs (Operational Taxonomic Unit) splits large matrices</description>
-    </tool>
-    <tool id="mothur_cluster" name="Cluster" version="1.19.0">
-     <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
-    </tool>
-    <tool id="mothur_collect_shared" name="Collect.shared" version="1.19.0">
-     <description>Generate collector's curves for calculators on OTUs</description>
-    </tool>
-    <tool id="mothur_collect_single" name="Collect.single" version="1.19.0">
-     <description>Generate collector's curves for OTUs</description>
-    </tool>
-    <tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.19.0">
-     <description>Find a consensus sequence for each OTU or phylotype</description>
-    </tool>
-    <tool id="mothur_corr_axes" name="Corr.axes" version="1.19.0">
-     <description>correlation of data to axes</description>
-    </tool>
-    <tool id="mothur_degap_seqs" name="Degap.seqs" version="1.19.0">
-     <description>Remove gap characters from sequences</description>
-    </tool>
-    <tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.19.0">
-     <description>Return all sequences</description>
-    </tool>
-    <tool id="mothur_dist_seqs" name="Dist.seqs" version="1.19.0">
-     <description>calculate uncorrected pairwise distances between aligned sequences</description>
-    </tool>
-    <tool id="mothur_dist_shared" name="Dist.shared" version="1.19.0">
-     <description>Generate a phylip-formatted dissimilarity distance matrix among multiple groups</description>
-    </tool>
-    <tool id="mothur_fastq_info" name="Fastq.info" version="1.19.0">
-     <description>Convert fastq to fasta and quality</description>
-    </tool>
-    <tool id="mothur_filter_seqs" name="Filter.seqs" version="1.19.0">
-     <description>removes columns from alignments</description>
-    </tool>
-    <tool id="mothur_get_groups" name="Get.groups" version="1.19.0">
-     <description>Select groups</description>
-    </tool>
-    <tool id="mothur_get_group" name="Get.group" version="1.19.0">
-     <description>group names from shared or from list and group</description>
-    </tool>
-    <tool id="mothur_get_lineage" name="Get.lineage" version="1.19.0">
-     <description>Picks by taxon</description>
-    </tool>
-    <tool id="mothur_get_otulist" name="Get.otulist" version="1.19.0">
-     <description>Get otus for each distance in a otu list</description>
-    </tool>
-    <tool id="mothur_get_oturep" name="Get.oturep" version="1.19.0">
-     <description>Generate a fasta with a representative sequence for each OTU</description>
-    </tool>
-    <tool id="mothur_get_otus" name="Get.otus" version="1.19.0">
-     <description>Get otus containing sequences from specified groups</description>
-    </tool>
-    <tool id="mothur_get_rabund" name="Get.rabund" version="1.19.0">
-     <description>Get rabund from a otu list or sabund</description>
-    </tool>
-    <tool id="mothur_get_relabund" name="Get.relabund" version="1.19.0">
-     <description>Calculate the relative abundance of each otu</description>
-    </tool>
-    <tool id="mothur_get_sabund" name="Get.sabund" version="1.19.0">
-     <description>Get sabund from a otu list or rabund</description>
-    </tool>
-    <tool id="mothur_get_seqs" name="Get.seqs" version="1.19.0">
-     <description>Picks sequences by name</description>
-    </tool>
-    <tool id="mothur_get_sharedseqs" name="Get.sharedseqs" version="1.19.0">
-     <description>Get shared sequences at each distance from list and group</description>
-    </tool>
-    <tool id="mothur_hcluster" name="Hcluster" version="1.19.0">
-     <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
-    </tool>
-    <tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.19.0">
-     <description>Generate a heatmap for OTUs</description>
-    </tool>
-    <tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.19.0">
-     <description>Generate a heatmap for pariwise similarity</description>
-    </tool>
-    <tool id="mothur_homova" name="Homova" version="1.19.0">
-     <description>Homogeneity of molecular variance</description>
-    </tool>
-    <tool id="mothur_indicator" name="Indicator" version="1.19.0">
-     <description>Identify indicator "species" for nodes on a tree</description>
-    </tool>
-    <tool id="mothur_libshuff" name="Libshuff" version="1.19.0">
-     <description>Cramer-von Mises tests communities for the same structure</description>
-    </tool>
-    <tool id="mothur_list_seqs" name="List.seqs" version="1.19.0">
-     <description>Lists the names (accnos) of the sequences</description>
-    </tool>
-    <tool id="mothur_make_design" name="Make Design" version="1.19.0" >
-     <description>Assign groups to Sets</description>
-    </tool>
-    <tool id="mothur_make_fastq" name="Make.fastq" version="1.19.0">
-     <description>Convert fasta and quality to fastq</description>
-    </tool>
-    <tool id="mothur_make_files" name="Make.group" version="1.19.0">
-     <description>Make a group file</description>
-    </tool>
-    <tool id="mothur_make_shared" name="Make.shared" version="1.19.0">
-     <description>Make a shared file from a list and a group</description>
-    </tool>
-    <tool id="mothur_mantel" name="Mantel" version="1.19.0">
-     <description>Mantel correlation coefficient between two matrices.</description>
-    </tool>
-    <tool id="mothur_merge_files" name="Merge.files" version="1.19.0">
-     <description>Merge data</description>
-    </tool>
-    <tool id="mothur_merge_groups" name="Merge.groups" version="1.19.0" >
-     <description>Merge groups in a shared file</description>
-    </tool>
-    <tool id="mothur_metastats" name="Metastats" version="1.19.0" >
-     <description>generate principle components plot data</description>
-    </tool>
-    <tool id="mothur_nmds" name="Nmds" version="1.19.0">
-     <description>generate non-metric multidimensional scaling data</description>
-    </tool>
-    <tool id="mothur_normalize_shared" name="Normalize.shared" version="1.19.0">
-     <description>Normalize the number of sequences per group to a specified level</description>
-    </tool>
-    <tool id="mothur_otu_hierarchy" name="Otu.hierarchy" version="1.19.0">
-     <description>Relate OTUs at different distances</description>
-    </tool>
-    <tool id="mothur_pairwise_seqs" name="Pairwise.seqs" version="1.19.0">
-     <description>calculate uncorrected pairwise distances between sequences</description>
-    </tool>
-    <tool id="mothur_parse_list" name="Parse.list" version="1.19.0">
-     <description>Generate a List file for each group</description>
-    </tool>
-    <tool id="mothur_parsimony" name="Parsimony" version="1.19.0">
-     <description>Describes whether two or more communities have the same structure</description>
-    </tool>
-    <tool id="mothur_pca" name="Pca" version="1.19.0">
-     <description>Principal Coordinate Analysis for a shared file</description>
-    </tool>
-    <tool id="mothur_pcoa" name="Pcoa" version="1.19.0" >
-     <description>Principal Coordinate Analysis for a distance matrix</description>
-    </tool>
-    <tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.19.0">
-     <description>Alpha Diversity calculates unique branch length</description>
-    </tool>
-    <tool id="mothur_phylotype" name="Phylotype" version="1.19.0">
-     <description>Assign sequences to OTUs based on taxonomy</description>
-    </tool>
-    <tool id="mothur_pre_cluster" name="Pre.cluster" version="1.19.0">
-     <description>Remove sequences due to pyrosequencing errors</description>
-    </tool>
-    <tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.19.0">
-     <description>Generate inter-sample rarefaction curves for OTUs</description>
-    </tool>
-    <tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.19.0">
-     <description>Generate intra-sample rarefaction curves for OTUs</description>
-    </tool>
-    <tool id="mothur_remove_groups" name="Remove.groups" version="1.19.0">
-     <description>Remove groups from groups,fasta,names,list,taxonomy</description>
-    </tool>
-    <tool id="mothur_remove_lineage" name="Remove.lineage" version="1.19.0">
-     <description>Picks by taxon</description>
-    </tool>
-    <tool id="mothur_remove_otus" name="Remove.otus" version="1.19.0">
-     <description>Remove otus containing sequences from specified groups</description>
-    </tool>
-    <tool id="mothur_remove_rare" name="Remove.rare" version="1.19.0">
-     <description>Remove rare OTUs</description>
-    </tool>
-    <tool id="mothur_remove_seqs" name="Remove.seqs" version="1.19.0">
-     <description>Remove sequences by name</description>
-    </tool>
-    <tool id="mothur_reverse_seqs" name="Reverse.seqs" version="1.19.0">
-     <description>Reverse complement the sequences</description>
-    </tool>
-    <tool id="mothur_screen_seqs" name="Screen.seqs" version="1.19.0">
-     <description>Screen sequences</description>
-    </tool>
-    <tool id="mothur_sens_spec" name="Sens.spec" version="1.19.0" >
-     <description>Determine the quality of OTU assignment</description>
-    </tool>
-    <tool id="mothur_sffinfo" name="Sffinfo" version="1.19.0">
-     <description>Summarize the quality of sequences</description>
-    </tool>
-    <tool id="mothur_split_abund" name="Split.abund" version="1.19.0">
-     <description>Separate sequences into rare and abundant groups</description>
-    </tool>
-    <tool id="mothur_split_groups" name="Split.groups" version="1.19.0">
-     <description>Generates a fasta file for each group</description>
-    </tool>
-    <tool id="mothur_sub_sample" name="Sub.sample" version="1.19.0">
-     <description>Create a sub sample</description>
-    </tool>
-    <tool id="mothur_summary_seqs" name="Summary.seqs" version="1.19.0">
-     <description>Summarize the quality of sequences</description>
-    </tool>
-    <tool id="mothur_summary_shared" name="Summary.shared" version="1.19.0">
-     <description>Summary of calculator values for OTUs</description>
-    </tool>
-    <tool id="mothur_summary_single" name="Summary.single" version="1.19.0">
-     <description>Summary of calculator values for OTUs</description>
-    </tool>
-    <tool id="mothur_tree_shared" name="Tree.shared" version="1.19.0">
-     <description>Generate a newick tree for dissimilarity among groups</description>
-    </tool>
-    <tool id="tree_vector" name="TreeVector" version="1.0">
-     <description>Draw a Phylogenic Tree</description>
-    </tool>
-    <tool id="mothur_trim_seqs" name="Trim.seqs" version="1.19.0">
-     <description>Trim sequences - primers, barcodes, quality</description>
-    </tool>
-    <tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.19.0">
-     <description>Describes whether two or more communities have the same structure</description>
-    </tool>
-    <tool id="mothur_unifrac_weighted" name="unifrac.weighted" version="1.19.0">
-     <description>Describes whether two or more communities have the same structure</description>
-    </tool>
-    <tool id="mothur_unique_seqs" name="Unique.seqs" version="1.19.0">
-     <description>Return unique sequences</description>
-    </tool>
-    <tool id="mothur_venn" name="Venn" version="1.19.0">
-     <description>Generate Venn diagrams for groups </description>
-    </tool>
+  <tool id="mothur_align_check" name="Align.check" version="1.19.0">
+   <description>Calculate the number of potentially misaligned bases</description>
+  </tool>
+  <tool id="mothur_align_seqs" name="Align.seqs" version="1.19.0">
+   <description>Align sequences to a template alignment</description>
+  </tool>
+  <tool id="mothur_amova" name="Amova" version="1.19.0">
+   <description>Analysis of molecular variance</description>
+  </tool>
+  <tool id="mothur_anosim" name="Anosim" version="1.19.0">
+   <description>Non-parametric multivariate analysis of changes in community structure</description>
+  </tool>
+  <tool id="mothur_bin_seqs" name="Bin.seqs" version="1.20.0" force_history_refresh="True">
+   <description>Order Sequences by OTU</description>
+  </tool>
+  <tool id="mothur_chimera_bellerophon" name="Chimera.bellerophon" version="1.20.0">
+   <description>Find putative chimeras using bellerophon</description>
+  </tool>
+  <tool id="mothur_chimera_ccode" name="Chimera.ccode" version="1.20.0">
+   <description>Find putative chimeras using ccode</description>
+  </tool>
+  <tool id="mothur_chimera_check" name="Chimera.check" version="1.20.0" force_history_refresh="True">
+   <description>Find putative chimeras using chimeraCheck</description>
+  </tool>
+  <tool id="mothur_chimera_pintail" name="Chimera.pintail" version="1.20.0">
+   <description>Find putative chimeras using pintail</description>
+  </tool>
+  <tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.20.0">
+   <description>Find putative chimeras using slayer</description>
+  </tool>
+  <tool id="mothur_chimera_uchime" name="Chimera.uchime" version="1.20.0">
+   <description>Find putative chimeras using uchime</description>
+  </tool>
+  <tool id="mothur_chop_seqs" name="Chop.seqs" version="1.19.0">
+   <description>Trim sequences to a specified length</description>
+  </tool>
+  <tool id="mothur_classify_otu" name="Classify.otu" version="1.20.0" force_history_refresh="True">
+   <description>Assign sequences to taxonomy</description>
+  </tool>
+  <tool id="mothur_classify_seqs" name="Classify.seqs" version="1.19.0">
+   <description>Assign sequences to taxonomy</description>
+  </tool>
+  <tool id="mothur_clearcut" name="Clearcut" version="1.19.0">
+   <description>Generate a tree using relaxed neighbor joining</description>
+  </tool>
+  <tool id="mothur_cluster_classic" name="Cluster.classic" version="1.19.0">
+   <description>Assign sequences to OTUs (Dotur implementation)</description>
+  </tool>
+  <tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.20.0">
+   <description> Group sequences that are part of a larger sequence</description>
+  </tool>
+  <tool id="mothur_cluster_split" name="Cluster.split" version="1.19.0">
+   <description>Assign sequences to OTUs (Operational Taxonomic Unit) splits large matrices</description>
+  </tool>
+  <tool id="mothur_cluster" name="Cluster" version="1.19.0">
+   <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
+  </tool>
+  <tool id="mothur_collect_shared" name="Collect.shared" version="1.20.0" force_history_refresh="True">
+   <description>Generate collector's curves for calculators on OTUs</description>
+  </tool>
+  <tool id="mothur_collect_single" name="Collect.single" version="1.20.0" force_history_refresh="True">
+   <description>Generate collector's curves for OTUs</description>
+  </tool>
+  <tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.20.0" force_history_refresh="True">
+   <description>Find a consensus sequence for each OTU or phylotype</description>
+  </tool>
+  <tool id="mothur_corr_axes" name="Corr.axes" version="1.20.0">
+   <description>correlation of data to axes</description>
+  </tool>
+  <tool id="mothur_count_seqs" name="Count.seqs" version="1.20.0" >
+   <description>counts the number of sequences represented by the representative</description>
+  </tool>
+  <tool id="mothur_degap_seqs" name="Degap.seqs" version="1.20.0">
+   <description>Remove gap characters from sequences</description>
+  </tool>
+  <tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.20.0">
+   <description>Return all sequences</description>
+  </tool>
+  <tool id="mothur_deunique_tree" name="Deunique.tree" version="1.20.0">
+   <description>Reinsert the redundant sequence identiers back into a unique tree.</description>
+  </tool>
+  <tool id="mothur_dist_seqs" name="Dist.seqs" version="1.19.0">
+   <description>calculate uncorrected pairwise distances between aligned sequences</description>
+  </tool>
+  <tool id="mothur_dist_shared" name="Dist.shared" version="1.20.0" force_history_refresh="True">
+   <description>Generate a phylip-formatted dissimilarity distance matrix among multiple groups</description>
+  </tool>
+  <tool id="mothur_fastq_info" name="Fastq.info" version="1.19.0">
+   <description>Convert fastq to fasta and quality</description>
+  </tool>
+  <tool id="mothur_filter_seqs" name="Filter.seqs" version="1.19.0" force_history_refresh="True">
+   <description>removes columns from alignments</description>
+  </tool>
+  <tool id="mothur_get_groups" name="Get.groups" version="1.20.0">
+   <description>Select groups</description>
+  </tool>
+  <tool id="mothur_get_group" name="Get.group" version="1.19.0">
+   <description>group names from shared or from list and group</description>
+  </tool>
+  <tool id="mothur_get_lineage" name="Get.lineage" version="1.20.0">
+   <description>Picks by taxon</description>
+  </tool>
+  <tool id="mothur_get_otulist" name="Get.otulist" force_history_refresh="True" version="1.19.0">
+   <description>Get otus for each distance in a otu list</description>
+  </tool>
+  <tool id="mothur_get_oturep" name="Get.oturep" version="1.20.0"  force_history_refresh="True">
+   <description>Generate a fasta with a representative sequence for each OTU</description>
+  </tool>
+  <tool id="mothur_get_otus" name="Get.otus" version="1.19.0">
+   <description>Get otus containing sequences from specified groups</description>
+  </tool>
+  <tool id="mothur_get_rabund" name="Get.rabund" version="1.19.0">
+   <description>Get rabund from a otu list or sabund</description>
+  </tool>
+  <tool id="mothur_get_relabund" name="Get.relabund" version="1.20.0">
+   <description>Calculate the relative abundance of each otu</description>
+  </tool>
+  <tool id="mothur_get_sabund" name="Get.sabund" version="1.19.0">
+   <description>Get sabund from a otu list or rabund</description>
+  </tool>
+  <tool id="mothur_get_seqs" name="Get.seqs" version="1.20.0">
+   <description>Picks sequences by name</description>
+  </tool>
+  <tool id="mothur_get_sharedseqs" name="Get.sharedseqs" version="1.20.0" force_history_refresh="True">
+   <description>Get shared sequences at each distance from list and group</description>
+  </tool>
+  <tool id="mothur_hcluster" name="Hcluster" version="1.19.0">
+   <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
+  </tool>
+  <tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.20.0"  force_history_refresh="True">
+   <description>Generate a heatmap for OTUs</description>
+  </tool>
+  <tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.20.0"  force_history_refresh="True">
+   <description>Generate a heatmap for pariwise similarity</description>
+  </tool>
+  <tool id="mothur_homova" name="Homova" version="1.19.0">
+   <description>Homogeneity of molecular variance</description>
+  </tool>
+  <tool id="mothur_indicator" name="Indicator" version="1.20.0">
+   <description>Identify indicator "species" for nodes on a tree</description>
+  </tool>
+  <tool id="mothur_libshuff" name="Libshuff" version="1.19.0">
+   <description>Cramer-von Mises tests communities for the same structure</description>
+  </tool>
+  <tool id="mothur_list_seqs" name="List.seqs" version="1.19.0">
+   <description>Lists the names (accnos) of the sequences</description>
+  </tool>
+  <tool id="mothur_make_design" name="Make Design" version="1.19.0" >
+   <description>Assign groups to Sets</description>
+  </tool>
+  <tool id="mothur_make_fastq" name="Make.fastq" version="1.19.0">
+   <description>Convert fasta and quality to fastq</description>
+  </tool>
+  <tool id="mothur_make_files" name="Make.group" version="1.19.0">
+   <description>Make a group file</description>
+  </tool>
+  <tool id="mothur_make_shared" name="Make.shared" version="1.19.0" force_history_refresh="True">
+   <description>Make a shared file from a list and a group</description>
+  </tool>
+  <tool id="mothur_mantel" name="Mantel" version="1.19.0">
+   <description>Mantel correlation coefficient between two matrices.</description>
+  </tool>
+  <tool id="mothur_merge_files" name="Merge.files" version="1.19.0">
+   <description>Merge data</description>
+  </tool>
+  <tool id="mothur_merge_groups" name="Merge.groups" version="1.20.0" >
+   <description>Merge groups in a shared file</description>
+  </tool>
+  <tool id="mothur_metastats" name="Metastats" version="1.20.0" force_history_refresh="True" >
+   <description>generate principle components plot data</description>
+  </tool>
+  <tool id="mothur_nmds" name="Nmds" version="1.19.0">
+   <description>generate non-metric multidimensional scaling data</description>
+  </tool>
+  <tool id="mothur_normalize_shared" name="Normalize.shared" version="1.20.0">
+   <description>Normalize the number of sequences per group to a specified level</description>
+  </tool>
+  <tool id="mothur_otu_hierarchy" name="Otu.hierarchy" version="1.19.0">
+   <description>Relate OTUs at different distances</description>
+  </tool>
+  <tool id="mothur_pairwise_seqs" name="Pairwise.seqs" version="1.19.0">
+   <description>calculate uncorrected pairwise distances between sequences</description>
+  </tool>
+  <tool id="mothur_parse_list" name="Parse.list" version="1.19.0" force_history_refresh="True">
+   <description>Generate a List file for each group</description>
+  </tool>
+  <tool id="mothur_parsimony" name="Parsimony" version="1.19.0">
+   <description>Describes whether two or more communities have the same structure</description>
+  </tool>
+  <tool id="mothur_pca" name="Pca" version="1.20.0">
+   <description>Principal Coordinate Analysis for a shared file</description>
+  </tool>
+  <tool id="mothur_pcoa" name="Pcoa" version="1.19.0" >
+   <description>Principal Coordinate Analysis for a distance matrix</description>
+  </tool>
+  <tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.20.0">
+   <description>Alpha Diversity calculates unique branch length</description>
+  </tool>
+  <tool id="mothur_phylotype" name="Phylotype" version="1.19.0">
+   <description>Assign sequences to OTUs based on taxonomy</description>
+  </tool>
+  <tool id="mothur_pre_cluster" name="Pre.cluster" version="1.20.0">
+   <description>Remove sequences due to pyrosequencing errors</description>
+  </tool>
+  <tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.20.0">
+   <description>Generate inter-sample rarefaction curves for OTUs</description>
+  </tool>
+  <tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.20.0" force_history_refresh="True">
+   <description>Generate intra-sample rarefaction curves for OTUs</description>
+  </tool>
+  <tool id="mothur_remove_groups" name="Remove.groups" version="1.19.0">
+   <description>Remove groups from groups,fasta,names,list,taxonomy</description>
+  </tool>
+  <tool id="mothur_remove_lineage" name="Remove.lineage" version="1.20.0">
+   <description>Picks by taxon</description>
+  </tool>
+  <tool id="mothur_remove_otus" name="Remove.otus" version="1.19.0">
+   <description>Remove otus containing sequences from specified groups</description>
+  </tool>
+  <tool id="mothur_remove_rare" name="Remove.rare" version="1.20.0">
+   <description>Remove rare OTUs</description>
+  </tool>
+  <tool id="mothur_remove_seqs" name="Remove.seqs" version="1.20.0">
+   <description>Remove sequences by name</description>
+  </tool>
+  <tool id="mothur_reverse_seqs" name="Reverse.seqs" version="1.19.0">
+   <description>Reverse complement the sequences</description>
+  </tool>
+  <tool id="mothur_screen_seqs" name="Screen.seqs" version="1.20.0">
+   <description>Screen sequences</description>
+  </tool>
+  <tool id="mothur_sens_spec" name="Sens.spec" version="1.19.0" >
+   <description>Determine the quality of OTU assignment</description>
+  </tool>
+  <tool id="mothur_sffinfo" name="Sffinfo" version="1.19.0">
+   <description>Summarize the quality of sequences</description>
+  </tool>
+  <tool id="mothur_split_abund" name="Split.abund" version="1.20.0" force_history_refresh="True">
+   <description>Separate sequences into rare and abundant groups</description>
+  </tool>
+  <tool id="mothur_split_groups" name="Split.groups" version="1.20.0" force_history_refresh="True">
+   <description>Generates a fasta file for each group</description>
+  </tool>
+  <tool id="mothur_sub_sample" name="Sub.sample" version="1.20.0">
+   <description>Create a sub sample</description>
+  </tool>
+  <tool id="mothur_summary_seqs" name="Summary.seqs" version="1.19.0">
+   <description>Summarize the quality of sequences</description>
+  </tool>
+  <tool id="mothur_summary_shared" name="Summary.shared" version="1.20.0"  force_history_refresh="True">
+   <description>Summary of calculator values for OTUs</description>
+  </tool>
+  <tool id="mothur_summary_single" name="Summary.single" version="1.19.0" force_history_refresh="True">
+   <description>Summary of calculator values for OTUs</description>
+  </tool>
+  <tool id="mothur_tree_shared" name="Tree.shared" version="1.20.0" force_history_refresh="True">
+   <description>Generate a newick tree for dissimilarity among groups</description>
+  </tool>
+  <tool id="tree_vector" name="TreeVector" version="1.0">
+   <description>Draw a Phylogenic Tree</description>
+  </tool>
+  <tool id="mothur_trim_seqs" name="Trim.seqs" version="1.20.0" force_history_refresh="True">
+   <description>Trim sequences - primers, barcodes, quality</description>
+  </tool>
+  <tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.19.0">
+   <description>Describes whether two or more communities have the same structure</description>
+  </tool>
+  <tool id="mothur_unifrac_weighted" name="unifrac.weighted" version="1.19.0">
+   <description>Describes whether two or more communities have the same structure</description>
+  </tool>
+  <tool id="mothur_unique_seqs" name="Unique.seqs" version="1.20.0">
+   <description>Return unique sequences</description>
+  </tool>
+  <tool id="mothur_venn" name="Venn" version="1.20.0"  force_history_refresh="True">
+   <description>Generate Venn diagrams for groups </description>
+  </tool>
 </suite>
--- a/mothur/tools/mothur/bin.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/bin.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_bin_seqs" name="Bin.seqs" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_bin_seqs" name="Bin.seqs" version="1.20.0" force_history_refresh="True">
  <description>Order Sequences by OTU</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/chimera.uchime.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -0,0 +1,167 @@
+<tool id="mothur_chimera_uchime" name="Chimera.uchime" version="1.20.0">
+ <description>Find putative chimeras using uchime</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='chimera.uchime'
+  ##  stool.trim.unique.good.fasta
+  ##  stool.trim.unique.good.uchime.chimera
+  ##  stool.trim.unique.good.uchime.accnos
+  ##  stool.trim.unique.good.uchime.alns
+  #if $chimealns:
+   --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.uchime\.chimeras?$:'$out_file,'^\S+\.uchime\.accnos$:'$out_accnos,'^\S+\.uchime\.alns$:'$out_alns
+  #else:
+   --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.uchime\.chimeras?$:'$out_file,'^\S+\.uchime\.accnos$:'$out_accnos
+  #end if
+  --outputdir='$logfile.extra_files_path'
+  --fasta=$fasta
+  #if $template.source == 'ref':
+   --reference=$template.reference
+  #elif $template.source == 'hist':
+   --reference=$template.reference
+  #elif $template.source == 'self':
+   --reference='self'
+   #if float($template.abskew.__str__) > 0:
+    --abskew=$template.abskew
+   #end if
+  #elif $template.source == 'names':
+   --name=$template.name
+  #end if
+  #if float($minh.__str__) > 0:
+   --minh=$minh
+  #end if
+  #if float($mindiv.__str__) > 0:
+   --mindiv=$mindiv
+  #end if
+  #if float($xn.__str__) > 0:
+   --xn=$xn
+  #end if
+  #if float($dn.__str__) > 0:
+   --dn=$dn
+  #end if
+  #if float($xa.__str__) > 0:
+   --xa=$xa
+  #end if
+  #if int($chunks.__str__) > 0:
+   --chunks=$chunks
+  #end if
+  #if int($minchunk.__str__) > 0:
+   --minchunk=$minchunk
+  #end if
+  #if len($idsmoothwindow.__str__) > 0 and int($idsmoothwindow.__str__) > 0:
+   --idsmoothwindow=$idsmoothwindow
+  #end if
+  ## #if len($minsmoothid.__str__) > 0 and float($minsmoothid.__str__) > 0:
+  ##  --minsmoothid=$minsmoothid
+  ## #end if
+  #if int($maxp.__str__) > 0:
+   --maxp=$maxp
+  #end if
+  #if int($minlen.__str__) > 0:
+   --minlen=$minlen
+  #end if
+  #if int($maxlen.__str__) > 0:
+   --maxlen=$maxlen
+  #end if
+  $skipgaps
+  $skipgaps2
+  #if $alignment.ucl:
+    --ucl=true
+   #if $alignment.queryfract != None and len($alignment.queryfract) > 0 and 1.0 >= float($alignment.queryfract) > 0: 
+    --queryfract=$alignment.queryfract
+   #end if
+  #end if
+  $chimealns
+  --processors=2
+ </command>
+ <inputs>
+  <param name="fasta" type="data" format="align" label="fasta - Candiate Aligned Sequences"/>
+  <conditional name="template">
+   <param name="source" type="select" label="Select Reference Template from" help="">
+    <option value="hist">History</option>
+    <option value="ref">Cached Reference</option>
+    <option value="self">Self</option>
+    <option value="names">Use a names file</option>
+   </param>
+   <when value="ref">
+    <param name="reference" type="select" label="reference - Select an alignment database " help="">
+     <options from_file="mothur_aligndb.loc">
+      <column name="name" index="0" />
+      <column name="value" index="1" />
+     </options>
+    </param>
+   </when>
+   <when value="hist">
+    <param name="reference" type="data" format="fasta" label="reference - Reference to align with" help=""/>
+   </when>
+   <when value="self">
+    <param name="abskew" type="float" value="1.9" label="abskew - Abundance skew (default 1.9)" help="Abundance skew is: min [ abund(parent1), abund(parent2) ] / abund(query)"/>
+   </when>
+   <when value="names">
+    <param name="name" type="data" format="names" label="name - Sequence names"/>
+   </when>
+  </conditional>
+
+  <param name="minh" type="float" value="0.3" label="minh - mininum score to report chimera. Default 0.3" help="Values from 0.1 to 5 might be reasonable. Lower values increase sensitivity but may report more false positives."/>
+  <param name="mindiv" type="float" value="0.5" label="mindiv - minimum divergence ratio, default 0.5" help="to ignore very close chimeras, increase mindiv to 1.0 or 2.0, to increase sensitivity decrease minh to 0.1"/>
+
+  <param name="xn" type="float" value="8.0" label="xn - weight of a no vote. Default 8.0" help="Decreasing this weight to around 3 or 4 may give better performance on denoised data"/>
+  <param name="dn" type="float" value="1.4" label="dn - pseudo-count prior on number of no votes. Default 1.4" help="Reasonable values are probably in the range from 0.2 to 2.0"/>
+  <param name="xa" type="float" value="1.0" label="xa - eight of an abstain vote. Default 1.0" help="Reasonable values might range from 0.1 to 2.0"/>
+
+
+  <param name="chunks" type="integer" value="4" label="chunks - number of chunks. Default 4." help="number of chunks to extract from the query sequence when searching for parents."/>
+  <param name="minchunk" type="integer" value="64" label="minchunk - minimum length of a chunk. Default 64." help=""/>
+  <param name="idsmoothwindow" type="integer" value="32" optional="True" label="idsmoothwindow - the length of id smoothing window. Default 32" help=""/>
+  <!-- not supported in uchime 
+  <param name="minsmoothid" type="float" value="0.95" optional="True" label="minsmoothid - minimum factional identity over smoothed window of candidate parent. Default 0.95" help=""/>
+  -->
+  <param name="maxp" type="integer" value="2" label="maxp - maximum number of candidate parents to consider. Default 2" help="increasing maxp gives only a very small improvement in sensivity but tends to increase the error rate quite a bit"/>
+  <param name="minlen" type="integer" value="0" label="minlen - minimum unaligned sequence length. Default 10" help="Applies to both query and reference sequences."/>
+  <param name="maxlen" type="integer" value="0" label="maxlen - maximum unaligned sequence length. Defaults 10000" help="Applies to both query and reference sequences."/>
+
+   <param name="skipgaps" type="boolean" falsevalue="--skipgaps=false" truevalue="" checked="false" label="skipgaps - columns containing gaps do not count as diffs. Default=T" help="controls how gapped columns affect counting of diffs"/>
+   <param name="skipgaps2" type="boolean" falsevalue="--skipgaps2=false" truevalue="" checked="false" label="skipgaps2 - column is immediately adjacent to a column containing a gap, it is not counted as a diff. Default=T" help="controls how gapped columns affect counting of diffs"/>
+
+  <param name="chimealns" type="boolean" falsevalue="" truevalue="--chimealns=true" checked="false" label="chimealns - Produce a file containing multiple alignments of query sequences to parents in human readable format. " help="Alignments show columns with differences that support or contradict a chimeric model."/>
+
+
+  <conditional name="alignment">
+   <param name="ucl" type="boolean" falsevalue="global" truevalue="local" checked="false" label="ucl - Use local-X alignments." help="global-X is the default"/>
+   <when value="global"/>
+   <when value="local">
+    <param name="queryfract" type="float" value="0.5" label="queryfract - minimum fraction of the query sequence that must be covered by a local-X alignment. Default 0.5." help=""/>
+   </when>
+  </conditional>
+
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="txt" name="out_file" label="${tool.name} on ${on_string}: uchime.chimeras" />
+  <data format="accnos" name="out_accnos" label="${tool.name} on ${on_string}: uchime.accnos" />
+  <data format="txt" name="out_alns" label="${tool.name} on ${on_string}: uchime.alns" >
+   <filter>chimealns == True</filter>
+  </data>
+ </outputs>
+ <requirements>
+  <requirement type="binary">mothur</requirement>
+ </requirements>
+ <tests>
+ </tests>
+ <help>
+**Mothur Overview**
+
+Mothur_, initiated by Dr. Patrick Schloss and his software development team
+in the Department of Microbiology and Immunology at The University of Michigan,
+provides bioinformatics for the microbial ecology community.
+
+.. _Mothur: http://www.mothur.org/wiki/Main_Page
+
+**Command Documenation**
+
+The chimera.uchime_ command reads a fasta file and reference file and outputs potentially chimeric sequences. The original uchime program was written by Robert C. Edgar and donated to the public domain, http://drive5.com/uchime
+
+.. _chimera.uchime: http://www.mothur.org/wiki/Chimera.uchime
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/classify.otu.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/classify.otu.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_classify_otu" name="Classify.otu" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_classify_otu" name="Classify.otu" version="1.20.0" force_history_refresh="True">
  <description>Assign sequences to taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -25,7 +25,7 @@
   $probs
  </command>
  <inputs>
-  <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List "/>
+  <param name="otu" type="data" format="list" label="list - OTU List "/>
   <conditional name="tax">
    <param name="source" type="select" label="Select Taxonomy from" help="">
     <option value="hist">History</option>
@@ -44,8 +44,8 @@
    </when>
   </conditional>
   <conditional name="reftax">
-   <param name="source" type="select" label="Select Taxonomy from" help="">
-    <option value="none">None</option>
+   <param name="source" type="select" label="Select Reference Taxonomy used in Classify.seqs from" help="Including the reference taxonomy file used when you classified your sequences keep the rankIDs in the summary file static.">
+    <option value="none">Selection is Optional</option>
     <option value="hist">History</option>
     <option value="ref">Cached Reference</option>
    </param>
--- a/mothur/tools/mothur/cluster.fragments.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/cluster.fragments.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.19.0">
+<tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.20.0">
  <description> Group sequences that are part of a larger sequence</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/collect.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/collect.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_collect_shared" name="Collect.shared" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_collect_shared" name="Collect.shared" version="1.20.0" force_history_refresh="True">
  <description>Generate collector's curves for calculators on OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -29,6 +29,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -37,6 +38,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/collect.single.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/collect.single.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,12 +1,14 @@
-<tool id="mothur_collect_single" name="Collect.single" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_collect_single" name="Collect.single" version="1.20.0" force_history_refresh="True">
  <description>Generate collector's curves for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
   --cmd='collect.single'
   --result='^mothur.\S+\.logfile$:'$logfile
   --outputdir='$logfile.extra_files_path'
-  --datasetid='$logfile.id' --new_file_path='$__new_file_path__'
-  --new_datasets='^\S+?\.(\S+)$:tabular'
+  #if $as_datasets.__str__ == 'yes':
+   --datasetid='$logfile.id' --new_file_path='$__new_file_path__'
+   --new_datasets='^\S+?\.(\S+)$:tabular'
+  #end if
   #if isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('shared').__class__):
    --shared=$otu
   #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('rabund').__class__):
@@ -54,6 +56,7 @@
     help="By default these calculators will base the prediction on a sample that is the same size as the initial sampling"/>
   <param name="freq" type="float" value="0.0" label="freq - frequency for output (default is every 100 sequences)" 
     help="Use a decimal between 0 and 1 to set the frequency as a percentage of the number of sequences"/>
+  <param name="as_datasets" type="boolean" truevalue="yes" falsevalue="no" checked="true" label="Create a new history dataset for each label and calculator"/>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- a/mothur/tools/mothur/consensus.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/consensus.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.20.0" force_history_refresh="True">
  <description>Find a consensus sequence for each OTU or phylotype</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -8,6 +8,9 @@
   #if $name.__str__ != "None" and len($name.__str__) > 0:
    --name=$name
   #end if
+  #if $cutoff != None and len($cutoff.__str__) > 0 and 100 > int($cutoff.__str__) > 0:
+   --cutoff=$cutoff
+  #end if
   #if $otu.use == 'yes':
    --list=$otu.list
    #if $otu.label.__str__ != "None" and len($otu.label.__str__) > 0:
@@ -39,6 +42,10 @@
     </param>
    </when>
   </conditional> <!-- -->
+  <param name="cutoff" type="integer" value="100" optional="True" label="cutoff - set a percentage of sequences that support the base">
+   <help>For example: cutoff=95 would return the base that was supported by at least 95% of sequences.</help>
+   <validator type="in_range" message="The percentage cutoff must be between 1 and 100" min="1" max="100"/>
+  </param>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- a/mothur/tools/mothur/corr.axes.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/corr.axes.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_corr_axes" name="Corr.axes" version="1.19.0">
+<tool id="mothur_corr_axes" name="Corr.axes" version="1.20.0">
  <description>correlation of data to axes</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -41,6 +41,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
        <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
@@ -48,6 +49,7 @@
       <options from_dataset="otu">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/count.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -0,0 +1,63 @@
+<tool id="mothur_count_seqs" name="Count.seqs" version="1.20.0" >
+ <description>counts the number of sequences represented by the representative</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='count.seqs'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.seq.count$:'$seq_count
+  --outputdir='$logfile.extra_files_path'
+  --name=$name
+  #if $grouping.use:
+   #if $grouping.group.__str__ != "None" and len($grouping.group.__str__) > 0:
+    --group='$grouping.group'
+   #end if
+   #if $grouping.groups.__str__ != "None" and len($grouping.groups.__str__) > 0:
+    --groups='$grouping.groups'
+   #end if
+  #end if
+ </command>
+ <inputs>
+  <param name="name" type="data" format="names" label="name - Sequences Name reference"/>
+  <conditional name="grouping">
+   <param name="use" type="boolean" truevalue="yes" falsevalue="no" checked="False" label="Use a Group file to include counts for groups"/>
+   <when value="yes">
+   <param name="group" type="data" format="groups" label="group - Group file for the tree"/>
+   <param name="groups" type="select" label="groups - Groups to display" multiple="true">
+    <help>All groups displayed if none are selected.</help>
+    <options from_dataset="group">
+     <column name="name" index="1"/>
+     <column name="value" index="1"/>
+     <filter type="unique_value" name="unq_grp" column="1" />
+    </options>
+   </param>
+   </when>
+   <when value="no"/>
+  </conditional> <!-- use_groups -->
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="tabular" name="seq_count" label="${tool.name} on ${on_string}: seq.count" />
+ </outputs>
+ <requirements>
+  <requirement type="binary">mothur</requirement>
+ </requirements>
+ <tests>
+ </tests>
+ <help>
+**Mothur Overview**
+
+Mothur_, initiated by Dr. Patrick Schloss and his software development team
+in the Department of Microbiology and Immunology at The University of Michigan,
+provides bioinformatics for the microbial ecology community.
+
+.. _Mothur: http://www.mothur.org/wiki/Main_Page
+
+**Command Documenation**
+
+The count.seqs_ command counts the number of sequences represented by the representative sequence in a name_ file. If a group_ file is given, it will also provide the group count breakdown.
+
+.. _name: http://www.mothur.org/wiki/Name_file
+.. _group: http://www.mothur.org/wiki/Group_file
+.. _count.seqs: http://www.mothur.org/wiki/Count.seqs
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/degap.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/degap.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_degap_seqs" name="Degap.seqs" version="1.19.0">
+<tool id="mothur_degap_seqs" name="Degap.seqs" version="1.20.0">
  <description>Remove gap characters from sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/deunique.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/deunique.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.19.0">
+<tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.20.0">
  <description>Return all sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/deunique.tree.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -0,0 +1,42 @@
+<tool id="mothur_deunique_tree" name="Deunique.tree" version="1.20.0">
+ <description>Reinsert the redundant sequence identiers back into a unique tree.</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='deunique.tree'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.deunique\.tre$:'$out_tree
+  --outputdir='$logfile.extra_files_path'
+  --tree=$tree
+  --name=$names
+ </command>
+ <inputs>
+  <param name="tree" type="data" format="tre" label="tree - Sequences to filter"/>
+  <param name="names" type="data" format="names" label="names - Sequences Name reference"/>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format_source="tree" name="out_tree" label="${tool.name} on ${on_string}: deunique.tre" />
+ </outputs>
+ <requirements>
+  <requirement type="binary">mothur</requirement>
+ </requirements>
+ <tests>
+ </tests>
+ <help>
+**Mothur Overview**
+
+Mothur_, initiated by Dr. Patrick Schloss and his software development team
+in the Department of Microbiology and Immunology at The University of Michigan,
+provides bioinformatics for the microbial ecology community.
+
+.. _Mothur: http://www.mothur.org/wiki/Main_Page
+
+**Command Documenation**
+
+The deunique.tree_ command is the reinserts the redundant sequence identiers back into a unique tree using a name_ file. 
+
+.. _name: http://www.mothur.org/wiki/Name_file
+.. _deunique.tree: http://www.mothur.org/wiki/Deunique.tree
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/dist.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/dist.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_dist_shared" name="Dist.shared" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_dist_shared" name="Dist.shared" version="1.20.0" force_history_refresh="True">
  <description>Generate a phylip-formatted dissimilarity distance matrix among multiple groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -30,6 +30,7 @@
   #if $output.__str__ != "None" and len($output.__str__) > 0:
    --output=$output
   #end if
+  --processors=2
  </command>
  <inputs>
   <!-- list,group  or shared -->
@@ -38,6 +39,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -45,6 +47,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/get.groups.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.groups.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_groups" name="Get.groups" version="1.19.0">
+<tool id="mothur_get_groups" name="Get.groups" version="1.20.0">
  <description>Select groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.lineage.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.lineage.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_lineage" name="Get.lineage" version="1.19.0">
+<tool id="mothur_get_lineage" name="Get.lineage" version="1.20.0">
  <description>Picks by taxon</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,7 +9,7 @@
   --cmd='get.lineage'
   --outputdir='$logfile.extra_files_path'
   --taxonomy=$taxonomy
-  --taxon="'$re.sub('\(\d+\)','',$taxon.value.__str__)'"
+  --taxon="'$re.sub('(\s|,)+',',',$re.sub('\(\d+\)','',$taxon.value.__str__))'"
   #if $fasta_in.__str__ != "None" and len($fasta_in.__str__) > 0:
    --fasta=$fasta_in
    #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
@@ -35,14 +35,17 @@
  </command>
  <inputs>
   <param name="taxonomy" type="data" format="seq.taxonomy" label="taxonomy - Taxonomy"/>
-  <param name="taxons" type="select" size="120" label="Browse Taxons from Taxonomy">
+  <!--
+  <param name="taxons" type="select" size="120" multiple="true" label="Browse Taxons from Taxonomy">
    <options from_dataset="taxonomy">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
     <filter type="unique_value" name="unique_taxon" column="1" />
+    <filter type="sort_by" name="sorted_taxon" column="1" />
    </options>
   </param>
-  <param name="taxon" type="text" size="120" label="taxon - Select Taxon for filtering"/>
+  -->
+  <param name="taxon" type="text" area="True" size="5x120" label="taxon - Select Taxons for filtering" help="Enter 1 or more taxons separated by whitespace or commas"/>
   <param name="fasta_in" type="data" format="fasta" optional="true" label="fasta - Fasta Sequences"/>
   <param name="group_in" type="data" format="groups" optional="true" label="group - Groups"/>
   <param name="alignreport_in" type="data" format="align.report" optional="true" label="alignreport - Align Report"/>
--- a/mothur/tools/mothur/get.oturep.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.oturep.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_oturep" name="Get.oturep" version="1.19.0"  force_history_refresh="True">
+<tool id="mothur_get_oturep" name="Get.oturep" version="1.20.0"  force_history_refresh="True">
  <description>Generate a fasta with a representative sequence for each OTU</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.relabund.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.relabund.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_relabund" name="Get.relabund" version="1.19.0">
+<tool id="mothur_get_relabund" name="Get.relabund" version="1.20.0">
  <description>Calculate the relative abundance of each otu</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -23,6 +23,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -30,6 +31,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/get.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_seqs" name="Get.seqs" version="1.19.0">
+<tool id="mothur_get_seqs" name="Get.seqs" version="1.20.0">
  <description>Picks sequences by name</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.sharedseqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/get.sharedseqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_sharedseqs" name="Get.sharedseqs" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_get_sharedseqs" name="Get.sharedseqs" version="1.20.0" force_history_refresh="True">
  <description>Get shared sequences at each distance from list and group</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/heatmap.bin.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/heatmap.bin.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.19.0"  force_history_refresh="True">
+<tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.20.0"  force_history_refresh="True">
  <description>Generate a heatmap for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -52,6 +52,7 @@
       <options from_dataset="otu">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
@@ -59,6 +60,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
        <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
@@ -75,7 +77,7 @@
    </when>
    <when value="yes">
      <param name="otu" type="data" format="list,rabund,sabund" label="list,rabund,sabund - OTU List"/>
-     <param name="otu_group" type="data" format="groups" label="read.otu(group) - Group file for the OTU List"/>
+     <param name="otu_group" type="data" format="groups" label="group - Group file for the OTU List"/>
      <param name="groups" type="select" label="groups - Groups to include" multiple="true">
       <options from_dataset="otu_group">
        <column name="name" index="1"/>
--- a/mothur/tools/mothur/heatmap.sim.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/heatmap.sim.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.19.0"  force_history_refresh="True">
+<tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.20.0"  force_history_refresh="True">
  <description>Generate a heatmap for pariwise similarity</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -41,11 +41,12 @@
     <option value="column">colomn - Pairwise Column Distance Matrix</option>
    </param>
    <when value="shared">
-    <param name="otu" type="data" format="shared" label="read.otu(shared=) - OTU Shared"/>
+    <param name="otu" type="data" format="shared" label="shared - OTU Shared"/>
     <param name="label" type="select" label="label - OTU Labels" multiple="true">
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
        <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
@@ -53,6 +54,7 @@
       <options from_dataset="otu">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
--- a/mothur/tools/mothur/indicator.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/indicator.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_indicator" name="Indicator" version="1.19.0">
+<tool id="mothur_indicator" name="Indicator" version="1.20.0">
  <description>Identify indicator "species" for nodes on a tree</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -30,6 +30,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -37,6 +38,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/merge.groups.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/merge.groups.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_merge_groups" name="Merge.groups" version="1.19.0" >
+<tool id="mothur_merge_groups" name="Merge.groups" version="1.20.0" >
  <description>Merge groups in a shared file</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -25,6 +25,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
@@ -32,6 +33,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -51,6 +53,7 @@
       <options from_dataset="otu">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
--- a/mothur/tools/mothur/metastats.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/metastats.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_metastats" name="Metastats" version="1.19.0" force_history_refresh="True" >
+<tool id="mothur_metastats" name="Metastats" version="1.20.0" force_history_refresh="True" >
  <description>generate principle components plot data</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -34,6 +34,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -41,6 +42,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/mothur_wrapper.py	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/mothur_wrapper.py	Mon Jun 27 10:12:25 2011 -0500
@@ -4,7 +4,7 @@
 http://www.mothur.org/
 
 Supports mothur version 
-mothur v.1.17.0
+mothur v.1.20.0
 
 Class encapsulating Mothur galaxy tool.
 Expect each invocation to include:
@@ -28,7 +28,7 @@
  # Each item  conatins:   a regex pattern for matching filenames and  a galaxy datatype (separated by :)
  # The regex match.groups()[0] is used as the id name of the dataset, and must result in  unique name for each output
  --new_datasets='^\S+?\.((\S+)\.(unique|[0-9.]*)\.dist)$:lower.dist'
- # Many mothur commands first require data to be read into memory using: read.otu, read.dist, or read.tree
+ ## Before version 1.18.0 Many mothur commands first required data to be read into memory using: read.otu, read.dist, or read.tree
  # This prequisite command and its params are prefixed with 'READ_'
  --READ_cmd='read.otu'
  --READ_list=/home/galaxy/data/database/files/001/dataset_1557.dat
@@ -176,116 +176,79 @@
     """
     cmd_dict = dict()
     cmd_dict['align.check'] = dict({'required' : ['fasta','map']})
-   #cmd_dict['align.seqs'] = dict({'required' : ['candidate','template'], 'optional' : ['search','ksize','align','match','mismatch','gapopen','gapextend','flip','threshold','processors']})
     cmd_dict['align.seqs'] = dict({'required' : ['fasta','reference',], 'optional' : ['search','ksize','align','match','mismatch','gapopen','gapextend','flip','threshold','processors']})
     cmd_dict['amova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
     cmd_dict['anosim'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
-   #cmd_dict['bin.seqs'] = dict({'required' : ['fasta'], 'optional' : ['name','label','group']})
     cmd_dict['bin.seqs'] = dict({'required' : ['list','fasta'], 'optional' : ['name','label','group']})
-   #cmd_dict['bootstrap.shared'] = dict({'required' : [], 'optional' : ['calc','groups','iters','label']})
     cmd_dict['bootstrap.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','groups','iters','label']})
     #catchall
     cmd_dict['chimera.bellerophon'] = dict({'required' : ['fasta'], 'optional' : ['filter','correction','window','increment','processors']})
-   #cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','template'], 'optional' : ['filter','mask','window','numwanted','processors']})
     cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','reference'], 'optional' : ['filter','mask','window','numwanted','processors']})
-   #cmd_dict['chimera.check'] = dict({'required' : ['fasta','template'], 'optional' : ['ksize','svg','name','increment','processors']})
     cmd_dict['chimera.check'] = dict({'required' : ['fasta','reference'], 'optional' : ['ksize','svg','name','increment','processors']})
-   #cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','template'], 'optional' : ['conservation','quantile','filter','mask','window','increment','processors']})
     cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','reference'], 'optional' : ['conservation','quantile','filter','mask','window','increment','processors']})
-   #cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','template'], 'optional' : ['name','search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign','split','processors']})
     cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','reference'], 'optional' : ['name','search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign','split','processors']})
-   #cmd_dict['chop.seqs'] = dict({'required' : ['fasta','numbases'],  'optional' : ['keep','short']})
+    cmd_dict['chimera.uchime'] = dict({'required' : ['fasta'], 'optional' : ['name','reference','abskew','chimealns','minh','mindiv','xn','dn','xa','chunks','minchunk','idsmoothwindow','minsmoothid','maxp','skipgaps','skipgaps2','minlen','maxlen','ucl','queryfract','processors']})
     cmd_dict['chop.seqs'] = dict({'required' : ['fasta','numbases'],  'optional' : ['countgaps','keep','short']})
     cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','group','probs','basis','reftaxonomy']})
-   #cmd_dict['classify.seqs'] = dict({'required' : ['fasta','template','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','processors']})
     cmd_dict['classify.seqs'] = dict({'required' : ['fasta','reference','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','processors']})
     cmd_dict['clearcut'] = dict({'required' : [['phylip','fasta']],'optional' : ['seed','norandom','shuffle','neighbor','expblen','expdist','ntrees','matrixout','kimura','jukes','protein','DNA']})
-   #cmd_dict['cluster'] = dict({'required' : [] ,  'optional' : ['method','cutoff','hard','precision']})
     cmd_dict['cluster'] = dict({'required' : [['phylip','column']] ,  'optional' : ['name','method','cutoff','hard','precision','sim','showabund','timing']})
-   #cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] ,  'optional' : ['method','cutoff','hard','precision']})
     cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] ,  'optional' : ['name','method','cutoff','hard','sim','precision']})
     cmd_dict['cluster.fragments'] = dict({'required' : ['fasta'] ,  'optional' : ['name','diffs','percent']})
     cmd_dict['cluster.split'] = dict({'required' : [['fasta','phylip','column']] ,  'optional' : ['name','method','splitmethod','taxonomy','taxlevel','showabund','cutoff','hard','large','precision','timing','processors']})
-   #cmd_dict['collect.shared'] = dict({'required' : [], 'optional' : ['calc','label','freq','groups','all']})
     cmd_dict['collect.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','freq','groups','all']})
-   #cmd_dict['collect.single'] = dict({'required' : [], 'optional' : ['calc','abund','size','label','freq']})
     cmd_dict['collect.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','size','label','freq']})
-    cmd_dict['consensus.seqs'] = dict({'required' : ['fasta'], 'optional' : ['list','name','label']})
+    cmd_dict['consensus.seqs'] = dict({'required' : ['fasta'], 'optional' : ['list','name','label','cutoff']})
     cmd_dict['corr.axes'] = dict({'required' : [['shared','relabund','metadata'],'axes'], 'optional' : ['label','groups','method','numaxes']})
+    cmd_dict['count.seqs'] = dict({'required' : ['name'], 'optional' : ['group','groups']})
     cmd_dict['degap.seqs'] = dict({'required' : ['fasta']})
     cmd_dict['deunique.seqs'] = dict({'required' : ['fasta','name'],  'optional' : []})
-   #cmd_dict['dist.seqs'] = dict({'required' : ['fasta'],  'optional' : ['calc','countends','output','cutoff','processors']})
+    cmd_dict['deunique.tree'] = dict({'required' : ['tree','name'],  'optional' : []})
     cmd_dict['dist.seqs'] = dict({'required' : ['fasta'],  'optional' : ['calc','countends','output','cutoff','oldfasta','column','processors']})
-   #cmd_dict['dist.shared'] = dict({'required' : [], 'optional' : ['calc','label','groups','output']})
-    cmd_dict['dist.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','groups','output']})
+    cmd_dict['dist.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','groups','output','processors']})
     cmd_dict['fastq.info'] = dict({'required' : ['fastq'], 'optional' : []})
     cmd_dict['filter.seqs'] = dict({'required' : ['fasta'],  'optional' : ['vertical','trump','soft','hard','processors']})
-   #cmd_dict['get.group'] = dict({'required' : [], 'optional' : []})
     cmd_dict['get.group'] = dict({'required' : ['shared'], 'optional' : []})
     cmd_dict['get.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
     cmd_dict['get.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
-  ##cmd_dict['get.otulist'] = dict({'required' : [], 'optional' : []})
     cmd_dict['get.otulist'] = dict({'required' : ['list'], 'optional' : ['label','sort']})
-   #cmd_dict['get.oturep'] = dict({'required' : ['fasta','list'], 'optional' : ['phylip','column','name','label','group','groups','sorted','precision','cutoff','large','weighted']})
     cmd_dict['get.oturep'] = dict({'required' : ['fasta','list',['phylip','column']], 'optional' : ['name','label','group','groups','sorted','precision','cutoff','large','weighted']})
     cmd_dict['get.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
-  ##cmd_dict['get.rabund'] = dict({'required' : [],'optional' : []})
     cmd_dict['get.rabund'] = dict({'required' : [['list','sabund']],'optional' : ['sorted','label']})
-   #cmd_dict['get.relabund'] = dict({'required' : [],'optional' : ['scale','label','groups']})
     cmd_dict['get.relabund'] = dict({'required' : ['shared'],'optional' : ['scale','label','groups']})
-  ##cmd_dict['get.sabund'] = dict({'required' : [],'optional' : []})
     cmd_dict['get.sabund'] = dict({'required' : [['list','rabund']],'optional' : ['label']})
     cmd_dict['get.seqs'] = dict({'required' : ['accnos',['fasta','qfile','name','group','list','alignreport','taxonomy']], 'optional' : ['dups']})
-  ##cmd_dict['get.sharedseqs'] = dict({'required' : [], 'optional' : []})
     cmd_dict['get.sharedseqs'] = dict({'required' : ['list','group'], 'optional' : ['label', 'unique', 'shared', 'output', 'fasta']})
     cmd_dict['hcluster'] = dict({'required' : [['column','phylip']] , 'optional' : ['name','method','cutoff','hard','precision','sorted','showabund','timing']})
-   #cmd_dict['heatmap.bin'] = dict({'required' : [], 'optional' : ['label','groups','scale','sorted','numotu','fontsize']})
     cmd_dict['heatmap.bin'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['label','groups','scale','sorted','numotu','fontsize']})
-   #cmd_dict['heatmap.sim'] = dict({'required' : [], 'optional' : ['calc','phylip','column','name','label','groups']})
     cmd_dict['heatmap.sim'] = dict({'required' : [['shared','phylip','column']], 'optional' : ['calc','name','label','groups']})
     cmd_dict['homova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
     cmd_dict['indicator'] = dict({'required' : ['tree',['shared','relabund']], 'optional' : ['groups','label','design']})
-   #cmd_dict['libshuff'] = dict({'required' : [],'optional' : ['iters','form','step','cutoff']})
     cmd_dict['libshuff'] = dict({'required' : ['phylip','group'],'optional' : ['groups','iters','form','sim','step','cutoff']})
     cmd_dict['list.seqs'] = dict({'required' : [['fasta','name','group','list','alignreport','taxonomy']]})
     cmd_dict['make,fastq'] = dict({'required' : ['fasta','qfile'] ,  'optional' : []})
-   #cmd_dict['make.group'] = dict({'required' : ['fasta','groups'],  'optional' : ['output']})
     cmd_dict['make.group'] = dict({'required' : ['fasta','groups'],  'optional' : []})
     cmd_dict['make.shared'] = dict({'required' : ['list','group'],  'optional' : ['label','groups','ordergroup']})
     cmd_dict['mantel'] = dict({'required' : ['phylip','phylip2'] ,  'optional' : ['method','iters']})
     cmd_dict['merge.files'] = dict({'required' : ['input','output']})
     cmd_dict['merge.groups'] = dict({'required' : ['shared','design'],  'optional' : ['groups', 'label']})
-   #cmd_dict['metastats'] = dict({'required' : ['design'],  'optional' : ['groups', 'label','iters','threshold','sets','processors']})
     cmd_dict['metastats'] = dict({'required' : ['shared','design'],  'optional' : ['groups', 'label','iters','threshold','sets','processors']})
     cmd_dict['nmds'] = dict({'required' : ['phylip'], 'optional' : ['axes','mindim','maxdim','iters','maxiters','epsilon']})
-   #cmd_dict['normalize.shared'] = dict({'required' : [], 'optional' : ['label','method','norm','groups']})
     cmd_dict['normalize.shared'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','method','norm','groups','makerelabund']})
-  ##cmd_dict['otu.hierarchy'] = dict({'required' : [], 'optional' : []})
     cmd_dict['otu.hierarchy'] = dict({'required' : ['list','label'], 'optional' : ['output']})
     cmd_dict['pairwise.seqs'] = dict({'required' : ['fasta'],  'optional' : ['align','calc','countends','output','cutoff','match','mismatch','gapopen','gapextend','processors']})
     cmd_dict['parse.list'] = dict({'required' : ['list','group'], 'optional' : ['label']})
-   #cmd_dict['parsimony'] = dict({'required' : [], 'optional' : ['groups','iters','random','processors']})
     cmd_dict['parsimony'] = dict({'required' : ['tree'], 'optional' : ['group','groups','name','iters','random','processors']})
-   #cmd_dict['pca'] = dict({'required' : [], 'optional' : ['label','groups','metric']})
     cmd_dict['pca'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','groups','metric']})
-   #cmd_dict['pcoa'] = dict({'required' : ['phylip'], 'optional' : []})
     cmd_dict['pcoa'] = dict({'required' : ['phylip'], 'optional' : ['metric']})
-   #cmd_dict['phylo.diversity'] = dict({'required' : [],'optional' : ['groups','iters','freq','scale','rarefy','collect','summary','processors']})
-    cmd_dict['phylo.diversity'] = dict({'required' : ['tree','group'],'optional' : ['name','groups','iters','freq','scale','rarefy','collect','summary','processors']})
+    cmd_dict['phylo.diversity'] = dict({'required' : ['tree'],'optional' : ['group','name','groups','iters','freq','scale','rarefy','collect','summary','processors']})
     cmd_dict['phylotype'] = dict({'required' : ['taxonomy'],'optional' : ['name','cutoff','label']})
-   #cmd_dict['pre.cluster'] = dict({'required' : ['fasta'],  'optional' : ['names','diffs']})
     cmd_dict['pre.cluster'] = dict({'required' : ['fasta'],  'optional' : ['name','diffs']})
-   #cmd_dict['rarefaction.shared'] = dict({'required' : [], 'optional' : ['label','iters','groups','jumble']})
     cmd_dict['rarefaction.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','iters','groups','jumble']})
-   #cmd_dict['rarefaction.single'] = dict({'required' : [], 'optional' : ['calc','abund','iters','label','freq','processors']})
     cmd_dict['rarefaction.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','iters','label','freq','processors']})
-   #cmd_dict['read.dist'] = dict({'required' : [['phylip','column']],  'optional' : ['name','cutoff','hard','precision','sim','group']})
-   #cmd_dict['read.otu'] = dict({'required' : [['rabund','sabund','list','shared','relabund']],  'optional' : ['label','group','groups','ordergroup']})
-   #cmd_dict['read.tree'] = dict({'required' : ['tree'],  'optional' : ['name','group']})
     cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
     cmd_dict['remove.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
     cmd_dict['remove.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
-   #cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']})
     cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']})
     cmd_dict['remove.seqs'] = dict({'required' : ['accnos',['fasta','qfile','name','group','list','alignreport','taxonomy']], 'optional' : ['dups']})
     cmd_dict['reverse.seqs'] = dict({'required' : ['fasta']})
@@ -293,118 +256,17 @@
     cmd_dict['sens.spec'] = dict({'required' : ['list',['column','phylip']] , 'optional' : ['label','cutoff','hard','precision']})
     cmd_dict['sffinfo'] = dict({'required' : [['sff','sfftxt']], 'optional' : ['fasta','qfile','trim','sfftxt','flow','accnos']})
     cmd_dict['split.abund'] = dict({'required' : ['fasta',['name','list']], 'optional' : ['cutoff','group','groups','label','accnos']})
-   #cmd_dict['split.groups'] = dict({'required' : ['fasta','group'], 'optional' : []})
     cmd_dict['split.groups'] = dict({'required' : ['fasta','group'], 'optional' : ['name','groups']})
     cmd_dict['sub.sample'] = dict({'required' : [['fasta','list','sabund','rabund','shared']], 'optional' : ['name','group','groups','label','size','persample']})
-   #cmd_dict['summary.seqs'] = dict({'required' : ['fasta'],'outputs' : ['names']})
     cmd_dict['summary.seqs'] = dict({'required' : ['fasta'], 'optional' : ['name','processors']})
-   #cmd_dict['summary.shared'] = dict({'required' : [], 'optional' : ['calc','label','groups','all','distance']})
     cmd_dict['summary.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','groups','all','distance','processors']})
-   #cmd_dict['summary.single'] = dict({'required' : [], 'optional' : ['calc','abund','size','label','groupmode']})
     cmd_dict['summary.single'] = dict({'required' : [['list','sabund','rabund','shared']], 'optional' : ['calc','abund','size','label','groupmode']})
-   #cmd_dict['tree.shared'] = dict({'required' : [], 'optional' : ['groups','calc','cutoff','precision','label']})
     cmd_dict['tree.shared'] = dict({'required' : [['shared','phylip','column']], 'optional' : ['name','groups','calc','cutoff','precision','label']})
-    cmd_dict['trim.seqs'] = dict({'required' : ['fasta'],  'optional' : ['group','oligos','qfile','qaverage','qthreshold','qwindowaverage','qwindowsize','rollaverage','qstepsize','qtrim','flip','maxambig','maxhomop','minlength','maxlength','bdiffs','pdiffs','tdiffs','allfiles','keepfirst','removelast']})
-   #cmd_dict['unifrac.unweighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','root','processors']})
+    cmd_dict['trim.seqs'] = dict({'required' : ['fasta'],  'optional' : ['name','group','oligos','qfile','qaverage','qthreshold','qwindowaverage','qwindowsize','rollaverage','qstepsize','qtrim','flip','maxambig','maxhomop','minlength','maxlength','bdiffs','pdiffs','tdiffs','allfiles','keepfirst','removelast']})
     cmd_dict['unifrac.unweighted'] = dict({'required' : ['tree'], 'optional' : ['name','group','groups','iters','distance','random','root','processors']})
-   #cmd_dict['unifrac.weighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','root','processors']})
     cmd_dict['unifrac.weighted'] = dict({'required' : ['tree'], 'optional' : ['name','group','groups','iters','distance','random','root','processors']})
-   #cmd_dict['unique.seqs'] = dict({'required' : ['fasta'],  'optional' : ['names']})
     cmd_dict['unique.seqs'] = dict({'required' : ['fasta'],  'optional' : ['name']})
-   #cmd_dict['venn'] = dict({'required' : [], 'optional' : ['calc','label','groups','abund','nseqs','permute']})
     cmd_dict['venn'] = dict({'required' : [['list','shared']], 'optional' : ['calc','label','groups','abund','nseqs','permute']})
-    ##
-    """
-    cmd_dict['merge.files'] = dict({'required' : ['input','output']})
-    cmd_dict['make.group'] = dict({'required' : ['fasta','groups'],  'optional' : ['output']})
-    cmd_dict['merge.groups'] = dict({'required' : ['shared','design'],  'optional' : ['groups', 'label']})
-    cmd_dict['summary.seqs'] = dict({'required' : ['fasta'],
-              'outputs' : ['.names']})
-    cmd_dict['reverse.seqs'] = dict({'required' : ['fasta']})
-    cmd_dict['degap.seqs'] = dict({'required' : ['fasta']})
-    cmd_dict['unique.seqs'] = dict({'required' : ['fasta'],  'optional' : ['names']})
-    cmd_dict['deunique.seqs'] = dict({'required' : ['fasta','names'],  'optional' : []})
-    cmd_dict['chop.seqs'] = dict({'required' : ['fasta','numbases'],  'optional' : ['keep','short']})
-    cmd_dict['filter.seqs'] = dict({'required' : ['fasta'],  'optional' : ['vertical','trump','soft','hard','processors']})
-    cmd_dict['screen.seqs'] = dict({'required' : ['fasta'],  'optional' : ['start','end','maxambig','maxhomop','minlength','maxlength','criteria','optimize','name','group','alignreport','processors']})
-    cmd_dict['trim.seqs'] = dict({'required' : ['fasta'],  'optional' : ['group','oligos','qfile','qaverage','qthreshold','qtrim','flip','maxambig','maxhomop','minlength','maxlength','bdiffs','pdiffs','tdiffs','allfiles','keepfirst','removelast']})
-    cmd_dict['list.seqs'] = dict({'required' : [['fasta','name','group','list','alignreport','taxonomy']]})
-    cmd_dict['get.seqs'] = dict({'required' : ['accnos',['fasta','qfile','name','group','list','alignreport','taxonomy']], 'optional' : ['dups']})
-    cmd_dict['remove.seqs'] = dict({'required' : ['accnos',['fasta','qfile','name','group','list','alignreport','taxonomy']], 'optional' : ['dups']})
-    cmd_dict['align.seqs'] = dict({'required' : ['candidate','template'], 'optional' : ['search','ksize','align','match','mismatch','gapopen','gapextend','flip','threshold','processors']})
-    cmd_dict['align.check'] = dict({'required' : ['fasta','map']})
-    cmd_dict['pre.cluster'] = dict({'required' : ['fasta'],  'optional' : ['names','diffs']})
-    cmd_dict['bin.seqs'] = dict({'required' : ['fasta'], 'optional' : ['name','label','group']})
-    cmd_dict['classify.seqs'] = dict({'required' : ['fasta','template','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','processors']})
-    cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','group','probs','basis','reftaxonomy']})
-    # label=0.01-0.02-0.03   from 0.01,0.02,0.03  string.replace(options.label,',','-')
-    cmd_dict['chimera.bellerophon'] = dict({'required' : ['fasta'], 'optional' : ['filter','correction','window','increment','processors']})
-    cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','template'], 'optional' : ['filter','mask','window','numwanted','processors']})
-    cmd_dict['chimera.check'] = dict({'required' : ['fasta','template'], 'optional' : ['ksize','svg','name','increment','processors']})
-    cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','template'], 'optional' : ['conservation','quantile','filter','mask','window','increment','processors']})
-    cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','template'], 'optional' : ['name','search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign','split','processors']})
-    cmd_dict['dist.seqs'] = dict({'required' : ['fasta'],  'optional' : ['calc','countends','output','cutoff','processors']})
-    cmd_dict['pairwise.seqs'] = dict({'required' : ['fasta'],  'optional' : ['align','calc','countends','output','cutoff','match','mismatch','gapopen','gapextend','processors']})
-    cmd_dict['read.dist'] = dict({'required' : [['phylip','column']],  'optional' : ['name','cutoff','hard','precision','sim','group']})
-    cmd_dict['read.otu'] = dict({'required' : [['rabund','sabund','list','shared','relabund']],  'optional' : ['label','group','groups','ordergroup']})
-    cmd_dict['read.tree'] = dict({'required' : ['tree'],  'optional' : ['name','group']})
-    cmd_dict['cluster'] = dict({'required' : [] ,  'optional' : ['method','cutoff','hard','precision']})
-    cmd_dict['hcluster'] = dict({'required' : [['column','phylip']] , 'optional' : ['name','method','cutoff','hard','precision','sorted','showabund']})
-    cmd_dict['cluster.fragments'] = dict({'required' : ['fasta'] ,  'optional' : ['name','diffs','percent']})
-    cmd_dict['cluster.split'] = dict({'required' : [['fasta','phylip','column']] ,  'optional' : ['name','method','splitmethod','taxonomy','taxlevel','showabund','cutoff','hard','large','precision','timing','processors']})
-    cmd_dict['metastats'] = dict({'required' : ['design'],  'optional' : ['groups', 'label','iters','threshold','sets','processors']})
-    cmd_dict['summary.single'] = dict({'required' : [], 'optional' : ['calc','abund','size','label','groupmode']})
-    cmd_dict['summary.shared'] = dict({'required' : [], 'optional' : ['calc','label','groups','all','distance']})
-    cmd_dict['collect.single'] = dict({'required' : [], 'optional' : ['calc','abund','size','label','freq']})
-    cmd_dict['collect.shared'] = dict({'required' : [], 'optional' : ['calc','label','freq','groups','all']})
-    cmd_dict['rarefaction.single'] = dict({'required' : [], 'optional' : ['calc','abund','iters','label','freq','processors']})
-    cmd_dict['rarefaction.shared'] = dict({'required' : [], 'optional' : ['label','iters','groups','jumble']})
-    cmd_dict['normalize.shared'] = dict({'required' : [], 'optional' : ['label','method','norm','groups']})
-    cmd_dict['dist.shared'] = dict({'required' : [], 'optional' : ['calc','label','groups','output']})
-    cmd_dict['split.abund'] = dict({'required' : ['fasta',['name','list']], 'optional' : ['cutoff','group','groups','label','accnos']})
-    cmd_dict['split.groups'] = dict({'required' : ['fasta','group'], 'optional' : []})
-    cmd_dict['tree.shared'] = dict({'required' : [], 'optional' : ['groups','calc','cutoff','precision','label']})
-    cmd_dict['unifrac.unweighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','root','processors']})
-    cmd_dict['unifrac.weighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','root','processors']})
-    cmd_dict['parsimony'] = dict({'required' : [], 'optional' : ['groups','iters','random','processors']})
-    cmd_dict['sffinfo'] = dict({'required' : ['sff'], 'optional' : ['fasta','qfile','trim','sfftxt','flow','accnos']})
-    cmd_dict['fastq.info'] = dict({'required' : ['fastq'], 'optional' : []})
-    cmd_dict['heatmap.bin'] = dict({'required' : [], 'optional' : ['label','groups','scale','sorted','numotu','fontsize']})
-    cmd_dict['heatmap.sim'] = dict({'required' : [], 'optional' : ['calc','phylip','column','name','label','groups']})
-    cmd_dict['venn'] = dict({'required' : [], 'optional' : ['calc','label','groups','abund','nseqs','permute']})
-    cmd_dict['pcoa'] = dict({'required' : ['phylip'], 'optional' : []})
-    cmd_dict['pca'] = dict({'required' : [], 'optional' : ['label','groups','metric']})
-    cmd_dict['nmds'] = dict({'required' : ['phylip'], 'optional' : ['axes','mindim','maxdim','iters','maxiters','epsilon']})
-    cmd_dict['corr.axes'] = dict({'required' : [['shared','relabund','metadata'],'axes'], 'optional' : ['label','groups','method','numaxes']})
-    cmd_dict['get.group'] = dict({'required' : [], 'optional' : []})
-    cmd_dict['phylotype'] = dict({'required' : ['taxonomy'],'optional' : ['name','cutoff','label']})
-    cmd_dict['phylo.diversity'] = dict({'required' : [],'optional' : ['groups','iters','freq','scale','rarefy','collect','summary','processors']})
-    cmd_dict['get.oturep'] = dict({'required' : ['fasta','list'], 'optional' : ['phylip','column','name','label','group','groups','sorted','precision','cutoff','large','weighted']})
-    cmd_dict['get.relabund'] = dict({'required' : [],'optional' : ['scale','label','groups']})
-    cmd_dict['libshuff'] = dict({'required' : [],'optional' : ['iters','form','step','cutoff']})
-    # clearcut options not needed in galaxy: 'version','verbose','quiet','stdout'
-    cmd_dict['clearcut'] = dict({'required' : [['list','fasta']],'optional' : ['seed','norandom','shuffle','neighbor','expblen','expdist','ntrees','matrixout','kimura','jukes','protein','DNA']})
-    cmd_dict['get.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
-    cmd_dict['remove.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
-    cmd_dict['bootstrap.shared'] = dict({'required' : [], 'optional' : ['calc','groups','iters','label']})
-    cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] ,  'optional' : ['method','cutoff','hard','precision']})
-    cmd_dict['get.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
-    cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
-    cmd_dict['get.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
-    cmd_dict['remove.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
-    cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']})
-    cmd_dict['parse.list'] = dict({'required' : ['list','group'], 'optional' : ['label']})
-
-    cmd_dict['sub.sample'] = dict({'required' : [['fasta','list','sabund','rabund','shared']], 'optional' : ['name','group','groups','label','size','persample']})
-    cmd_dict['consensus.seqs'] = dict({'required' : ['fasta'], 'optional' : ['list','name','label']})
-    cmd_dict['indicator'] = dict({'required' : ['tree',['shared','relabund']], 'optional' : ['groups','label','design']})
-
-    cmd_dict['amova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
-    cmd_dict['homova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
-    cmd_dict['anosim'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
-    cmd_dict['mantel'] = dict({'required' : ['phylip','phylip2'] ,  'optional' : ['method','iters']})
-    cmd_dict['make,fastq'] = dict({'required' : ['fasta','qfile'] ,  'optional' : []})
-    """
 
     parser = optparse.OptionParser()
     # Options for managing galaxy interaction
@@ -489,6 +351,7 @@
     parser.add_option( '--gapextend', dest='gapextend', type="float", help='Penalty for extending a gap, default is -1.0' )
     parser.add_option( '--precision', dest='precision', type="int", help='' )
     parser.add_option( '--threshold', dest='threshold', type="float", help='Cutoff at which an alignment is deemed bad and the reverse complement may be tried, 0.0 - 1.0 default 0.50' )
+    parser.add_option( '--sim', dest='sim', help='Calculate similarity rather than distance' )
     parser.add_option( '--map', dest='map', help='File containing the secondary structure map.' )
     parser.add_option( '--label', dest='label', type='string', action="callback", callback=multi_val_callback, help='Distance levels you would like a output files created for(separated by commas or dashes)' )
     parser.add_option( '--filter', dest='filter', help='If true, a 50% soft filter will be applied' )
@@ -507,7 +370,6 @@
     parser.add_option( '--hard', dest='hard', help='Hard Column Filter - A file should only contain one line consisting of 0 and 1 chars' )
     parser.add_option( '--calc', dest='calc', help='Calc Method - Gap Penality' )
     parser.add_option( '--countends', dest='countends',  help='Penalize terminal gaps' )
-    # parser.add_option( '--cutoff', dest='cutoff', type="float", help='Distance Cutoff threshold, discard larger distances' )
     parser.add_option( '--cutoff', dest='cutoff', help='Distance Cutoff threshold, discard larger distances' )
     parser.add_option( '--countgaps', dest='countgaps',  help='count gaps as bases' )
     parser.add_option( '--output', dest='output', help='Format for output' )
@@ -584,6 +446,24 @@
     parser.add_option( '--persample', dest='persample', help='sub sample option' )
     parser.add_option( '--timing', dest='timing', help='timing option' )
     parser.add_option( '--processors', dest='processors', type='int', action='callback', callback=processors_callback, help='Number of processors to use' )
+    parser.add_option( '--abskew', dest='abskew', type="float", help='Minimum abundance skew.')
+    parser.add_option( '--chimealns', dest='chimealns', help='Boolean - produce a file containing multiple alignments of query sequences')
+    parser.add_option( '--minh', dest='minh', type="float", help='mininum score to report chimera.')
+    parser.add_option( '--mindiv', dest='mindiv', type="float", help='mininum score to report chimera.')
+    parser.add_option( '--xn', dest='xn', type="float", help='weight of a no vote')
+    parser.add_option( '--dn', dest='dn', type="float", help='pseudo-count prior on number of no votes')
+    parser.add_option( '--xa', dest='xa', type="float", help='weight of an abstain vote')
+    parser.add_option( '--chunks', dest='chunks', type="int", help='the number of chunks to extract from the query sequence')
+    parser.add_option( '--minchunk', dest='minchunk', type="int", help='the minimum length of a chunk')
+    parser.add_option( '--idsmoothwindow', dest='idsmoothwindow', type="int", help='ength of id smoothing window')
+    parser.add_option( '--minsmoothid', dest='minsmoothid', type="float", help='minimum factional identity over smoothed window')
+    parser.add_option( '--maxp', dest='maxp', type="int", help='maximum number of candidate parents to consider')
+    parser.add_option( '--skipgaps', dest='skipgaps',  help='Boolean')
+    parser.add_option( '--skipgaps2', dest='skipgaps2',  help='Boolean')
+    parser.add_option( '--ucl', dest='ucl', help='')
+    parser.add_option( '--queryfract', dest='queryfract', type="float", help='')
+    parser.add_option( '--minlen', dest='minlen', type="int", help='Minimun sequence length' )
+    parser.add_option( '--maxlen', dest='maxlen', type="int", help='Maximun sequence length' )
     # include read.otu options
     parser.add_option( '--rabund', dest='rabund', help='' )
     parser.add_option( '--sabund', dest='sabund', help='' )
@@ -742,7 +622,7 @@
                 if re.match('^\d*\s*$',line):
                     continue
                 # if re.match('^(unique|[0-9.]*)(\t\d+)+',line):  # abundance from cluster commands 
-                if not options.cmd.startswith('unifrac') and re.match('^([0-9.]+)(\t\d+)*',line):  # abundance from cluster commands, allow unique line into info
+                if not options.cmd.startswith('unifrac') and re.match('^(unique|[0-9.]+)(\t\d+)*',line):  # abundance from cluster commands, allow unique line into info
                     continue
                 if re.match('Output .*',line):
                     break
--- a/mothur/tools/mothur/normalize.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/normalize.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_normalize_shared" name="Normalize.shared" version="1.19.0">
+<tool id="mothur_normalize_shared" name="Normalize.shared" version="1.20.0">
  <description>Normalize the number of sequences per group to a specified level</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -30,6 +30,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -37,6 +38,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/pca.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/pca.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_pca" name="Pca" version="1.19.0">
+<tool id="mothur_pca" name="Pca" version="1.20.0">
  <description>Principal Coordinate Analysis for a shared file</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -26,6 +26,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -33,6 +34,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/phylo.diversity.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/phylo.diversity.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.19.0">
+<tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.20.0">
  <description>Alpha Diversity calculates unique branch length</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -6,11 +6,13 @@
   --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.phylodiv\.summary$:'$summary_out,'^\S+\.phylodiv$:'$collectors_out,'^\S+\.rarefaction$:'$rarefaction_out
   --outputdir='$logfile.extra_files_path'
   --tree=$tree
-  #if $group.__str__ != "None" and len($group.__str__) > 0:
-   --group='$group'
-  #end if
-  #if $groups.__str__ != "None" and len($groups.__str__) > 0:
-   --groups='$groups'
+  #if $grouping.use:
+   #if $grouping.group.__str__ != "None" and len($grouping.group.__str__) > 0:
+    --group='$grouping.group'
+   #end if
+   #if $grouping.groups.__str__ != "None" and len($grouping.groups.__str__) > 0:
+    --groups='$grouping.groups'
+   #end if
   #end if
   #if $name.__str__ != "None" and len($name.__str__) > 0:
    --name='$name'
@@ -32,14 +34,21 @@
  <inputs>
   <!-- list,group  or shared -->
   <param name="tree" type="data" format="tre" label="tree - Phylogenetic Tree"/>
-  <param name="group" type="data" format="groups" label="group - Group file for the tree"/>
-  <param name="groups" type="select" label="groups - Groups to display" multiple="true">
-   <options from_dataset="group">
-    <column name="name" index="1"/>
-    <column name="value" index="1"/>
-    <filter type="unique_value" name="unq_grp" column="1" />
-   </options>
-  </param>
+  <conditional name="grouping">
+   <param name="use" type="boolean" truevalue="yes" falsevalue="no" checked="true" label="Analyze by group using a Group file"/>
+   <when value="yes">
+   <param name="group" type="data" format="groups" label="group - Group file for the tree"/>
+   <param name="groups" type="select" label="groups - Groups to display" multiple="true">
+    <help>All groups displayed if none are selected.</help>
+    <options from_dataset="group">
+     <column name="name" index="1"/>
+     <column name="value" index="1"/>
+     <filter type="unique_value" name="unq_grp" column="1" />
+    </options>
+   </param>
+   </when>
+   <when value="no"/>
+  </conditional> <!-- use_groups -->
   <param name="name" type="data" format="names" optional="true" label="name - Sequences Name reference file for the tree"/>
   <param name="iters" type="integer" value="1000" label="iters - Number of iterations to try (default 1000)"/>
   <param name="freq" type="float" value="0.0" label="freq - Reporting frequency" 
--- a/mothur/tools/mothur/pre.cluster.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/pre.cluster.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_pre_cluster" name="Pre.cluster" version="1.19.0">
+<tool id="mothur_pre_cluster" name="Pre.cluster" version="1.20.0">
  <description>Remove sequences due to pyrosequencing errors</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/rarefaction.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/rarefaction.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.19.0">
+<tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.20.0">
  <description>Generate inter-sample rarefaction curves for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -26,6 +26,7 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -34,6 +35,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
     <filter type="add_value" name="all" value="all" />
    </options>
--- a/mothur/tools/mothur/rarefaction.single.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/rarefaction.single.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,12 +1,14 @@
-<tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.20.0" force_history_refresh="True">
  <description>Generate intra-sample rarefaction curves for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
   --cmd='rarefaction.single'
   --result='^mothur.\S+\.logfile$:'$logfile
   --outputdir='$logfile.extra_files_path'
-  --datasetid='$logfile.id' --new_file_path='$__new_file_path__'
-  --new_datasets='^\S+?\.(((\S+)\.)?(rarefaction|r_\w*))$:tabular'
+  #if $as_datasets.__str__ == 'yes':
+   --datasetid='$logfile.id' --new_file_path='$__new_file_path__'
+   --new_datasets='^\S+?\.(((\S+)\.)?(rarefaction|r_\w*))$:tabular'
+  #end if
   #if isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('shared').__class__):
    --shared=$otu
   #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('rabund').__class__):
@@ -54,6 +56,7 @@
   <param name="iters" type="integer" value="0" label="iters - Number of randomizations"/>
   <param name="freq" type="float" value="0.0" label="freq - Reporting frequency" 
          help="if between 0 and 1 the fraction of sequences to sample, if greater than one - report every n iterations"/>
+  <param name="as_datasets" type="boolean" truevalue="yes" falsevalue="no" checked="True" label="Create a new history dataset for each label and calculator"/>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- a/mothur/tools/mothur/remove.lineage.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/remove.lineage.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_lineage" name="Remove.lineage" version="1.19.0">
+<tool id="mothur_remove_lineage" name="Remove.lineage" version="1.20.0">
  <description>Picks by taxon</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,7 +9,7 @@
   --cmd='remove.lineage'
   --outputdir='$logfile.extra_files_path'
   --taxonomy=$taxonomy
-  --taxon="'$re.sub('\(\d+\)','',$taxon.value.__str__)'"
+  --taxon="'$re.sub('(\s|,)+',',',$re.sub('\(\d+\)','',$taxon.value.__str__))'"
   #if $fasta_in.__str__ != "None" and len($fasta_in.__str__) > 0:
    --fasta=$fasta_in
    #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
@@ -35,14 +35,16 @@
  </command>
  <inputs>
   <param name="taxonomy" type="data" format="seq.taxonomy" label="taxonomy - Taxonomy"/>
-  <param name="taxons" type="select" size="120" label="Browse Taxons from Taxonomy">
+  <!--
+  <param name="taxons" type="select" size="120" multiple="True" label="Browse Taxons from Taxonomy">
    <options from_dataset="taxonomy">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
     <filter type="unique_value" name="unique_taxon" column="1" />
    </options>
   </param>
-  <param name="taxon" type="text" size="120" label="taxon - Select Taxon"/>
+  -->
+  <param name="taxon" type="text" area="True" size="5x120" label="taxon - Select Taxons for filtering" help="Enter 1 or more taxons separated by whitespace or commas"/>
   <param name="fasta_in" type="data" format="fasta" optional="true" label="fasta - Fasta Sequences"/>
   <param name="group_in" type="data" format="groups" optional="true" label="group - Groups"/>
   <param name="alignreport_in" type="data" format="align.report" optional="true" label="alignreport - Align Report"/>
--- a/mothur/tools/mothur/remove.rare.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/remove.rare.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_rare" name="Remove.rare" version="1.19.0">
+<tool id="mothur_remove_rare" name="Remove.rare" version="1.20.0">
  <description>Remove rare OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -50,6 +50,7 @@
      <options from_dataset="otu">
       <column name="name" index="1"/>
       <column name="value" index="1"/>
+      <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
       <filter type="unique_value" name="unq_grp" column="1" />
      </options>
     </param>
@@ -58,6 +59,7 @@
      <options from_dataset="otu">
       <column name="name" index="0"/>
       <column name="value" index="0"/>
+      <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
       <filter type="unique_value" name="unq_lbl" column="0" />
      </options>
     </param>
--- a/mothur/tools/mothur/remove.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/remove.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_seqs" name="Remove.seqs" version="1.19.0">
+<tool id="mothur_remove_seqs" name="Remove.seqs" version="1.20.0">
  <description>Remove sequences by name</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/screen.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/screen.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_screen_seqs" name="Screen.seqs" version="1.19.0">
+<tool id="mothur_screen_seqs" name="Screen.seqs" version="1.20.0">
  <description>Screen sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/split.abund.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/split.abund.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_split_abund" name="Split.abund" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_split_abund" name="Split.abund" version="1.20.0" force_history_refresh="True">
  <description>Separate sequences into rare and abundant groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/split.groups.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/split.groups.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_split_groups" name="Split.groups" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_split_groups" name="Split.groups" version="1.20.0" force_history_refresh="True">
  <description>Generates a fasta file for each group</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/sub.sample.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/sub.sample.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_sub_sample" name="Sub.sample" version="1.19.0">
+<tool id="mothur_sub_sample" name="Sub.sample" version="1.20.0">
  <description>Create a sub sample</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -131,6 +131,7 @@
      <options from_dataset="otu_in">
       <column name="name" index="1"/>
       <column name="value" index="1"/>
+      <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
       <filter type="unique_value" name="unq_grp" column="1" />
      </options>
     </param>
@@ -138,6 +139,7 @@
      <options from_dataset="otu_in">
       <column name="name" index="0"/>
       <column name="value" index="0"/>
+      <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
       <filter type="unique_value" name="unq_lbl" column="0" />
      </options>
     </param>
--- a/mothur/tools/mothur/summary.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/summary.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_summary_shared" name="Summary.shared" version="1.19.0"  force_history_refresh="True">
+<tool id="mothur_summary_shared" name="Summary.shared" version="1.20.0"  force_history_refresh="True">
  <description>Summary of calculator values for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -21,11 +21,12 @@
   $distance
  </command>
  <inputs>
-  <param name="otu" type="data" format="shared" label="read.otu(shared=) - OTU Shared"/>
+  <param name="otu" type="data" format="shared" label="shared - OTU Shared"/>
   <param name="label" type="select" label="label - OTU Labels" multiple="true">
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
     <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
@@ -33,6 +34,7 @@
    <options from_dataset="otu">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
+    <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
--- a/mothur/tools/mothur/tree.shared.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/tree.shared.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_tree_shared" name="Tree.shared" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_tree_shared" name="Tree.shared" version="1.20.0" force_history_refresh="True">
  <description>Generate a newick tree for dissimilarity among groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -56,6 +56,7 @@
       <options from_dataset="dist">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
        <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
@@ -63,6 +64,7 @@
       <options from_dataset="dist">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
--- a/mothur/tools/mothur/trim.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/trim.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_trim_seqs" name="Trim.seqs" version="1.19.0" force_history_refresh="True">
+<tool id="mothur_trim_seqs" name="Trim.seqs" version="1.20.0" force_history_refresh="True">
  <description>Trim sequences - primers, barcodes, quality</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -64,9 +64,14 @@
   #end if
   $flip 
   --fasta=$fasta
+  #if $names.__str__ != "None" and len($names.__str__) > 0:
+   --name=$names
+  #end if
+
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Sequences"/>
+  <param name="names" type="data" format="name" label="name - Sequence representative name list"/>
   <param name="minlength" type="integer" value="0" label="minlength - Minimum Sequence Length (default 0, ignored if &#060; 1 )"/>
   <param name="maxlength" type="integer" value="0" label="maxlength - Maximum Sequence Length (default 0, ignored if &#060; 1)"/>
   <param name="maxambig" type="integer" value="-1" label="maxambig - Maximum ambiguous bases (default -1, ignored if &#060; 0)"/>
@@ -111,6 +116,9 @@
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
   <data format_source="fasta" name="trim_fasta" label="${tool.name} on ${on_string}: trim.fasta"/>
+  <data format_source="names" name="trim_names" label="${tool.name} on ${on_string}: trim.names">
+   <filter>names != None</filter>
+  </data>
   <data format_source="qfile" name="trim_qual" label="${tool.name} on ${on_string}: trim.qual">
    <filter>(qual['add'] == 'yes'  and len(qual['qfile'].__str__) > 0)</filter>
   </data>
--- a/mothur/tools/mothur/unique.seqs.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/unique.seqs.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_unique_seqs" name="Unique.seqs" version="1.19.0">
+<tool id="mothur_unique_seqs" name="Unique.seqs" version="1.20.0">
  <description>Return unique sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/venn.xml	Mon Jun 27 09:34:14 2011 -0500
+++ b/mothur/tools/mothur/venn.xml	Mon Jun 27 10:12:25 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_venn" name="Venn" version="1.19.0"  force_history_refresh="True">
+<tool id="mothur_venn" name="Venn" version="1.20.0"  force_history_refresh="True">
  <description>Generate Venn diagrams for groups </description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -53,6 +53,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="0" value = "label"/>
        <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
@@ -60,6 +61,7 @@
       <options from_dataset="otu">
        <column name="name" index="1"/>
        <column name="value" index="1"/>
+       <filter type="static_value" name="ignore_header" keep="False" column="1" value = "Group"/>
        <filter type="unique_value" name="unq_grp" column="1" />
       </options>
      </param>
--- a/mothur/tools/suite_config.xml	Mon Jun 27 09:34:14 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-<tool id="mothur_align_check" name="Align.check" version="1.16.0">
- <description>Calculate the number of potentially misaligned bases</description>
-</tool>
-<tool id="mothur_align_seqs" name="Align.seqs" version="1.16.0">
- <description>Align sequences to a template alignment</description>
-</tool>
-<tool id="mothur_bin_seqs" name="Bin.seqs" version="1.16.0" force_history_refresh="True">
- <description>Order Sequences by OTU</description>
-</tool>
-<tool id="mothur_bootstrap_shared" name="Bootstrap.shared" version="1.16.0" force_history_refresh="True">
- <description>Generate a newick trees for dissimilarity among groups</description>
-</tool>
-<tool id="mothur_chimera_bellerophon" name="Chimera.bellerophon" version="1.16.0">
- <description>Find putative chimeras using bellerophon</description>
-</tool>
-<tool id="mothur_chimera_ccode" name="Chimera.ccode" version="1.16.0">
- <description>Find putative chimeras using ccode</description>
-</tool>
-<tool id="mothur_chimera_check" name="Chimera.check" version="1.16.0" force_history_refresh="True">
- <description>Find putative chimeras using chimeraCheck</description>
-</tool>
-<tool id="mothur_chimera_pintail" name="Chimera.pintail" version="1.16.0">
- <description>Find putative chimeras using pintail</description>
-</tool>
-<tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.16.0">
- <description>Find putative chimeras using slayer</description>
-</tool>
-<tool id="mothur_chop_seqs" name="Chop.seqs" version="1.16.0">
- <description>Trim sequences to a specified length</description>
-</tool>
-<tool id="mothur_classify_otu" name="Classify.otu" version="1.16.0" force_history_refresh="True">
- <description>Assign sequences to taxonomy</description>
-</tool>
-<tool id="mothur_classify_seqs" name="Classify.seqs" version="1.16.0">
- <description>Assign sequences to taxonomy</description>
-</tool>
-<tool id="mothur_clearcut" name="Clearcut" version="1.16.0">
- <description>Generate a tree using relaxed neighbor joining</description>
-</tool>
-<tool id="mothur_cluster_classic" name="Cluster.classic" version="1.16.0">
- <description>Assign sequences to OTUs (Dotur implementation)</description>
-</tool>
-<tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.16.0">
- <description> Group sequences that are part of a larger sequence</description>
-</tool>
-<tool id="mothur_cluster_split" name="Cluster.split" version="1.16.0">
- <description>Assign sequences to OTUs (Operational Taxonomic Unit) splits large matrices</description>
-</tool>
-<tool id="mothur_cluster" name="Cluster" version="1.16.0">
- <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
-</tool>
-<tool id="mothur_collect_shared" name="Collect.shared" version="1.16.0" force_history_refresh="True">
- <description>Generate collector's curves for calculators on OTUs</description>
-</tool>
-<tool id="mothur_collect_single" name="Collect.single" version="1.16.0" force_history_refresh="True">
- <description>Summary of calculator values for OTUs</description>
-</tool>
-<tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.16.0" force_history_refresh="True">
- <description>Find a consensus sequence for each OTU or phylotype</description>
-</tool>
-<tool id="mothur_corr_axes" name="Corr.axes" version="1.16.0">
- <description>correlation of data to axes</description>
-</tool>
-<tool id="mothur_degap_seqs" name="Degap.seqs" version="1.16.0">
- <description>Remove gap characters from sequences</description>
-</tool>
-<tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.16.0">
- <description>Return all sequences</description>
-</tool>
-<tool id="mothur_dist_seqs" name="Dist.seqs" version="1.16.0">
- <description>calculate uncorrected pairwise distances between aligned sequences</description>
-</tool>
-<tool id="mothur_dist_shared" name="Dist.shared" version="1.16.0" force_history_refresh="True">
- <description>Generate a phylip-formatted dissimilarity distance matrix among multiple groups</description>
-</tool>
-<tool id="mothur_fastq_info" name="Fastq.info" version="1.16.0">
- <description>Convert fastq to fasta and quality</description>
-</tool>
-<tool id="mothur_filter_seqs" name="Filter.seqs" version="1.16.0" force_history_refresh="True">
- <description>removes columns from alignments</description>
-</tool>
-<tool id="mothur_get_groups" name="Get.groups" version="1.16.0">
- <description>Select groups</description>
-</tool>
-<tool id="mothur_get_group" name="Get.group" version="1.16.0">
- <description>group names from shared or from list and group</description>
-</tool>
-<tool id="mothur_get_lineage" name="Get.lineage" version="1.16.0">
- <description>Picks by taxon</description>
-</tool>
-<tool id="mothur_get_oturep" name="Get.oturep" version="1.16.0"  force_history_refresh="True">
- <description>Generate a fasta with a representative sequence for each OTU</description>
-</tool>
-<tool id="mothur_get_otus" name="Get.otus" version="1.16.0">
- <description>Get otus containing sequences from specified groups</description>
-</tool>
-<tool id="mothur_get_relabund" name="Get.relabund" version="1.16.0">
- <description>Calculate the relative abundance of each otu</description>
-</tool>
-<tool id="mothur_get_seqs" name="Get.seqs" version="1.16.0">
- <description>Picks sequences by name</description>
-</tool>
-<tool id="mothur_hcluster" name="Hcluster" version="1.16.0">
- <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
-</tool>
-<tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.16.0"  force_history_refresh="True">
- <description>Generate a heatmap for OTUs</description>
-</tool>
-<tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.16.0"  force_history_refresh="True">
- <description>Generate a heatmap for pariwise similarity</description>
-</tool>
-<tool id="mothur_indicator" name="Indicator" version="1.16.0">
- <description>Identify indicator "species" for nodes on a tree</description>
-</tool>
-<tool id="mothur_libshuff" name="Libshuff" version="1.16.0">
- <description>Cramer-von Mises tests communities for the same structure</description>
-</tool>
-<tool id="mothur_list_seqs" name="List.seqs" version="1.16.0">
- <description>Lists the names of the sequences</description>
-</tool>
-<tool id="mothur_make_design" name="Make Design" version="1.16.0" >
- <description>Assign groups to Sets</description>
-</tool>
-<tool id="mothur_make_files" name="Make.group" version="1.16.0">
- <description>Make a group file</description>
-</tool>
-<tool id="mothur_merge_files" name="Merge.files" version="1.16.0">
- <description>Merge data</description>
-</tool>
-<tool id="mothur_merge_groups" name="Merge.groups" version="1.16.0" >
- <description>Merge groups in a shared file</description>
-</tool>
-<tool id="mothur_metastats" name="Metastats" version="1.16.0">
- <description>generate principle components plot data</description>
-</tool>
-<tool id="mothur_nmds" name="Nmds" version="1.16.0">
- <description>generate non-metric multidimensional scaling data</description>
-</tool>
-<tool id="mothur_normalize_shared" name="Normalize.shared" version="1.16.0">
- <description>Normalize the number of sequences per group to a specified level</description>
-</tool>
-<tool id="mothur_pairwise_seqs" name="Pairwise.seqs" version="1.16.0">
- <description>calculate uncorrected pairwise distances between sequences</description>
-</tool>
-<tool id="mothur_parse_list" name="Parse.list" version="1.16.0" force_history_refresh="True">
- <description>Order Sequences by OTU</description>
-</tool>
-<tool id="mothur_parsimony" name="Parsimony" version="1.16.0">
- <description>Describes whether two or more communities have the same structure</description>
-</tool>
-<tool id="mothur_pca" name="Pca" version="1.16.0">
- <description>generate principle components plot data</description>
-</tool>
-<tool id="mothur_pcoa" name="Pcoa" version="1.16.0" >
- <description>Principal Coordinate Analysis</description>
-</tool>
-<tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.16.0">
- <description>Alpha Diversity calculate unique branch length</description>
-</tool>
-<tool id="mothur_phylotype" name="Phylotype" version="1.16.0">
- <description>Assign sequences to OTUs based on taxonomy</description>
-</tool>
-<tool id="mothur_pre_cluster" name="Pre.cluster" version="1.16.0">
- <description>Remove sequences due to pyrosequencing errors</description>
-</tool>
-<tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.16.0">
- <description>Generate inter-sample rarefaction curves for OTUs</description>
-</tool>
-<tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.16.0" force_history_refresh="True">
- <description>Generate intra-sample rarefaction curves for OTUs</description>
-</tool>
-<tool id="mothur_read_otu" name="Read.otu" version="1.16.0" force_history_refresh="True">
- <description>Read OTU list and group to create a shared file</description>
-</tool>
-<tool id="mothur_remove_groups" name="Remove.groups" version="1.16.0">
- <description>Remove groups</description>
-</tool>
-<tool id="mothur_remove_lineage" name="Remove.lineage" version="1.16.0">
- <description>Picks by taxon</description>
-</tool>
-<tool id="mothur_remove_otus" name="Remove.otus" version="1.16.0">
- <description>Remove otus containing sequences from specified groups</description>
-</tool>
-<tool id="mothur_remove_rare" name="Remove.rare" version="1.16.0">
- <description>Remove rare OTUs</description>
-</tool>
-<tool id="mothur_remove_seqs" name="Remove.seqs" version="1.16.0">
- <description>Remove sequences by name</description>
-</tool>
-<tool id="mothur_reverse_seqs" name="Reverse.seqs" version="1.16.0">
- <description>Reverse complement the sequences</description>
-</tool>
-<tool id="mothur_screen_seqs" name="Screen.seqs" version="1.16.0">
- <description>Screen sequences</description>
-</tool>
-<tool id="mothur_sffinfo" name="Sffinfo" version="1.16.0">
- <description>Summarize the quality of sequences</description>
-</tool>
-<tool id="mothur_split_abund" name="Split.abund" version="1.16.0" force_history_refresh="True">
- <description>Separate sequences into rare and abundant groups</description>
-</tool>
-<tool id="mothur_split_groups" name="Split.groups" version="1.16.0" force_history_refresh="True">
- <description>Generates a fasta file for each group</description>
-</tool>
-<tool id="mothur_sub_sample" name="Sub.sample" version="1.16.0">
- <description>Create a sub sample</description>
-</tool>
-<tool id="mothur_summary_seqs" name="Summary.seqs" version="1.16.0">
- <description>Summarize the quality of sequences</description>
-</tool>
-<tool id="mothur_summary_shared" name="Summary.shared" version="1.16.0"  force_history_refresh="True">
- <description>Summary of calculator values for OTUs</description>
-</tool>
-<tool id="mothur_summary_single" name="Summary.single" version="1.16.0" force_history_refresh="True">
- <description>Summary of calculator values for OTUs</description>
-</tool>
-<tool id="mothur_tree_shared" name="Tree.shared" version="1.16.0" force_history_refresh="True">
- <description>Generate a newick tree for dissimilarity among groups</description>
-</tool>
-<tool id="tree_vector" name="TreeVector" version="1.0">
- <description>Draw a Phylogenic Tree</description>
-</tool>
-<tool id="mothur_trim_seqs" name="Trim.seqs" version="1.16.0">
- <description>Trim sequences - primers, barcodes, quality</description>
-</tool>
-<tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.16.0">
- <description>Describes whether two or more communities have the same structure</description>
-</tool>
-<tool id="mothur_unifrac_weighted" name="unifrac.weighted" version="1.16.0">
- <description>Describes whether two or more communities have the same structure</description>
-</tool>
-<tool id="mothur_unique_seqs" name="Unique.seqs" version="1.16.0">
- <description>Return unique sequences</description>
-</tool>
-<tool id="mothur_venn" name="Venn" version="1.16.0"  force_history_refresh="True">
- <description>Generate Venn diagrams gor groups </description>
-</tool>