#!/bin/bash # Deployment script for splatatlas_full_patch.tar.gz # Run from /root/autodl-tmp/SplatAtlas/ # # What this does: # 1. Sanity-check we're in the right directory # 2. Back up the 4 files that will be overwritten # 3. Extract the patch (methods/, configs/, run_*.py, INSTALL.sh) # 4. Auto-generate pixelgssgf_benchmark.yaml and sgfgs_benchmark.yaml # from absgs template if they don't exist (with method_name swapped) # 5. Run verification grep checks set -e EXPECTED_ROOT="/root/autodl-tmp/SplatAtlas" if [ "$(pwd)" != "$EXPECTED_ROOT" ]; then echo "ERROR: please cd to $EXPECTED_ROOT first" echo " (you are in $(pwd))" exit 1 fi PATCH=splatatlas_full_patch.tar.gz if [ ! -f "$PATCH" ]; then echo "ERROR: $PATCH not found in $(pwd)" exit 1 fi # ---- 1. Backup the 4 modified files ---- BACKUP_DIR=".backup_$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" for f in methods/wrapper_absgs.py methods/wrapper_pixelgs.py \ methods/wrapper_pixelgssgf.py methods/wrapper_sgfgs.py; do if [ -f "$f" ]; then cp "$f" "$BACKUP_DIR/" fi done echo "[1/4] backed up 4 modified wrappers → $BACKUP_DIR/" # ---- 2. Extract patch ---- tar -xzf "$PATCH" echo "[2/4] patch extracted" # ---- 3. Auto-generate the two configs that might be missing ---- for missing in pixelgssgf sgfgs; do target="configs/${missing}_benchmark.yaml" if [ ! -f "$target" ]; then if [ -f configs/absgs_benchmark.yaml ]; then sed "s/^method_name: absgs/method_name: ${missing}/" \ configs/absgs_benchmark.yaml > "$target" echo "[3/4] generated missing $target from absgs template" else echo "[3/4] WARNING: $target missing AND no absgs_benchmark.yaml to clone from" fi fi done # ---- 4. Verification ---- echo "[4/4] verification:" echo "" echo "--- SGF residue in wrapper_pixelgs.py (should be empty) ---" grep -n "SGFController\|guided_l1_loss\|guided_ssim_loss" methods/wrapper_pixelgs.py \ && echo " FAIL: residue found" || echo " PASS" echo "" echo "--- pixels kept in wrapper_pixelgs.py (should have 2 lines) ---" grep -n "pixels" methods/wrapper_pixelgs.py | grep -E "render_pkg|add_densification" || echo " FAIL" echo "" echo "--- new wrappers registered ---" grep -n "register_method" methods/wrapper_edgeloss.py methods/wrapper_vanillasgf.py echo "" echo "--- timing in all 6 wrappers ---" for f in absgs pixelgs pixelgssgf sgfgs vanillasgf edgeloss; do if [ -f "methods/wrapper_${f}.py" ]; then n_time=$(grep -c "iter_time_ms\|render_ms\|vram_allocated" methods/wrapper_${f}.py) echo " wrapper_${f}.py: $n_time timing references" fi done echo "" echo "--- configs present ---" ls -1 configs/*_benchmark.yaml echo "" echo "--- run scripts present ---" ls -1 run_*.py echo "" echo "--- master execution plan dependency check ---" for need in run_vanillasgf.py run_absgs.py run_pixelgs.py run_edgeloss.py run_vanilla.py; do if [ -f "$need" ]; then echo " OK $need" else echo " MISS $need (run_all.py will skip this method)" fi done echo "" echo "DONE. To run a single method: python run_.py" echo " To run all methods: python run_all.py" echo " To dry-run plan: python run_all.py --dry-run" echo "" echo "Backup of pre-patch wrappers: $BACKUP_DIR/"