class_docstr: A wrapper of concatenated dataset.
  
  Same as :obj:`torch.utils.data.dataset.ConcatDataset`, but
  concat the group flag for image aspect ratio.
  
  Args:
      datasets (list[:obj:`Dataset`]): A list of datasets.
      separate_eval (bool): Whether to evaluate the results
          separately if it is used as validation dataset.
          Defaults to True.
docstr: Get category ids of concatenated dataset by index.
  
  Args:
      idx (int): Index of data.
  
  Returns:
      list[int]: All categories in the image of specified index.
docstr_tok: ["Get","category","ids","of","concatenated","dataset","by","index",".","Args",":","idx","(","int",")",":","Index","of","data",".","Returns",":","list","[","int","]",":","All","categories","in","the","image","of","specified","index","."]
code: def get_cat_ids(self, idx):
      """Get category ids of concatenated dataset by index.
  
      Args:
          idx (int): Index of data.
  
      Returns:
          list[int]: All categories in the image of specified index.
      """
  
      if idx < 0:
          if -idx > len(self):
              raise ValueError(
                  "absolute value of index should not exceed dataset length"
              )
          idx = len(self) + idx
      dataset_idx = bisect.bisect_right(self.cumulative_sizes, idx)
      if dataset_idx == 0:
          sample_idx = idx
      else:
          sample_idx = idx - self.cumulative_sizes[dataset_idx - 1]
      return self.datasets[dataset_idx].get_cat_ids(sample_idx)
  
imports: import bisect
  import math
  from collections import defaultdict
  import numpy
  from mmcv.utils import print_log
  from torch.utils.data.dataset import ConcatDataset
  from .builder import DATASETS
  from .coco import CocoDataset
label_desc: Use image node_id 2 for calling the ConcatDataset obj's underlying member method code with example usage: obj.get_cat_ids(idx) and returns: self