class_docstr: Represents the images for a particular iteration of a pipeline
  
  An image set is composed of one image provider per image in the set.
  The image provider loads or creates an image, given a dictionary of keys
  (which might represent things like the plate/well for the image set or the
  frame number in a movie, etc.)
docstr: Constructor:
  number = image set index
  keys = dictionary of key/value pairs that uniquely identify the image set
docstr_tok: ["Constructor",":","number","=","image","set","index","keys","=","dictionary","of","key\/value","pairs","that","uniquely","identify","the","image","set"]
code: def __init__(self, number, keys, legacy_fields):
      """Constructor:
      number = image set index
      keys = dictionary of key/value pairs that uniquely identify the image set
      """
      self.__image_providers = []
      self.__images = {}
      self.keys = keys
      self.number = number
      self.legacy_fields = legacy_fields
      self.image_number = number + 1
  
file_path: CellProfiler/src/subpackages/core/cellprofiler_core/image/_image_set.py
imports: import logging
  import numpy
  from ._grayscale_image import GrayscaleImage
  from ._rgb_image import RGBImage
  from .abstract_image import VanillaImage
label_desc: Use image node_id 1 to create a new ImageSet object  with example: obj = ImageSet(number, keys, legacy_fields)