changeset 1:c7923b34dea4

Migrated tool version 1.16.0 from old tool shed archive to new tool shed repository
author jjohnson
date Tue, 07 Jun 2011 17:01:07 -0400
parents 591e72edabed
children e076d95dbdb5
files mothur/README mothur/lib/galaxy/datatypes/metagenomics.py mothur/suite_config.xml mothur/tool-data/mothur_calculators.loc mothur/tools/mothur/align.check.xml mothur/tools/mothur/align.seqs.xml mothur/tools/mothur/bin.seqs.xml mothur/tools/mothur/bootstrap.shared.xml mothur/tools/mothur/chimera.bellerophon.xml mothur/tools/mothur/chimera.ccode.xml mothur/tools/mothur/chimera.check.xml mothur/tools/mothur/chimera.pintail.xml mothur/tools/mothur/chimera.slayer.xml mothur/tools/mothur/chop.seqs.xml mothur/tools/mothur/classify.otu.xml mothur/tools/mothur/classify.seqs.xml mothur/tools/mothur/clearcut.xml mothur/tools/mothur/cluster.classic.xml mothur/tools/mothur/cluster.fragments.xml mothur/tools/mothur/cluster.split.xml mothur/tools/mothur/cluster.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/degap.seqs.xml mothur/tools/mothur/deunique.seqs.xml mothur/tools/mothur/dist.seqs.xml mothur/tools/mothur/dist.shared.xml mothur/tools/mothur/fastq.info.xml mothur/tools/mothur/filter.seqs.xml mothur/tools/mothur/get.group.xml mothur/tools/mothur/get.groups.xml mothur/tools/mothur/get.lineage.xml mothur/tools/mothur/get.oturep.xml mothur/tools/mothur/get.otus.xml mothur/tools/mothur/get.relabund.xml mothur/tools/mothur/get.seqs.xml mothur/tools/mothur/hcluster.xml mothur/tools/mothur/heatmap.bin.xml mothur/tools/mothur/heatmap.sim.xml mothur/tools/mothur/indicator.xml mothur/tools/mothur/libshuff.xml mothur/tools/mothur/list.seqs.xml mothur/tools/mothur/make.design.xml mothur/tools/mothur/make.group.xml mothur/tools/mothur/merge.files.xml mothur/tools/mothur/merge.groups.xml mothur/tools/mothur/metastats.xml mothur/tools/mothur/mothur_wrapper.py mothur/tools/mothur/nmds.xml mothur/tools/mothur/normalize.shared.xml mothur/tools/mothur/pairwise.seqs.xml mothur/tools/mothur/parse.list.xml mothur/tools/mothur/parsimony.xml mothur/tools/mothur/pca.xml mothur/tools/mothur/pcoa.xml mothur/tools/mothur/phylo.diversity.xml mothur/tools/mothur/phylotype.xml mothur/tools/mothur/pre.cluster.xml mothur/tools/mothur/rarefaction.shared.xml mothur/tools/mothur/rarefaction.single.xml mothur/tools/mothur/read.otu.xml mothur/tools/mothur/remove.groups.xml mothur/tools/mothur/remove.lineage.xml mothur/tools/mothur/remove.otus.xml mothur/tools/mothur/remove.rare.xml mothur/tools/mothur/remove.seqs.xml mothur/tools/mothur/reverse.seqs.xml mothur/tools/mothur/screen.seqs.xml mothur/tools/mothur/sffinfo.xml mothur/tools/mothur/split.abund.xml mothur/tools/mothur/split.groups.xml mothur/tools/mothur/sub.sample.xml mothur/tools/mothur/summary.seqs.xml mothur/tools/mothur/summary.shared.xml mothur/tools/mothur/summary.single.xml mothur/tools/mothur/tree.shared.xml mothur/tools/mothur/trim.seqs.xml mothur/tools/mothur/unifrac.unweighted.xml mothur/tools/mothur/unifrac.weighted.xml mothur/tools/mothur/unique.seqs.xml mothur/tools/mothur/venn.xml mothur/tools/suite_config.xml
diffstat 84 files changed, 1834 insertions(+), 255 deletions(-) [+]
line wrap: on
line diff
--- a/mothur/README	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/README	Tue Jun 07 17:01:07 2011 -0400
@@ -1,6 +1,6 @@
 Provides galaxy tools for the Mothur metagenomics package -  http://www.mothur.org/wiki/Main_Page 
 
