docstr: Get ann ids that satisfy given filter conditions. default skips that
  filter.
  
  :param vidIds  (int array)     : get anns for given vids
         catIds  (int array)     : get anns for given cats
         areaRng (float array)   : get anns for given area range
         iscrowd (boolean)       : get anns for given crowd label
  :return: ids (int array)       : integer array of ann ids
docstr_tok: ["Get","ann","ids","that","satisfy","given","filter","conditions",".","default","skips","that","filter",".",":","param","vidIds","(","int","array",")",":","get","anns","for","given","vids","catIds","(","int","array",")",":","get","anns","for","given","cats","areaRng","(","float","array",")",":","get","anns","for","given","area","range","iscrowd","(","boolean",")",":","get","anns","for","given","crowd","label",":","return",":","ids","(","int","array",")",":","integer","array","of","ann","ids"]
code: def getAnnIds(self, vidIds=[], catIds=[], areaRng=[], iscrowd=None):
      """Get ann ids that satisfy given filter conditions. default skips that
      filter.
  
      :param vidIds  (int array)     : get anns for given vids
             catIds  (int array)     : get anns for given cats
             areaRng (float array)   : get anns for given area range
             iscrowd (boolean)       : get anns for given crowd label
      :return: ids (int array)       : integer array of ann ids
      """
      vidIds = vidIds if _isArrayLike(vidIds) else [vidIds]
      catIds = catIds if _isArrayLike(catIds) else [catIds]
  
      if len(vidIds) == len(catIds) == len(areaRng) == 0:
          anns = self.dataset["annotations"]
      else:
          if not len(vidIds) == 0:
              lists = [
                  self.vidToAnns[vidId]
                  for vidId in vidIds
                  if vidId in self.vidToAnns
              ]
              anns = list(itertools.chain.from_iterable(lists))
          else:
              anns = self.dataset["annotations"]
          anns = (
              anns
              if len(catIds) == 0
              else [ann for ann in anns if ann["category_id"] in catIds]
          )
          anns = (
              anns
              if len(areaRng) == 0
              else [
                  ann
                  for ann in anns
                  if ann["avg_area"] > areaRng[0]
                  and ann["avg_area"] < areaRng[1]
              ]
          )
      if iscrowd is not None:
          ids = [ann["id"] for ann in anns if ann["iscrowd"] == iscrowd]
      else:
          ids = [ann["id"] for ann in anns]
      return ids
  
imports: import copy
  import itertools
  import json
  import sys
  import time
  from collections import defaultdict
  import numpy
  from pycocotools import mask
label_desc: Use image node_id 3 for calling the YTVIS obj's underlying member method code with example usage: obj.getAnnIds(vidIds, catIds, areaRng, iscrowd) and returns: ids