#!/bin/bash
# DA3 fusion eval at 4 viewpoints (same matrix as Phase A viewpoint).
set -e
cd /data/cameron/para/libero
CKPT=/data/cameron/para/libero/checkpoints/libero_da3fusion_v0/latest.pth
LOG_DIR=/data/cameron/para/libero/logs/da3_eval
mkdir -p $LOG_DIR

declare -a CELLS=(
    " 0    0    indist_default 5"
    "14   45    indist_left    6"
    "10  180    OOD_back       7"
    "14  225    OOD_backleft   8"
)

run_cell() {
    local TH=$1; local PH=$2; local LABEL=$3; local GPU=$4
    PYTHONPATH=/data/cameron/LIBERO LIBERO_DATA_PATH=/data/libero CUDA_VISIBLE_DEVICES=$GPU \
    DINO_REPO_DIR=/data/cameron/keygrip/dinov3 \
    DINO_WEIGHTS_PATH=/data/cameron/keygrip/dinov3/weights/dinov3_vits16plus_pretrain_lvd1689m-4057cbaa.pth \
    MUJOCO_GL=osmesa PYOPENGL_PLATFORM=osmesa \
    python eval_libero_da3fusion_ood.py --checkpoint $CKPT \
        --n_episodes 10 --max_steps 600 \
        --teleport --zero_rotation --clean_scene \
        --cam_theta $TH --cam_phi $PH \
        > $LOG_DIR/th${TH}_ph${PH}_${LABEL}.log 2>&1
}

for cell in "${CELLS[@]}"; do
    read -r TH PH LABEL GPU <<< "$cell"
    (run_cell $TH $PH $LABEL $GPU) &
done
wait

echo "=== DA3 fusion eval ==="
for cell in "${CELLS[@]}"; do
    read -r TH PH LABEL GPU <<< "$cell"
    FILE=$LOG_DIR/th${TH}_ph${PH}_${LABEL}.log
    SR=$(grep "Success Rate" $FILE 2>/dev/null | head -1 | sed 's/.*Success Rate: //')
    echo "  th=$TH ph=$PH ($LABEL): $SR"
done