-Install mothur v.1.15.0 on your galaxy system so galaxy can execute the mothur command
+Install mothur v.1.16.0 on your galaxy system so galaxy can execute the mothur command
   http://www.mothur.org/wiki/Download_mothur
   http://www.mothur.org/wiki/Installation
   ( This Galaxy iMothur wrapper will invoke Mothur in command line mode: http://www.mothur.org/wiki/Command_line_mode )
@@ -132,7 +132,12 @@
       <tool file="mothur/make.group.xml"/>
       <tool file="mothur/get.groups.xml"/>
       <tool file="mothur/remove.groups.xml"/>
+      <tool file="mothur/merge.groups.xml"/>
+      <tool file="mothur/make.design.xml"/>
+      <tool file="mothur/sub.sample.xml"/>
     <label text="Mothur Sequence Analysis" id="mothur_sequence_analysis"/>
+      <tool file="mothur/sffinfo.xml"/>
+      <tool file="mothur/fastq.info.xml"/>
       <tool file="mothur/summary.seqs.xml"/>
       <tool file="mothur/reverse.seqs.xml"/>
       <tool file="mothur/list.seqs.xml"/>
@@ -146,38 +151,40 @@
       <tool file="mothur/filter.seqs.xml"/>
       <tool file="mothur/degap.seqs.xml"/>
       <tool file="mothur/consensus.seqs.xml"/>
-      <tool file="mothur/sub.sample.xml"/>
+      <tool file="mothur/align.seqs.xml"/>
+      <tool file="mothur/align.check.xml"/>
+      <tool file="mothur/dist.seqs.xml"/>
+      <tool file="mothur/pairwise.seqs.xml"/>
+      <tool file="mothur/split.abund.xml"/>
+      <tool file="mothur/split.groups.xml"/>
+      <tool file="mothur/pcoa.xml"/>
+      <tool file="mothur/pca.xml"/>
+      <tool file="mothur/nmds.xml"/>
+      <tool file="mothur/corr.axes.xml"/>
+      <tool file="mothur/classify.seqs.xml"/>
+   <label text="Mothur Sequence Chimera Detection" id="mothur_sequence_chimera"/>
       <tool file="mothur/chimera.bellerophon.xml"/>
       <tool file="mothur/chimera.ccode.xml"/>
       <tool file="mothur/chimera.check.xml"/>
       <tool file="mothur/chimera.pintail.xml"/>
       <tool file="mothur/chimera.slayer.xml"/>
-      <tool file="mothur/align.seqs.xml"/>
-      <tool file="mothur/align.check.xml"/>
-      <tool file="mothur/split.abund.xml"/>
-      <tool file="mothur/split.groups.xml"/>
-      <tool file="mothur/parse.list.xml"/>
+    <label text="Mothur Operational Taxonomy Unit" id="mothur_taxonomy_unit"/>
       <tool file="mothur/pre.cluster.xml"/>
       <tool file="mothur/cluster.fragments.xml"/>
-      <tool file="mothur/dist.seqs.xml"/>
-      <tool file="mothur/pairwise.seqs.xml"/>
-      <tool file="mothur/bin.seqs.xml"/>
-      <tool file="mothur/classify.seqs.xml"/>
-      <tool file="mothur/sffinfo.xml"/>
-      <tool file="mothur/fastq.info.xml"/>
-      <tool file="mothur/pcoa.xml"/>
-      <tool file="mothur/get.lineage.xml"/>
-      <tool file="mothur/remove.lineage.xml"/>
-    <label text="Mothur Operational Taxonomy Unit" id="mothur_taxonomy_unit"/>
       <tool file="mothur/cluster.xml"/>
       <tool file="mothur/hcluster.xml"/>
       <tool file="mothur/cluster.classic.xml"/>
+      <tool file="mothur/cluster.split.xml"/>
+      <tool file="mothur/metastats.xml"/>
       <tool file="mothur/read.otu.xml"/>
       <tool file="mothur/classify.otu.xml"/>
+      <tool file="mothur/parse.list.xml"/>
       <tool file="mothur/get.otus.xml"/>
       <tool file="mothur/remove.otus.xml"/>
+      <tool file="mothur/remove.rare.xml"/>
       <tool file="mothur/get.oturep.xml"/>
       <tool file="mothur/get.relabund.xml"/>
+      <tool file="mothur/get.group.xml"/>
     <label text="Mothur Single Sample Analysis" id="mothur_single_sample_analysis"/>
       <tool file="mothur/collect.single.xml"/>
       <tool file="mothur/rarefaction.single.xml"/>
@@ -199,6 +206,8 @@
       <tool file="mothur/unifrac.unweighted.xml"/>
       <tool file="mothur/libshuff.xml"/>
     <label text="Mothur Phylotype Analysis" id="mothur_phylotype_analysis"/>
+      <tool file="mothur/get.lineage.xml"/>
+      <tool file="mothur/remove.lineage.xml"/>
       <tool file="mothur/phylotype.xml"/>
       <tool file="mothur/phylo.diversity.xml"/>
       <tool file="mothur/clearcut.xml"/>
--- a/mothur/lib/galaxy/datatypes/metagenomics.py	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/lib/galaxy/datatypes/metagenomics.py	Tue Jun 07 17:01:07 2011 -0400
@@ -484,33 +484,29 @@
             fh.close()
         return False
 
-class Alignment(Tabular):
-    file_ext = 'align'
-    def __init__(self, **kwd):
-        """Initialize secondary structure map datatype"""
-        Tabular.__init__( self, **kwd )
-        self.column_names = ['name','pound','dash','plus','equal','loop','tilde','total']
-
 class AlignCheck(Tabular):
     file_ext = 'align.check'
     def __init__(self, **kwd):
         """Initialize secondary structure map datatype"""
         Tabular.__init__( self, **kwd )
         self.column_names = ['name','pound','dash','plus','equal','loop','tilde','total']
+        self.columns = 8
 
 class Names(Tabular):
     file_ext = 'names'
     def __init__(self, **kwd):
-        """Name file shows the relationship between a representative sequence(col 1)  and the sequences it represents(col 2)"""
+        """Name file shows the relationship between a representative sequence(col 1)  and the sequences(comma-separated) it represents(col 2)"""
         Tabular.__init__( self, **kwd )
         self.column_names = ['name','representatives']
+        self.columns = 2
 
 class Summary(Tabular):
     file_ext = 'summary'
     def __init__(self, **kwd):
-        """Name file shows the relationship between a representative sequence(col 1)  and the sequences it represents(col 2)"""
+        """summarizes the quality of sequences in an unaligned or aligned fasta-formatted sequence file"""
         Tabular.__init__( self, **kwd )
         self.column_names = ['seqname','start','end','nbases','ambigs','polymer']
+        self.columns = 6
 
 class Group(Tabular):
     file_ext = 'groups'
@@ -518,6 +514,15 @@
         """Name file shows the relationship between a representative sequence(col 1)  and the sequences it represents(col 2)"""
         Tabular.__init__( self, **kwd )
         self.column_names = ['name','group']
+        self.columns = 2
+
+class Design(Tabular):
+    file_ext = 'design'
+    def __init__(self, **kwd):
+        """Name file shows the relationship between a group(col 1) and a grouping (col 2), providing a way to merge groups."""
+        Tabular.__init__( self, **kwd )
+        self.column_names = ['group','grouping']
+        self.columns = 2
 
 class AccNos(Tabular):
     file_ext = 'accnos'
@@ -525,6 +530,7 @@
         """A list of names"""
         Tabular.__init__( self, **kwd )
         self.column_names = ['name']
+        self.columns = 1
 
 class Oligos( data.Text ):
     file_ext = 'oligos'
@@ -781,6 +787,62 @@
         return False
 
 
+class Axes(Tabular):
+    file_ext = 'axes'
+
+    def __init__(self, **kwd):
+        """Initialize axes datatype"""
+        Tabular.__init__( self, **kwd )
+    def sniff( self, filename ):
+        """
+        Determines whether the file is an axes format
+        The first line may have column headings.
+        The following lines have the name in the first column plus float columns for each axis.
+		==> 98_sq_phylip_amazon.fn.unique.pca.axes <==
+		group   axis1   axis2
+		forest  0.000000        0.145743        
+		pasture 0.145743        0.000000        
+		
+		==> 98_sq_phylip_amazon.nmds.axes <==
+        		axis1   axis2   
+		U68589  0.262608        -0.077498       
+		U68590  0.027118        0.195197        
+		U68591  0.329854        0.014395        
+        """
+        try:
+            fh = open( filename )
+            count = 0
+            line = fh.readline()
+            line = line.strip()
+            col_cnt = None
+            while True:
+                line = fh.readline()
+                line = line.strip()
+                if not line:
+                    break #EOF
+                if line:
+                    fields = line.split('\t')
+                    if col_cnt == None:  # ignore values in first line as they may be column headings
+                        col_cnt = len(fields)
+                    else:  
+                        if len(fields) != col_cnt :
+                            return False
+                        try:
+                            for i in range(1, col_cnt):
+                                check = float(fields[i])
+                        except ValueError:
+                            return False
+                        count += 1
+                    if count > 10:
+                        return True
+            if count > 0:
+                return True
+        except:
+            pass
+        finally:
+            fh.close()
+        return False
+
 ## Qiime Classes
 
 class MetadataMapping(Tabular):
--- a/mothur/suite_config.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/suite_config.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,210 +1,240 @@
-<suite id="Mothur_toolsuite" name="Mothur Metagenomics" version="1.15.1">
+<suite id="Mothur_toolsuite" name="Mothur Metagenomics" version="1.16.0">
   <description>Mothur metagenomics commands as Galaxy tools</description>
-    <tool id="mothur_align_check" name="Align.check" version="1.15.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.15.0">
+    <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.15.0">
+    <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_chimera_bellerophon" name="Chimera.bellerophon" version="1.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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" name="Cluster" version="1.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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_degap_seqs" name="Degap.seqs" version="1.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <tool id="mothur_get_groups" name="Get.groups" version="1.16.0">
      <description>Select groups</description>
     </tool>
-    <tool id="mothur_get_lineage" name="Get.lineage" version="1.15.0">
+    <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.15.0" >
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0" >
+    <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.15.0" >
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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_files" name="Make.group" version="1.15.0">
+    <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.15.0">
+    <tool id="mothur_merge_files" name="Merge.files" version="1.16.0">
      <description>Merge data</description>
     </tool>
-    <tool id="mothur_normalize_shared" name="Normalize.shared" version="1.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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_pcoa" name="Pcoa" version="1.15.0" >
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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_seqs" name="Remove.seqs" version="1.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0">
+    <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.15.0" >
-     <description>Summary of calculator values for OTUs</description>
-    </tool>
-    <tool id="mothur_summary_single" name="Summary.single" version="1.15.0">
+    <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_tree_shared" name="Tree.shared" version="1.15.0">
-     <description>Generate a newick tree for dissimilarity among groups</description>
-    </tool>
-    <tool id="mothur_trim_seqs" name="Trim.seqs" version="1.15.0">
-     <description>Trim sequences - primers, barcodes, quality</description>
-    </tool>
-    <tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.15.0">
-     <description>Describes whether two or more communities have the same structure</description>
+    <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_unifrac_weighted" name="unifrac.weighted" version="1.15.0">
-     <description>Describes whether two or more communities have the same structure</description>
-    </tool>
-    <tool id="mothur_unique_seqs" name="Unique.seqs" version="1.15.0">
-     <description>Return unique sequences</description>
-    </tool>
-    <tool id="mothur_venn" name="Venn" version="1.15.0" >
-     <description>Generate Venn diagrams gor groups </description>
+    <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>
 </suite>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tool-data/mothur_calculators.loc	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,91 @@
+#This is a sample file distributed with Galaxy that enables 
+# Mothur tools to present a choice of values for calculators
+# source -  http://www.mothur.org/wiki/Calculators
+#file has this format (fields are separated by TAB characters):
+# 
+##
+# collect.single	ace, bergerparker, boneh, bootstrap, bstick, chao, coverage, default, efron, geometric, goodscoverage, heip, invsimpson, jack, logseries, npshannon, nseqs, qstat, shannon, shannoneven, shen, simpson, simpsoneven, smithwilson, sobs, solow
+# summary.single	ace, bergerparker, boneh, bootstrap, bstick, chao, coverage, default, efron, geometric, goodscoverage, heip, invsimpson, jack, logseries, npshannon, nseqs, qstat, shannon, shannoneven, shen, simpson, simpsoneven, smithwilson, sobs, solow
+# rarefaction.single	ace,                      bootstrap,         chao, coverage, default,                                  heip, invsimpson, jack,            npshannon, nseqs,        shannon, shannoneven,       simpson, simpsoneven, smithwilson, sobs
+##
+# collect.shared	anderberg, braycurtis, canberra, default, gower, hamming, hellinger, jabund, jclass, jest, kstest, kulczynski, kulczynskicody, lennon, manhattan, memchi2, memchord, memeuclidean, mempearson, morisitahorn, ochiai, odum, sharedace, sharedchao, sharednseqs, sharedsobs, soergel, sorabund, sorclass, sorest, spearman, speciesprofile, structchi2, structchord, structeuclidean, structkulczynski, structpearson, thetan, thetayc, whittaker
+# summary.shared	anderberg, braycurtis, canberra, default, gower, hamming, hellinger, jabund, jclass, jest, kstest, kulczynski, kulczynskicody, lennon, manhattan, memchi2, memchord, memeuclidean, mempearson, morisitahorn, ochiai, odum, sharedace, sharedchao, sharednseqs, sharedsobs, soergel, sorabund, sorclass, sorest, spearman, speciesprofile, structchi2, structchord, structeuclidean, structkulczynski, structpearson, thetan, thetayc, whittaker
+# dist.shared		anderberg, braycurtis, canberra,          gower, hamming, hellinger, jabund, jclass, jest, kstest, kulczynski, kulczynskicody, lennon, manhattan, memchi2, memchord, memeuclidean, mempearson, morisitahorn, ochiai, odum, sharedace, sharedchao, sharednseqs, sharedsobs, soergel, sorabund, sorclass, sorest, spearman, speciesprofile, structchi2, structchord, structeuclidean, structkulczynski, structpearson, thetan, thetayc, whittaker
+# tree.shared		anderberg, braycurtis, canberra,          gower, hamming, hellinger, jabund, jclass, jest, kstest, kulczynski, kulczynskicody, lennon, manhattan, memchi2, memchord, memeuclidean, mempearson, morisitahorn, ochiai, odum, sharedace, sharedchao, sharednseqs, sharedsobs, soergel, sorabund, sorclass, sorest, spearman, speciesprofile, structchi2, structchord, structeuclidean, structkulczynski, structpearson, thetan, thetayc, whittaker
+# heatmap.sim		           braycurtis,                                               jabund, jclass, jest,                                                                                                     morisitahorn,                                                                        sorabund, sorclass, sorest,                                                                                                      thetan, thetayc
+##
+# venn	sobs,chao,ace	sharedsobs,sharedchao,sharedace
+# rarefaction.shared	sharednseqs,sharedobserved
+#
+##
+#<calculator>	<mult>	<mult2>	<category>	<description>
+#
+##Community richness	
+ace	single	sing	Community richness	the ACE estimator
+bootstrap	single	sing	Community richness	the bootstrap estimator
+chao	single	sing	Community richness	the Chao1 estimator
+jack	single	sing	Community richness	the jackknife estimator
+sobs	single	sing	Community richness	the observed richness
+##Community diversity
+bergerparker	single	xxxx	Community diversity	the Berger-Parker index
+coverage	single	sing	Community diversity	the sampling coverage coverage
+invsimpson	single	sing	Community diversity	the Simpson index
+npshannon	single	sing	Community diversity	the non-parametric Shannon index
+qstat	single	xxxx	Community diversity	the Q statistic
+shannon	single	sing	Community diversity	the Shannon index
+simpson	single	sing	Community diversity	the Simpson index
+simpsoneven	single	sing	Community diversity	the Simpson index
+smithwilson	single	sing	Smith and Wilson's metric of community evenness
+##Estimates of number of additional OTUs observed with extra sampling
+boneh	single	xxxx	Estimator	Boneh's estimator
+efron	single	xxxx	Estimator	Efron's estimator
+shen	single	xxxx	Estimator	Shen's estimator
+solow	single	xxxx	Estimator	Solow's estimator
+##Statistical distributions
+logseries	single	xxxx	Statistical distribution	tests whether observed data follow the log series distribution
+geometric	single	xxxx	Statistical distribution	tests whether observed data follow the geometric series distribution
+bstick	single	xxxx	Statistical distribution	tests whether observed data follow the broken stick distribution
+## Shared community richness
+sharedsobs	shared	xxxx	Shared community richness	the observed richness shared between two or more samples
+sharedchao	shared	xxxx	Shared community richness	the two or more sample shared Chao1 richness estimator
+sharedace	shared	xxxx	Shared community richness	the two sample shared ACE richness estimator
+##Similarity in community membership
+anderberg	shared	xxxx	Community Membership Similarity	the Anderberg similarity coefficient
+jclass	shared	shar	Community Membership Similarity	the traditional Jaccard similarity coefficient based on the observed richness
+jest	shared	shar	Community Membership Similarity	the Jaccard similarity coefficient based on the Chao1 estimated richnesses
+kulczynski	shared	xxxx	Community Membership Similarity	the Kulczynski similarity coefficient
+kulczynskicody	shared	xxxx	Community Membership Similarity	the Kulczynski-Cody similarity coefficient
+lennon	shared	xxxx	Community Membership Similarity	the Lennon similarity coefficient
+ochiai	shared	xxxx	Community Membership Similarity	the Ochiai similarity coefficient
+sorclass	shared	shar	Community Membership Similarity	the Sorenson similarity coefficient based on the observed richness
+sorest	shared	shar	Community Membership Similarity	the Sorenson similarity coefficient based on the Chao1 estimated richnesses
+whittaker	shared	xxxx	Community Membership Similarity	the Whittaker similarity coefficient
+hamming	shared	xxxx	Community Membership Similarity	-
+memchi2	shared	xxxx	Community Membership Similarity	-
+memchord	shared	xxxx	Community Membership Similarity	-
+memeuclidean	shared	xxxx	Community Membership Similarity	-
+mempearson	shared	xxxx	Community Membership Similarity	-
+##Similarity in community structure
+braycurtis	shared	shar	Community Structure Similarity	the Bray-Curtis similarity coefficient
+jabund	shared	shar	Community Structure Similarity	the abundance-based Jaccard similarity coefficient
+morisitahorn	shared	shar	Community Structure Similarity	the Morisita-Horn similarity coefficient
+sorabund	shared	shar	Community Structure Similarity	the abundance-based Sorenson similarity coefficient
+thetan	shared	shar	Community Structure Similarity	the Smith theta similarity coefficient
+thetayc	shared	shar	Community Structure Similarity	the Yue & Clayton theta similarity coefficient
+canberra	shared	xxxx	Community Structure Similarity	-
+gower	shared	xxxx	Community Structure Similarity	-
+hellinger	shared	xxxx	Community Structure Similarity	-
+manhattan	shared	xxxx	Community Structure Similarity	-
+odum	shared	xxxx	Community Structure Similarity	-
+soergel	shared	xxxx	Community Structure Similarity	-
+spearman	shared	xxxx	Community Structure Similarity	-
+speciesprofile	shared	xxxx	Community Structure Similarity	-
+structchi2	shared	xxxx	Community Structure Similarity	-
+structchord	shared	xxxx	Community Structure Similarity	-
+structeuclidean	shared	xxxx	Community Structure Similarity	-
+structkulczynski	shared	xxxx	Community Structure Similarity	-
+structpearson	shared	xxxx	Community Structure Similarity	-
+##Utility calculators
+nseqs	single	sing	Utility	the number of sequences in a sample
+sharednseqs	shared	rare	Utility	the number of sequences in two samples
+sharedobserved	shared	rare	Utility	the number of sequences in two samples
--- a/mothur/tools/mothur/align.check.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/align.check.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_align_check" name="Align.check" version="1.15.0">
+<tool id="mothur_align_check" name="Align.check" version="1.16.0">
  <description>Calculate the number of potentially misaligned bases</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/align.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/align.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_align_seqs" name="Align.seqs" version="1.15.0">
+<tool id="mothur_align_seqs" name="Align.seqs" version="1.16.0">
  <description>Align sequences to a template alignment</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -23,6 +23,7 @@
    --flip=true
    --threshold=$reverse.threshold
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="candidate" type="data" format="fasta" label="candidate - Candiate Sequences"/>
@@ -50,7 +51,9 @@
     <option value="blast">blast</option>
    </param>
    <when value="kmer">
-    <param name="ksize" type="integer" value="8" label="ksize - kmer length between 5 and 12"/>
+    <param name="ksize" type="integer" value="8" label="ksize - kmer length between 5 and 12">
+      <validator type="in_range" message="ksize - kmer length between 5 and 12" min="5" max="12"/>
+    </param>
    </when>
    <when value="suffix"/>
    <when value="blast"/>
--- a/mothur/tools/mothur/bin.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/bin.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_bin_seqs" name="Bin.seqs" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_bin_seqs" name="Bin.seqs" version="1.16.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/bootstrap.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,126 @@
+<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>
+ <command interpreter="python">
+  #*
+98_sq_phylip_amazon.fn.jclass.bootunique.tre
+98_sq_phylip_amazon.fn.thetayc.bootunique.tre
+98_sq_phylip_amazon.fn.jclass.bootunique.cons.pairs
+98_sq_phylip_amazon.fn.jclass.bootunique.cons.tre
+98_sq_phylip_amazon.fn.thetayc.bootunique.cons.pairs
+98_sq_phylip_amazon.fn.thetayc.bootunique.cons.tre
+98_sq_phylip_amazon.fn.jclass.boot0.00.tre
+98_sq_phylip_amazon.fn.thetayc.boot0.00.tre
+98_sq_phylip_amazon.fn.jclass.boot0.00.cons.pairs
+98_sq_phylip_amazon.fn.jclass.boot0.00.cons.tre
+98_sq_phylip_amazon.fn.thetayc.boot0.00.cons.pairs
+98_sq_phylip_amazon.fn.thetayc.boot0.00.cons.tre
+  *#
+  mothur_wrapper.py 
+  --cmd='bootstrap.shared'
+  --result='^mothur.\S+\.logfile$:'$logfile
+  --outputdir='$logfile.extra_files_path'
+  --datasetid='$logfile.id' --new_file_path='$__new_file_path__'
+  --new_datasets='^\S+\.([a-z]+\.boot(unique|[0-9.]*)\.tre)$:tre','^\S+\.([a-z]+\.boot(unique|[0-9.]*)\.cons\.tre)$:tre','^\S+\.([a-z]+\.boot(unique|[0-9.]*)\.cons\.pairs)$:txt'
+  --READ_cmd='read.otu'
+  #if $input.source == 'similarity':
+   --READ_list=$input.otu
+   #if $otu_group.__str__ != "None" and len($otu_group.__str__) > 0:
+    --READ_group='$otu_group'
+   #end if
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+  #elif $input.source == 'shared':
+   --READ_shared=$input.otu
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+  #end if
+  #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+   --groups=$input.groups
+  #end if
+  #if $calc.__str__ != "None" and len($calc.__str__) > 0:
+   --calc=$calc
+  #end if
+  #if int($iters.__str__) > 0:
+   --iters=$iters
+  #end if
+ </command>
+ <inputs>
+  <!-- list,group  or shared -->
+  <conditional name="input">
+   <param name="source" type="select" label="Generate Heatmap for">
+    <option value="similarity">OTU list</option>
+    <option value="shared">OTU Shared</option>
+   </param>
+   <when value="similarity">
+     <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List"/>
+     <param name="otu_group" type="data" format="groups" label="read.otu(group=) - Group file for the OTU List"/>
+     <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"/>
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu_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="shared">
+     <param name="otu" type="data" format="shared" label="read.otu(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="unique_value" name="unq_lbl" column="0" />
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+   </when>
+  </conditional>
+  <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
+   <options from_file="mothur_calculators.loc">
+     <column name="mult2" index="2"/>
+     <column name="name" index="0"/>
+     <column name="value" index="0"/>
+     <filter type="static_value" name="mult2" column="2" value="shar" />
+   </options>
+  </param>
+  <param name="iters" type="integer" value="1000" label="iters - Number of iterations to try (default 1000)"/>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+ </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 bootstrap.shared_ command will generate a newick-formatted tree file that describes the dissimilarity (1-similarity) among multiple groups.
+
+.. _bootstrap.shared: http://www.mothur.org/wiki/Bootstrap.shared
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/chimera.bellerophon.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chimera.bellerophon.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_bellerophon" name="Chimera.bellerophon" version="1.15.0">
+<tool id="mothur_chimera_bellerophon" name="Chimera.bellerophon" version="1.16.0">
  <description>Find putative chimeras using bellerophon</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -14,6 +14,7 @@
   #if int($increment.__str__) > 0:
    --increment=$increment
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
--- a/mothur/tools/mothur/chimera.ccode.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chimera.ccode.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_ccode" name="Chimera.ccode" version="1.15.0">
+<tool id="mothur_chimera_ccode" name="Chimera.ccode" version="1.16.0">
  <description>Find putative chimeras using ccode</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -19,6 +19,7 @@
   #if int($numwanted.__str__) > 0:
    --numwanted=$numwanted
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
--- a/mothur/tools/mothur/chimera.check.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chimera.check.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_check" name="Chimera.check" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_chimera_check" name="Chimera.check" version="1.16.0" force_history_refresh="True">
  <description>Find putative chimeras using chimeraCheck</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -21,6 +21,7 @@
     --name='$name'
    #end if
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
--- a/mothur/tools/mothur/chimera.pintail.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chimera.pintail.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_pintail" name="Chimera.pintail" version="1.15.0">
+<tool id="mothur_chimera_pintail" name="Chimera.pintail" version="1.16.0">
  <description>Find putative chimeras using pintail</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -33,6 +33,7 @@
    --increment=$increment
   #end if
   --result=#echo ','.join($results)
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
--- a/mothur/tools/mothur/chimera.slayer.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chimera.slayer.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.15.0">
+<tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.16.0">
  <description>Find putative chimeras using slayer</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -7,7 +7,14 @@
   --outputdir='$logfile.extra_files_path'
   --tmpdir='${logfile.extra_files_path}/input'
   --fasta=$fasta
-  --template=$alignment.template
+  #if $alignment.source == 'self':
+   --template='self'
+   #if $alignment.name.__str__ != "None" and len($alignment.name.__str__) > 0:
+    --name=$alignment.name
+   #end if
+  #else:
+   --template=$alignment.template
+  #end if
   #if $options.setby == 'user':
    --search=$options.search
    --window=$options.window
@@ -22,7 +29,9 @@
    --minbs=$options.minbs
    --minsnp=$options.minsnp
    --divergence=$options.divergence
+   $options.trim
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
@@ -30,6 +39,7 @@
    <param name="source" type="select" label="Select Template from" help="">
     <option value="hist">History</option>
     <option value="ref">Cached Reference</option>
+    <option value="self">Self - Use abundant sequences from the input Candiate Sequences fasta </option>
    </param>
    <when value="ref">
     <param name="template" type="select" label="template - Select an alignment database " help="">
@@ -42,6 +52,9 @@
    <when value="hist">
     <param name="template" type="data" format="fasta" label="template - Template to align with" help=""/>
    </when>
+   <when value="self">
+    <param name="name" type="data" format="names" optional="true" label="names - Sequences Names"/>
+   </when>
   </conditional>
   <conditional name="options">
    <param name="setby" type="select" label="Slayer Options" help="">
@@ -67,6 +80,7 @@
     <param name="minbs" type="integer" value="90" label="minbs - Minimum bootstrap support % for calling a sequence chimeric (default 90)"/>
     <param name="minsnp" type="integer" value="100" label="minsnp - Percent of SNPs to sample on each side of breakpoint for computing bootstrap support (default 100)"/>
     <param name="divergence" type="float" value="1.007" label="divergence - Divergence cutoff for chimera determination (default 1.007)"/>
+    <param name="trim" type="boolean" truevalue="--trim=True" falsevalue="" checked="false" label="trim - include chimeric sequences trimmed to their longest peice" />
    </when>
   </conditional>
  </inputs>
--- a/mothur/tools/mothur/chop.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/chop.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_chop_seqs" name="Chop.seqs" version="1.15.0">
+<tool id="mothur_chop_seqs" name="Chop.seqs" version="1.16.0">
  <description>Trim sequences to a specified length</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/classify.otu.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/classify.otu.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_classify_otu" name="Classify.otu" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_classify_otu" name="Classify.otu" version="1.16.0" force_history_refresh="True">
  <description>Assign sequences to taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,6 +9,9 @@
   --new_datasets='^\S+?\.(unique|[0-9.]*\.cons\.taxonomy)$:cons.taxonomy'
   --list=$otu
   --taxonomy=$tax.taxonomy
+  #if $reftax.source != 'none' and len($reftax.taxonomy.__str__) > 0:
+   --reftaxonomy=$reftax.taxonomy
+  #end if
   #if 100 >= int($cutoff.__str__) > 0:
    --cutoff=$cutoff
   #end if
@@ -36,13 +39,34 @@
     <param name="taxonomy" type="data" format="taxonomy" label="taxonomy - Taxonomy Reference"/>
    </when>
   </conditional>
+  <conditional name="reftax">
+   <param name="source" type="select" label="Select Taxonomy from" help="">
+    <option value="none">None</option>
+    <option value="hist">History</option>
+    <option value="ref">Cached Reference</option>
+   </param>
+   <when value="none"/>
+   <when value="ref">
+    <param name="taxonomy" type="select" format="taxonomy" label="reftaxonomy - Taxonomy Reference used when sequences were classified">
+     <options from_file="mothur_taxonomy.loc">
+      <column name="name" index="0" />
+      <column name="value" index="1" />
+     </options>
+    </param>
+   </when>
+   <when value="hist">
+    <param name="taxonomy" type="data" format="taxonomy" label="reftaxonomy - Taxonomy Reference used when sequences were classified"/>
+   </when>
+  </conditional>
   <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"/>
    </options>
   </param>
-  <param name="cutoff" type="integer" value="60" label="cutoff - Confindence percentage cutoff between 1 and 100"/>
+  <param name="cutoff" type="integer" value="60" label="cutoff - Confindence percentage cutoff between 1 and 100">
+   <validator type="in_range" message="Confindence percentage cutoff must be between 0 and 100" min="0" max="100"/>
+  </param>
   <param name="probs" type="boolean" falsevalue="--probs=false" truevalue="" checked="true" label="probs - Show probabilities"/>
  </inputs>
  <outputs>
--- a/mothur/tools/mothur/classify.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/classify.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_classify_seqs" name="Classify.seqs" version="1.15.0">
+<tool id="mothur_classify_seqs" name="Classify.seqs" version="1.16.0">
  <description>Assign sequences to taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -38,6 +38,7 @@
     --search=$classify.search.algorithm
    #end if
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Candiate Sequences"/>
@@ -81,9 +82,13 @@
     <option value="knn">K-Nearest Neighbor (knn)</option>
    </param>
    <when value="bayesian">
-    <param name="ksize" type="integer" value="8" label="ksize - kmer length between 5 and 12"/>
+    <param name="ksize" type="integer" value="8" label="ksize - kmer length between 5 and 12">
+      <validator type="in_range" message="ksize - kmer length between 5 and 12" min="5" max="12"/>
+    </param>
     <param name="iters" type="integer" value="100" label="iters - iterations to do when calculating the bootstrap confidence score"/>
-    <param name="cutoff" type="integer" value="60" label="cutoff - Confindence percentage cutoff between 1 and 100"/>
+    <param name="cutoff" type="integer" value="60" label="cutoff - Confindence percentage cutoff between 1 and 100">
+     <validator type="in_range" message="Confindence percentage cutoff must be between 0 and 100" min="0" max="100"/>
+    </param>
     <param name="probs" type="boolean" falsevalue="--probs=false" truevalue="" checked="true" label="probs - Show probabilities"/>
    </when>
    <when value="knn">
--- a/mothur/tools/mothur/clearcut.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/clearcut.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_clearcut" name="Clearcut" version="1.15.0">
+<tool id="mothur_clearcut" name="Clearcut" version="1.16.0">
  <description>Generate a tree using relaxed neighbor joining</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/cluster.classic.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/cluster.classic.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_cluster_classic" name="Cluster.classic" version="1.15.0">
+<tool id="mothur_cluster_classic" name="Cluster.classic" version="1.16.0">
  <description>Assign sequences to OTUs (Dotur implementation)</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -68,8 +68,8 @@
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank)"/>
-  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species)"/>
+  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank Abundance)"/>
+  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species Abundance)"/>
   <data format="list" name="otulist" label="${tool.name} on ${on_string}: list (OTU List)"/>
  </outputs>
  <requirements>
