code: def create_settings(self):
      self.pipeline = None
      self.metadata_keys = {}
  
      module_explanation = [
          "The %s module optionally allows you to split your list of images into image subsets"
          % self.module_name,
          "(groups) which will be processed independently of each other. Examples of",
          "groupings include screening batches, microtiter plates, time-lapse movies, etc.",
      ]
      self.set_notes([" ".join(module_explanation)])
  
      self.wants_groups = Binary(
          "Do you want to group your images?",
          False,
          doc="""\
  Select "*{YES}*" if you need to split your images into image subsets (or
  *groups*) such that each group is processed independently of each other.
  See the main module help for more details.
  """.format(
              **{"YES": "Yes"}
          ),
      )
  
      self.grouping_text = HTMLText(
          "",
          content="Each unique metadata value (or combination of values) will be defined as a group",
          size=(30, 2),
      )
  
      self.grouping_metadata = []
  
      self.grouping_metadata_count = HiddenCount(
          self.grouping_metadata, "grouping metadata count"
      )
  
      self.add_grouping_metadata(can_remove=False)
  
      self.add_grouping_metadata_button = DoSomething(
          "", "Add another metadata item", self.add_grouping_metadata
      )
  
      self.grouping_list = Table(
          "Grouping list",
          min_size=(300, 100),
          doc="""\
  This list shows the unique values of the selected metadata under the
  “Group” column; each of the unique values comprises a group. The “Count”
  column shows the number of image sets that included in a given group;
  this is useful as a “sanity check”, to make sure that the expected
  number of images are present. For example, if you are grouping by
  per-plate metadata from a 384-well assay with 2 sites per well
  consisting of 3 plates, you would expect to see 3 groups (each from the
  3 unique plate IDs), with 384 wells × 2 sites/well = 768 image sets in
  each.
  """,
      )
  
      self.image_set_list = Table(
          "Image sets",
          doc="""\
  This list displays the file name and location of each of the image sets
  that comprise the group. For example, if you are grouping by per-plate
  metadata from a 384-well assay with 2 sites per well consisting of 3
  plates, you would expect to see a table consisting of 3 plates × 384
  wells/plate ×2 sites/well = 2304 rows.
  """,
      )
  
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 1 for calling the Groups obj's underlying member method code with example usage: obj.create_settings() without return types