code: def nucmer(args):
      
      from itertools import product
  
      from jcvi.apps.grid import MakeManager
      from jcvi.formats.base import split
  
      p = OptionParser(nucmer.__doc__)
      p.add_option("--chunks", type="int",
                   help="Split both query and subject into chunks")
      p.set_params(prog="nucmer", params="-l 100 -c 500")
      p.set_cpus()
      opts, args = p.parse_args(args)
  
      if len(args) != 2:
          sys.exit(not p.print_help())
  
      ref, query = args
      cpus = opts.cpus
      nrefs = nqueries = opts.chunks or int(cpus ** .5)
      refdir = ref.split(".")[0] + "-outdir"
      querydir = query.split(".")[0] + "-outdir"
      reflist = split([ref, refdir, str(nrefs)]).names
      querylist = split([query, querydir, str(nqueries)]).names
  
      mm = MakeManager()
      for i, (r, q) in enumerate(product(reflist, querylist)):
          pf = "{0:04d}".format(i)
          cmd = "nucmer -maxmatch"
          cmd += " {0}".format(opts.extra)
          cmd += " {0} {1} -p {2}".format(r, q, pf)
          deltafile = pf + ".delta"
          mm.add((r, q), deltafile, cmd)
          print(cmd)
  
      mm.write()
docs: %prog nucmer ref.fasta query.fasta
  
      Run NUCMER using query against reference. Parallel implementation derived
      from: <https://github.com/fritzsedlazeck/sge_mummer>