docstr: Find the outlines on the current image set
  
  workspace    - The workspace contains
      pipeline     - instance of cpp for this run
      image_set    - the images in the image set being processed
      object_set   - the objects (labeled masks) in this image set
      measurements - the measurements for this run
      frame        - the parent frame to whatever frame is created. None means don't draw.
docstr_tok: ["Find","the","outlines","on","the","current","image","set","workspace","-","The","workspace","contains","pipeline","-","instance","of","cpp","for","this","run","image_set","-","the","images","in","the","image","set","being","processed","object_set","-","the","objects","(","labeled","masks",")","in","this","image","set","measurements","-","the","measurements","for","this","run","frame","-","the","parent","frame","to","whatever","frame","is","created",".","None","means","do","n't","draw","."]
code: def run(self, workspace):
      """Find the outlines on the current image set
  
      workspace    - The workspace contains
          pipeline     - instance of cpp for this run
          image_set    - the images in the image set being processed
          object_set   - the objects (labeled masks) in this image set
          measurements - the measurements for this run
          frame        - the parent frame to whatever frame is created. None means don't draw.
      """
      gridding = workspace.get_grid(self.grid_name.value)
      if self.shape_choice == SHAPE_RECTANGLE:
          labels = self.run_rectangle(workspace, gridding)
      elif self.shape_choice == SHAPE_CIRCLE_FORCED:
          labels = self.run_forced_circle(workspace, gridding)
      elif self.shape_choice == SHAPE_CIRCLE_NATURAL:
          labels = self.run_natural_circle(workspace, gridding)
      elif self.shape_choice == SHAPE_NATURAL:
          labels = self.run_natural(workspace, gridding)
      objects = Objects()
      objects.segmented = labels
      object_count = gridding.rows * gridding.columns
      workspace.object_set.add_objects(
          objects, self.output_objects_name.value
      )
      add_object_location_measurements(
          workspace.measurements,
          self.output_objects_name.value,
          labels,
          object_count,
      )
      add_object_count_measurements(
          workspace.measurements,
          self.output_objects_name.value,
          object_count,
      )
      if self.show_window:
          workspace.display_data.gridding = gridding
          workspace.display_data.labels = labels
  
imports: from cellprofiler_core.constants.module import HELP_ON_MEASURING_DISTANCES
  from cellprofiler_core.setting.choice import Choice
  from cellprofiler_core.setting.subscriber import LabelSubscriber, GridSubscriber
  from cellprofiler_core.setting.text import LabelName, Integer
  from cellprofiler_core.utilities.core.module.identify import add_object_location_measurements, add_object_count_measurements, get_object_measurement_columns
  from cellprofiler.modules import _help
  import numpy
  from centrosome.cpmorphology import centers_of_labels
  from cellprofiler_core.utilities.grid import Grid
  from cellprofiler_core.module import Module
  from cellprofiler_core.object import Objects
label_desc: Use image node_id 5 for calling the IdentifyObjectsInGrid obj's underlying member method code with example usage: obj.run(workspace) without return types