code: def fill(args):
      
      p = OptionParser(fill.__doc__)
      p.add_option("--extend", default=2000, type="int",
                   help="Extend seq flanking the gaps [default: %default]")
      opts, args = p.parse_args(args)
  
      if len(args) != 2:
          sys.exit(not p.print_help())
  
      gapsbed, badfasta = args
      Ext = opts.extend
  
      gapdist = 2 * Ext + 1  # This is to prevent to replacement ranges intersect
      gapsbed = mergeBed(gapsbed, d=gapdist, nms=True)
  
      bed = Bed(gapsbed)
      sizes = Sizes(badfasta).mapping
      pf = gapsbed.rsplit(".", 1)[0]
      extbed = pf + ".ext.bed"
      fw = open(extbed, "w")
      for b in bed:
          gapname = b.accn
          start, end = max(0, b.start - Ext - 1), b.start - 1
          print("\t".join(str(x) for x in \
                               (b.seqid, start, end, gapname + "L")), file=fw)
          start, end = b.end, min(sizes[b.seqid], b.end + Ext)
          print("\t".join(str(x) for x in \
                               (b.seqid, start, end, gapname + "R")), file=fw)
      fw.close()
  
      fastaFromBed(extbed, badfasta, name=True)
docs: %prog fill gaps.bed bad.fasta
  
      Perform gap filling of one assembly (bad) using sequences from another.