--- a/mothur/tools/mothur/cluster.fragments.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/cluster.fragments.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.15.0">
+<tool id="mothur_cluster_fragments" name="Cluster.fragments" version="1.16.0">
  <description> Group sequences that are part of a larger sequence</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -7,10 +7,21 @@
   --outputdir='$logfile.extra_files_path'
   --fasta=$fasta
   --name=$names
+  #if int($diffs.__str__) > 0:
+   --diffs=$diffs
+  #end if
+  #if 100 >= int($percent.__str__) > 0:
+   --percent=$percent
+  #end if
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Sequences to filter"/>
   <param name="names" type="data" format="names" optional="true" label="name - Sequences Name reference"/>
+  <param name="diffs" type="integer" value="0" label="diffs - Number of mismatched bases to allow between sequences in a group (default 0)"/>
+  <param name="percent" type="integer" value="0" label="percent - percentage of differences allowed ( between 1 and 100, default 0)" 
+    help="The percent parameter allows you to set percentage of differences allowed, default=0. percent=2 means if the number of difference is less than or equal to two percent of the length of the fragment, then cluster. You may use diffs and percent at the same time to say something like: If the number or differences is greater than 1 or more than 2% of the fragment length, don't merge.">
+   <validator type="in_range" message="percentage differences allowed  must be between 0 and 100" min="0" max="100"/>
+  </param>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/cluster.split.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,136 @@
+<tool id="mothur_cluster_split" name="Cluster.split" version="1.16.0">
+ <description>Assign sequences to OTUs (Operational Taxonomic Unit) splits large matrices</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='cluster.split'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.sabund$:'$sabund,'^\S+\.rabund$:'$rabund,'^\S+\.list$:'$otulist
+  --outputdir='$logfile.extra_files_path'
+  #if $splitby.splitmethod == "distance":
+   #if $splitby.matrix.format == "column":
+    --column=$splitby.matrix.dist
+    --name=$splitby.matrix.name
+   #elif $splitby.matrix.format == "phylip":
+    --phylip=$splitby.matrix.dist
+    #if $splitby.matrix.name.__str__ != "None" and len($splitby.matrix.name.__str__) > 0:
+     --name=$splitby.matrix.name
+    #end if
+   #end if
+   --splitmethod=$splitby.splitmethod
+  #elif $splitby.splitmethod == "classify":
+   --column=$splitby.dist
+   --name=$splitby.name
+   --taxonomy=$splitby.taxonomy
+   #if $splitby.taxlevel > 1:
+    --taxlevel=$splitby.taxlevel
+   #end if
+   --splitmethod=$splitby.splitmethod
+  #elif $splitby.splitmethod == "fasta":
+   --fasta=$splitby.fasta
+   --name=$splitby.name
+   --taxonomy=$splitby.taxonomy
+   #if $splitby.taxlevel > 1:
+    --taxlevel=$splitby.taxlevel
+   #end if
+   --splitmethod=$splitby.splitmethod
+  #end if
+  #if len($method.__str__) > 0:
+   --method=$method
+  #end if
+  #if float($cutoff.__str__) > 0.0:
+   --cutoff=$cutoff
+  #end if
+  $hard
+  #if len($precision.__str__) > 0:
+   --precision=$precision
+  #end if
+  $large
+  --processors=1
+ </command>
+ <inputs>
+  <conditional name="splitby">
+   <param name="splitmethod" type="select" label="Split by" help="">
+    <option value="distance">Distance</option>
+    <option value="classify">Classification</option>
+    <option value="fasta">Classification using fasta</option>
+   </param>
+   <when value="distance">
+    <conditional name="matrix">
+     <param name="format" type="select" label="Select a Distance Matrix Format" help="">
+      <option value="column">Pairwise Column Matrix</option>
+      <option value="phylip">Phylip Distance Matrix</option>
+     </param>
+     <when value="column">
+      <param name="dist" type="data" format="pair.dist" label="column - Distance Matrix"/>
+      <param name="name" type="data" format="names" label="name - Sequences Name reference"/>
+     </when>
+     <when value="phylip">
+      <param name="dist" type="data" format="lower.dist,square.dist" label="phylip - Distance Matrix"/>
+      <param name="name" type="data" format="names" optional="true" label="name - Sequences Name reference"/>
+     </when>
+    </conditional>
+   </when>
+   <when value="classify">
+    <param name="dist" type="data" format="pair.dist" label="column - Distance Matrix"/>
+    <param name="name" type="data" format="names" label="name - Sequences Name reference"/>
+    <param name="taxonomy" type="data" format="taxonomy" label="taxonomy - Taxonomy (from Classify.seqs)"/>
+    <param name="taxlevel" type="integer" value="1" label="taxlevel - taxonomy level for split (default=1)" 
+           help="taxonomy level you want to use to split the distance file, default=1, meaning use the first taxon in each list"/>
+   </when>
+   <when value="fasta">
+    <param name="fasta" type="data" format="fasta" label="fasta - Sequences"/>
+    <param name="name" type="data" format="names" label="name - Sequences Name reference"/>
+    <param name="taxonomy" type="data" format="taxonomy" label="taxonomy - Taxonomy (from Classify.seqs)"/>
+    <param name="taxlevel" type="integer" value="1" label="taxlevel - taxonomy level for split (default=1)" 
+           help="taxonomy level you want to use to split the distance file, default=1, meaning use the first taxon in each list"/>
+   </when>
+  </conditional> <!-- splitby -->
+  <param name="method" type="select" label="method - Select a Clustering Method" help="">
+   <option value="furthest" selected="true">Furthest neighbor</option>
+   <option value="nearest">Nearest neighbor</option>
+   <option value="average">Average neighbor</option>
+  </param>
+  <param name="cutoff" type="float" value="0.0" label="cutoff - Distance Cutoff threshold - ignored if not > 0" 
+                 help="Ignore pairwise distances larger than this, a common value would be 0.10"/>
+  <param name="hard" type="boolean" checked="false" truevalue="--hard=true" falsevalue="" label="hard - Use hard cutoff instead of rounding" 
+                 help=""/>
+  <param name="precision" type="select" optional="true" label="precision - Precision for rounding distance values"
+                 help="Set higher precision for longer genome scale sequence lengths">
+   <option value="10">.1</option>
+   <option value="100" selected="true">.01</option>
+   <option value="1000">.001</option>
+   <option value="10000">.0001</option>
+   <option value="100000">.00001</option>
+   <option value="1000000">.000001</option>
+  </param>
+  <param name="large" type="boolean" checked="false" truevalue="--large=true" falsevalue="" label="large - distance matrix is too large to fit in RAM" 
+                 help="If your job fails due to not enough memory error, set this to true to rerun"/>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank Abundance)"/>
+  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species Abundance)"/>
+  <data format="list" name="otulist" label="${tool.name} on ${on_string}: list (OTU List)"/>
+ </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 cluster.split_ command assign sequences to OTUs (Operational Taxonomy Unit). 
+
+.. _cluster.split: http://www.mothur.org/wiki/Cluster.split
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/cluster.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/cluster.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_cluster" name="Cluster" version="1.15.0">
+<tool id="mothur_cluster" name="Cluster" version="1.16.0">
  <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -68,8 +68,8 @@
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank)"/>
-  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species)"/>
+  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank Abundance)"/>
+  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species Abundance)"/>
   <data format="list" name="otulist" label="${tool.name} on ${on_string}: list (OTU List)"/>
  </outputs>
  <requirements>
