ci-net / code /validation /src /metrics.py
lsh9034's picture
Add files using upload-large-folder tool
7da2ecb verified
Raw History Blame Contribute Delete
921 Bytes
"""Metric helpers for object-based validation."""
from __future__ import annotations
def safe_div(num: float, den: float, default: float | None = None) -> float | None:
if den == 0:
return default
return float(num) / float(den)
def compute_scores(hits: int, misses: int, falses: int) -> dict:
"""Return POD/FAR/CSI/F1 from hit/miss/false counts."""
hits = int(hits)
misses = int(misses)
falses = int(falses)
return {
"hits": hits,
"misses": misses,
"falses": falses,
"POD": safe_div(hits, hits + misses, default=None),
"FAR": safe_div(falses, hits + falses, default=None),
"CSI": safe_div(hits, hits + misses + falses, default=None),
"F1": safe_div(2 * hits, 2 * hits + misses + falses, default=None),
}
def leadtime_pod(hits: int, misses: int) -> float | None:
return safe_div(hits, hits + misses, default=None)