code: def _add_to_cur_im_chips(
      self, chips, pos_chip2boxes_idx, neg_chip2box_num
  ):
      for pos_chipid, boxes_idx in pos_chip2boxes_idx.items():
          chip = np.array(chips[pos_chipid])  # copy chips slice
          self._cur_im_pos_chips.append((chip, boxes_idx))
  
      if neg_chip2box_num is None:
          return
  
      for neg_chipid, neg_box_num in neg_chip2box_num.items():
          chip = np.array(chips[neg_chipid])
          self._cur_im_neg_chips.append((chip, neg_box_num))
  
imports: import copy
  import math
  import random
  import numpy
  from copy import deepcopy
  from typing import List, Tuple
  from collections import defaultdict
  from .chip_box_utils import nms, transform_chip_boxes2image_boxes
  from .chip_box_utils import find_chips_to_cover_overlaped_boxes
  from .chip_box_utils import transform_chip_box
  from .chip_box_utils import intersection_over_box
label_desc: Use image node_id 3 for calling the AnnoCropper obj's underlying member method code with example usage: obj._add_to_cur_im_chips(chips, pos_chip2boxes_idx, neg_chip2box_num) without return types