--- a/mothur/tools/mothur/collect.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/collect.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_collect_shared" name="Collect.shared" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -62,6 +62,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to condider" multiple="true">
@@ -74,7 +75,7 @@
    </when>
   </conditional>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult" index="1"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/collect.single.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/collect.single.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_collect_single" name="Collect.single" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_collect_single" name="Collect.single" version="1.16.0" force_history_refresh="True">
  <description>Summary of calculator values for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -35,10 +35,11 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult" index="1"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/consensus.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/consensus.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_consensus_seqs" name="Consensus.seqs" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/corr.axes.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,93 @@
+<tool id="mothur_corr_axes" name="Corr.axes" version="1.16.0">
+ <description>correlation of data to axes</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  ## output {group_file_name}.pick.{label}.groups   {list_file_name}.pick.{label}.list 
+  #import re, os.path
+  --cmd='corr.axes'
+  --outputdir='$logfile.extra_files_path'
+  #if $input.source == 'shared':
+   #if isinstance($input.otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('shared').__class__):
+    --shared=$input.otu
+   #elif isinstance($input.otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('relabund').__class__):
+    --relabund=$input.otu
+   #end if
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --label=$input.label
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --groups=$input.groups
+   #end if
+  #else:
+   --metadata=$input.metadata
+  #end if
+  --method=$method
+  --axes=$axes
+  #if int($numaxes.__str__) > 0:
+   --numaxes=$numaxes
+  #end if
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.corr.axes$:'$corr_axes
+ </command>
+ <inputs>
+  <param name="axes" type="data" format="axes" label="axes - a pcoa axes dataset"/>
+  <conditional name="input">
+   <param name="source" type="select" label="Generate Collector Curvers for">
+    <option value="shared">OTU Shared or Relabund</option>
+    <option value="metadata">Metadata table</option>
+   </param>
+   <when value="shared">
+     <param name="otu" type="data" format="shared,relabund" label="shared or relabund - OTU Shared or Relabund"/>
+     <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="unique_value" name="unq_lbl" column="0" />
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Pairwise comparision groups" multiple="true">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+   </when>
+   <when value="metadata">
+     <param name="metadata" type="data" format="tabular" label="metadata - Table of floating point values" 
+            help="metadata has the same number of rows as the samples, but the column(s) are floats that describe the samples (e.g. temperature, weight, etc.)"/>
+   </when>
+  </conditional>
+  <param name="method" type="select" optional="true" label="method - pearson, spearman, or kendall. Default: pearson" >
+    <option value="pearson" selected="true">pearson</option>
+    <option value="spearman">spearman</option>
+    <option value="kendall">kendall</option>
+  </param>
+  <param name="numaxes" type="integer" value="3" label="numaxes - Number of axes to use (default 3)"/>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="axes" name="corr_axes" label="${tool.name} on ${on_string}: corr.axes"/>
+ </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 corr.axes_ command calculates the correlation of data to axes.
+
+.. _corr.axes: http://www.mothur.org/wiki/Corr.axes
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/degap.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/degap.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_degap_seqs" name="Degap.seqs" version="1.15.0">
+<tool id="mothur_degap_seqs" name="Degap.seqs" version="1.16.0">
  <description>Remove gap characters from sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/deunique.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/deunique.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.15.0">
+<tool id="mothur_deunique_seqs" name="Deunique.seqs" version="1.16.0">
  <description>Return all sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/dist.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/dist.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_dist_seqs" name="Dist.seqs" version="1.15.0">
+<tool id="mothur_dist_seqs" name="Dist.seqs" version="1.16.0">
  <description>calculate uncorrected pairwise distances between aligned sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -16,6 +16,7 @@
   #if len($output.__str__) > 0:
    --output=$output
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="align" label="fasta - Alignment Fasta"/>
--- a/mothur/tools/mothur/dist.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/dist.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_dist_shared" name="Dist.shared" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -30,6 +30,9 @@
     --READ_label='$input.label'
    #end if
   #end if
+  #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+   --groups=$input.groups
+  #end if
   #if $calc.__str__ != "None" and len($calc.__str__) > 0:
    --calc=$calc
   #end if
@@ -81,7 +84,7 @@
    </when>
   </conditional>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult2" index="2"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/fastq.info.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/fastq.info.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_fastq_info" name="Fastq.info" version="1.15.0">
+<tool id="mothur_fastq_info" name="Fastq.info" version="1.16.0">
  <description>Convert fastq to fasta and quality</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/filter.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/filter.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_filter_seqs" name="Filter.seqs" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_filter_seqs" name="Filter.seqs" version="1.16.0" force_history_refresh="True">
  <description>removes columns from alignments</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -30,6 +30,7 @@
   #if $hard.__str__ != "None" and len($hard.__str__) > 0:
    --hard=$hard
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="align" label="fasta - Alignment Fasta"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/get.group.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,78 @@
+<tool id="mothur_get_group" name="Get.group" version="1.16.0">
+ <description>group names from shared or from list and group</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='get.group'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.bootGroups$:'$bootgroups
+  --outputdir='$logfile.extra_files_path'
+  --READ_cmd='read.otu'
+  #if $input.source == 'similarity':
+   --READ_list=$input.otu
+   #if $otu_group.__str__ != "None" and len($otu_group.__str__) > 0:
+    --READ_group='$otu_group'
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --READ_groups='$input.groups'
+   #end if
+  #elif $input.source == 'shared':
+   --READ_shared=$input.otu
+   #if $otu_group.__str__ != "None" and len($otu_group.__str__) > 0:
+    --READ_group='$otu_group'
+   #end if
+  #end if
+ </command>
+ <inputs>
+  <conditional name="input">
+   <param name="source" type="select" label="Generate principle components for">
+    <option value="similarity">OTU list</option>
+    <option value="shared">OTU Shared</option>
+   </param>
+   <when value="similarity">
+     <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List"/>
+     <param name="otu_group" type="data" format="groups" label="read.otu(group=) - Group file for the OTU List"/>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu_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="shared">
+     <param name="otu" type="data" format="shared" label="read.otu(shared=) - OTU Shared"/>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+   </when>
+  </conditional>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="groups" name="bootgroups" label="${tool.name} on ${on_string}: bootGroups" />
+ </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 get.group_ command generate principle components plot data.
+
+.. _get.group: http://www.mothur.org/wiki/Get.group
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/get.groups.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.groups.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_groups" name="Get.groups" version="1.15.0">
+<tool id="mothur_get_groups" name="Get.groups" version="1.16.0">
  <description>Select groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.lineage.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.lineage.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_lineage" name="Get.lineage" version="1.15.0">
