code: def count(args):
      
      from jcvi.graphics.histogram import stem_leaf_plot
      from jcvi.utils.cbook import SummaryStats
  
      p = OptionParser(count.__doc__)
      p.add_option("--csv", help="Write depth per contig to file")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      fastafile, = args
      csv = open(opts.csv, "w") if opts.csv else None
  
      f = Fasta(fastafile, lazy=True)
      sizes = []
      for desc, rec in f.iterdescriptions_ordered():
          if desc.startswith("singleton"):
              sizes.append(1)
              continue
  
          # consensus_for_cluster_0 with 63 sequences
          if "with" in desc:
              name, w, size, seqs = desc.split()
              if csv:
                  print("\t".join(str(x)
                                  for x in (name, size, len(rec))), file=csv)
              assert w == "with"
              sizes.append(int(size))
          # MRD85:00603:02472;size=167;
          else:
              name, size, tail = desc.split(";")
              sizes.append(int(size.replace("size=", "")))
  
      if csv:
          csv.close()
          logging.debug("File written to `{0}`".format(opts.csv))
  
      s = SummaryStats(sizes)
      print(s, file=sys.stderr)
      stem_leaf_plot(s.data, 0, 100, 20, title="Cluster size")
docs: %prog count cdhit.consensus.fasta
  
      Scan the headers for the consensus clusters and count the number of reads.