code: def annotate(
      data, image_column=None, annotation_column="annotations"
  ):
      """
      Annotate images using a GUI assisted application. When the GUI is
      terminated an SFrame with the representative images and annotations is
      returned.
  
      Parameters
      ----------
      data : SArray | SFrame
          The data containing the input images.
  
      image_column: string, optional
          The name of the input column in the SFrame that contains the image that
          needs to be annotated. In case `data` is of type SArray, then the
          output SFrame contains a column (with this name) containing the input
          images.
  
      annotation_column : string, optional
          The column containing the annotations in the output SFrame.
  
      Returns
      -------
      out : SFrame
          A new SFrame that contains the newly annotated data.
  
      Examples
      --------
      >>> import turicreate as tc
      >>> images = tc.image_analysis.load_images("path/to/images")
      >>> print(images)
          +------------------------+--------------------------+
          |          path          |          image           |
          +------------------------+--------------------------+
          | /Users/username/Doc... | Height: 1712 Width: 1952 |
          | /Users/username/Doc... | Height: 1386 Width: 1000 |
          | /Users/username/Doc... |  Height: 536 Width: 858  |
          | /Users/username/Doc... | Height: 1512 Width: 2680 |
          +------------------------+--------------------------+
          [4 rows x 2 columns]
  
      >>> images = tc.image_classifier.annotate(images)
      >>> print(images)
          +------------------------+--------------------------+-------------------+
          |          path          |          image           |    annotations    |
          +------------------------+--------------------------+-------------------+
          | /Users/username/Doc... | Height: 1712 Width: 1952 |        dog        |
          | /Users/username/Doc... | Height: 1386 Width: 1000 |        dog        |
          | /Users/username/Doc... |  Height: 536 Width: 858  |        cat        |
          | /Users/username/Doc... | Height: 1512 Width: 2680 |       mouse       |
          +------------------------+--------------------------+-------------------+
          [4 rows x 3 columns]
  
      """
      # Check Value of Column Variables
      if not isinstance(data, __tc.SFrame):
          raise TypeError('"data" must be of type SFrame.')
  
      # Check if Value is Empty
      if data.num_rows() == 0:
          raise Exception("input data cannot be empty")
  
      if image_column == None:
          image_column = _tkutl._find_only_image_column(data)
  
      if image_column == None:
          raise ValueError("'image_column' cannot be 'None'")
  
      if type(image_column) != str:
          raise TypeError("'image_column' has to be of type 'str'")
  
      if annotation_column == None:
          annotation_column = ""
  
      if type(annotation_column) != str:
          raise TypeError("'annotation_column' has to be of type 'str'")
  
      # Check Data Structure
      if type(data) == __tc.data_structures.image.Image:
          data = __tc.SFrame({image_column: __tc.SArray([data])})
  
      elif type(data) == __tc.data_structures.sframe.SFrame:
          if data.shape[0] == 0:
              return data
          if not (
              data[image_column].dtype
              == __tc.data_structures.image.Image
          ):
              raise TypeError(
                  "'data[image_column]' must be an SFrame or SArray"
              )
  
      elif type(data) == __tc.data_structures.sarray.SArray:
          if data.shape[0] == 0:
              return data
  
          data = __tc.SFrame({image_column: data})
      else:
          raise TypeError("'data' must be an SFrame or SArray")
  
      annotation_window = (
          __tc.extensions.create_image_classification_annotation(
              data, [image_column], annotation_column
          )
      )
  
      with _QuietProgress(False):
          annotation_window.annotate(_get_client_app_path())
          return annotation_window.returnAnnotations()
  
file_path: turicreate/src/python/turicreate/toolkits/image_classifier/_annotate.py
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from ...visualization import _get_client_app_path
  import turicreate.toolkits._internal_utils
  from turicreate._cython.cy_server import QuietProgress
  import turicreate
label_desc: Use image node_id 1 for calling a global function with example usage: annotate(data, image_column, annotation_column) and returns: annotation_window, data, data