Source code for mapchete_eo.processes.config

from __future__ import annotations

from typing import Dict, Optional, Tuple, Union

from pydantic import BaseModel


[docs] class SmoothConfig(BaseModel): radius: Optional[int] = 1 smooth_more: Optional[bool] = False
[docs] @staticmethod def parse(inp: Union[SmoothConfig, dict]) -> SmoothConfig: if isinstance(inp, SmoothConfig): return inp elif isinstance(inp, dict): return SmoothConfig(**inp) else: raise TypeError(f"cannot parse SmoothConfig from {inp}")
[docs] class RGBCompositeConfig(BaseModel): red: Tuple[int, int] = (0, 2300) green: Tuple[int, int] = (0, 2300) blue: Tuple[int, int] = (0, 2300) gamma: float = 1.15 saturation: float = 1.3 clahe_flag: bool = True clahe_clip_limit: float = 3.2 clahe_tile_grid_size: Tuple[int, int] = (32, 32) sigmoidal_flag: bool = False sigmoidal_contrast: int = 0 sigmoidal_bias: float = 0.0 fuzzy_radius: Optional[int] = 0 sharpen: Optional[bool] = False smooth: Optional[bool] = False smooth_config: SmoothConfig = SmoothConfig() smooth_water: Optional[bool] = False smooth_water_config: SmoothConfig = SmoothConfig(radius=6, smooth_more=True) smooth_water_ndwi_threshold: float = 0.2 calculations_dtype: str = "float16"
[docs] @staticmethod def parse(inp: Union[RGBCompositeConfig, Dict]) -> RGBCompositeConfig: if isinstance(inp, RGBCompositeConfig): return inp elif isinstance(inp, dict): smooth_config = SmoothConfig.parse(inp.pop("smooth_config", {})) return RGBCompositeConfig(smooth_config=smooth_config, **inp) else: raise TypeError(f"cannot parse RGBCompositeConfig from {inp}")