# scripts/plot_lagged_correlations.py
from __future__ import annotations

from pathlib import Path

from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES_BY_KEY
from meteo.analysis import compute_lagged_correlation
from meteo.plots import plot_lagged_correlation


CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_DIR = Path("figures/lagged_correlations")


# Paires à analyser (clé de variable X, clé de variable Y)
# Convention : X précède potentiellement Y
INTERESTING_PAIRS: list[tuple[str, str]] = [
    ("temperature", "humidity"),
    ("temperature", "rain_rate"),
    ("pressure", "rain_rate"),
    ("pressure", "wind_speed"),
    ("pressure", "illuminance"),
    ("illuminance", "temperature"),
    ("humidity", "rain_rate"),
]


def main() -> None:
    if not CSV_PATH.exists():
        print(f"⚠ Fichier introuvable : {CSV_PATH}")
        return

    df = load_raw_csv(CSV_PATH)
    print(f"Dataset minuté chargé : {CSV_PATH}")
    print(f"  Lignes   : {len(df)}")
    print(f"  Colonnes : {list(df.columns)}")
    print()

    for key_x, key_y in INTERESTING_PAIRS:
        var_x = VARIABLES_BY_KEY[key_x]
        var_y = VARIABLES_BY_KEY[key_y]

        print(f"→ Corrélation décalée : {var_x.key} → {var_y.key}")

        lag_df = compute_lagged_correlation(
            df=df,
            var_x=var_x,
            var_y=var_y,
            max_lag_minutes=360,   # ± 6 heures
            step_minutes=10,       # pas de 10 minutes
            method="pearson",
        )

        filename = f"lagcorr_{var_x.key}_to_{var_y.key}.png"
        output_path = OUTPUT_DIR / filename

        plot_lagged_correlation(
            lag_df=lag_df,
            var_x=var_x,
            var_y=var_y,
            output_path=output_path,
        )

    print("✔ Graphiques de corrélation décalée générés.")


if __name__ == "__main__":
    main()
