Fix: saliency CPU timeout (cap 5 models), 17→20 sites, architecture 4→20 models, stale text
Browse files
app.py
CHANGED
|
@@ -243,12 +243,23 @@ def get_models(atlas: str = "cc200"):
|
|
| 243 |
# ── gradient saliency ──────────────────────────────────────────────────────
|
| 244 |
|
| 245 |
def _compute_saliency(bw_t, adj_t, models):
|
|
|
|
|
|
|
| 246 |
maps = []
|
| 247 |
-
for _, task in
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 252 |
sal = np.mean(maps, axis=0)
|
| 253 |
return (sal + sal.T) / 2
|
| 254 |
|
|
@@ -681,7 +692,7 @@ HEADER = """
|
|
| 681 |
<div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Held-out subjects</div>
|
| 682 |
</div>
|
| 683 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:10px 18px;text-align:center">
|
| 684 |
-
<div style="font-size:1.35rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">
|
| 685 |
<div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Scanner sites</div>
|
| 686 |
</div>
|
| 687 |
<div style="background:#161922;border:1px solid #f59e0b33;border-radius:8px;padding:10px 18px;text-align:center">
|
|
@@ -859,7 +870,7 @@ ARCHITECTURE = """
|
|
| 859 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 860 |
<span style="background:#fb923c22;color:#fb923c;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">Brain Modes</span>
|
| 861 |
</div>
|
| 862 |
-
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">K=16 learnable directions compress the 200×200 FC matrix into 152 bilinear features — each mode specialises to a functional network (DMN, salience, FPN).</div>
|
| 863 |
</div>
|
| 864 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:16px 18px">
|
| 865 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
|
@@ -871,7 +882,7 @@ ARCHITECTURE = """
|
|
| 871 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 872 |
<span style="background:#ef444422;color:#ef4444;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">LOSO</span>
|
| 873 |
</div>
|
| 874 |
-
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">
|
| 875 |
</div>
|
| 876 |
</div>
|
| 877 |
|
|
@@ -880,7 +891,7 @@ ARCHITECTURE = """
|
|
| 880 |
<table style="width:100%;border-collapse:collapse;font-size:0.85rem">
|
| 881 |
<tr><td style="padding:10px 16px;color:#8b95a7;width:150px;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Dataset</td><td style="padding:10px 16px;color:#cbd5e1">ABIDE I · 1,102 subjects · 20 acquisition sites</td></tr>
|
| 882 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Parcellation</td><td style="padding:10px 16px;color:#cbd5e1">CC200 (200 ROIs) · AAL-116 (116 ROIs) · Harvard-Oxford (111 ROIs)</td></tr>
|
| 883 |
-
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Model</td><td style="padding:10px 16px;color:#cbd5e1">AdversarialBrainModeNetwork · K=16 modes · hidden_dim=64</td></tr>
|
| 884 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Validation</td><td style="padding:10px 16px;color:#cbd5e1">LOSO AUC = <span style="color:#ef4444;font-weight:600">0.7260</span> · 1,102 held-out subjects · 20 acquisition sites</td></tr>
|
| 885 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Interpretability</td><td style="padding:10px 16px;color:#cbd5e1">Real-time gradient saliency · 7-network aggregation · 3D brain surface</td></tr>
|
| 886 |
</table>
|
|
|
|
| 243 |
# ── gradient saliency ──────────────────────────────────────────────────────
|
| 244 |
|
| 245 |
def _compute_saliency(bw_t, adj_t, models):
|
| 246 |
+
# Cap at 5 models to keep CPU inference fast
|
| 247 |
+
sample = models[:5] if len(models) > 5 else models
|
| 248 |
maps = []
|
| 249 |
+
for _, task in sample:
|
| 250 |
+
try:
|
| 251 |
+
adj = adj_t.clone().requires_grad_(True)
|
| 252 |
+
logits = task.model(bw_t, adj)
|
| 253 |
+
if isinstance(logits, tuple):
|
| 254 |
+
logits = logits[0]
|
| 255 |
+
torch.softmax(logits, -1)[0, 1].backward()
|
| 256 |
+
if adj.grad is not None:
|
| 257 |
+
maps.append(adj.grad[0].abs().detach().numpy())
|
| 258 |
+
except Exception:
|
| 259 |
+
continue
|
| 260 |
+
if not maps:
|
| 261 |
+
n = adj_t.shape[-1]
|
| 262 |
+
return np.zeros((n, n), dtype=np.float32)
|
| 263 |
sal = np.mean(maps, axis=0)
|
| 264 |
return (sal + sal.T) / 2
|
| 265 |
|
|
|
|
| 692 |
<div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Held-out subjects</div>
|
| 693 |
</div>
|
| 694 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:10px 18px;text-align:center">
|
| 695 |
+
<div style="font-size:1.35rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">20</div>
|
| 696 |
<div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Scanner sites</div>
|
| 697 |
</div>
|
| 698 |
<div style="background:#161922;border:1px solid #f59e0b33;border-radius:8px;padding:10px 18px;text-align:center">
|
|
|
|
| 870 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 871 |
<span style="background:#fb923c22;color:#fb923c;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">Brain Modes</span>
|
| 872 |
</div>
|
| 873 |
+
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">K=16 learnable directions compress the 200×200 FC matrix into 152 bilinear features — each mode specialises to a functional network (DMN, salience, FPN). Upgraded model uses K=32 trained on AMD MI300X.</div>
|
| 874 |
</div>
|
| 875 |
<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:16px 18px">
|
| 876 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
|
|
|
| 882 |
<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px">
|
| 883 |
<span style="background:#ef444422;color:#ef4444;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:0.8px">LOSO</span>
|
| 884 |
</div>
|
| 885 |
+
<div style="color:#cbd5e1;font-size:0.84rem;line-height:1.55">20 models, each trained blind to one scanner site. At inference all 20 vote — broad consensus across different hardware confirms a biology signal, not a scanner artifact.</div>
|
| 886 |
</div>
|
| 887 |
</div>
|
| 888 |
|
|
|
|
| 891 |
<table style="width:100%;border-collapse:collapse;font-size:0.85rem">
|
| 892 |
<tr><td style="padding:10px 16px;color:#8b95a7;width:150px;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Dataset</td><td style="padding:10px 16px;color:#cbd5e1">ABIDE I · 1,102 subjects · 20 acquisition sites</td></tr>
|
| 893 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Parcellation</td><td style="padding:10px 16px;color:#cbd5e1">CC200 (200 ROIs) · AAL-116 (116 ROIs) · Harvard-Oxford (111 ROIs)</td></tr>
|
| 894 |
+
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Model</td><td style="padding:10px 16px;color:#cbd5e1">AdversarialBrainModeNetwork · K=16 modes · hidden_dim=64 · Upgraded K=32/h=128 training on AMD MI300X</td></tr>
|
| 895 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Validation</td><td style="padding:10px 16px;color:#cbd5e1">LOSO AUC = <span style="color:#ef4444;font-weight:600">0.7260</span> · 1,102 held-out subjects · 20 acquisition sites</td></tr>
|
| 896 |
<tr style="border-top:1px solid #252a35"><td style="padding:10px 16px;color:#8b95a7;font-size:0.76rem;text-transform:uppercase;letter-spacing:0.5px">Interpretability</td><td style="padding:10px 16px;color:#cbd5e1">Real-time gradient saliency · 7-network aggregation · 3D brain surface</td></tr>
|
| 897 |
</table>
|