Marlin Lee
Add Save as Preset button (--editable-examples flag); wire examples file in entrypoint
b49845a
"""Command-line argument definitions for the SAE Feature Explorer."""
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--data", type=str, required=True)
parser.add_argument("--image-dir", type=str, required=True,
help="Primary image directory used during precompute")
parser.add_argument("--extra-image-dir", type=str, default=[], nargs="*",
help="Additional image directories used during precompute")
parser.add_argument("--thumb-size", type=int, default=256)
parser.add_argument("--inference-cache-size", type=int, default=64,
help="Number of images to keep in the patch-activations LRU cache")
parser.add_argument("--names-file", type=str, default=None,
help="Path to JSON file for saving feature names "
"(default: <data>_feature_names.json)")
parser.add_argument("--primary-label", type=str, default="Primary",
help="Display label for the primary --data file")
parser.add_argument("--clip-model", type=str, default="openai/clip-vit-large-patch14",
help="HuggingFace CLIP model ID for free-text search")
parser.add_argument("--google-api-key", type=str, default=None,
help="Google API key for Gemini auto-interp button "
"(default: GOOGLE_API_KEY env var)")
parser.add_argument("--sae-url", type=str, default=None,
help="Download URL for SAE weights — shown as a link in the summary panel")
parser.add_argument("--phi-dir", type=str, default=None,
help="Directory containing Phi_cv_*.npy, phi_c_*.npy, voxel_coords.npy")
parser.add_argument("--phi-model", type=str, default=None,
help="Model name substring to match phi files "
"(default: pick largest Phi_cv_*.npy by file size)")
parser.add_argument("--dynadiff-modal-url", type=str, default=None,
help="Modal endpoint URL for DynaDiff reconstruction "
"(alternative to --dynadiff-dir; no local GPU required)")
parser.add_argument("--dynadiff-modal-token", type=str, default=None,
help="Bearer token for the DynaDiff Modal endpoint "
"(or set DYNADIFF_MODAL_TOKEN env var)")
parser.add_argument("--dynadiff-dir", type=str, default=None,
help="Path to the local dynadiff repo")
parser.add_argument("--dynadiff-checkpoint", type=str,
default="dynadiff_padded_sub01.pth",
help="Checkpoint filename (relative to --dynadiff-dir or absolute)")
parser.add_argument("--dynadiff-h5", type=str,
default="extracted_training_data/consolidated_sub01.h5",
help="Path to fMRI H5 (relative to --dynadiff-dir or absolute)")
parser.add_argument("--brain-data", type=str, default=None,
help="Path to brain_meis.pt produced by precompute_nsd_meis.py")
parser.add_argument("--brain-thumbnails", type=str, default=None,
help="Directory containing NSD JPEG thumbnails (nsd_XXXXX.jpg)")
parser.add_argument("--brain-label", type=str, default="NSD Brain (DINOv2 L11)",
help="Dataset label shown in the dropdown for --brain-data")
parser.add_argument("--sae-path", type=str, default=None,
help="Path to SAE state-dict .pth file for live GPU inference")
parser.add_argument("--backbone", type=str, default="dinov2",
help="Backbone name matching the SAE (default: dinov2)")
parser.add_argument("--layer", type=int, default=11,
help="Backbone layer used during SAE training (default: 11)")
parser.add_argument("--top-k", type=int, default=100,
help="SAE top-k sparsity (default: 100)")
parser.add_argument("--examples-file", type=str, default=None,
help="JSON file of preset feature combinations for the Examples panel. "
"Format: [{\"name\": \"...\", \"features\": [{\"feat\": N, "
"\"lam\": 3.0, \"threshold\": 0.10}, ...]}, ...]")
parser.add_argument("--editable-examples", action="store_true", default=False,
help="Show a 'Save as Preset' button that appends the current "
"steering list to the examples file")
args = parser.parse_args()