#!/usr/bin/env python3
from __future__ import annotations

import argparse
from pathlib import Path
import sys

import pandas as pd

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))

from src.config_utils import prepare_output_dirs, read_config
from src.plotting import plot_summary_bars


def main() -> None:
    parser = argparse.ArgumentParser(description="Collect per-task summary CSV files into one table.")
    parser.add_argument("--config", default="config/experiment.yaml")
    args = parser.parse_args()

    cfg_path = Path(args.config).resolve()
    cfg = read_config(cfg_path)
    dirs = prepare_output_dirs(cfg, base_dir=cfg_path.parent.parent)

    files = sorted(dirs["metrics"].glob("summary_*.csv"))
    if not files:
        print("No summary_*.csv files found.")
        return
    df = pd.concat([pd.read_csv(f) for f in files], ignore_index=True)
    out = dirs["metrics"] / "summary_all.csv"
    df.to_csv(out, index=False)
    print(f"Wrote {len(df)} rows to {out}")

    # Useful compact comparison figures.
    plot_summary_bars(out, dirs["figures"] / "summary_pr_RMAE_percent.png", "pr_o", "RMAE_percent")
    plot_summary_bars(out, dirs["figures"] / "summary_pr_CORR.png", "pr_o", "CORR")
    plot_summary_bars(out, dirs["figures"] / "summary_t2_MAE.png", "t2_o", "MAE")
    plot_summary_bars(out, dirs["figures"] / "summary_t2_RMSE.png", "t2_o", "RMSE")
    plot_summary_bars(out, dirs["figures"] / "summary_t2_CORR.png", "t2_o", "CORR")


if __name__ == "__main__":
    main()
