docstr: Return a labels matrix compose of circles centered on the x,y locations
  
  workspace - workspace for the run
  gridding - an instance of CPGridInfo giving the details of the grid
  spot_center_i, spot_center_j - the locations of the grid centers.
             This should have one coordinate per grid cell.
docstr_tok: ["Return","a","labels","matrix","compose","of","circles","centered","on","the","x",",","y","locations","workspace","-","workspace","for","the","run","gridding","-","an","instance","of","CPGridInfo","giving","the","details","of","the","grid","spot_center_i",",","spot_center_j","-","the","locations","of","the","grid","centers",".","This","should","have","one","coordinate","per","grid","cell","."]
code: def run_circle(
      self, workspace, gridding, spot_center_i, spot_center_j
  ):
      """Return a labels matrix compose of circles centered on the x,y locations
  
      workspace - workspace for the run
      gridding - an instance of CPGridInfo giving the details of the grid
      spot_center_i, spot_center_j - the locations of the grid centers.
                 This should have one coordinate per grid cell.
      """
  
      assert isinstance(gridding, Grid)
      radius = self.get_radius(workspace, gridding)
      labels = self.fill_grid(workspace, gridding)
      labels = self.fit_labels_to_guiding_objects(workspace, labels)
      spot_center_i_flat = numpy.zeros(gridding.spot_table.max() + 1)
      spot_center_j_flat = numpy.zeros(gridding.spot_table.max() + 1)
      spot_center_i_flat[
          gridding.spot_table.flatten()
      ] = spot_center_i.flatten()
      spot_center_j_flat[
          gridding.spot_table.flatten()
      ] = spot_center_j.flatten()
  
      centers_i = spot_center_i_flat[labels]
      centers_j = spot_center_j_flat[labels]
      i, j = numpy.mgrid[0 : labels.shape[0], 0 : labels.shape[1]]
      #
      # Add .5 to measure from the center of the pixel
      #
      mask = (i - centers_i) ** 2 + (j - centers_j) ** 2 <= (
          radius + 0.5
      ) ** 2
      labels[~mask] = 0
      #
      # Remove any label with a bogus center (no guiding object)
      #
      labels[numpy.isnan(centers_i) | numpy.isnan(centers_j)] = 0
      # labels, count = relabel(labels)
      return 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 9 for calling the IdentifyObjectsInGrid obj's underlying member method code with example usage: obj.run_circle(workspace, gridding, spot_center_i, spot_center_j) and returns: labels