docs: def cdhit_clusters_from_seqs(seqs, moltype=DNA, params=None):
      """Returns the CD-HIT clusters given seqs
  
      seqs        : dict like collection of sequences
      moltype     : cogent.core.moltype object
      params      : cd-hit parameters
  
      NOTE: This method will call CD_HIT if moltype is PROTIEN,
          CD_HIT_EST if moltype is RNA/DNA, and raise if any other
          moltype is passed.
      """
      # keys are not remapped. Tested against seq_ids of 100char length
      seqs = SequenceCollection(seqs, MolType=moltype)
      #Create mapping between abbreviated IDs and full IDs
      int_map, int_keys = seqs.getIntMap()
      #Create SequenceCollection from int_map.
      int_map = SequenceCollection(int_map,MolType=moltype)
  
      # setup params and make sure the output argument is set
      if params is None:
          params = {}
      if '-o' not in params:
          _, params['-o'] = mkstemp()
  
      # call the correct version of cd-hit base on moltype
      working_dir = mkdtemp()
      if moltype is PROTEIN:
          app = CD_HIT(WorkingDir=working_dir, params=params)
      elif moltype is RNA:
          app = CD_HIT_EST(WorkingDir=working_dir, params=params)
      elif moltype is DNA:
          app = CD_HIT_EST(WorkingDir=working_dir, params=params)
      else:
          raise ValueError, "Moltype must be either PROTEIN, RNA, or DNA"
  
      # grab result
      res = app(int_map.toFasta())
      clusters = parse_cdhit_clstr_file(res['CLSTR'])
  
      remapped_clusters = []
      for c in clusters:
          curr = [int_keys[i] for i in c]
          remapped_clusters.append(curr)
  
      # perform cleanup
      res.cleanUp()
      shutil.rmtree(working_dir)
      remove(params['-o'] + '.bak.clstr')
  
      return remapped_clusters