docs: def cluster(seqs, threshold=0.975, out_file=None, temp_dir=None, make_db=True,
              quiet=False, threads=0, return_just_seq_ids=False, max_memory=800, debug=False):
      '''
      Perform sequence clustering with CD-HIT.
  
      Args:
  
          seqs (list): An iterable of sequences, in any format that `abutils.utils.sequence.Sequence()`
              can handle
  
          threshold (float): Clustering identity threshold. Default is `0.975`.
  
          out_file (str): Path to the clustering output file. Default is to use
              `tempfile.NamedTemporaryFile` to generate an output file name.
  
          temp_dir (str): Path to the temporary directory. If not provided, `'/tmp'` is used.
  
          make_db (bool): Whether to build a SQlite database of sequence information. Required
              if you want to calculate consensus/centroid sequences for the resulting
              clusters or if you need to access the clustered sequences (not just sequence IDs)
              Default is `True`.
          
          quiet (bool): If `True`, surpresses printing of output/progress info. Default is `False`.
  
          threads (int): Number of threads (CPU cores) to be used for clustering. Default is `0`,
              which results in all available cores being used.
          
          return_just_seq_ids (bool): If `True`, will return a 2D list of sequence IDs
              (a list containing a list of sequence IDs for each cluster) rather than returning a
              list of `Cluster` objects.
  
          max_memory (int): Max memory (in MB) for CD-HIT. Will be passed directly to CD-HIT through
              the `-M` runtime option. Default is `800`.
  
          debug (bool): If `True`, print standard output and standard error from CD-HIT. Default is `False`.
  
      Returns:
  
          list: A list of `Cluster` objects (or a 2D list of sequence IDs, if `return_just_seq_ids` is `True`).
      '''
      if make_db:
          ofile, cfile, seq_db, db_path = cdhit(seqs, out_file=out_file, temp_dir=temp_dir,
                                                threshold=threshold, make_db=True, quiet=quiet,
                                                threads=threads, max_memory=max_memory, debug=debug)            
          return parse_clusters(ofile, cfile, seq_db=seq_db, db_path=db_path, return_just_seq_ids=return_just_seq_ids)
      else:
          seqs = [Sequence(s) for s in seqs]
          seq_dict = {s.id: s for s in seqs}
          ofile, cfile, = cdhit(seqs, out_file=out_file, temp_dir=temp_dir, threads=threads,
                                threshold=threshold, make_db=False, quiet=quiet,
                                max_memory=max_memory, debug=debug)
          return parse_clusters(ofile, cfile, seq_dict=seq_dict, return_just_seq_ids=return_just_seq_ids)