class_docstr: A measurement done on a class of objects (or Experiment or Image)
  
  A measurement represents a fully-qualified name of a measurement taken
  on an object. Measurements have categories and feature names and
  may or may not have a secondary image (for instance, the image used
  to measure an intensity), secondary object (for instance, the parent
  object when relating two classes of objects or the object name when
  aggregating object measurements over an image) or scale.
class_docstr_tok: ["A","measurement","done","on","a","class","of","objects","(","or","Experiment","or","Image",")","A","measurement","represents","a","fully-qualified","name","of","a","measurement","taken","on","an","object",".","Measurements","have","categories","and","feature","names","and","may","or","may","not","have","a","secondary","image","(","for","instance",",","the","image","used","to","measure","an","intensity",")",",","secondary","object","(","for","instance",",","the","parent","object","when","relating","two","classes","of","objects","or","the","object","name","when","aggregating","object","measurements","over","an","image",")","or","scale","."]
docstr: Return a list of objects for a particular feature
  
  Typically these are image features measured on the objects in the image
docstr_tok: ["Return","a","list","of","objects","for","a","particular","feature","Typically","these","are","image","features","measured","on","the","objects","in","the","image"]
code: def get_object_name_choices(
      self, pipeline, object_name=None, category=None, feature_name=None
  ):
      """Return a list of objects for a particular feature
  
      Typically these are image features measured on the objects in the image
      """
      if object_name is None:
          object_name = self.__object_fn()
      if category is None:
          category = self.get_category(pipeline, object_name)
      if feature_name is None:
          feature_name = self.get_feature_name(
              pipeline, object_name, category
          )
      if any(
          [x is None for x in (object_name, category, feature_name)]
      ):
          return []
      objects = set()
      for module in pipeline.modules():
          if self.key in [x.key() for x in module.settings()]:
              break
          objects.update(
              module.get_measurement_objects(
                  pipeline, object_name, category, feature_name
              )
          )
      result = list(objects)
      result.sort()
      return result
  
file_path: CellProfiler/src/subpackages/core/cellprofiler_core/setting/_measurement.py
imports: from ._setting import Setting
  from ._validation_error import ValidationError
label_desc: Use image node_id 12 for calling the Measurement obj's underlying member method code with example usage: obj.get_object_name_choices(pipeline, object_name, category, feature_name) and returns: result, list