code: def some(args):
      
      from jcvi.formats.base import SetFile
      from jcvi.utils.cbook import gene_name
  
      p = OptionParser(some.__doc__)
      p.add_option("-v", dest="inverse", default=False, action="store_true",
                   help="Get the inverse, like grep -v [default: %default]")
      p.set_outfile()
      p.set_stripnames()
      opts, args = p.parse_args(args)
  
      if len(args) != 2:
          sys.exit(not p.print_help())
  
      bedfile, idsfile = args
      inverse = opts.inverse
      ostrip = opts.strip_names
      fw = must_open(opts.outfile, "w")
  
      ids = SetFile(idsfile)
      if ostrip:
          ids = set(gene_name(x) for x in ids)
      bed = Bed(bedfile)
      ntotal = nkeep = 0
      for b in bed:
          ntotal += 1
          keep = b.accn in ids
          if inverse:
              keep = not keep
  
          if keep:
              nkeep += 1
              print(b, file=fw)
  
      fw.close()
      logging.debug("Stats: {0} features kept.".\
                      format(percentage(nkeep, ntotal)))
docs: %prog some bedfile idsfile > newbedfile
  
      Retrieve a subset of bed features given a list of ids.