docs: def cluster_alignment_errors(alignment):
      # TODO Review documentation and consider for inclusion in API.
      """Clusters alignments
      Takes an alignment created by min_edit_distance_align() and groups
      consecutive errors together. This is useful, because there are often
      many possible alignments, and so often we can't meaningfully distinguish
      between alignment errors at the character level, so it makes many-to-many
      mistakes more readable."""
  
      newalign = []
      mistakes = ([],[])
      for align_item in alignment:
          if align_item[0] == align_item[1]:
              if mistakes != ([],[]):
                  newalign.append((tuple(mistakes[0]), tuple(mistakes[1])))
                  mistakes = ([],[])
              newalign.append((tuple([align_item[0]]), tuple([align_item[1]])))
          else:
              if align_item[0] != "":
                  mistakes[0].append(align_item[0])
              if align_item[1] != "":
                  mistakes[1].append(align_item[1])
      if mistakes != ([],[]):
          newalign.append((tuple(mistakes[0]), tuple(mistakes[1])))
          mistakes = ([],[])
  
      return newalign