docstr: Prepare an image set to be run
  
  workspace - workspace with image set populated (at this point)
  
  returns False if analysis can't be done
docstr_tok: ["Prepare","an","image","set","to","be","run","workspace","-","workspace","with","image","set","populated","(","at","this","point",")","returns","False","if","analysis","ca","n't","be","done"]
code: def prepare_run(self, workspace):
      """Prepare an image set to be run
  
      workspace - workspace with image set populated (at this point)
  
      returns False if analysis can't be done
      """
      maximum_image_sets = 500
  
      if workspace.measurements.has_groups():
          group_numbers = workspace.measurements[
              "Image",
              "Group_Number",
              workspace.measurements.get_image_numbers(),
          ]
          max_image_set_len = max(numpy.bincount(group_numbers))
      elif workspace.measurements.has_measurements(
          "Image", "Group_Length", 1
      ):
          num_images = workspace.measurements.image_set_count
          max_image_set_len = max(
              workspace.measurements.get_measurement(
                  "Image", "Group_Length", range(1, num_images + 1)
              )
          )
      else:
          max_image_set_len = workspace.measurements.image_set_count
      if max_image_set_len > maximum_image_sets:
          if get_headless():
              LOGGER.warning(
                  "Given the large number of image sets, you may want to consider using "
                  "ExportToDatabase as opposed to ExportToSpreadsheet."
              )
          else:
              msg = (
                  f"You are using ExportToSpreadsheet to export {workspace.measurements.image_set_count} image sets. "
                  "Instead we suggest using ExportToDatabase because ExportToSpreadsheet"
                  " may fail on large image sets. Do you want to continue?"
              )
              import wx
  
              result = wx.MessageBox(
                  msg,
                  caption="ExportToSpreadsheet: Large number of image sets",
                  style=wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION,
              )
              if result == wx.NO:
                  return False
      return self.check_overwrite(workspace)
  
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 9 for calling the ExportToSpreadsheet obj's underlying member method code with example usage: obj.prepare_run(workspace) and returns: self, False