code: def datastore(args):
      
      p = OptionParser(datastore.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      ds, = args
      fp = open(ds)
      for row in fp:
          fn = row.strip()
          assert op.exists(fn)
          pp, logfile = op.split(fn)
          flog = open(fn)
          for row in flog:
              ctg, folder, status = row.split()
              if status != "FINISHED":
                  continue
  
              gff_file = op.join(pp, folder, ctg + ".gff")
              assert op.exists(gff_file)
              print(gff_file)
docs: %prog datastore datastore.log > gfflist.log
  
      Generate a list of gff filenames to merge. The `datastore.log` file can be
      generated by something like:
  
      $ find
      /usr/local/scratch/htang/EVM_test/gannotation/maker/1132350111853_default/i1/
      -maxdepth 4 -name "*datastore*.log" > datastore.log