code: def bes(args):
      
      from jcvi.apps.align import run_blat
  
      p = OptionParser(bes.__doc__)
      p.set_cpus()
      opts, args = p.parse_args(args)
  
      if len(args) != 2:
          sys.exit(not p.print_help())
  
      bacfasta, clonename = args
  
      entrez([clonename, "--database=nucgss", "--skipcheck"])
      besfasta = clonename + ".fasta"
      blatfile = clonename + ".bes.blat"
      run_blat(infile=besfasta, outfile=blatfile, db=bacfasta, \
               pctid=95, hitlen=100, cpus=opts.cpus)
  
      aid, asize = next(Fasta(bacfasta).itersizes())
  
      width = 50
      msg = "=" * width
      msg += "  " + aid
      print(msg, file=sys.stderr)
  
      ratio = width * 1. / asize
      _ = lambda x: int(round(x * ratio, 0))
      blasts = [BlastLine(x) for x in open(blatfile)]
      for b in blasts:
          if b.orientation == '+':
              msg = " " * _(b.sstart) + "->"
          else:
              msg = " " * (_(b.sstop) - 2) + "<-"
          msg += " " * (width - len(msg) + 2)
          msg += b.query
          if b.orientation == '+':
              msg += " (hang={0})".format(b.sstart - 1)
          else:
              msg += " (hang={0})".format(asize - b.sstop)
  
          print(msg, file=sys.stderr)
docs: %prog bes bacfasta clonename
  
      Use the clone name to download BES gss sequences from Genbank, map and then
      visualize.