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.)
code: def add(self, name, image):
      old_providers = [
          provider
          for provider in self.providers
          if provider.name == name
      ]
      if len(old_providers) > 0:
          self.clear_image(name)
      for provider in old_providers:
          self.providers.remove(provider)
      provider = VanillaImage(name, image)
      self.providers.append(provider)
  
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 8 for calling the ImageSet obj's underlying member method code with example usage: obj.add(name, image) without return types