docs: def _create_clusters(seqL, bam_file, args):
      """
      Cluster sequences and
      create metaclusters with multi-mappers.
      """
      clus_obj = []
      cluster_file = op.join(args.out, "cluster.bed")
      if not os.path.exists(op.join(args.out, 'list_obj.pk')):
          if not file_exists(cluster_file):
              logger.info("Parsing aligned file")
              logger.info("Merging sequences")
              bedtools = os.path.join(os.path.dirname(sys.executable), "bedtools")
              bedtools = bedtools if os.path.exists(bedtools) else "bedtools"
              parse_cmd = "awk '{i=i+1;print $1\"\\t\"$2\"\\t\"$3\"\\t\"$4\"\\t\"i\"\\t\"$6}'"
              cmd = "{bedtools} bamtobed -i {bam_file} | {parse_cmd} | {bedtools} cluster -s -d 20 -i - > {cluster_file}"
              do.run(cmd.format(**locals()))
          c = pybedtools.BedTool(cluster_file)
          logger.info("Creating clusters")
          clus_obj = detect_clusters(c, seqL, args.min_seqs, args.non_un_gl)
          with open(op.join(args.out, 'list_obj.pk'), 'wb') as output:
              pickle.dump(clus_obj, output, pickle.HIGHEST_PROTOCOL)
      else:
          logger.info("Loading previous clusters")
          with open(op.join(args.out, 'list_obj.pk'), 'rb') as input:
              clus_obj = pickle.load(input)
      # bedfile = pybedtools.BedTool(generate_position_bed(clus_obj), from_string=True)
      # seqs_2_loci = bedfile.intersect(pybedtools.BedTool(aligned_bed, from_string=True), wo=True, s=True)
      # seqs_2_position = add_seqs_position_to_loci(seqs_2_loci, seqL)
      logger.info("%s clusters found" % (len(clus_obj.clusid)))
      return clus_obj