code: def record_image_measurement(
      self,
      workspace,
      image_name,
      scale,
      feature_name,
      result,
      gray_levels,
  ):
      # TODO: this is very concerning
      if not numpy.isfinite(result):
          result = 0
  
      feature = "{}_{}_{}_{}_{}".format(
          TEXTURE, feature_name, image_name, str(scale), gray_levels
      )
  
      workspace.measurements.add_image_measurement(feature, result)
  
      statistics = [
          image_name,
          "-",
          feature_name,
          scale,
          "{:.2}".format(float(result)),
      ]
  
      return [statistics]
  
imports: import cellprofiler.gui.help.content
  import cellprofiler.icons
  import mahotas.features
  import numpy
  import skimage.exposure
  import skimage.measure
  import skimage.util
  from cellprofiler_core.constants.measurement import COLTYPE_FLOAT
  from cellprofiler_core.module import Module
  from cellprofiler_core.setting import HiddenCount, Divider, SettingsGroup, ValidationError
  from cellprofiler_core.setting.choice import Choice
  from cellprofiler_core.setting.do_something import DoSomething, RemoveSettingButton
  from cellprofiler_core.setting.subscriber import ImageListSubscriber, LabelListSubscriber
  from cellprofiler_core.setting.text import Integer
  from cellprofiler_core.utilities.core.object import size_similarly
label_desc: Use image node_id 20 for calling the MeasureTexture obj's underlying member method code with example usage: obj.record_image_measurement(workspace, image_name, scale, feature_name, result, gray_levels) and returns: list