#!/usr/bin/env bash
# README example: simple_trainer.py default on Mip-NeRF 360 "garden" at 1/4 resolution, default 30k steps
# with evaluation at 7k and 30k. Metrics are read from the stats JSON files the trainer writes.
set -o pipefail
ROW=/var/tmp/kv-repro/021-nerfstudio-project-gsplat
OUT=$ROW/data/run
rm -rf "$OUT"
cd examples || exit 1
echo "KVERITAS_PHASE name=train"
python simple_trainer.py default --data_dir "$ROW/data/360_v2/garden" --data_factor 4 \
  --result_dir "$OUT" --disable_viewer 2>&1 | tr '\r' '\n' | grep -v "^Rendering\|it/s\]$" | tail -40 || exit 1
python - "$OUT/stats" <<'PY'
import glob, json, os, re, sys
vals = sorted(glob.glob(os.path.join(sys.argv[1], "val_step*.json")))
for p in vals:
    step = int(re.search(r"val_step(\d+)", p).group(1)) + 1
    r = json.load(open(p))
    for k in ("psnr", "ssim", "lpips", "num_GS"):
        print(f"KVERITAS_METRIC name={k} value={r[k]:.6g} step={step}")
r = json.load(open(vals[-1]))
for k in ("psnr", "ssim", "lpips"):
    print(f"KVERITAS_CLAIM metric={k} value={r[k]:.6g}")
PY
