code: def count(args):
      
      from bitarray import bitarray
  
      p = OptionParser(count.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 2:
          sys.exit(not p.print_help())
  
      fastafile, jfdb = args
      K = get_K(jfdb)
      cmd = "jellyfish query {0} -C | cut -d' ' -f 2".format(jfdb)
      t = must_open("tmp", "w")
      proc = Popen(cmd, stdin=PIPE, stdout=t)
      t.flush()
  
      f = Fasta(fastafile, lazy=True)
      for name, rec in f.iteritems_ordered():
          kmers = list(make_kmers(rec.seq, K))
          print("\n".join(kmers), file=proc.stdin)
      proc.stdin.close()
      logging.debug(cmd)
      proc.wait()
  
      a = bitarray()
      binfile = ".".join((fastafile, jfdb, "bin"))
      fw = open(binfile, "w")
      t.seek(0)
      for row in t:
          c = row.strip()
          a.append(int(c))
      a.tofile(fw)
      logging.debug("Serialize {0} bits to `{1}`.".format(len(a), binfile))
      fw.close()
      sh("rm {0}".format(t.name))
  
      logging.debug("Shared K-mers (K={0}) between `{1}` and `{2}` written to `{3}`.".\
                      format(K, fastafile, jfdb, binfile))
      cntfile = ".".join((fastafile, jfdb, "cnt"))
      bincount([fastafile, binfile, "-o", cntfile, "-K {0}".format(K)])
      logging.debug("Shared K-mer counts written to `{0}`.".format(cntfile))
docs: %prog count fastafile jf.db
  
      Run dump - jellyfish - bin - bincount in serial.