code: def gffselect(args):
      
      from jcvi.formats.bed import intersectBed_wao
  
      p = OptionParser(gffselect.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 4:
          sys.exit(not p.print_help())
  
      gmapped, expected, idsfile, tag = args
      data = get_tags(idsfile)
      completeness = dict((a.replace("mrna", "path"), c) \
                           for (a, b, c) in data)
  
      seen = set()
      idsfile = expected.rsplit(".", 1)[0] + ".ids"
      fw = open(idsfile, "w")
      cnt = 0
      for a, b in intersectBed_wao(expected, gmapped):
          if b is None:
              continue
          aname, bbname = a.accn, b.accn
          bname = bbname.split(".")[0]
          if completeness[bbname] != tag:
              continue
          if aname == bname:
              if bname in seen:
                  continue
              seen.add(bname)
              print(bbname, file=fw)
              cnt += 1
      fw.close()
  
      logging.debug("Total {0} records written to `{1}`.".format(cnt, idsfile))
docs: %prog gffselect gmaplocation.bed expectedlocation.bed translated.ids tag
  
      Try to match up the expected location and gmap locations for particular
      genes. translated.ids was generated by fasta.translate --ids. tag must be
      one of "complete|pseudogene|partial".