class_docstr: A wrapper of concatenated dataset.
  
  Same as ``torch.utils.data.dataset.ConcatDataset``, support
  lazy_init and get_dataset_source.
  
  Note:
      ``ConcatDataset`` should not inherit from ``BaseDataset`` since
      ``get_subset`` and ``get_subset_`` could produce ambiguous meaning
      sub-dataset which conflicts with original dataset. If you want to use
      a sub-dataset of ``ConcatDataset``, you should set ``indices``
      arguments for wrapped dataset which inherit from ``BaseDataset``.
  
  Args:
      datasets (Sequence[BaseDataset] or Sequence[dict]): A list of datasets
          which will be concatenated.
      lazy_init (bool, optional): Whether to load annotation during
          instantiation. Defaults to False.
      ignore_keys (List[str] or str): Ignore the keys that can be
          unequal in `dataset.metainfo`. Defaults to None.
          `New in version 0.3.0.`
class_docstr_tok: ["A","wrapper","of","concatenated","dataset",".","Same","as","``","torch.utils.data.dataset.ConcatDataset","``",",","support","lazy_init","and","get_dataset_source",".","Note",":","``","ConcatDataset","``","should","not","inherit","from","``","BaseDataset","``","since","``","get_subset","``","and","``","get_subset_","``","could","produce","ambiguous","meaning","sub-dataset","which","conflicts","with","original","dataset",".","If","you","want","to","use","a","sub-dataset","of","``","ConcatDataset","``",",","you","should","set","``","indices","``","arguments","for","wrapped","dataset","which","inherit","from","``","BaseDataset","``",".","Args",":","datasets","(","Sequence","[","BaseDataset","]","or","Sequence","[","dict","]",")",":","A","list","of","datasets","which","will","be","concatenated",".","lazy_init","(","bool",",","optional",")",":","Whether","to","load","annotation","during","instantiation",".","Defaults","to","False",".","ignore_keys","(","List","[","str","]","or","str",")",":","Ignore","the","keys","that","can","be","unequal","in","`","dataset.metainfo","`",".","Defaults","to","None",".","`","New","in","version","0.3.0.","`"]
code: def get_dataset_source(self, idx: int) -> int:
      dataset_idx, _ = self._get_ori_dataset_idx(idx)
      return dataset_idx
  
file_path: mmdetection/mmdet/datasets/dataset_wrappers.py
imports: import collections
  import copy
  from typing import List, Sequence, Union
  from mmengine.dataset import BaseDataset
  from mmengine.dataset import ConcatDataset
  from mmengine.dataset import force_full_init
  from mmdet.registry import DATASETS, TRANSFORMS
label_desc: Use image node_id 2 for calling the ConcatDataset obj's underlying member method code with example usage: obj.get_dataset_source(idx) and returns: dataset_idx