'filtering parameters. default skips that filter.
:param catNms (str array)  : get cats for given cat names
:param supNms (str array)  : get cats for given supercategory names
:param catIds (int array)  : get cats for given cat ids
:return: ids (int array)   : integer array of cat ids'

def getCatIds(self, catNms=[], supNms=[], catIds=[]):

    catNms = (catNms if (type(catNms) == list) else [catNms])
    supNms = (supNms if (type(supNms) == list) else [supNms])
    catIds = (catIds if (type(catIds) == list) else [catIds])
    if (len(catNms) == len(supNms) == len(catIds) == 0):
        cats = self.dataset['categories']
    else:
        cats = self.dataset['categories']
        cats = (cats if (len(catNms) == 0) else [cat for cat in cats if (cat['name'] in catNms)])
        cats = (cats if (len(supNms) == 0) else [cat for cat in cats if (cat['supercategory'] in supNms)])
        cats = (cats if (len(catIds) == 0) else [cat for cat in cats if (cat['id'] in catIds)])
    ids = [cat['id'] for cat in cats]
    return ids
