Yatsuiii commited on
Commit
c721f8e
·
verified ·
1 Parent(s): 8f83bc3

Fix: saliency CPU timeout (cap 5 models), 17→20 sites, architecture 4→20 models, stale text

Browse files
Files changed (1) hide show
  1. app.py +20 -9
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 models:
248
- adj = adj_t.clone().requires_grad_(True)
249
- logits = task.model(bw_t, adj)
250
- torch.softmax(logits, -1)[0, 1].backward()
251
- maps.append(adj.grad[0].abs().detach().numpy())
 
 
 
 
 
 
 
 
 
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">17</div>
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">4 models, each trained blind to one scanner site. At inference all 4 vote — if 3/4 agree across different hardware, it's a biology signal, not an artifact.</div>
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>