+<tool id="mothur_get_lineage" name="Get.lineage" version="1.16.0">
  <description>Picks by taxon</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.oturep.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.oturep.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_oturep" name="Get.oturep" version="1.15.0"  force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.otus.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.otus.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_otus" name="Get.otus" version="1.15.0">
+<tool id="mothur_get_otus" name="Get.otus" version="1.16.0">
  <description>Get otus containing sequences from specified groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/get.relabund.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.relabund.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_relabund" name="Get.relabund" version="1.15.0">
+<tool id="mothur_get_relabund" name="Get.relabund" version="1.16.0">
  <description>Calculate the relative abundance of each otu</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -20,6 +20,9 @@
     --READ_label='$input.label'
    #end if
   #end if
+  #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+   --groups=$input.groups
+  #end if
   #if $scale.__str__ != "None" and len($scale.__str__) > 0:
    --scale=$scale
   #end if
@@ -53,6 +56,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
--- a/mothur/tools/mothur/get.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/get.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_get_seqs" name="Get.seqs" version="1.15.0">
+<tool id="mothur_get_seqs" name="Get.seqs" version="1.16.0">
  <description>Picks sequences by name</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/hcluster.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/hcluster.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_hcluster" name="Hcluster" version="1.15.0">
+<tool id="mothur_hcluster" name="Hcluster" version="1.16.0">
  <description>Assign sequences to OTUs (Operational Taxonomic Unit)</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -71,8 +71,8 @@
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank)"/>
-  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species)"/>
+  <data format="rabund" name="rabund" label="${tool.name} on ${on_string}: rabund (Rank Abundance)"/>
+  <data format="sabund" name="sabund" label="${tool.name} on ${on_string}: sabund (Species Abundance)"/>
   <data format="list" name="otulist" label="${tool.name} on ${on_string}: list (OTU List)"/>
  </outputs>
  <requirements>
--- a/mothur/tools/mothur/heatmap.bin.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/heatmap.bin.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.15.0"  force_history_refresh="True">
+<tool id="mothur_heatmap_bin" name="Heatmap.bin" version="1.16.0"  force_history_refresh="True">
  <description>Generate a heatmap for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/heatmap.sim.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/heatmap.sim.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.15.0"  force_history_refresh="True">
+<tool id="mothur_heatmap_sim" name="Heatmap.sim" version="1.16.0"  force_history_refresh="True">
  <description>Generate a heatmap for pariwise similarity</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -70,7 +70,7 @@
       </options>
      </param>
      <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-      <options from_file="mothur_calulators.loc">
+      <options from_file="mothur_calculators.loc">
         <column name="mult2" index="2"/>
         <column name="name" index="0"/>
         <column name="value" index="0"/>
@@ -84,6 +84,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to include" multiple="true">
--- a/mothur/tools/mothur/indicator.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/indicator.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_indicator" name="Indicator" version="1.15.0">
+<tool id="mothur_indicator" name="Indicator" version="1.16.0">
  <description>Identify indicator "species" for nodes on a tree</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -18,6 +18,9 @@
   #if $groups.__str__ != "None" and len($groups.__str__) > 0:
    --groups=$groups
   #end if
+  #if $design.__str__ != "None" and len($design.__str__) > 0:
+   --design=$design
+  #end if
   --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.indicator.tre$:'$tree_out,'^\S+\.indicator.summary$:'$summary
  </command>
  <inputs>
@@ -37,6 +40,8 @@
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
+  <param name="design" type="data" format="tabular" optional="true" label="design - assign groups to new grouping"
+         help="design has 2 columns: group(col 1) and grouping(col 2) (separated by a TAB character)"/>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- a/mothur/tools/mothur/libshuff.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/libshuff.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_libshuff" name="Libshuff" version="1.15.0">
+<tool id="mothur_libshuff" name="Libshuff" version="1.16.0">
  <description>Cramer-von Mises tests communities for the same structure</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/list.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/list.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_list_seqs" name="List.seqs" version="1.15.0">
+<tool id="mothur_list_seqs" name="List.seqs" version="1.16.0">
  <description>Lists the names of the sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/make.design.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,57 @@
+<tool id="mothur_make_design" name="Make Design" version="1.16.0" >
+ <description>Assign groups to Sets</description>
+ <command> cat $generated_design > $design
+ </command>
+ <inputs>
+  <param name="source" type="data" format="shared,groups" label="Source containing groups"/>
+    <repeat name="groupings" title="Grouping">
+     <param name="name" type="text" label="Name for a new combined grouping"/>
+     <param name="groups" type="select" multiple="true" label="Select groups for to include in this grouping">
+      <options from_dataset="source">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+    </repeat>
+ </inputs>
+ <configfiles>
+  <configfile name="generated_design">
+#for $grouping in $groupings:
+#set grp_str = $grouping.groups.__str__
+#if grp_str != None and len(grp_str) > 0:
+#for $grp in grp_str.split(','):
+$grp	$grouping.name
+#end for
+#end if
+#end for
+  </configfile>
+ </configfiles>
+ <outputs>
+  <data format="design" name="design" label="${tool.name} on ${on_string}: design" />
+ </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**
+
+Make Design creates a design file for use in mothur commands: merge.groups_, indicator_, and metastats_.
+A design file looks like the group file. It is a 2 column tab delimited file, where the first column is the group name and the second column is the set the group belongs to.
+
+.. _merge.groups: http://www.mothur.org/wiki/Merge.groups
+.. _indicator: http://www.mothur.org/wiki/Indicator
+.. _metastats: http://www.mothur.org/wiki/Metastats
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/make.group.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/make.group.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_make_files" name="Make.group" version="1.15.0">
+<tool id="mothur_make_files" name="Make.group" version="1.16.0">
  <description>Make a group file</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/merge.files.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/merge.files.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,22 +1,57 @@
-<tool id="mothur_merge_files" name="Merge.files" version="1.15.0">
+<tool id="mothur_merge_files" name="Merge.files" version="1.16.0">
  <description>Merge data</description>
  <command interpreter="python">
   mothur_wrapper.py 
   --cmd='merge.files'
   --result='^mothur.\S+\.logfile$:'$logfile,'mergefile:'$output
   --outputdir='$logfile.extra_files_path'
-  --input=${input}#for i in $inputs#,${i.input}#end for#
+  --input=${merge.input}#for i in $merge.inputs#,${i.input}#end for#
   --output='mergefile'
  </command>
  <inputs>
-  <param name="input" type="data" format="fasta" label="input - Dataset"/>
-  <repeat name="inputs" title="Files to Merge"> 
-   <param name="input" type="data" format="fasta" label="input - Dataset"/>
-  </repeat>
+  <conditional name="merge">
+   <param name="type" type="select" format="fasta,qual,groups,names,accnos" label="Merge">
+    <option value="fasta">fasta</option>
+    <option value="qual">qual</option>
+    <option value="groups">groups</option>
+    <option value="names">names</option>
+    <option value="accnos">accnos</option>
+   </param>
+   <when value="fasta">
+    <param name="input" type="data" format="fasta" label="input - fasta"/>
+    <repeat name="inputs" title="And fasta"> 
+     <param name="input" type="data" format="fasta" label="input - fasta"/>
+    </repeat>
+   </when> <!-- fasta --> 
+   <when value="qual">
+    <param name="input" type="data" format="qual" label="input - qual"/>
+    <repeat name="inputs" title="And qual"> 
+     <param name="input" type="data" format="qual" label="input - qual"/>
+    </repeat>
+   </when> <!-- qual --> 
+   <when value="groups">
+    <param name="input" type="data" format="groups" label="input - groups"/>
+    <repeat name="inputs" title="And group"> 
+     <param name="input" type="data" format="groups" label="input - groups"/>
+    </repeat>
+   </when> <!-- groups --> 
+   <when value="names">
+    <param name="input" type="data" format="names" label="input - names"/>
+    <repeat name="inputs" title="And name"> 
+     <param name="input" type="data" format="names" label="input - names"/>
+    </repeat>
+   </when> <!-- names --> 
+   <when value="accnos">
+    <param name="input" type="data" format="accnos" label="input - accnos"/>
+    <repeat name="inputs" title="And accno"> 
+     <param name="input" type="data" format="accnos" label="input - accnos"/>
+    </repeat>
+   </when> <!-- fasta --> 
+  </conditional> <!-- merge -->
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="input" name="output" label="${tool.name} on ${on_string}: fasta" />
+  <data format="input" name="output" label="${tool.name} on ${on_string}: ${merge.type}"/>
  </outputs>
  <requirements>
   <requirement type="binary">mothur</requirement>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/merge.groups.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,100 @@
+<tool id="mothur_merge_groups" name="Merge.groups" version="1.16.0" >
+ <description>Merge groups in a shared file</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='merge.groups'
+  ## 98_sq_phylip_amazon.fn.merge.shared
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.merge\.\S+$:'$shared
+  --outputdir='$logfile.extra_files_path'
+  --shared=$otu
+  #if $design.source == 'hist':
+   --design=$design_dataset
+  #else:
+   --design=$generated_design
+  #end if
+  #if $groups.__str__ != "None" and len($groups.__str__) > 0:
+   --groups=$groups
+  #end if
+  #if $label.__str__ != "None" and len($label.__str__) > 0:
+   --label='$label'
+  #end if
+ </command>
+ <inputs>
+  <param name="otu" type="data" format="shared" label="shared - OTU Shared Dataset"/>
+  <param name="groups" type="select" optional="true" label="groups - Pick groups to include" multiple="true">
+   <options from_dataset="otu">
+    <column name="name" index="1"/>
+    <column name="value" index="1"/>
+    <filter type="unique_value" name="unq_grp" column="1" />
+   </options>
+  </param>
+  <param name="label" type="select" label="label - Pick OTU Labels to include" optional="true" multiple="true">
+   <options from_dataset="otu">
+    <column name="name" index="0"/>
+    <column name="value" index="0"/>
+    <filter type="unique_value" name="unq_lbl" column="0" />
+   </options>
+  </param>
+  <conditional name="design">
+   <param name="source" type="select" label="Grouping Design from" help="">
+    <option value="hist">Your History</option>
+    <option value="build">Build a grouping design</option>
+   </param>
+   <when value="hist">
+    <param name="design_dataset" type="data" format="tabular" label="design - assign groups to new grouping"
+           help="design has 2 columns: group(col 1) and grouping(col 2) (separated by a TAB character)"/>
+   </when>
+   <when value="build">
+    <repeat name="groupings" title="Grouping">
+     <param name="name" type="text" label="Name for a new combined grouping"/>
+     <param name="groups" type="select" multiple="true" label="Select groups for to include in this grouping">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+    </repeat>
+   </when>
+  </conditional> <!-- design -->
+ </inputs>
+ <configfiles>
+  <configfile name="generated_design">
+#if $design.source == 'build':
+#for $grouping in $design.groupings:
+#set grp_str = $grouping.groups.__str__
+#if grp_str != None and len(grp_str) > 0:
+#for $grp in grp_str.split(','):
+$grp	$grouping.name
+#end for
+#end if
+#end for
+#end if
+  </configfile>
+ </configfiles>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="shared" name="shared" label="${tool.name} on ${on_string}: merge.shared" />
+ </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 merge.groups_ command reads a shared file and a design file and merges the groups in the shared file that are in the same grouping in the design file.
+
+.. _merge.groups: http://www.mothur.org/wiki/Merge.groups
+
+ </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/metastats.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,121 @@
+<tool id="mothur_metastats" name="Metastats" version="1.16.0">
+ <description>generate principle components plot data</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='metastats'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.metastats$:'$metastats
+  --outputdir='$logfile.extra_files_path'
+  --READ_cmd='read.otu'
+  #if $input.source == 'similarity':
+   --READ_list=$input.otu
+   #if $otu_group.__str__ != "None" and len($otu_group.__str__) > 0:
+    --READ_group='$otu_group'
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --READ_groups='$input.groups'
+   #end if
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+  #elif $input.source == 'shared':
+   --READ_shared=$input.otu
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --READ_groups='$input.groups'
+   #end if
+  #end if
+  #if int($iters.__str__) > 0:
+   --iters=$iters
+  #end if
+  #if 1 >= $threshold >= 0:
+   --threshold=$threshold
+  #end if
+  #if $design.__str__ != "None" and len($design.__str__) > 0:
+   --design=$design
+   #if $sets.__str__ != "None" and len($sets.__str__) > 0:
+    --sets=$sets
+   #end if
+  #end if
+  --processors=2
+ </command>
+ <inputs>
+  <conditional name="input">
+   <param name="source" type="select" label="Generate metastats for OTUs from">
+    <option value="similarity">OTU list</option>
+    <option value="shared">OTU Shared</option>
+   </param>
+   <when value="similarity">
+     <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List"/>
+     <param name="otu_group" type="data" format="groups" label="read.otu(group=) - Group file for the OTU List"/>
+     <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"/>
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu_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="shared">
+     <param name="otu" type="data" format="shared" label="read.otu(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="unique_value" name="unq_lbl" column="0" />
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+   </when>
+  </conditional>
+  <param name="iters" type="integer" value="1000" label="iters - Number of randomizations (default 1000)"/>
+  <param name="threshold" type="float" value="0.05" label="threshold - significance level to reject null hypotheses (ignored if &#060; 0)"/>
+  <param name="design" type="data" format="tabular" label="design - assign groups to new grouping"
+         help="design has 2 columns: group(col 1) and grouping(col 2) (separated by a TAB character)"/>
+  <param name="sets" type="select" label="sets - group sets to analyze" multiple="true">
+   <options from_dataset="design">
+    <column name="name" index="1"/>
+    <column name="value" index="1"/>
+    <filter type="unique_value" name="unq_grp" column="1" />
+   </options>
+  </param>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="text" name="metastats" label="${tool.name} on ${on_string}: metastats" />
+ </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 metastats_ command generate principle components plot data.
+
+.. _metastats: http://www.mothur.org/wiki/Metastats
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/mothur_wrapper.py	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/mothur_wrapper.py	Tue Jun 07 17:01:07 2011 -0400
@@ -46,6 +46,7 @@
 
 debug = False
 #debug = True
