code: def augustus(args):
      
      from jcvi.formats.gff import Gff
  
      p = OptionParser(augustus.__doc__)
      p.set_outfile()
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      ingff3, = args
      gff = Gff(ingff3)
      fw = must_open(opts.outfile, "w")
      seen = defaultdict(int)
      for g in gff:
          if g.type not in ("gene", "transcript", "CDS"):
              continue
  
          if g.type == "transcript":
              g.type = "mRNA"
  
          prefix = g.seqid + "_"
          pid = prefix + g.id
          newid = "{0}-{1}".format(pid, seen[pid]) if pid in seen else pid
          seen[pid] += 1
          g.attributes["ID"] = [newid]
          g.attributes["Parent"] = [(prefix + x) for x in g.attributes["Parent"]]
          g.update_attributes()
          print(g, file=fw)
      fw.close()
docs: %prog augustus augustus.gff3 > reformatted.gff3
  
      AUGUSTUS does generate a gff3 (--gff3=on) but need some refinement.