changeset 12:370b3fc4e7d3

Mothur galaxy tool updates for Mothur version 1.21.0, fix help section warnings
author Jim Johnson <jj@umn.edu>
date Tue, 09 Aug 2011 11:39:27 -0500
parents 11867a45a43d
children 4f797d3eee3a
files mothur/tools/mothur/chimera.slayer.xml mothur/tools/mothur/classify.seqs.xml mothur/tools/mothur/get.groups.xml mothur/tools/mothur/get.seqs.xml mothur/tools/mothur/get.sharedseqs.xml mothur/tools/mothur/indicator.xml mothur/tools/mothur/mothur_wrapper.py mothur/tools/mothur/otu.hierarchy.xml mothur/tools/mothur/remove.groups.xml mothur/tools/mothur/remove.lineage.xml mothur/tools/mothur/remove.otus.xml mothur/tools/mothur/remove.seqs.xml mothur/tools/mothur/sub.sample.xml mothur/tools/mothur/summary.single.xml
diffstat 14 files changed, 112 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/mothur/tools/mothur/chimera.slayer.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/chimera.slayer.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.20.0">
+<tool id="mothur_chimera_slayer" name="Chimera.slayer" version="1.21.0">
  <description>Find putative chimeras using slayer</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -32,6 +32,7 @@
    $options.trim
    $options.split
   #end if
+  ## --blastlocation=path_to_blast
   --processors=2
  </command>
  <inputs>
@@ -115,7 +116,7 @@
 
  (A) the ends of a query sequence are searched against an included database of reference chimera-free 16S sequences to identify potential parents of a chimera; 
  (B) candidate parents of a chimera are selected as those that form a branched best scoring alignment to the NAST-formatted query sequence; 
