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() | |