code: def update_tables(self):
      if self.wants_groups:
          try:
              if not self.workspace.refresh_image_set():
                  return
          except:
              return
          m = self.workspace.measurements
          assert isinstance(m, Measurements)
          channel_descriptors = m.get_channel_descriptors()
  
          self.grouping_list.clear_columns()
          self.grouping_list.clear_rows()
          self.image_set_list.clear_columns()
          self.image_set_list.clear_rows()
          metadata_key_names = [
              group.metadata_choice.value
              for group in self.grouping_metadata
              if group.metadata_choice.value != "None"
          ]
          metadata_feature_names = [
              "_".join((C_METADATA, key)) for key in metadata_key_names
          ]
          metadata_key_names = [
              x[(len(C_METADATA) + 1) :] for x in metadata_feature_names
          ]
          image_set_feature_names = [
              GROUP_NUMBER,
              GROUP_INDEX,
          ] + metadata_feature_names
          self.image_set_list.insert_column(0, "Group number")
          self.image_set_list.insert_column(1, "Group index")
  
          for i, key in enumerate(metadata_key_names):
              for l, offset in (
                  (self.grouping_list, 0),
                  (self.image_set_list, 2),
              ):
                  l.insert_column(i + offset, "Group: %s" % key)
  
          self.grouping_list.insert_column(
              len(metadata_key_names), "Count"
          )
  
          image_numbers = m.get_image_numbers()
          group_indexes = m[
              "Image",
              GROUP_INDEX,
              image_numbers,
          ][:]
          group_numbers = m[
              "Image",
              GROUP_NUMBER,
              image_numbers,
          ][:]
          counts = numpy.bincount(group_numbers)
          first_indexes = numpy.argwhere(group_indexes == 1).flatten()
          group_keys = [
              m["Image", feature, image_numbers]
              for feature in metadata_feature_names
          ]
          k_count = sorted(
              [
                  (
                      group_numbers[i],
                      [x[i] for x in group_keys],
                      counts[group_numbers[i]],
                  )
                  for i in first_indexes
              ]
          )
          for group_number, group_key_values, c in k_count:
              row = group_key_values + [c]
              self.grouping_list.data.append(row)
  
          for image_name, channel_type in channel_descriptors.items():
              idx = len(image_set_feature_names)
              self.image_set_list.insert_column(
                  idx, "Path: %s" % image_name
              )
              self.image_set_list.insert_column(
                  idx + 1, "File: %s" % image_name
              )
              if channel_type == CT_OBJECTS:
                  image_set_feature_names.append(
                      C_OBJECTS_PATH_NAME + "_" + image_name
                  )
                  image_set_feature_names.append(
                      C_OBJECTS_FILE_NAME + "_" + image_name
                  )
              else:
                  image_set_feature_names.append(
                      C_PATH_NAME + "_" + image_name
                  )
                  image_set_feature_names.append(
                      C_FILE_NAME + "_" + image_name
                  )
  
          all_features = [
              m["Image", ftr, image_numbers]
              for ftr in image_set_feature_names
          ]
          order = numpy.lexsort((group_indexes, group_numbers))
  
          for idx in order:
              row = [str(x[idx]) for x in all_features]
              self.image_set_list.data.append(row)
  
imports: import numpy
  from ..constants.image import CT_OBJECTS
  from ..constants.measurement import COLTYPE_INTEGER, COLTYPE_VARCHAR, IMAGE
  from ..constants.measurement import C_FILE_NAME
  from ..constants.measurement import C_METADATA
  from ..constants.measurement import C_OBJECTS_FILE_NAME
  from ..constants.measurement import C_OBJECTS_PATH_NAME
  from ..constants.measurement import C_PATH_NAME
  from ..constants.measurement import EXPERIMENT
  from ..constants.measurement import GROUP_INDEX
  from ..constants.measurement import GROUP_NUMBER
  from ..constants.measurement import GROUP_LENGTH
  from ..constants.measurement import M_GROUPING_TAGS
  from ..measurement import Measurements
  from ..module import Module
  from ..pipeline import Pipeline
  from ..setting import Binary
  from ..setting import Divider
  from ..setting import HTMLText
  from ..setting import HiddenCount
  from ..setting import SettingsGroup
  from ..setting import Table
  from ..setting.choice import Choice
  from ..setting.do_something import DoSomething
  from ..setting.do_something import RemoveSettingButton
  from ..utilities.image import image_resource
label_desc: Use image node_id 11 for calling the Groups obj's underlying member method code with example usage: obj.update_tables() without return types