class_docstr: ConvertInteractiveClickSignals converts interactive annotation information (e.g. from DSA) into a format expected
  by NuClick. Typically, it will take point annotations from data["annotations"][<source_annotation_key>], convert
  it to 2d points, and place it in data[<target_data_key>].
class_docstr_tok: ["ConvertInteractiveClickSignals","converts","interactive","annotation","information","(","e.g",".","from","DSA",")","into","a","format","expected","by","NuClick",".","Typically",",","it","will","take","point","annotations","from","data","[","``","annotations","''","]","[","<","source_annotation_key",">","]",",","convert","it","to","2d","points",",","and","place","it","in","data","[","<","target_data_key",">","]","."]
code: def __call__(self, data):
      data = dict(data)
      annotations = data.get("annotations", {})
      annotations = {} if annotations is None else annotations
  
      logger.info(f"Annotations: {annotations.keys()}")
      for source_annotation_key, target_data_key in zip(
          self.source_annotation_keys, self.target_data_keys
      ):
          if source_annotation_key in annotations:
              points = annotations.get(source_annotation_key)["points"]
              logger.info(f"Nuclick points={points}")
              points = [coords[0:2] for coords in points]
              data[target_data_key] = points
          elif not self.allow_missing_keys:
              raise KeyError(
                  f"source_annotation_key={source_annotation_key} not found in annotation keys={annotations.keys()}"
              )
      return data
  
imports: import logging
  import pathlib
  import numpy
  import openslide
  import torch
  from monai.config import KeysCollection
  from monai.data import MetaTensor
  from monai.transforms import MapTransform
  from monai.utils import PostFix, convert_to_numpy, ensure_tuple
  from PIL import Image
  from scipy.ndimage import binary_fill_holes
  from skimage.morphology import remove_small_holes, remove_small_objects
label_desc: Use image node_id 2 for calling the ConvertInteractiveClickSignals obj's underlying member method code with example usage: obj.__call__(data) and returns: data