- (C) the NAST alignment of the query sequence is improved in a `chimera-aware' profile-based NAST realignment to the selected reference parent sequences; and 
+ (C) the NAST alignment of the query sequence is improved in a 'chimera-aware' profile-based NAST realignment to the selected reference parent sequences; and 
  (D) an evolutionary framework is used to flag query sequences found to exhibit greater sequence homology to an in silico chimera formed between any two of the selected reference parent sequences.
 
 Note: 
--- a/mothur/tools/mothur/classify.seqs.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/classify.seqs.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_classify_seqs" name="Classify.seqs" version="1.19.0">
+<tool id="mothur_classify_seqs" name="Classify.seqs" version="1.21.0">
  <description>Assign sequences to taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -97,6 +97,8 @@
      <param name="algorithm" type="select" label="algorithm - " help="">
       <option value="kmer">Kmer (default)</option>
       <option value="blast">BLAST</option>
+      <option value="suffix">Suffix Tree</option>
+      <option value="distance">Distance</option>
      </param>
      <when value="kmer">
       <param name="ksize" type="integer" value="8" label="ksize - kmer length between 5 and 12"/>
--- a/mothur/tools/mothur/get.groups.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/get.groups.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_get_groups" name="Get.groups" version="1.20.0">
+<tool id="mothur_get_groups" name="Get.groups" version="1.21.0">
  <description>Select groups</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,43 +9,61 @@
   --cmd='get.groups'
   --outputdir='$logfile.extra_files_path'
   --group=$group_in
-  #if $groups.__str__ != "None" and len($groups.__str__) > 0:
-   --groups=$groups
-  #end if
-  #if $accnos.__str__ != "None" and len($accnos.__str__) > 0:
-   --accnos=$accnos
+  #if $groupnames.source == 'groups':
+   #if $groupnames.groups.__str__ != "None" and len($groupnames.groups.__str__) > 0:
+    --groups=$groupnames.groups
+   #end if
+  #else
+   #if $groupnames.accnos.__str__ != "None" and len($groupnames.accnos.__str__) > 0:
+    --accnos=$groupnames.accnos
+   #end if
   #end if
   #if $fasta_in.__str__ != "None" and len($fasta_in.__str__) > 0:
    --fasta=$fasta_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
   #end if
   #if $name_in.__str__ != "None" and len($name_in.__str__) > 0:
    --name=$name_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($name_in.__str__)) + ":'" + $name_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($name_in.__str__)) + ":'" + $name_out.__str__]
   #end if
   #if $list_in.__str__ != "None" and len($list_in.__str__) > 0:
    --list=$list_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
+  #end if
+  #if $shared_in.__str__ != "None" and len($shared_in.__str__) > 0:
+   --shared=$shared_in
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.*\\.pick\\.\2',$os.path.basename($shared_in.__str__)) + ":'" + $shared_out.__str__]
   #end if
   #if $taxonomy_in.__str__ != "None" and len($taxonomy_in.__str__) > 0:
    --taxonomy=$taxonomy_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($taxonomy_in.__str__)) + ":'" + $taxonomy_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($taxonomy_in.__str__)) + ":'" + $taxonomy_out.__str__]
   #end if
   --result=#echo ','.join($results)
  </command>
  <inputs>
   <param name="group_in" type="data" format="groups" label="group - Groups"/>
-  <param name="groups" type="select" optional="true" label="groups - Pick groups to include" multiple="true">
-   <options from_dataset="group_in">
-    <column name="name" index="1"/>
-    <column name="value" index="1"/>
-    <filter type="unique_value" name="unq_grp" column="1" />
-   </options>
-  </param>
-  <param name="accnos" type="data" format="accnos" optional="true" label="accnos - Accession Names"/>
-  <param name="fasta_in" type="data" format="fasta" optional="true" label="fasta - Fasta Sequences"/>
+  <conditional name="groupnames">
+   <param name="source" type="select" label="Select Group Names from">
+    <option value="groups">A List of Group Names</option>
+    <option value="accnos">A History Group Name Accnos Dataset</option>
+   </param>
+   <when value="groups">
+    <param name="groups" type="select" label="groups - Pick groups to include" multiple="true">
+     <options from_dataset="group_in">
+      <column name="name" index="1"/>
+      <column name="value" index="1"/>
+      <filter type="unique_value" name="unq_grp" column="1" />
+     </options>
+    </param>
+   </when>
+   <when value="accnos">
+    <param name="accnos" type="data" format="accnos" label="accnos - Group Names from your history"/>
+   </when>
+  </conditional>
+  <param name="fasta_in" type="data" format="fasta,align" optional="true" label="fasta - Fasta Sequences"/>
   <param name="name_in" type="data" format="names" optional="true" label="name - Sequences Name reference"/>
   <param name="list_in" type="data" format="list" optional="true" label="list - OTU List"/>
+  <param name="shared_in" type="data" format="shared" optional="true" label="shared - OTU Shared"/>
   <param name="taxonomy_in" type="data" format="seq.taxonomy" optional="true" label="taxonomy - Taxonomy"/>
  </inputs>
  <outputs>
@@ -61,6 +79,9 @@
   <data format="list" name="list_out" label="${tool.name} on ${on_string}: pick.list">
    <filter>list_in != None</filter>
   </data>
+  <data format="shared" name="shared_out" label="${tool.name} on ${on_string}: pick.shared">
+   <filter>shared_in != None</filter>
+  </data>
   <data format="seq.taxonomy" name="taxonomy_out" label="${tool.name} on ${on_string}: pick.taxonomy">
    <filter>taxonomy_in != None</filter>
   </data>
@@ -81,8 +102,12 @@
 
 **Command Documenation**
 
-The get.groups_ command selects sequences from a specific group or set of groups from the following file types: fasta, name, group, list, taxonomy. 
+The get.groups_ command selects sequences from a specific group or set of groups from the following file types: fasta, fasta, name_, group_, list_, taxonomy_.
 
+.. _name: http://www.mothur.org/wiki/Name_file
+.. _group: http://www.mothur.org/wiki/Group_file
+.. _list: http://www.mothur.org/wiki/List_file
+.. _taxonomy: http://www.mothur.org/wiki/Taxonomy_outline
 .. _get.groups: http://www.mothur.org/wiki/Get.groups
 
 
--- a/mothur/tools/mothur/get.seqs.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/get.seqs.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -102,6 +102,5 @@
 .. _list.seqs: http://www.mothur.org/wiki/list.seqs
 .. _get.seqs: http://www.mothur.org/wiki/Get.seqs
 
-
  </help>
 </tool>
--- a/mothur/tools/mothur/get.sharedseqs.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/get.sharedseqs.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -98,7 +98,7 @@
 
 **Command Documenation**
 
-The get.sharedseqs_ command takes a list and group file and outputs a *.shared.seqs file for each distance. This is useful for those cases where you might be interested in identifying sequences that are either unique or shared by specific groups, which you could then classify.
+The get.sharedseqs_ command takes a list and group file and outputs a .shared.seqs file for each distance. This is useful for those cases where you might be interested in identifying sequences that are either unique or shared by specific groups, which you could then classify.
 
 .. _get.sharedseqs: http://www.mothur.org/wiki/Get.sharedseqs
 
--- a/mothur/tools/mothur/indicator.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/indicator.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_indicator" name="Indicator" version="1.20.0">
+<tool id="mothur_indicator" name="Indicator" version="1.21.0">
  <description>Identify indicator "species" for nodes on a tree</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -6,7 +6,9 @@
   #import re, os.path
   --cmd='indicator'
   --outputdir='$logfile.extra_files_path'
-  --tree=$tree
+  #if $tree.__str__ != "None" and len($tree.__str__) > 0:
+   --tree=$tree
+  #end if
   #if isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('shared').__class__):
    --shared=$otu
   #elif isinstance($otu.datatype, $__app__.datatypes_registry.get_datatype_by_extension('relabund').__class__):
@@ -24,7 +26,6 @@
   --result='^mothur.\S+\.logfile$:'$logfile,'^\S+\.indicator.tre$:'$tree_out,'^\S+\.indicator.summary$:'$summary
  </command>
  <inputs>
-  <param name="tree" type="data" format="tree" label="tree - A newick-formatted tree"/>
   <param name="otu" type="data" format="shared,relabund" label="shared/relabund - Otu dataset"/>
   <param name="label" type="select" optional="true" label="label - OTU Labels" >
    <options from_dataset="otu">
@@ -42,13 +43,17 @@
     <filter type="unique_value" name="unq_grp" column="1" />
    </options>
   </param>
+  <param name="tree" type="data" format="tree"  optional="true" label="tree - A newick-formatted tree" 
+         help="Optional, if a design file is provided."/>
   <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" />
-  <data format="tre" name="tree_out" label="${tool.name} on ${on_string}: indicator.tre"/>
-  <data format="txt" name="summary" label="${tool.name} on ${on_string}: indicator.summary"/>
+  <data format="tre" name="tree_out" label="${tool.name} on ${on_string}: indicator.tre">
+   <filter>tree != None</filter>
+  </data>
+  <data format="tabular" name="summary" label="${tool.name} on ${on_string}: indicator.summary"/>
  </outputs>
  <requirements>
   <requirement type="binary">mothur</requirement>
@@ -66,9 +71,10 @@
 
 **Command Documenation**
 
-The indicator_ command reads a shared_ or relabund file and a tree file, and outputs a .indicator.tre and .indicator.summary file. The new tree contains labels at each internal node. The label is the node number so you can relate the tree to the summary file. The summary file lists the indicator value for each OTU for each node.
+The indicator_ command reads a shared_ or relabund_ file and a tree file, and outputs a .indicator.summary file and when a tree file is given a .indicator.tre file. The summary file lists the indicator value for each OTU for each node.  The new tree contains labels at each internal node. The label is the node number so you can relate the tree to the summary file. 
 
 .. _shared: http://www.mothur.org/wiki/Shared_file
+.. _relabund: http://www.mothur.org/wiki/Get.relabund
 .. _indicator: http://www.mothur.org/wiki/Indicator
 
 
--- a/mothur/tools/mothur/mothur_wrapper.py	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/mothur_wrapper.py	Tue Aug 09 11:39:27 2011 -0500
@@ -176,21 +176,22 @@
     """
     cmd_dict = dict()
     cmd_dict['align.check'] = dict({'required' : ['fasta','map']})
-    cmd_dict['align.seqs'] = dict({'required' : ['fasta','reference',], 'optional' : ['search','ksize','align','match','mismatch','gapopen','gapextend','flip','threshold','processors']})
+    cmd_dict['align.seqs'] = dict({'required' : ['fasta','reference',], 'optional' : ['search','ksize','align','match','mismatch','gapopen','gapextend','flip','threshold','save','processors']})
     cmd_dict['amova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
     cmd_dict['anosim'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
     cmd_dict['bin.seqs'] = dict({'required' : ['list','fasta'], 'optional' : ['name','label','group']})
     cmd_dict['bootstrap.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','groups','iters','label']})
     #catchall
     cmd_dict['chimera.bellerophon'] = dict({'required' : ['fasta'], 'optional' : ['filter','correction','window','increment','processors']})
-    cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','reference'], 'optional' : ['filter','mask','window','numwanted','processors']})
-    cmd_dict['chimera.check'] = dict({'required' : ['fasta','reference'], 'optional' : ['ksize','svg','name','increment','processors']})
-    cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','reference'], 'optional' : ['conservation','quantile','filter','mask','window','increment','processors']})
-    cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','reference'], 'optional' : ['name','search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign','split','processors']})
+    cmd_dict['chimera.ccode'] = dict({'required' : ['fasta','reference'], 'optional' : ['filter','mask','window','numwanted','save','processors']})
+    cmd_dict['chimera.check'] = dict({'required' : ['fasta','reference'], 'optional' : ['ksize','svg','name','increment','save','processors']})
+    cmd_dict['chimera.pintail'] = dict({'required' : ['fasta','reference'], 'optional' : ['conservation','quantile','filter','mask','window','increment','save','processors']})
+    cmd_dict['chimera.slayer'] = dict({'required' : ['fasta','reference'], 'optional' : ['name','search','window','increment','match','mismatch','numwanted','parents','minsim','mincov','iters','minbs','minsnp','divergence','realign','split','blastlocation','save','processors']})
     cmd_dict['chimera.uchime'] = dict({'required' : ['fasta'], 'optional' : ['name','reference','abskew','chimealns','minh','mindiv','xn','dn','xa','chunks','minchunk','idsmoothwindow','minsmoothid','maxp','skipgaps','skipgaps2','minlen','maxlen','ucl','queryfract','processors']})
     cmd_dict['chop.seqs'] = dict({'required' : ['fasta','numbases'],  'optional' : ['countgaps','keep','short']})
     cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','group','probs','basis','reftaxonomy']})
-    cmd_dict['classify.seqs'] = dict({'required' : ['fasta','reference','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','processors']})
+    cmd_dict['classify.seqs'] = dict({'required' : ['fasta','reference','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','save','processors']})
+    #clear.memory ## not needed in galaxy framework
     cmd_dict['clearcut'] = dict({'required' : [['phylip','fasta']],'optional' : ['seed','norandom','shuffle','neighbor','expblen','expdist','ntrees','matrixout','kimura','jukes','protein','DNA']})
     cmd_dict['cluster'] = dict({'required' : [['phylip','column']] ,  'optional' : ['name','method','cutoff','hard','precision','sim','showabund','timing']})
     cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] ,  'optional' : ['name','method','cutoff','hard','sim','precision']})
@@ -209,7 +210,7 @@
     cmd_dict['fastq.info'] = dict({'required' : ['fastq'], 'optional' : []})
     cmd_dict['filter.seqs'] = dict({'required' : ['fasta'],  'optional' : ['vertical','trump','soft','hard','processors']})
     cmd_dict['get.group'] = dict({'required' : ['shared'], 'optional' : []})
-    cmd_dict['get.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
+    cmd_dict['get.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','shared','taxonomy']})
     cmd_dict['get.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
     cmd_dict['get.otulist'] = dict({'required' : ['list'], 'optional' : ['label','sort']})
     cmd_dict['get.oturep'] = dict({'required' : ['fasta','list',['phylip','column']], 'optional' : ['name','label','group','groups','sorted','precision','cutoff','large','weighted']})
@@ -223,7 +224,7 @@
     cmd_dict['heatmap.bin'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['label','groups','scale','sorted','numotu','fontsize']})
     cmd_dict['heatmap.sim'] = dict({'required' : [['shared','phylip','column']], 'optional' : ['calc','name','label','groups']})
     cmd_dict['homova'] = dict({'required' : ['phylip','design'] ,  'optional' : ['alpha','iters']})
-    cmd_dict['indicator'] = dict({'required' : ['tree',['shared','relabund']], 'optional' : ['groups','label','design']})
+    cmd_dict['indicator'] = dict({'required' : [['tree','design'],['shared','relabund']], 'optional' : ['groups','label']})
     cmd_dict['libshuff'] = dict({'required' : ['phylip','group'],'optional' : ['groups','iters','form','sim','step','cutoff']})
     cmd_dict['list.seqs'] = dict({'required' : [['fasta','name','group','list','alignreport','taxonomy']]})
     cmd_dict['make,fastq'] = dict({'required' : ['fasta','qfile'] ,  'optional' : []})
@@ -246,7 +247,7 @@
     cmd_dict['pre.cluster'] = dict({'required' : ['fasta'],  'optional' : ['name','diffs']})
     cmd_dict['rarefaction.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','iters','groups','jumble']})
     cmd_dict['rarefaction.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','iters','label','freq','processors']})
-    cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','taxonomy']})
+    cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','shared','taxonomy']})
     cmd_dict['remove.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
     cmd_dict['remove.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
     cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']})
@@ -469,6 +470,7 @@
     parser.add_option( '--sabund', dest='sabund', help='' )
     parser.add_option( '--shared', dest='shared', help='' )
     parser.add_option( '--relabund', dest='relabund', help='' )
+    parser.add_option( '--makerelabund', dest='makerelabund', help='Whether to convert to a relabund file' )
     parser.add_option( '--ordergroup', dest='ordergroup', help='')
     # include read.tree options
     parser.add_option( '--tree', dest='tree', help='' )
--- a/mothur/tools/mothur/otu.hierarchy.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/otu.hierarchy.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -53,7 +53,7 @@
 
 The otu.hierarchy_ command relates OTUs from a list_ at different distances.
 
-.. _list_file: http://www.mothur.org/wiki/List_file
+.. _list: http://www.mothur.org/wiki/List_file
 .. _otu.hierarchy: http://www.mothur.org/wiki/Otu.hierarchy
 
 
--- a/mothur/tools/mothur/remove.groups.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/remove.groups.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_remove_groups" name="Remove.groups" version="1.19.0">
+<tool id="mothur_remove_groups" name="Remove.groups" version="1.21.0">
  <description>Remove groups from groups,fasta,names,list,taxonomy</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -20,22 +20,25 @@
   #end if
   #if $fasta_in.__str__ != "None" and len($fasta_in.__str__) > 0:
    --fasta=$fasta_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($fasta_in.__str__)) + ":'" + $fasta_out.__str__]
   #end if
   #if $name_in.__str__ != "None" and len($name_in.__str__) > 0:
    --name=$name_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($name_in.__str__)) + ":'" + $name_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($name_in.__str__)) + ":'" + $name_out.__str__]
   #end if
   #if $list_in.__str__ != "None" and len($list_in.__str__) > 0:
    --list=$list_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
+  #end if
+  #if $shared_in.__str__ != "None" and len($shared_in.__str__) > 0:
+   --shared=$shared_in
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.*\\.pick\\.\2',$os.path.basename($shared_in.__str__)) + ":'" + $shared_out.__str__]
   #end if
   #if $taxonomy_in.__str__ != "None" and len($taxonomy_in.__str__) > 0:
    --taxonomy=$taxonomy_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.\2',$os.path.basename($taxonomy_in.__str__)) + ":'" + $taxonomy_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.pick\\.\2',$os.path.basename($taxonomy_in.__str__)) + ":'" + $taxonomy_out.__str__]
   #end if
   --result=#echo ','.join($results)
-
  </command>
  <inputs>
   <param name="group_in" type="data" format="groups" label="group - Groups"/>
@@ -60,6 +63,7 @@
   <param name="fasta_in" type="data" format="fasta,align" optional="true" label="fasta - Fasta Sequences"/>
   <param name="name_in" type="data" format="names" optional="true" label="name - Sequences Name reference"/>
   <param name="list_in" type="data" format="list" optional="true" label="list - OTU List"/>
+  <param name="shared_in" type="data" format="shared" optional="true" label="shared - OTU Shared"/>
   <param name="taxonomy_in" type="data" format="seq.taxonomy" optional="true" label="taxonomy - Taxonomy"/>
  </inputs>
  <outputs>
@@ -75,6 +79,9 @@
   <data format="list" name="list_out" label="${tool.name} on ${on_string}: pick.list">
    <filter>list_in != None</filter>
   </data>
+  <data format="shared" name="shared_out" label="${tool.name} on ${on_string}: pick.shared">
+   <filter>shared_in != None</filter>
+  </data>
   <data format="seq.taxonomy" name="taxonomy_out" label="${tool.name} on ${on_string}: pick.taxonomy">
    <filter>taxonomy_in != None</filter>
   </data>
--- a/mothur/tools/mothur/remove.lineage.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/remove.lineage.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -36,11 +36,12 @@
  <inputs>
   <param name="taxonomy" type="data" format="seq.taxonomy" label="taxonomy - Taxonomy"/>
   <!--
-  <param name="taxons" type="select" size="120" multiple="True" label="Browse Taxons from Taxonomy">
+  <param name="taxons" type="select" size="120" multiple="true" label="Browse Taxons from Taxonomy">
    <options from_dataset="taxonomy">
     <column name="name" index="1"/>
     <column name="value" index="1"/>
     <filter type="unique_value" name="unique_taxon" column="1" />
+    <filter type="sort_by" name="sorted_taxon" column="1" />
    </options>
   </param>
   -->
@@ -53,7 +54,6 @@
   <param name="dups" type="boolean" truevalue="" falsevalue="--dups=false" checked="true" label="dups - Apply to duplicate names"/>
  </inputs>
  <outputs>
-  <!-- fix format -->
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
   <data format="seq.taxonomy" name="taxonomy_out" label="${tool.name} on ${on_string}: pick.taxonomy"/>
   <data format_source="fasta_in" name="fasta_out" label="${tool.name} on ${on_string}: pick.fasta">
@@ -88,7 +88,7 @@
 
 **Command Documenation**
 
-The remove.lineage_ command reads a taxonomy_ file and a taxon and generates a new file that contains only the sequences in the that are not from that taxon. You may also include either a fasta_, name_, group_, list_, or align.report_ file to this command and mothur will generate new files for each of those containing only the selected sequences.
+The remove.lineage_ command reads a taxonomy_ file and a taxon and generates a new file that contains only the sequences in the that are not from that taxon. You may also include either a fasta, name_, group_, list_, or align.report_ file to this command and mothur will generate new files for each of those containing only the selected sequences.
 
 .. _taxonomy: http://www.mothur.org/wiki/Taxonomy_outline
 .. _name: http://www.mothur.org/wiki/Name_file
--- a/mothur/tools/mothur/remove.otus.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/remove.otus.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -19,8 +19,8 @@
    #end if
   #end if
   #set results = ["'^mothur.\S+\.logfile$:'" + $logfile.__str__]
-  #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.' + $label.__str__ + '.\2',$os.path.basename($group_in.__str__)) + ":'" + $group_out.__str__]
-  #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.pick.'+ $label.__str__ + '.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
+  #set results = $results + ["'" + $re.sub(r'^(.*)\.(.*?)',r'\1.pick.' + $label.__str__ + '.\2',$os.path.basename($group_in.__str__)) + ":'" + $group_out.__str__]
+  #set results = $results + ["'" + $re.sub(r'^(.*)\.(.*?)',r'\1.pick.'+ $label.__str__ + '.\2',$os.path.basename($list_in.__str__)) + ":'" + $list_out.__str__]
   --result=#echo ','.join($results)
  </command>
  <inputs>
@@ -38,7 +38,7 @@
     <option value="accnos">A History Group Name Accnos Dataset</option>
    </param>
    <when value="groups">
-    <param name="groups" type="select" label="groups - Pick groups to include" multiple="true" force_select="true">
+    <param name="groups" type="select" label="groups - Pick groups to remove" multiple="true" force_select="true">
      <help>At least one group must be selected</help>
      <options from_dataset="group_in">
       <column name="name" index="1"/>
--- a/mothur/tools/mothur/remove.seqs.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/remove.seqs.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -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,align" optional="true" label="fasta - Fasta Sequences"/>
-  <param name="qfile_in" type="data" format="qual,qual454" optional="true" label="qfile - Fasta Quality"/>
+  <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="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,23 +53,12 @@
  <outputs>
   <data format="html" name="logfile" label="${tool.name} on ${on_string}: logfile" />
   <!-- format should be set to match input -->
-  <!-- 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}">
+  <data format_source="fasta_in" name="fasta_out" label="${tool.name} on ${on_string}: pick.fasta">
    <filter>fasta_in != None</filter>
   </data>
-  -->
-  <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>
-   <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_source="qfile_in" 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/sub.sample.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/sub.sample.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -1,4 +1,4 @@
-<tool id="mothur_sub_sample" name="Sub.sample" version="1.20.0">
+<tool id="mothur_sub_sample" name="Sub.sample" version="1.21.0">
  <description>Create a sub sample</description>
  <command interpreter="python">
   mothur_wrapper.py 
@@ -9,15 +9,15 @@
   --outputdir='$logfile.extra_files_path'
   #if $input.format == "fasta":
    --fasta=$input.fasta_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.fasta_in.__str__)) + ":'" + $fasta_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.fasta_in.__str__)) + ":'" + $fasta_out.__str__]
    #if $input.name_in.__str__ != "None" and len($input.name_in.__str__) > 0:
     --name=$input.name_in
-    ## #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.name_in.__str__)) + ":'" + $names_out.__str__]
+    ## #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.name_in.__str__)) + ":'" + $names_out.__str__]
    #end if
    #if $input.use_group.to_filter == "yes":
     #if $input.use_group.group_in.__str__ != "None" and len($input.use_group.group_in.__str__) > 0:
      --group=$input.use_group.group_in
-     #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.use_group.group_in.__str__)) + ":'" + $group_out.__str__]
+     #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.use_group.group_in.__str__)) + ":'" + $group_out.__str__]
      #if $input.use_group.groups.__str__ != "None" and len($input.use_group.groups.__str__) > 0:
       --groups=$input.use_group.groups
      #end if
@@ -26,11 +26,11 @@
    #end if
   #elif $input.format == "list":
    --list=$input.otu_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $list_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $list_out.__str__]
    #if $input.use_group.to_filter == "yes":
     #if $input.use_group.group_in.__str__ != "None" and len($input.use_group.group_in.__str__) > 0:
      --group=$input.use_group.group_in
-     #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.use_group.group_in.__str__)) + ":'" + $group_out.__str__]
+     #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.use_group.group_in.__str__)) + ":'" + $group_out.__str__]
      #if $input.use_group.groups.__str__ != "None" and len($input.use_group.groups.__str__) > 0:
       --groups=$input.use_group.groups
      #end if
@@ -42,7 +42,7 @@
    #end if
   #elif $input.format == "shared":
    --shared=$input.otu_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $shared_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.*\\.subsample\\.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $shared_out.__str__]
    #if $input.groups.__str__ != "None" and len($input.groups.__str__) > 0:
     --groups=$input.groups
    #end if
@@ -51,13 +51,13 @@
    #end if
   #elif $input.format == "sabund":
    --sabund=$input.otu_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $sabund_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $sabund_out.__str__]
    #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
     --label=$input.label
    #end if
   #elif $input.format == "rabund":
    --rabund=$input.otu_in
-   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1.subsample.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $rabund_out.__str__]
+   #set results = $results + ["'" + $re.sub(r'(^.*)\.(.*?)',r'\1\\.subsample\\.\2',$os.path.basename($input.otu_in.__str__)) + ":'" + $rabund_out.__str__]
    #if $input.label.__str__ != "None" and len($input.label.__str__) > 0:
     --label=$input.label
    #end if
@@ -126,7 +126,7 @@
     </param>
    </when> <!-- list -->
    <when value="shared">
-    <param name="otu_in" type="data" format="shared" label="shared - OTU List"/>
+    <param name="otu_in" type="data" format="shared" label="shared - OTU Shared"/>
     <param name="groups" type="select" optional="true" label="groups - Pick groups to include" multiple="true">
      <options from_dataset="otu_in">
       <column name="name" index="1"/>
@@ -145,7 +145,7 @@
     </param>
    </when> <!-- shared -->
    <when value="sabund">
-    <param name="otu_in" type="data" format="sabund" label="sabund - OTU List"/>
+    <param name="otu_in" type="data" format="sabund" label="sabund - OTU Species Abundance"/>
     <param name="label" type="select" label="label - OTU Labels" optional="true" multiple="true">
      <options from_dataset="otu_in">
       <column name="name" index="0"/>
@@ -154,7 +154,7 @@
     </param>
    </when> <!-- sabund -->
    <when value="rabund">
-    <param name="otu_in" type="data" format="rabund" label="rabund - OTU List"/>
+    <param name="otu_in" type="data" format="rabund" label="rabund - OTU Relative Abundance"/>
     <param name="label" type="select" label="label - OTU Labels" optional="true" multiple="true">
      <options from_dataset="otu_in">
       <column name="name" index="0"/>
@@ -188,7 +188,7 @@
   </data>
   -->
   <data format="groups" name="group_out" label="${tool.name} on ${on_string}: subsample.groups">
-   <filter>input['use_group']['group_in'] != None</filter>
+   <filter>((input['format'] == 'fasta' or input['format'] == 'list') and input['use_group'] == 'yes')</filter>
   </data>
  </outputs>
  <requirements>
--- a/mothur/tools/mothur/summary.single.xml	Thu Jul 14 15:21:01 2011 -0500
+++ b/mothur/tools/mothur/summary.single.xml	Tue Aug 09 11:39:27 2011 -0500
@@ -81,6 +81,7 @@
 
 The summary.single_ command produce a summary file that has the calculator value for each line in the OTU data and for all possible comparisons between the different groups in the group_ file.  This can be useful if you aren't interested in generating collector's or rarefaction curves for your multi-sample data analysis. It would be worth your while, however, to look at the collector's curves for the calculators you are interested in to determine how sensitive the values are to sampling. If the values are not sensitive to sampling, then you can trust the values. Otherwise, you need to keep sampling.  For calc parameter choices see: http://www.mothur.org/wiki/Calculators
 
+.. _group: http://www.mothur.org/wiki/Group_file
 .. _summary.single: http://www.mothur.org/wiki/Summary.single
 
  </help>