docstr: Find the metadata groups that are relevant for creating the file name
  
  workspace - the workspace with the image set metadata elements and
              grouping measurements populated.
  settings_group - if saving individual objects, this is the settings
                   group that controls naming the files.
docstr_tok: ["Find","the","metadata","groups","that","are","relevant","for","creating","the","file","name","workspace","-","the","workspace","with","the","image","set","metadata","elements","and","grouping","measurements","populated",".","settings_group","-","if","saving","individual","objects",",","this","is","the","settings","group","that","controls","naming","the","files","."]
code: def get_metadata_groups(self, workspace, settings_group=None):
      """Find the metadata groups that are relevant for creating the file name
  
      workspace - the workspace with the image set metadata elements and
                  grouping measurements populated.
      settings_group - if saving individual objects, this is the settings
                       group that controls naming the files.
      """
      if (
          settings_group is None
          or settings_group.wants_automatic_file_name
      ):
          tags = []
      else:
          tags = find_metadata_tokens(settings_group.file_name.value)
      if self.directory.is_custom_choice:
          tags += find_metadata_tokens(self.directory.custom_path)
      metadata_groups = workspace.measurements.group_by_metadata(tags)
      return metadata_groups
  
imports: import base64
  import csv
  import logging
  import os
  import numpy
  from cellprofiler_core.constants.image import C_MD5_DIGEST, C_SCALING, C_HEIGHT, C_WIDTH
  from cellprofiler_core.constants.measurement import EXPERIMENT, IMAGE, AGG_MEAN, AGG_MEDIAN, AGG_STD_DEV, C_URL, C_PATH_NAME, C_FILE_NAME, NEIGHBORS, R_FIRST_IMAGE_NUMBER, R_SECOND_IMAGE_NUMBER, R_FIRST_OBJECT_NUMBER, R_SECOND_OBJECT_NUMBER
  from cellprofiler_core.constants.module import IO_FOLDER_CHOICE_HELP_TEXT, IO_WITH_METADATA_HELP_TEXT, USING_METADATA_HELP_REF, USING_METADATA_TAGS_REF
  from cellprofiler_core.constants.pipeline import EXIT_STATUS
  from cellprofiler_core.measurement import Measurements
  from cellprofiler_core.module import Module
  from cellprofiler_core.preferences import ABSOLUTE_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_INPUT_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_INPUT_SUBFOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_SUBFOLDER_NAME
  from cellprofiler_core.preferences import get_headless
  from cellprofiler_core.setting import Binary
  from cellprofiler_core.setting import Divider
  from cellprofiler_core.setting import Measurement
  from cellprofiler_core.setting import SettingsGroup
  from cellprofiler_core.setting import ValidationError
  from cellprofiler_core.setting.choice import CustomChoice, Choice
  from cellprofiler_core.setting.do_something import DoSomething, RemoveSettingButton
  from cellprofiler_core.setting.multichoice import MeasurementMultiChoice
  from cellprofiler_core.setting.subscriber import ImageSubscriber, LabelSubscriber
  from cellprofiler_core.setting.text import Directory, Text
  from cellprofiler_core.utilities.core.modules.load_data import is_file_name_feature, is_path_name_feature
  from cellprofiler_core.utilities.measurement import find_metadata_tokens, get_agg_measurement_name
  from cellprofiler.gui.help.content import MEASUREMENT_NAMING_HELP
label_desc: Use image node_id 16 for calling the ExportToSpreadsheet obj's underlying member method code with example usage: obj.get_metadata_groups(workspace, settings_group) and returns: metadata_groups