"""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: _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()