docstr: Get COCO annotation by index.
  
  Args:
      idx (int): Index of data.
  
  Returns:
      dict: Annotation info of specified index.
docstr_tok: ["Get","COCO","annotation","by","index",".","Args",":","idx","(","int",")",":","Index","of","data",".","Returns",":","dict",":","Annotation","info","of","specified","index","."]
code: def get_ann_info(self, idx):
      """Get COCO annotation by index.
  
      Args:
          idx (int): Index of data.
  
      Returns:
          dict: Annotation info of specified index.
      """
  
      img_id = self.data_infos[idx]["id"]
      ann_ids = self.coco.get_ann_ids(img_ids=[img_id])
      ann_info = self.coco.load_anns(ann_ids)
      return self._parse_ann_info(self.data_infos[idx], ann_info)
  
imports: import itertools
  import logging
  import os.path
  import tempfile
  from collections import OrderedDict
  import mmcv
  import numpy
  from mmcv.utils import print_log
  from pycocotools.coco import COCO
  from pycocotools.cocoeval import COCOeval
  from terminaltables import AsciiTable
  from mmdet.core import eval_recalls
  from .builder import DATASETS
  from .custom import CustomDataset
label_desc: Use image node_id 2 for calling the CocoDataset obj's underlying member method code with example usage: obj.get_ann_info(idx) and returns: self