ClimateGuard / src /utils.py
qaisar701shan's picture
Create src/utils.py
5311776 verified
from __future__ import annotations
import os
import math
from dataclasses import dataclass
from typing import Dict, Any, Optional, List
import pandas as pd
import numpy as np
def get_env(name: str, default: Optional[str] = None) -> Optional[str]:
# HF Spaces: secrets mounted as env
return os.getenv(name, default)
def heat_index_c(temp_c: float, rh: float) -> float:
"""Compute heat index (°C) using Rothfusz regression.
Input temp in °C, RH in %.
"""
T = temp_c * 9/5 + 32
R = rh
HI_f = (-42.379 + 2.04901523*T + 10.14333127*R - 0.22475541*T*R
- 6.83783e-3*T*T - 5.481717e-2*R*R + 1.22874e-3*T*T*R
+ 8.5282e-4*T*R*R - 1.99e-6*T*T*R*R)
return (HI_f - 32) * 5/9
def bucketize(val: float, bins: List[float], labels: List[str]) -> str:
idx = np.digitize([val], bins)[0]
return labels[min(idx, len(labels)-1)]
def safe_float(x, default=np.nan):
try:
return float(x)
except Exception:
return default