#!/bin/bash
# Phase A viewpoint — 1v vs 2v at in-dist + OOD viewpoints.
# Train: vp_train (phi ∈ {0°, 45°, 90°, 270°, 315°} × thetas in [0°, 25°])
# Test: 2 in-dist viewpoints + 2 OOD viewpoints, n_episodes=10 each

set -e
cd /data/cameron/para/libero

CKPT_1V=/data/cameron/para/libero/checkpoints/libero_query_v0/latest.pth
CKPT_2V=/data/cameron/para/libero/checkpoints/libero_2view_v0/latest.pth

LOG_DIR=/data/cameron/para/libero/logs/phase_a_vp_eval
mkdir -p $LOG_DIR

# Cells: (model, theta, phi, label, gpu)
# In-dist: phi in {0, 45, 90, 270, 315}; OOD: phi in {135, 180, 225}
declare -a CELLS=(
    "2v  0    0    indist_default 0"
    "2v 14   45    indist_left    1"
    "2v 10  180    OOD_back       2"
    "2v 14  225    OOD_backleft   3"
    "1v  0    0    indist_default 4"
    "1v 14   45    indist_left    5"
    "1v 10  180    OOD_back       6"
    "1v 14  225    OOD_backleft   7"
)

run_cell() {
    local MODEL=$1; local TH=$2; local PH=$3; local LABEL=$4; local GPU=$5
    local CKPT
    local SCRIPT
    if [ "$MODEL" = "2v" ]; then
        CKPT=$CKPT_2V; SCRIPT=eval_libero_2view_ood.py
    else
        CKPT=$CKPT_1V; SCRIPT=eval_libero_query_ood.py
    fi
    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 $SCRIPT --checkpoint $CKPT \
        --n_episodes 10 --max_steps 600 \
        --teleport --zero_rotation --clean_scene \
        --cam_theta $TH --cam_phi $PH \
        > $LOG_DIR/${MODEL}_th${TH}_ph${PH}_${LABEL}.log 2>&1
}

# Launch all 8 cells in parallel
for cell in "${CELLS[@]}"; do
    read -r MODEL TH PH LABEL GPU <<< "$cell"
    (run_cell $MODEL $TH $PH $LABEL $GPU) &
done
wait

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