+max_processors = 1
 
 def stop_err( msg ):
     sys.stderr.write( "%s\n" % msg )
@@ -80,6 +81,10 @@
             pass 
         html.write('</pre>\n</body>\n</html>\n')
         html.close()
+    #Overide the processors option
+    def processors_callback(option, opt, value, parser):
+        val = value if value <= max_processors else max_processors
+        setattr(parser.values, option.dest, val)
     #Strip out "(xx)" confidence values from a taxonomy list
     def remove_confidence_callback(option, opt, value, parser):
         # val = "'" + re.sub('\(\d+\)','',value) + "'"
@@ -162,6 +167,7 @@
     cmd_dict = dict()
     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']})
@@ -169,54 +175,60 @@
     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']})
-    cmd_dict['screen.seqs'] = dict({'required' : ['fasta'],  'optional' : ['start','end','maxambig','maxhomop','minlength','maxlength','criteria','optimize','name','group','alignreport']})
-    cmd_dict['trim.seqs'] = dict({'required' : ['fasta'],  'optional' : ['group','oligos','qfile','qaverage','qthreshold','qtrim','flip','maxambig','maxhomop','minlength','maxlength','bdiffs','pdiffs','tdiffs','allfiles']})
+    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']})
+    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']})
-    cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','probs']})
+    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']})
-    cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','template'], 'optional' : ['filter','mask','window','numwanted']})
-    cmd_dict['chimera.check'] = dict({'required' : ['fasta','template'], 'optional' : ['ksize','svg','name','increment']})
-    cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','template'], 'optional' : ['conservation','quantile','filter','mask','window','increment']})
-    cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','template'], 'optional' : ['search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign']})
-    cmd_dict['dist.seqs'] = dict({'required' : ['fasta'],  'optional' : ['calc','countends','output','cutoff']})
-    cmd_dict['pairwise.seqs'] = dict({'required' : ['fasta'],  'optional' : ['align','calc','countends','output','cutoff','match','mismatch','gapopen','gapextend']})
+    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','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']})
-    cmd_dict['summary.single'] = dict({'required' : [], 'optional' : ['calc','abund','size','label','groupmode']})
+    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','processors']})
     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']})
+    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']})
-    cmd_dict['unifrac.weighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random']})
-    cmd_dict['parsimony'] = dict({'required' : [], 'optional' : ['groups','iters','random']})
+    cmd_dict['unifrac.unweighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','processors']})
+    cmd_dict['unifrac.weighted'] = dict({'required' : [], 'optional' : ['groups','iters','distance','random','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','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','processors','scale','rarefy','collect','summary']})
+    cmd_dict['phylo.diversity'] = dict({'required' : [],'optional' : ['groups','iters','freq','processors','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']})
@@ -233,11 +245,12 @@
     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']})
+    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']})
+    cmd_dict['indicator'] = dict({'required' : ['tree',['shared','relabund']], 'optional' : ['groups','label','design']})
     parser = optparse.OptionParser()
     # Options for managing galaxy interaction
     parser.add_option( '--debug', dest='debug', action='store_true', default=False, help='Turn on wrapper debugging to stdout'  )
@@ -299,7 +312,9 @@
     parser.add_option( '--list', dest='list', help='A file containing a list of names' )
     parser.add_option( '--alignreport', dest='alignreport', help='A align.report file ' )
     parser.add_option( '--taxonomy', dest='taxonomy', help='A Taxonomy file' )
+    parser.add_option( '--reftaxonomy', dest='reftaxonomy', help='A Taxonomy file' )
     parser.add_option( '--taxon', dest='taxon',  help='A Taxon' )
+    parser.add_option( '--taxlevel', dest='taxlevel', type="int", help='A Taxonomy level' )
     # parser.add_option( '--taxon', dest='taxon', action="callback", callback=remove_confidence_callback, help='A Taxon' )
     parser.add_option( '--candidate', dest='candidate', help=' file ' )
     parser.add_option( '--template', dest='template', help=' file ' )
@@ -312,6 +327,7 @@
     parser.add_option( '--mismatch', dest='mismatch', type="float", help='Penalty for a mismatch, default is -1.0' )
     parser.add_option( '--gapopen', dest='gapopen', type="float", help='Penalty for a opening, default is -2.0' )
     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( '--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)' )
@@ -336,12 +352,14 @@
     parser.add_option( '--countgaps', dest='countgaps',  help='count gaps as bases' )
     parser.add_option( '--output', dest='output', help='Format for output' )
     parser.add_option( '--method', dest='method', help='Method to use for analysis - cluster' )
+    parser.add_option( '--splitmethod', dest='splitmethod', help='Method to split a distance file - cluster.split' )
     parser.add_option( '--abund', dest='abund', type='int', help='Threshold for rare to Abundant OTU classification' )
     parser.add_option( '--size', dest='size', type='int', help='Size - sample size' )
     parser.add_option( '--groupmode', dest='groupmode', help='Collate groups into one result table' )
     parser.add_option( '--all', dest='all', help='Calculate for all' )
     parser.add_option( '--freq', dest='freq', type="float", help='Frequency of sequences to choose, as fraction is 0.0 - 1.0 or iteration if int > 1' )
     parser.add_option( '--iters', dest='iters', type='int', help='Iterations of randomizations' )
+    parser.add_option( '--maxiters', dest='maxiters', type='int', help='Iterations of randomizations' )
     parser.add_option( '--jumble', dest='jumble',  help='If false, just a collector curve across the samples' )
     parser.add_option( '--conservation', dest='conservation',  help='Template frequency information' )
     parser.add_option( '--quantile', dest='quantile',  help='Template quantile information' )
@@ -350,6 +368,9 @@
     parser.add_option( '--mincov', dest='mincov', type='int', help='Minimum coverage (0-100 percent)' )
     parser.add_option( '--minbs', dest='minbs', type='int', help='Minimum bootstrap support (0-100 percent)' )
     parser.add_option( '--minsnp', dest='minsnp', type='int', help='Minimum SNPs to sample(0-100 percent)' )
+    parser.add_option( '--mindim', dest='mindim', type='int', help='Minimum dimensions' )
+    parser.add_option( '--maxdim', dest='maxdim', type='int', help='Maximum dimensions' )
+    parser.add_option( '--percent', dest='percent', type='int', help='(0-100 percent)' )
     parser.add_option( '--divergence', dest='divergence', type='float', help='Divergence cutoff for chimera determination' )
     parser.add_option( '--sff', dest='sff',  help='Sff file' )
     parser.add_option( '--sfftxt', dest='sfftxt',  help='Generate a sff.txt file' )
@@ -381,6 +402,21 @@
     parser.add_option( '--kimura', dest='kimura', help='' )
     parser.add_option( '--jukes', dest='jukes', help='' )
     parser.add_option( '--matrixout', dest='matrixout', help='' )
+    parser.add_option( '--nseqs', dest='nseqs', help='' )
+    parser.add_option( '--bygroup', dest='bygroup', help='' )
+    parser.add_option( '--design', dest='design', help='' )
+    parser.add_option( '--sets', dest='sets', help='' )
+    parser.add_option( '--metric', dest='metric', help='' )
+    parser.add_option( '--epsilon', dest='epsilon', help='' )
+    parser.add_option( '--axes', dest='axes', help='table of name column followed by columns of axis values' )
+    parser.add_option( '--numaxes', dest='numaxes', help='the number of axes' )
+    parser.add_option( '--metadata', dest='metadata', help='data table with columns of floating-point values' )
+    parser.add_option( '--basis', dest='basis', help='what the summary file represents' )
+    parser.add_option( '--keepfirst', dest='keepfirst', help='trimming' )
+    parser.add_option( '--removelast', dest='removelast', help='trimming' )
+    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' )
     # include read.otu options
     parser.add_option( '--rabund', dest='rabund', help='' )
     parser.add_option( '--sabund', dest='sabund', help='' )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/nmds.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,65 @@
+<tool id="mothur_nmds" name="Nmds" version="1.16.0">
+ <description>generate non-metric multidimensional scaling data</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  --cmd='nmds'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.nmds\.axes$:'$nmds_axes,'^\S+\.nmds\.iters$:'$nmds_iters,'^\S+\.stress\.nmds$:'$stress_nmds
+  --outputdir='$logfile.extra_files_path'
+  --phylip=$dist
+  #if $axes.__str__ != "None" and len($axes.__str__) > 0:
+   --axes=$axes
+  #end if
+  #if int($mindim.__str__) > 0:
+   --mindim=$mindim
+  #end if
+  #if int($maxdim.__str__) >= int($mindim.__str__):
+   --maxdim=$maxdim
+  #end if
+  #if int($iters.__str__) > 0:
+   --iters=$iters
+  #end if
+  #if int($maxiters.__str__) > 0:
+   --maxiters=$maxiters
+  #end if
+  #if float($epsilon.__str__) > 0.0:
+   --epsilon=$epsilon
+  #end if
+ </command>
+ <inputs>
+  <param name="dist" type="data" format="lower.dist,square.dist" label="phylip - Distance Matrix"/>
+  <param name="axes" type="data" format="axes" optional="true" label="axes - a starting configuration"/>
+  <param name="mindim" type="integer" value="2" label="mindim - minimum dimensions (default 2)"/>
+  <param name="maxdim" type="integer" value="2" label="maxdim - maximum dimensions (default 2)"/>
+  <param name="iters" type="integer" value="10" label="iters - Number of random configuration to try (default 10)"/>
+  <param name="maxiters" type="integer" value="500" label="maxiters - Number of iterations to try with each random configuration (default 500)"/>
+  <param name="epsilon" type="float" optional="true" value="1e-12" label="epsilon - acceptable stopping precision (default 1e-12)"/>
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="axes" name="nmds_axes" label="${tool.name} on ${on_string}: nmds.axes"/>
+  <data format="tabular" name="nmds_iters" label="${tool.name} on ${on_string}: nmds.iters"/>
+  <data format="tabular" name="stress_nmds" label="${tool.name} on ${on_string}: stress.nmds"/>
+ </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 nmds_ command generates non-metric multidimensional scaling data
+
+.. _nmds: http://www.mothur.org/wiki/Nmds
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/normalize.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/normalize.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_normalize_shared" name="Normalize.shared" version="1.15.0">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -59,6 +59,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
@@ -75,6 +76,7 @@
   <param name="method" type="select" optional="true" label="method - Normalization method">
    <option value="">Use Default</option>
    <option value="totalgroup">Total Group</option>
+   <option value="zscore">Z Score</option>
   </param>
  </inputs>
  <outputs>
--- a/mothur/tools/mothur/pairwise.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/pairwise.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_pairwise_seqs" name="Pairwise.seqs" version="1.15.0">
+<tool id="mothur_pairwise_seqs" name="Pairwise.seqs" version="1.16.0">
  <description>calculate uncorrected pairwise distances between sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -21,6 +21,7 @@
   #if len($output.__str__) > 0:
    --output=$output
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="fasta" type="data" format="fasta" label="fasta - Fasta"/>
--- a/mothur/tools/mothur/parse.list.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/parse.list.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_parse_list" name="Parse.list" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_parse_list" name="Parse.list" version="1.16.0" force_history_refresh="True">
  <description>Order Sequences by OTU</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/parsimony.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/parsimony.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_parsimony" name="Parsimony" version="1.15.0">
+<tool id="mothur_parsimony" name="Parsimony" version="1.16.0">
  <description>Describes whether two or more communities have the same structure</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -16,6 +16,7 @@
   #if int($iters.__str__) > 0:
    --iters=$iters
   #end if
+  --processors=2
  </command>
  <inputs>
   <param name="tree" type="data" format="tre" label="read.tree(tree=) - Phylogenetic Tree"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/pca.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,102 @@
