docs: def build_tree_from_alignment(aln, moltype=DNA, best_tree=False, params=None):
      """Returns a tree from Alignment object aln.
  
      aln: an cogent.core.alignment.Alignment object, or data that can be used
      to build one.
  
      moltype: cogent.core.moltype.MolType object
  
      best_tree: if True (default:False), uses a slower but more accurate
      algorithm to build the tree.
  
      params: dict of parameters to pass in to the Clustal app controller.
  
      The result will be an cogent.core.tree.PhyloNode object, or None if tree
      fails.
      """
      # Create instance of app controller, enable tree, disable alignment
      app = Clustalw(InputHandler='_input_as_multiline_string', params=params, \
                     WorkingDir='/tmp')
      app.Parameters['-align'].off()
  
      #Set params to empty dict if None.
      if params is None:
          params={}
  
      if moltype == DNA or moltype == RNA:
          params['-type'] = 'd'
      elif moltype == PROTEIN:
          params['-type'] = 'p'
      else:
          raise ValueError, "moltype must be DNA, RNA, or PROTEIN"
  
      # best_tree -> bootstrap
      if best_tree:
          if '-bootstrap' not in params:
              app.Parameters['-bootstrap'].on(1000)
          if '-seed' not in params:
              app.Parameters['-seed'].on(randint(0,1000))
          if '-bootlabels' not in params:
              app.Parameters['-bootlabels'].on('nodes')
      else:
          app.Parameters['-tree'].on()
  
      # Setup mapping. Clustalw clips identifiers. We will need to remap them.
      seq_collection = SequenceCollection(aln)
      int_map, int_keys = seq_collection.getIntMap()
      int_map = SequenceCollection(int_map)
  
      # Collect result
      result = app(int_map.toFasta())
  
      # Build tree
      tree = DndParser(result['Tree'].read(), constructor=PhyloNode)
      for node in tree.tips():
          node.Name = int_keys[node.Name]
  
      # Clean up
      result.cleanUp()
      del(seq_collection, app, result, int_map, int_keys)
  
      return tree