Yatsuiii commited on
Commit
6cb0561
·
verified ·
1 Parent(s): c71d06b

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +44 -33
app.py CHANGED
@@ -504,39 +504,45 @@ AI-assisted screening only · Not a clinical diagnosis · Findings must be integ
504
  # ── Static HTML sections ───────────────────────────────────────────────────
505
 
506
  HEADER = """
507
- <div style="padding:32px 0 24px;border-bottom:1px solid #252a35;margin-bottom:18px">
508
- <div style="display:flex;align-items:baseline;gap:14px;flex-wrap:wrap">
509
- <div style="font-size:2.1rem;font-weight:700;color:#f4f4f5;letter-spacing:-0.8px;line-height:1">
510
- BrainConnect<span style="color:#ef4444">-ASD</span>
 
 
 
 
 
 
511
  </div>
512
- <div style="color:#5e6675;font-size:0.7rem;letter-spacing:1.8px;text-transform:uppercase">
513
- Resting-state fMRI · Site-Invariant Classification
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  </div>
515
  </div>
516
- <div style="color:#cbd5e1;font-size:0.92rem;margin-top:14px;max-width:780px;line-height:1.65">
517
- 1 in 44 children is diagnosed with ASD — diagnosis takes years and no biomarker exists.
518
- We trained a scanner-site-invariant GCN on 1,102 subjects across 17 institutions and validated on
519
- <span style="color:#ef4444;font-weight:600">529 subjects from sites the model never saw</span>.
520
- Result: <span style="color:#ef4444;font-weight:600">AUC 0.7872</span> — not on held-out splits of the same scanner, but across entirely different hospitals.
521
- Fine-tuned <span style="color:#fb923c;font-weight:600">Qwen2.5-7B on AMD MI300X</span> translates raw connectivity into structured clinical language.
522
- </div>
523
- <div style="display:flex;gap:28px;margin-top:20px;flex-wrap:wrap">
524
- <div style="display:flex;align-items:baseline;gap:8px">
525
- <span style="font-size:1.4rem;font-weight:700;color:#ef4444;font-variant-numeric:tabular-nums">0.7872</span>
526
- <span style="color:#5e6675;font-size:0.68rem;text-transform:uppercase;letter-spacing:1px">LOSO AUC</span>
527
- </div>
528
- <div style="display:flex;align-items:baseline;gap:8px">
529
- <span style="font-size:1.4rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">529</span>
530
- <span style="color:#5e6675;font-size:0.68rem;text-transform:uppercase;letter-spacing:1px">Held-out subjects</span>
531
- </div>
532
- <div style="display:flex;align-items:baseline;gap:8px">
533
- <span style="font-size:1.4rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">17</span>
534
- <span style="color:#5e6675;font-size:0.68rem;text-transform:uppercase;letter-spacing:1px">Scanner sites</span>
535
- </div>
536
- <div style="display:flex;align-items:baseline;gap:8px">
537
- <span style="font-size:1.4rem;font-weight:700;color:#fb923c">MI300X</span>
538
- <span style="color:#5e6675;font-size:0.68rem;text-transform:uppercase;letter-spacing:1px">AMD hardware</span>
539
- </div>
540
  </div>
541
  </div>
542
  """
@@ -797,15 +803,20 @@ with gr.Blocks(title="BrainConnect-ASD", css=css, theme=gr.themes.Base()) as dem
797
 
798
  with gr.Tabs():
799
  with gr.Tab("Analysis"):
800
- file_input = gr.File(label="Upload fMRI time series — CC200 (200), AAL (116), or Harvard-Oxford (111) ROIs · .1D or .npz", type="filepath")
801
- gr.HTML("<div style='color:#8b95a7;font-size:0.7rem;text-transform:uppercase;letter-spacing:1.2px;margin:14px 0 8px;font-weight:500'>Or try a real ABIDE subject from a held-out site</div>")
 
 
 
 
 
802
  with gr.Row():
803
  btn_asd = gr.Button("ASD · Stanford 0051160", size="sm")
804
  btn_tc = gr.Button("TC · Yale 0050552", size="sm")
805
  btn_brd = gr.Button("Borderline · Trinity 0050232", size="sm")
806
  verdict_html = gr.HTML()
807
  ens_html = gr.HTML()
808
- gr.HTML("<div style='margin-top:18px;font-size:0.65rem;color:#8b95a7;letter-spacing:2px;text-transform:uppercase;margin-bottom:6px;font-weight:500'>Gradient Saliency · which brain networks drove this prediction</div>")
809
  sal_img = gr.Image(label="", type="pil", show_label=False)
810
  rep_html = gr.HTML()
