code: def _get_next_click(self, pred_mask, padding=True):
      fn_mask = np.logical_and(
          np.logical_and(self.gt_mask, np.logical_not(pred_mask)),
          self.not_ignore_mask,
      )
      fp_mask = np.logical_and(
          np.logical_and(np.logical_not(self.gt_mask), pred_mask),
          self.not_ignore_mask,
      )
  
      if padding:
          fn_mask = np.pad(fn_mask, ((1, 1), (1, 1)), "constant")
          fp_mask = np.pad(fp_mask, ((1, 1), (1, 1)), "constant")
  
      fn_mask_dt = cv2.distanceTransform(
          fn_mask.astype(np.uint8), cv2.DIST_L2, 0
      )
      fp_mask_dt = cv2.distanceTransform(
          fp_mask.astype(np.uint8), cv2.DIST_L2, 0
      )
  
      if padding:
          fn_mask_dt = fn_mask_dt[1:-1, 1:-1]
          fp_mask_dt = fp_mask_dt[1:-1, 1:-1]
  
      fn_mask_dt = fn_mask_dt * self.not_clicked_map
      fp_mask_dt = fp_mask_dt * self.not_clicked_map
  
      fn_max_dist = np.max(fn_mask_dt)
      fp_max_dist = np.max(fp_mask_dt)
  
      is_positive = fn_max_dist > fp_max_dist
      if is_positive:
          coords_y, coords_x = np.where(
              fn_mask_dt == fn_max_dist
          )  # coords is [y, x]
      else:
          coords_y, coords_x = np.where(
              fp_mask_dt == fp_max_dist
          )  # coords is [y, x]
  
      return Click(
          is_positive=is_positive, coords=(coords_y[0], coords_x[0])
      )
  
file_path: PaddleSeg/EISeg/eiseg/inference/clicker.py
imports: import cv2
  import numpy
  from copy import deepcopy
label_desc: Use image node_id 4 for calling the Clicker obj's underlying member method code with example usage: obj._get_next_click(pred_mask, padding) and returns: Click