code: def bed(args):
      
      from jcvi.formats.bed import sort as bed_sort
  
      p = OptionParser(bed.__doc__)
      p.add_option("--swap", default=False, action="store_true",
                   help="Write query positions [default: %default]")
      p.add_option("--both", default=False, action="store_true",
                   help="Generate one line for each of query and subject")
  
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(p.print_help())
  
      blastfile, = args
      positive = (not opts.swap) or opts.both
      negative = opts.swap or opts.both
  
      fp = must_open(blastfile)
      bedfile =  "{0}.bed".format(blastfile.rsplit(".", 1)[0]) \
              if blastfile.endswith(".blast") \
              else "{0}.bed".format(blastfile)
      fw = open(bedfile, "w")
      for row in fp:
          b = BlastLine(row)
          if positive:
              print(b.bedline, file=fw)
          if negative:
              print(b.swapped.bedline, file=fw)
  
      logging.debug("File written to `{0}`.".format(bedfile))
      fw.close()
      bed_sort([bedfile, "-i"])
  
      return bedfile
docs: %prog bed blastfile
  
      Print out bed file based on coordinates in BLAST report. By default, write
      out subject positions. Use --swap to write query positions.