+<tool id="mothur_pca" name="Pca" version="1.16.0">
+ <description>generate principle components plot data</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  ## 98_sq_phylip_amazon.fn.unique.pca.axes
+  ## 98_sq_phylip_amazon.fn.unique.pca.loadings
+  --cmd='pca'
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.pca.axes$:'$pca_axes,'^\S+\.pca.loadings$:'$pca_loadings
+  --outputdir='$logfile.extra_files_path'
+  --READ_cmd='read.otu'
+  #if $input.source == 'similarity':
+   --READ_list=$input.otu
+   #if $otu_group.__str__ != "None" and len($otu_group.__str__) > 0:
+    --READ_group='$otu_group'
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --READ_groups='$input.groups'
+   #end if
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+  #elif $input.source == 'shared':
+   --READ_shared=$input.otu
+   #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
+    --READ_label='$input.label'
+   #end if
+   #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
+    --READ_groups='$input.groups'
+   #end if
+  #end if
+  $metric
+ </command>
+ <inputs>
+  <conditional name="input">
+   <param name="source" type="select" label="Generate principle components for">
+    <option value="similarity">OTU list</option>
+    <option value="shared">OTU Shared</option>
+   </param>
+   <when value="similarity">
+     <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List"/>
+     <param name="otu_group" type="data" format="groups" label="read.otu(group=) - Group file for the OTU List"/>
+     <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"/>
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu_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="shared">
+     <param name="otu" type="data" format="shared" label="read.otu(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="unique_value" name="unq_lbl" column="0" />
+      </options>
+     </param>
+     <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
+      <options from_dataset="otu">
+       <column name="name" index="1"/>
+       <column name="value" index="1"/>
+       <filter type="unique_value" name="unq_grp" column="1" />
+      </options>
+     </param>
+   </when>
+  </conditional>
+  <param name="metric" type="boolean" truevalue="" falsevalue="--Metric=False" checked="true" label="metric - Calculate pearson correlation coefficient" />
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="axes" name="pca_axes" label="${tool.name} on ${on_string}: pca.axes" />
+  <data format="txt" name="pca_loadings" label="${tool.name} on ${on_string}: pca.loadings" />
+ </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 pca_ command generate principle components plot data.
+
+.. _pca: http://www.mothur.org/wiki/Pca
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/pcoa.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/pcoa.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,9 +1,9 @@
-<tool id="mothur_pcoa" name="Pcoa" version="1.15.0" >
+<tool id="mothur_pcoa" name="Pcoa" version="1.16.0" >
  <description>Principal Coordinate Analysis</description>
  <command interpreter="python">
   mothur_wrapper.py 
   --cmd='pcoa'
-  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.pcoa$:'$pca,'^\S+\.pcoa.loadings$:'$loadings
+  --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.pcoa\.axes$:'$pcoa,'^\S+\.pcoa.loadings$:'$loadings
   --outputdir='$logfile.extra_files_path'
   --phylip=$phylip
  </command>
@@ -12,7 +12,7 @@
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="tabular" name="pca" label="${tool.name} on ${on_string}: PCA" />
+  <data format="axes" name="pcoa" label="${tool.name} on ${on_string}: pcoa.axes" />
   <data format="tabular" name="loadings" label="${tool.name} on ${on_string}: loadings" />
  </outputs>
  <requirements>
--- a/mothur/tools/mothur/phylo.diversity.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/phylo.diversity.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.15.0">
+<tool id="mothur_phylo_diversity" name="Phylo.diversity" version="1.16.0">
  <description>Alpha Diversity calculate unique branch length</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -23,6 +23,7 @@
   $summary
   $collect
   $rarefy
+  --processors=2
  </command>
  <inputs>
   <!-- list,group  or shared -->
--- a/mothur/tools/mothur/phylotype.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/phylotype.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_phylotype" name="Phylotype" version="1.15.0">
+<tool id="mothur_phylotype" name="Phylotype" version="1.16.0">
  <description>Assign sequences to OTUs based on taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -32,7 +32,7 @@
    <option value="9">9</option>
    <option value="10">10</option>
   </param>
-  <param name="cutoff" type="integer" value="-1" label="cutoff - Truncate the taxomony at depth (Ignored if &lt; 0)"/>
+  <param name="cutoff" type="integer" value="-1" label="cutoff - Truncate the taxonomy at depth (Ignored if &lt; 0)"/>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
--- a/mothur/tools/mothur/pre.cluster.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/pre.cluster.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_pre_cluster" name="Pre.cluster" version="1.15.0">
+<tool id="mothur_pre_cluster" name="Pre.cluster" version="1.16.0">
  <description>Remove sequences due to pyrosequencing errors</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/rarefaction.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/rarefaction.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.15.0">
+<tool id="mothur_rarefaction_shared" name="Rarefaction.shared" version="1.16.0">
  <description>Generate inter-sample rarefaction curves for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -60,6 +60,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
@@ -74,7 +75,7 @@
   <param name="iters" type="integer" value="0" label="iters - Number of randomizations"/>
   <param name="jumble" type="boolean" truevalue="" falsevalue="--jumble=false" checked="true" label="jumble"/>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult2" index="2"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/rarefaction.single.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/rarefaction.single.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_rarefaction_single" name="Rarefaction.single" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -24,10 +24,11 @@
   #if int($iters.__str__) > 0:
    --iters=$iters
   #end if
- </command>
   #if float($freq.__str__) > 0:
    --freq=$freq
   #end if
+  --processors=2
+ </command>
  <inputs>
   <param name="otu" type="data" format="list,shared" label="read.otu(list=) - OTU List"/>
   <param name="otu_group" type="data" format="groups" optional="true" label="read.otu(lis =) - Group file for the OTU List"/>
@@ -35,10 +36,11 @@
    <options from_dataset="otu">
     <column name="name" index="0"/>
     <column name="value" index="0"/>
+    <filter type="unique_value" name="unq_lbl" column="0" />
    </options>
   </param>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult2" index="2"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/read.otu.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/read.otu.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_read_otu" name="Read.otu" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,7 +9,6 @@
    --datasetid='$logfile.id' --new_file_path='$__new_file_path__' 
    --new_datasets='^\S+?\.((\S+)\.rabund)$:rabund'
   #end if
-  --cmd='read.otu'
   --list=$otu
   --group=$otu_group
   #if $label.__str__ != "None" and len($label.__str__) > 0:
--- a/mothur/tools/mothur/remove.groups.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/remove.groups.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_groups" name="Remove.groups" version="1.15.0">
+<tool id="mothur_remove_groups" name="Remove.groups" version="1.16.0">
  <description>Remove groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/remove.lineage.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/remove.lineage.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_lineage" name="Remove.lineage" version="1.15.0">
+<tool id="mothur_remove_lineage" name="Remove.lineage" version="1.16.0">
  <description>Picks by taxon</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/remove.otus.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/remove.otus.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_otus" name="Remove.otus" version="1.15.0">
+<tool id="mothur_remove_otus" name="Remove.otus" version="1.16.0">
  <description>Remove otus containing sequences from specified groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/mothur/remove.rare.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,93 @@
+<tool id="mothur_remove_rare" name="Remove.rare" version="1.16.0">
+ <description>Remove rare OTUs</description>
+ <command interpreter="python">
+  mothur_wrapper.py 
+  ## output {group_file_name}.pick.{label}.groups   {list_file_name}.pick.{label}.list 
+  #import re, os.path
+  #set results = ["'^mothur.\S+\.logfile$:'" + $logfile.__str__]
+  --cmd='remove.rare'
+  --outputdir='$logfile.extra_files_path'
+  #if isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('shared').__class__):
+   --shared=$otu
+   #if $group_in.__str__ != "None" and len($group_in.__str__) > 0:
+    --group=$group_in
+   #end if
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $pick_shared.__str__]
+  #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('rabund').__class__):
+   --rabund=$otu
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $pick_rabund.__str__]
+  #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('sabund').__class__):
+   --sabund=$otu
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $pick_sabund.__str__]
+  #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('list').__class__):
+   --list=$otu
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $pick_list.__str__]
+   $bygroup
+  #end if
+  #if $label.__str__ != "None" and len($label.__str__) > 0:
+   --label=$label
+  #end if
+  #if $groups.__str__ != "None" and len($groups.__str__) > 0:
+   --groups=$groups
+  #end if
+  --nseqs=$nseqs
+  --result=#echo ','.join($results)
+ </command>
+ <inputs>
+  <param name="otu" type="data" format="list,rabund,sabund,shared" label="shared/relabund - Otu dataset"/>
+  <param name="group_in" type="data" format="groups" label="group - Groups" optional="true"/>
+  <param name="label" type="select" optional="true" label="label - OTU Labels" >
+   <options from_dataset="otu">
+    <column name="name" index="0"/>
+    <column name="value" index="0"/>
+    <filter type="unique_value" name="unq_lbl" column="0" />
+   </options>
+  </param>
+  <param name="groups" type="select" optional="true" label="groups - Pick groups to annalyze" multiple="true">
+   <options from_dataset="otu">
+    <column name="name" index="1"/>
+    <column name="value" index="1"/>
+    <filter type="unique_value" name="unq_grp" column="1" />
+   </options>
+  </param>
+  <param name="nseqs" type="integer" value="1" label="nseqs - iNumber of sequences cutoff for an otu to be deemed rare"/> 
+  <param name="bygroup" type="boolean" truevalue="--bygroup=true" falsevalue="" checked="false" label="bygroup - Remove any OTU that has nseqs or fewer sequences across all groups"/> 
+ </inputs>
+ <outputs>
+  <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
+  <data format="list" name="pick_list" label="${tool.name} on ${on_string}: pick.list">
+   <filter>otu.datatype == 'list'</filter>
+  </data>
+  <data format="rabund" name="pick_rabund" label="${tool.name} on ${on_string}: pick.rabund">
+   <filter>otu.datatype == 'rabund'</filter>
+  </data>
+  <data format="sabund" name="pick_sabund" label="${tool.name} on ${on_string}: pick.sabund">
+   <filter>otu.datatype == 'sabund'</filter>
+  </data>
+  <data format="shared" name="pick_shared" label="${tool.name} on ${on_string}: pick.shared">
+   <filter>otu.datatype == 'shared'</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 remove.rare_ command reads one of the following file types: list, rabund, sabund or shared file. It outputs a new file after removing the rare otus.
+
+.. _remove.rare: http://www.mothur.org/wiki/Remove.rare
+
+
+ </help>
+</tool>
--- a/mothur/tools/mothur/remove.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/remove.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_seqs" name="Remove.seqs" version="1.15.0">
+<tool id="mothur_remove_seqs" name="Remove.seqs" version="1.16.0">
  <description>Remove sequences by name</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -41,8 +41,8 @@
  </command>
  <inputs>
   <param name="accnos" type="data" format="accnos" label="accnos - Accession Names"/>
-  <param name="fasta_in" type="data" format="fasta" optional="true" label="fasta - Fasta Sequences"/>
-  <param name="qfile_in" type="data" format="qual" optional="true" label="qfile - Fasta Quality"/>
+  <param name="fasta_in" type="data" format="fasta,align" optional="true" label="fasta - Fasta Sequences"/>
+  <param name="qfile_in" type="data" format="qual,qual454" optional="true" label="qfile - Fasta Quality"/>
   <param name="name_in" type="data" format="names" optional="true" label="name - Sequences Name reference"/>
   <param name="group_in" type="data" format="groups" optional="true" label="group - Sequences Groups"/>
   <param name="alignreport_in" type="data" format="align.report" optional="true" label="alignreport - Align Report"/>
@@ -53,12 +53,23 @@
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
   <!-- format should be set to match input -->
-  <data format="fasta" name="fasta_out" label="${tool.name} on ${on_string}: pick.fasta">
+  <!-- There should be a  format_source   attribute
+  <data format_source="fasta_in" metadata_source="fasta_in" name="fasta_out" label="${tool.name} on ${on_string}: pick.${fasta_in.datatype.file_ext}">
    <filter>fasta_in != None</filter>
   </data>
+  -->
+  <data format="fasta" metadata_source="fasta_in" name="fasta_out" label="${tool.name} on ${on_string}: pick.${fasta_in.datatype.file_ext}">
+   <filter>fasta_in != None</filter>
+   <change_format>
+     <when input="${fasta_in.datatype.file_ext}" value="align" format="align" />
+   </change_format>
+  </data>
   <!-- format should be set to match input -->
   <data format="qual" name="qfile_out" label="${tool.name} on ${on_string}: pick.qfile">
    <filter>qfile_in != None</filter>
+   <change_format>
+     <when input="${qfile_in.datatype.file_ext}" value="qual454" format="qual454" />
+   </change_format>
   </data>
   <data format="names" name="name_out" label="${tool.name} on ${on_string}: pick.names">
    <filter>name_in != None</filter>