811
  file_input.change(fn=run_gcn, inputs=file_input,
 
504
  # ── Static HTML sections ───────────────────────────────────────────────────
505
 
506
  HEADER = """
507
+ <div style="padding:28px 0 20px;border-bottom:1px solid #252a35;margin-bottom:16px">
508
+
509
+ <div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px">
510
+ <div>
511
+ <div style="font-size:2.2rem;font-weight:700;color:#f4f4f5;letter-spacing:-1px;line-height:1">
512
+ BrainConnect<span style="color:#ef4444">-ASD</span>
513
+ </div>
514
+ <div style="color:#5e6675;font-size:0.68rem;letter-spacing:2px;text-transform:uppercase;margin-top:5px">
515
+ Resting-state fMRI · Site-Invariant Classification
516
+ </div>
517
  </div>
518
+
519
+ <!-- Stat pills -->
520
+ <div style="display:flex;gap:10px;flex-wrap:wrap">
521
+ <div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:10px 18px;text-align:center">
522
+ <div style="font-size:1.35rem;font-weight:700;color:#ef4444;font-variant-numeric:tabular-nums">0.7872</div>
523
+ <div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">LOSO AUC</div>
524
+ </div>
525
+ <div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:10px 18px;text-align:center">
526
+ <div style="font-size:1.35rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">529</div>
527
+ <div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Held-out subjects</div>
528
+ </div>
529
+ <div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:10px 18px;text-align:center">
530
+ <div style="font-size:1.35rem;font-weight:700;color:#f4f4f5;font-variant-numeric:tabular-nums">17</div>
531
+ <div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">Scanner sites</div>
532
+ </div>
533
+ <div style="background:#161922;border:1px solid #f59e0b33;border-radius:8px;padding:10px 18px;text-align:center">
534
+ <div style="font-size:1.35rem;font-weight:700;color:#fb923c">MI300X</div>
535
+ <div style="color:#5e6675;font-size:0.62rem;text-transform:uppercase;letter-spacing:1px;margin-top:2px">AMD hardware</div>
536
+ </div>
537
  </div>
538
  </div>
539
+
540
+ <div style="margin-top:14px;display:flex;gap:8px;flex-wrap:wrap;align-items:center">
541
+ <span style="background:#2a1215;border:1px solid #ef444433;color:#ef4444;font-size:0.75rem;font-weight:600;padding:4px 10px;border-radius:20px">AUC 0.7872 cross-site</span>
542
+ <span style="background:#1a1f2e;border:1px solid #457b9d44;color:#93c5fd;font-size:0.75rem;padding:4px 10px;border-radius:20px">4-model LOSO ensemble</span>
543
+ <span style="background:#1a1f15;border:1px solid #22c55e33;color:#22c55e;font-size:0.75rem;padding:4px 10px;border-radius:20px">CC200 · AAL · Harvard-Oxford</span>
544
+ <span style="background:#1f1a10;border:1px solid #fb923c33;color:#fb923c;font-size:0.75rem;padding:4px 10px;border-radius:20px">Qwen2.5-7B on AMD MI300X</span>
545
+ <span style="background:#161922;border:1px solid #252a35;color:#8b95a7;font-size:0.75rem;padding:4px 10px;border-radius:20px">1,102 ABIDE I subjects</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
546
  </div>
547
  </div>
548
  """
 
803
 
804
  with gr.Tabs():
805
  with gr.Tab("Analysis"):
806
+ gr.HTML("""<div style="background:#161922;border:1px solid #252a35;border-radius:8px;padding:12px 16px;margin-bottom:10px;display:flex;gap:24px;flex-wrap:wrap">
807
+ <div style="display:flex;align-items:center;gap:8px"><span style="color:#22c55e;font-size:1rem">①</span><span style="color:#cbd5e1;font-size:0.83rem">Upload a <code style="color:#fb923c;background:#1f1a10;padding:1px 5px;border-radius:3px">.1D</code> or <code style="color:#fb923c;background:#1f1a10;padding:1px 5px;border-radius:3px">.npz</code> fMRI time-series file</span></div>
808
+ <div style="display:flex;align-items:center;gap:8px"><span style="color:#22c55e;font-size:1rem">②</span><span style="color:#cbd5e1;font-size:0.83rem">Supported: CC200 (200 ROIs) · AAL (116 ROIs) · Harvard-Oxford (111 ROIs)</span></div>
809
+ <div style="display:flex;align-items:center;gap:8px"><span style="color:#22c55e;font-size:1rem">③</span><span style="color:#cbd5e1;font-size:0.83rem">Or click a demo subject below to run instantly</span></div>
810
+ </div>""")
811
+ file_input = gr.File(label="Drop fMRI file here (.1D or .npz)", type="filepath")
812
+ gr.HTML("<div style='color:#8b95a7;font-size:0.68rem;text-transform:uppercase;letter-spacing:1.2px;margin:10px 0 6px;font-weight:500'>Or try a real ABIDE subject from a held-out site</div>")
813
  with gr.Row():
814
  btn_asd = gr.Button("ASD · Stanford 0051160", size="sm")
815
  btn_tc = gr.Button("TC · Yale 0050552", size="sm")
816
  btn_brd = gr.Button("Borderline · Trinity 0050232", size="sm")
817
  verdict_html = gr.HTML()
818
  ens_html = gr.HTML()
819
+ gr.HTML("<div style='margin-top:14px;font-size:0.65rem;color:#8b95a7;letter-spacing:2px;text-transform:uppercase;margin-bottom:6px;font-weight:500'>Gradient Saliency · which brain networks drove this prediction</div>")
820
  sal_img = gr.Image(label="", type="pil", show_label=False)
821
  rep_html = gr.HTML()
822
  file_input.change(fn=run_gcn, inputs=file_input,