code: def run_two_measurements(self, workspace):
      measurements = workspace.measurements
      in_high_class = []
      saved_values = []
      objects = workspace.object_set.get_objects(self.object_name.value)
      has_nan_measurement = numpy.zeros(objects.count, bool)
      for feature, threshold_method, threshold in (
          (
              self.first_measurement,
              self.first_threshold_method,
              self.first_threshold,
          ),
          (
              self.second_measurement,
              self.second_threshold_method,
              self.second_threshold,
          ),
      ):
          values = measurements.get_current_measurement(
              self.object_name.value, feature.value
          )
          if len(values) < objects.count:
              values = numpy.hstack(
                  (values, [numpy.NaN] * (objects.count - len(values)))
              )
          saved_values.append(values)
          has_nan_measurement = has_nan_measurement | numpy.isnan(
              values
          )
          if threshold_method == TM_CUSTOM:
              t = threshold.value
          elif len(values) == 0:
              t = 0
          elif threshold_method == TM_MEAN:
              t = numpy.mean(values[~numpy.isnan(values)])
          elif threshold_method == TM_MEDIAN:
              t = numpy.median(values[~numpy.isnan(values)])
          else:
              raise ValueError(
                  "Unknown threshold method: %s"
                  % threshold_method.value
              )
          in_high_class.append(values >= t)
      feature_names = self.get_feature_name_matrix()
      num_values = len(values)
      for i in range(2):
          for j in range(2):
              in_class = (
                  (in_high_class[0].astype(int) == i)
                  & (in_high_class[1].astype(int) == j)
                  & (~has_nan_measurement)
              )
              measurements.add_measurement(
                  self.object_name.value,
                  "_".join((M_CATEGORY, feature_names[i, j])),
                  in_class.astype(int),
              )
              num_hits = in_class.sum()
              measurement_name = "_".join(
                  (M_CATEGORY, feature_names[i, j], F_NUM_PER_BIN)
              )
              measurements.add_measurement(
                  IMAGE, measurement_name, num_hits
              )
              measurement_name = "_".join(
                  (M_CATEGORY, feature_names[i, j], F_PCT_PER_BIN)
              )
              measurements.add_measurement(
                  IMAGE,
                  measurement_name,
                  100.0 * float(num_hits) / num_values
                  if num_values > 0
                  else 0,
              )
  
      if self.wants_image:
          class_1, class_2 = in_high_class
          object_codes = (
              class_1.astype(int) + class_2.astype(int) * 2 + 1
          )
          object_codes = numpy.hstack(([0], object_codes))
          object_codes[numpy.hstack((False, numpy.isnan(values)))] = 0
          nobjects = len(class_1)
          mapping = numpy.zeros(nobjects + 1, int)
          mapping[1:] = numpy.arange(1, nobjects + 1)
          labels = object_codes[mapping[objects.segmented]]
          colors = self.get_colors(4)
          image = colors[labels, :3]
          image = Image(image, parent_image=objects.parent_image)
          workspace.image_set.add(self.image_name.value, image)
  
      if self.show_window:
          workspace.display_data.in_high_class = in_high_class
          workspace.display_data.labels = (objects.segmented,)
          workspace.display_data.saved_values = saved_values
  
imports: import functools
  import os
  import numpy
  from cellprofiler.modules import _help
  from cellprofiler.utilities.rules import Rules
  from cellprofiler_core.constants.measurement import COLTYPE_FLOAT, M_LOCATION_CENTER_X, M_LOCATION_CENTER_Y, COLTYPE_VARCHAR, C_COUNT, C_CHILDREN, C_LOCATION, C_NUMBER, C_PARENT, FTR_OBJECT_NUMBER, FTR_CENTER_X, FTR_CENTER_Y, FTR_CENTER_Z
  from cellprofiler_core.constants.measurement import COLTYPE_INTEGER
  from cellprofiler_core.constants.measurement import IMAGE
  from cellprofiler_core.image import Image
  from cellprofiler_core.module import Module
  from cellprofiler_core.object import Objects
  from cellprofiler_core.preferences import get_default_colormap, get_headless
  from cellprofiler_core.setting import Binary
  from cellprofiler_core.setting import Divider
  from cellprofiler_core.setting import HiddenCount
  from cellprofiler_core.setting import Measurement
  from cellprofiler_core.setting import SettingsGroup
  from cellprofiler_core.setting import ValidationError
  from cellprofiler_core.setting.choice import Choice
  from cellprofiler_core.setting.do_something import DoSomething
  from cellprofiler_core.setting.do_something import RemoveSettingButton
  from cellprofiler_core.setting.subscriber import LabelSubscriber
  from cellprofiler_core.setting.text import Alphanumeric, Directory, Filename, LabelName
  from cellprofiler_core.setting.text import Float
  from cellprofiler_core.setting.text import ImageName
  from cellprofiler_core.setting.text import Integer
  from cellprofiler_core.setting.text import Text
  from cellprofiler_core.constants.measurement import FF_CHILDREN_COUNT
  from cellprofiler_core.constants.measurement import FF_COUNT
  from cellprofiler_core.constants.measurement import FF_PARENT
  from cellprofiler_core.module.image_segmentation import ImageSegmentation
label_desc: Use image node_id 11 for calling the ClassifyObjects obj's underlying member method code with example usage: obj.run_two_measurements(workspace) without return types