Source code for pyhazards.tasks
from __future__ import annotations
from dataclasses import dataclass
from typing import Dict, List
[docs]
@dataclass(frozen=True)
class HazardTask:
"""Canonical hazard task label used by benchmark and config layers."""
name: str
hazard: str
target: str
description: str
_HAZARD_TASKS: Dict[str, HazardTask] = {
"earthquake.picking": HazardTask(
name="earthquake.picking",
hazard="earthquake",
target="picking",
description="Waveform-based earthquake phase detection and P/S picking.",
),
"earthquake.forecasting": HazardTask(
name="earthquake.forecasting",
hazard="earthquake",
target="forecasting",
description="Earthquake forecasting over spatial or temporal forecast windows.",
),
"wildfire.danger": HazardTask(
name="wildfire.danger",
hazard="wildfire",
target="danger",
description="Wildfire danger or risk prediction over a region and horizon.",
),
"wildfire.spread": HazardTask(
name="wildfire.spread",
hazard="wildfire",
target="spread",
description="Wildfire spread forecasting over raster masks or burned-area grids.",
),
"flood.streamflow": HazardTask(
name="flood.streamflow",
hazard="flood",
target="streamflow",
description="Riverine discharge or streamflow forecasting.",
),
"flood.inundation": HazardTask(
name="flood.inundation",
hazard="flood",
target="inundation",
description="Flood inundation and water-extent forecasting over spatial grids.",
),
"tc.track_intensity": HazardTask(
name="tc.track_intensity",
hazard="tc",
target="track_intensity",
description="Storm-track and intensity forecasting over lead-time horizons.",
),
}
[docs]
def available_hazard_tasks() -> List[str]:
return sorted(_HAZARD_TASKS.keys())
[docs]
def get_hazard_task(name: str) -> HazardTask:
key = name.strip().lower()
if key not in _HAZARD_TASKS:
raise KeyError(
"Unknown hazard task '{name}'. Known: {known}".format(
name=name,
known=", ".join(available_hazard_tasks()),
)
)
return _HAZARD_TASKS[key]
[docs]
def has_hazard_task(name: str) -> bool:
return name.strip().lower() in _HAZARD_TASKS
__all__ = [
"HazardTask",
"available_hazard_tasks",
"get_hazard_task",
"has_hazard_task",
]