def _is_config_valid()

in pathology/transformation_pipeline/ingestion_lib/dicom_gen/wsi_to_dicom/wsi_pyramid_gen_config.py [0:0]


def _is_config_valid(decoded_config: Any) -> bool:
  """Test if pyramid definition is correctly formatted.

  Expected format:
    PixelSpacing (mm/pixel): List[int] Downsamples or single int

    example configuration for (40x, 10x , & 2.5x):
      # config for 40x = 0.00025
      0.00025 : [1, 8, 32]
      # config for 10x = 0.001
      0.001   : [1, 8]
      # config for 2.5x = 0.004
      0.004   : 1

  Args:
    decoded_config: YAML or JSON parsed into Python structures.

  Returns:
      True if correctly formatted.
  """
  if not isinstance(decoded_config, dict) or not decoded_config:
    return False
  for key, value in decoded_config.items():
    if isinstance(key, str):
      # Error if keys are strings that cannot be decoded to floats.
      # Detect errors in JSON
      try:
        float(key)
      except ValueError:
        return False
    elif not (isinstance(key, float) or isinstance(key, int)):
      return False
    if isinstance(value, list) or isinstance(value, set):
      for item in value:
        if not _test_downsample_value(item):
          return False
      continue
    if not _test_downsample_value(value):
      return False
  return True