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