--- a/mothur/tools/mothur/reverse.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/reverse.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_reverse_seqs" name="Reverse.seqs" version="1.15.0">
+<tool id="mothur_reverse_seqs" name="Reverse.seqs" version="1.16.0">
  <description>Reverse complement the sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/screen.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/screen.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_screen_seqs" name="Screen.seqs" version="1.15.0">
+<tool id="mothur_screen_seqs" name="Screen.seqs" version="1.16.0">
  <description>Screen sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -47,6 +47,7 @@
    #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.good.\2',$os.path.basename($input_alignreport.__str__)) + ":'" + $output_alignreport.__str__]
   #end if
   --result=#echo ','.join($results)
+  --processors=2
  </command>
  <inputs>
   <param name="input" type="data" format="fasta,align" label="fasta - Fasta to screen"/>
@@ -71,19 +72,10 @@
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
-  <data format="fasta" name="out_file" label="${tool.name} on ${on_string}: good.fasta" >
+  <data format="fasta" name="out_file" label="${tool.name} on ${on_string}: good.${input.datatype.file_ext}" >
    <change_format>
     <when input_dataset="input" attribute="ext" value="align" format="align"/>
    </change_format>
-   <!--
-   <actions>
-    <conditional name="input">
-     <when datatype_isinstance="align">
-      <action type="format" default="align"/>
-     </when>
-    </conditional>
-   </actions>
-   -->
   </data>
   <data format="accnos" name="bad_accnos" label="${tool.name} on ${on_string}: bad.accnos" />
   <data format="names" name="output_names" label="${tool.name} on ${on_string}: names" >
--- a/mothur/tools/mothur/sffinfo.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/sffinfo.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_sffinfo" name="Sffinfo" version="1.15.0">
+<tool id="mothur_sffinfo" name="Sffinfo" version="1.16.0">
  <description>Summarize the quality of sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/split.abund.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/split.abund.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_split_abund" name="Split.abund" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/split.groups.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/split.groups.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_split_groups" name="Split.groups" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/sub.sample.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/sub.sample.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_sub_sample" name="Sub.sample" version="1.15.0">
+<tool id="mothur_sub_sample" name="Sub.sample" version="1.16.0">
  <description>Create a sub sample</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -20,6 +20,7 @@
     #if $input.use_group.groups.__str__ != "None" and len($input.use_group.groups.__str__) > 0:
      --groups=$input.use_group.groups
     #end if
+    $input.use_group.persample
    #end if
   #elif $input.format == "list":
    --list=$input.otu_in
@@ -30,6 +31,7 @@
     #if $input.use_group.groups.__str__ != "None" and len($input.use_group.groups.__str__) > 0:
      --groups=$input.use_group.groups
     #end if
+    $input.use_group.persample
    #end if
    #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
     --label=$input.label
@@ -88,6 +90,7 @@
         <filter type="unique_value" name="unq_grp" column="1" />
        </options>
       </param>
+      <param name="persample" type="boolean" truevalue="--persample=true" falsevalue="" checked="false" label="persample - select subsample of the same size from each of the groups"/>
      </when> <!-- yes -->
     </conditional> <!-- use_group -->
    </when> <!-- fasta -->
@@ -108,6 +111,7 @@
         <filter type="unique_value" name="unq_grp" column="1" />
        </options>
       </param>
+      <param name="persample" type="boolean" truevalue="--persample=true" falsevalue="" checked="false" label="persample - select subsample of the same size from each of the groups"/>
      </when> <!-- yes -->
     </conditional> <!-- use_group -->
     <param name="label" type="select" label="label - OTU Labels" optional="true" multiple="true">
@@ -130,6 +134,7 @@
      <options from_dataset="otu_in">
       <column name="name" index="0"/>
       <column name="value" index="0"/>
+      <filter type="unique_value" name="unq_lbl" column="0" />
      </options>
     </param>
    </when> <!-- shared -->
--- a/mothur/tools/mothur/summary.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/summary.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_summary_seqs" name="Summary.seqs" version="1.15.0">
+<tool id="mothur_summary_seqs" name="Summary.seqs" version="1.16.0">
  <description>Summarize the quality of sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/summary.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/summary.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_summary_shared" name="Summary.shared" version="1.15.0"  force_history_refresh="True">
+<tool id="mothur_summary_shared" name="Summary.shared" version="1.16.0"  force_history_refresh="True">
  <description>Summary of calculator values for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -83,7 +83,7 @@
    </when>
   </conditional>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult" index="1"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/summary.single.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/summary.single.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_summary_single" name="Summary.single" version="1.15.0" force_history_refresh="True">
+<tool id="mothur_summary_single" name="Summary.single" version="1.16.0" force_history_refresh="True">
  <description>Summary of calculator values for OTUs</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -25,6 +25,7 @@
    --size=$size
   #end if
   $groupmode
+  --processors=2
  </command>
  <inputs>
   <param name="otu" type="data" format="list" label="read.otu(list=) - OTU List"/>
@@ -36,7 +37,7 @@
    </options>
   </param>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult" index="1"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/tree.shared.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/tree.shared.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_tree_shared" name="Tree.shared" version="1.15.0" force_history_refresh="True">
+<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>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -59,6 +59,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
@@ -71,7 +72,7 @@
    </when>
   </conditional>
   <param name="calc" type="select" label="calc - Calculators (Uses defaults if none selected)" multiple="true">
-   <options from_file="mothur_calulators.loc">
+   <options from_file="mothur_calculators.loc">
      <column name="mult2" index="2"/>
      <column name="name" index="0"/>
      <column name="value" index="0"/>
--- a/mothur/tools/mothur/trim.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/trim.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_trim_seqs" name="Trim.seqs" version="1.15.0">
+<tool id="mothur_trim_seqs" name="Trim.seqs" version="1.16.0">
  <description>Trim sequences - primers, barcodes, quality</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -17,6 +17,12 @@
   #if $maxhomop > 0:
    --maxhomop=$maxhomop 
   #end if
+  #if $keepfirst > 0:
+   --keepfirst=$keepfirst 
+  #end if
+  #if $removelast > 0:
+   --removelast=$removelast 
+  #end if
   #if $oligo.add == "yes":
    --oligos=$oligo.oligos
    #if $oligo.bdiffs > 0:
@@ -48,43 +54,47 @@
   <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)"/>
   <param name="maxhomop" type="integer" value="0" label="maxhomop - Maximum homopolymers (default 0, ignored if &#060; 1)"/>
+  <param name="keepfirst" type="integer" value="0" label="keepfirst - ignored if &#060; 0)" 
+         help="trims the sequence to the first keepfirst number of bases after the barcode or primers are removed, before the sequence is checked to see if it meets the other requirements"/>
+  <param name="removelast" type="integer" value="0" label="removelast - ignored if &#060; 0)" 
+         help="removes the last removelast number of bases after the barcode or primers are removed, before the sequence is checked to see if it meets the other requirements."/>
   <conditional name="oligo">
-   <param name="add" type="select" label="add - Trim with an oligos file" help="">
+   <param name="add" type="select" label="add - trim with an oligos file" help="">
     <option value="no">no</option>
     <option value="yes">yes</option>
    </param>
    <when value="no"/>
    <when value="yes">
-    <param name="oligos" type="data" format="oligos" label="oligos - Oligos - barcodes and primers"/>
-    <param name="bdiffs" type="integer" value="0" label="bdiffs - Number of differences to allow in the barcode (default 0)"/>
-    <param name="pdiffs" type="integer" value="0" label="pdiffs - Number of differences to allow in the primer (default 0)"/>
-    <param name="tdiffs" type="integer" value="0" label="tdiffs - Total number of differences to allow in primer and barcode (ignored if &#060; 1)"/>
+    <param name="oligos" type="data" format="oligos" label="oligos - oligos - barcodes and primers"/>
+    <param name="bdiffs" type="integer" value="0" label="bdiffs - number of differences to allow in the barcode (default 0)"/>
+    <param name="pdiffs" type="integer" value="0" label="pdiffs - number of differences to allow in the primer (default 0)"/>
+    <param name="tdiffs" type="integer" value="0" label="tdiffs - total number of differences to allow in primer and barcode (ignored if &#060; 1)"/>
    </when>
   </conditional>
   <conditional name="qual">
-   <param name="add" type="select" label="add - Trim based on a quality file" help="">
+   <param name="add" type="select" label="add - trim based on a quality file" help="">
     <option value="no">no</option>
     <option value="yes">yes</option>
    </param>
    <when value="no"/>
    <when value="yes">
-    <param name="qfile" type="data" format="qual454" label="qfile - 454 Quality File"/>
-    <param name="qaverage" type="integer" value="0" label="qaverage - Remove sequences that have an average base quality below this value (ignored if &#060; 1)"/>
-    <param name="qthreshold" type="integer" value="0" label="qthreshold - Remove sequences that have any base quality below this value (ignored if &#060; 1)"/>
-    <param name="qtrim" type="boolean" truevalue="--qtrim=true" falsevalue="" checked="false" label="qtrim - Trim sequences below qthreshold and put in trim output, else put in scrap "/>
+    <param name="qfile" type="data" format="qual454" label="qfile - 454 quality file"/>
+    <param name="qaverage" type="integer" value="0" label="qaverage - remove sequences that have an average base quality below this value (ignored if &#060; 1)"/>
+    <param name="qthreshold" type="integer" value="0" label="qthreshold - remove sequences that have any base quality below this value (ignored if &#060; 1)"/>
+    <param name="qtrim" type="boolean" truevalue="--qtrim=true" falsevalue="" checked="false" label="qtrim - trim sequences below qthreshold and put in trim output, else put in scrap "/>
    </when>
   </conditional>
-  <param name="flip" type="boolean" truevalue="--flip=true" falsevalue="" checked="false" label="flip - Reverse Complement the trimmed sequences"/>
+  <param name="flip" type="boolean" truevalue="--flip=true" falsevalue="" checked="false" label="flip - reverse complement the trimmed sequences"/>
  </inputs>
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
   <data format="fasta" name="trim_fasta" label="${tool.name} on ${on_string}: trim.fasta"/>
   <data format="qual" name="trim_qual" label="${tool.name} on ${on_string}: trim.qual">
-   <filter>qfile != None and len(qfile) > 0</filter>
+   <filter>qfile != none and len(qfile) > 0</filter>
   </data>
   <data format="fasta" name="scrap_fasta" label="${tool.name} on ${on_string}: scrap.fasta"/>
   <data format="qual454" name="scrap_qual" label="${tool.name} on ${on_string}: scrap.qual">
-   <filter>qfile != None and len(qfile) > 0</filter>
+   <filter>qfile != none and len(qfile) > 0</filter>
   </data>
   <data format="groups" name="groups_file" label="${tool.name} on ${on_string}: groups"/>
  </outputs>
@@ -94,7 +104,7 @@
  <tests>
  </tests>
  <help>
-**Mothur Overview**
+**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,
--- a/mothur/tools/mothur/unifrac.unweighted.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/unifrac.unweighted.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.15.0">
+<tool id="mothur_unifrac_unweighted" name="unifrac.unweighted" version="1.16.0">
  <description>Describes whether two or more communities have the same structure</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -23,6 +23,7 @@
   #if $distance.__str__ != "false":
    --distance=$distance
   #end if
+  --processors=2
  </command>
  <inputs>
   <!-- list,group  or shared -->
--- a/mothur/tools/mothur/unifrac.weighted.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/unifrac.weighted.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_unifrac_weighted" name="unifrac.weighted" version="1.15.0">
+<tool id="mothur_unifrac_weighted" name="unifrac.weighted" version="1.16.0">
  <description>Describes whether two or more communities have the same structure</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -23,6 +23,7 @@
   #if $distance.__str__ != "false":
    --distance=$distance
   #end if
+  --processors=2
  </command>
  <inputs>
   <!-- list,group  or shared -->
--- a/mothur/tools/mothur/unique.seqs.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/unique.seqs.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_unique_seqs" name="Unique.seqs" version="1.15.0">
+<tool id="mothur_unique_seqs" name="Unique.seqs" version="1.16.0">
  <description>Return unique sequences</description>
  <command interpreter="python">
   mothur_wrapper.py 
--- a/mothur/tools/mothur/venn.xml	Tue Jun 07 16:54:12 2011 -0400
+++ b/mothur/tools/mothur/venn.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -1,4 +1,4 @@
-<tool id="mothur_venn" name="Venn" version="1.15.0"  force_history_refresh="True">
+<tool id="mothur_venn" name="Venn" version="1.16.0"  force_history_refresh="True">
  <description>Generate Venn diagrams gor groups </description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -74,6 +74,7 @@
       <options from_dataset="otu">
        <column name="name" index="0"/>
        <column name="value" index="0"/>
+       <filter type="unique_value" name="unq_lbl" column="0" />
       </options>
      </param>
      <param name="groups" type="select" label="groups - Groups to consider" multiple="true">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mothur/tools/suite_config.xml	Tue Jun 07 17:01:07 2011 -0400
@@ -0,0 +1,237 @@
+<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>