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: Find the feature name choices available for the chosen category
docstr_tok: ["Find","the","feature","name","choices","available","for","the","chosen","category"]
code: def get_feature_name_choices(
      self, pipeline, object_name=None, category=None
  ):
      """Find the feature name choices available for the chosen category"""
      if object_name is None:
          object_name = self.__object_fn()
      if category is None:
          category = self.get_category(pipeline)
      if category is None:
          return []
      feature_names = set()
      for module in pipeline.modules():
          if self.key() in [x.key() for x in module.settings()]:
              break
          feature_names.update(
              module.get_measurements(pipeline, object_name, category)
          )
      result = list(feature_names)
      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 6 for calling the Measurement obj's underlying member method code with example usage: obj.get_feature_name_choices(pipeline, object_name, category) and returns: result, list