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)
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`).