Skip to content

Commit df55d49

Browse files
committed
fix: polish project page — dark stat cards, visible carousel arrows, preload embeddings, fix author links
1 parent 6a6b63b commit df55d49

File tree

3 files changed

+154
-157
lines changed

3 files changed

+154
-157
lines changed

index.html

Lines changed: 47 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ <h1 class="hero-title">MOOZY</h1>
2424
</p>
2525

2626
<p class="author-list">
27-
<a href="https://orcid.org/0009-0003-0674-5230">Yousef Kotp</a><sup>1,2</sup>,
28-
<a href="#">Vincent Quoc-Huy Trinh</a><sup>3,4</sup>,
29-
<a href="#">Christopher Pal</a><sup>2,5,6</sup>,
30-
<a href="https://orcid.org/0000-0002-9147-0731">Mahdi S. Hosseini</a><sup>1,2,7</sup>
27+
<a href="https://scholar.google.com/citations?user=YMSkXbEAAAAJ">Yousef Kotp</a><sup>1,2</sup>,
28+
<a href="https://scholar.google.com/citations?user=K7Na7ZcAAAAJ">Vincent Quoc-Huy Trinh</a><sup>3,4</sup>,
29+
<a href="https://scholar.google.com/citations?user=1ScWJOoAAAAJ">Christopher Pal</a><sup>2,5,6</sup>,
30+
<a href="https://scholar.google.com/citations?user=SO-FFrgAAAAJ">Mahdi S. Hosseini</a><sup>1,2,7</sup>
3131
</p>
3232
<p class="affiliation-list">
3333
<sup>1</sup>Concordia University &ensp;
@@ -51,31 +51,50 @@ <h1 class="hero-title">MOOZY</h1>
5151
<!-- ============ KEY NUMBERS ============ -->
5252
<section class="section" style="padding-top:0">
5353
<div class="container">
54-
<div class="stat-cards">
55-
<div class="stat-card">
56-
<span class="stat-number">85.77M</span>
57-
<span class="stat-label">parameters<br>(14&times; smaller than GigaPath)</span>
54+
<div class="stat-cards-dark">
55+
<div class="stat-card-dark">
56+
<span class="stat-number-dark">85.77M</span>
57+
<span class="stat-label-dark">parameters<br>(14&times; smaller than GigaPath)</span>
5858
</div>
59-
<div class="stat-card">
60-
<span class="stat-number">77,134</span>
61-
<span class="stat-label">public slides</span>
59+
<div class="stat-card-dark">
60+
<span class="stat-number-dark">77,134</span>
61+
<span class="stat-label-dark">public slides</span>
6262
</div>
63-
<div class="stat-card">
64-
<span class="stat-number">333</span>
65-
<span class="stat-label">tasks from 56 datasets</span>
63+
<div class="stat-card-dark">
64+
<span class="stat-number-dark">333</span>
65+
<span class="stat-label-dark">tasks from 56 datasets</span>
6666
</div>
67-
<div class="stat-card">
68-
<span class="stat-number">+7.4%</span>
69-
<span class="stat-label">F1 over TITAN</span>
67+
<div class="stat-card-dark">
68+
<span class="stat-number-dark">+7.4%</span>
69+
<span class="stat-label-dark">F1 over TITAN</span>
7070
</div>
71-
<div class="stat-card">
72-
<span class="stat-number">23</span>
73-
<span class="stat-label">anatomical sites</span>
71+
<div class="stat-card-dark">
72+
<span class="stat-number-dark">23</span>
73+
<span class="stat-label-dark">anatomical sites</span>
7474
</div>
7575
</div>
7676
</div>
7777
</section>
7878

79+
<!-- ============ QUICK START ============ -->
80+
<section class="section">
81+
<div class="container" style="max-width:700px">
82+
<h2 class="section-heading">Quick Start</h2>
83+
<div class="code-block"><span class="comment"># install</span>
84+
pip install moozy
85+
86+
<span class="comment"># encode from pre-computed H5 feature files</span>
87+
moozy encode slide_1.h5 slide_2.h5 -o case_embedding.h5
88+
89+
<span class="comment"># encode from raw whole-slide images (requires atlas-patch)</span>
90+
moozy encode slide_1.svs slide_2.svs -o case_embedding.h5 --target_mag 20</div>
91+
<p style="margin-top:0.8rem; color: var(--text-secondary); font-size:0.9rem; text-align:center;">
92+
Checkpoint and task definitions are downloaded automatically from
93+
<a href="https://huggingface.co/AtlasAnalyticsLab/MOOZY" style="color:#333; text-decoration:underline">HuggingFace</a> on first use.
94+
</p>
95+
</div>
96+
</section>
97+
7998
<!-- ============ ABSTRACT ============ -->
8099
<section class="section section-alt">
81100
<div class="container" style="max-width:850px">
@@ -104,39 +123,6 @@ <h2 class="section-heading">Two-Stage Training Pipeline</h2>
104123
</div>
105124
</section>
106125

107-
<!-- ============ WHAT MAKES MOOZY DIFFERENT ============ -->
108-
<section class="section section-alt">
109-
<div class="container">
110-
<h2 class="section-heading">What Makes MOOZY Different</h2>
111-
<div class="columns">
112-
<div class="column is-4">
113-
<div class="feature-card">
114-
<h3>Patient-First</h3>
115-
<p>The patient case, not the individual slide, is the unit of representation. A case transformer explicitly models cross-slide dependencies during pretraining &mdash; no post-hoc slide averaging.</p>
116-
<img src="static/images/slide_enc_case_agg.webp" alt="Slide encoder and case aggregator architecture"
117-
class="fig-clickable" data-full="static/images/slide_enc_case_agg.webp" loading="lazy" style="width:100%">
118-
</div>
119-
</div>
120-
<div class="column is-4">
121-
<div class="feature-card">
122-
<h3>Two-Stage Open Pretraining</h3>
123-
<p>Stage&nbsp;1: self-supervised slide encoder on 77K unlabeled slides. Stage&nbsp;2: multi-task alignment across 333 clinical tasks. No private data, no paired reports, no billion-parameter patch encoders.</p>
124-
<img src="static/images/sparse_supervision.webp" alt="Sparse multi-task supervision"
125-
class="fig-clickable" data-full="static/images/sparse_supervision.webp" loading="lazy" style="width:100%">
126-
</div>
127-
</div>
128-
<div class="column is-4">
129-
<div class="feature-card">
130-
<h3>Parameter Efficient</h3>
131-
<p>85.77M total parameters. 14&times; smaller than GigaPath (1.22B), 4&times; smaller than TITAN (355M), while matching or exceeding performance on held-out tasks.</p>
132-
<img src="static/images/scatter_comparison_bubble.webp" alt="Parameter efficiency comparison"
133-
class="fig-clickable" data-full="static/images/scatter_comparison_bubble.webp" loading="lazy" style="width:100%">
134-
</div>
135-
</div>
136-
</div>
137-
</div>
138-
</section>
139-
140126
<!-- ============ DATA SCALE ============ -->
141127
<section class="section">
142128
<div class="container">
@@ -148,7 +134,7 @@ <h2 class="section-heading">Training Data Scale</h2>
148134
style="width:100%; border-radius:8px;">
149135
</div>
150136
<div class="column is-6">
151-
<p style="line-height:1.7; color: var(--text-secondary)">
137+
<p style="line-height:1.7">
152138
MOOZY is trained entirely on public data. Stage&nbsp;1 uses 77,134 slide feature grids
153139
(53,286 at 20&times; and 23,848 at 40&times;) extracted from ~1.67 billion patches across ~31.8&nbsp;TB of raw WSI data.
154140
Stage&nbsp;2 uses 41,089 supervised cases across 333 tasks from 56 datasets &mdash;
@@ -370,37 +356,18 @@ <h2 class="section-heading">Embedding Quality</h2>
370356
</div>
371357
</section>
372358

373-
<!-- ============ QUICK START ============ -->
374-
<section class="section">
375-
<div class="container" style="max-width:700px">
376-
<h2 class="section-heading">Quick Start</h2>
377-
<div class="code-block">
378-
<span class="comment"># Install</span>
379-
<span class="prompt">$</span> pip install moozy
380-
381-
<span class="comment"># Encode from pre-computed H5 feature files</span>
382-
<span class="prompt">$</span> moozy encode slide_1.h5 slide_2.h5 -o case_embedding.h5
383-
384-
<span class="comment"># Encode from raw whole-slide images</span>
385-
<span class="prompt">$</span> moozy encode slide_1.svs slide_2.svs -o case_embedding.h5 --target_mag 20
386-
</div>
387-
<p style="margin-top:0.8rem; color: var(--text-secondary); font-size:0.9rem; text-align:center;">
388-
Checkpoint and task definitions are downloaded automatically from
389-
<a href="https://huggingface.co/AtlasAnalyticsLab/MOOZY" style="color:var(--accent)">HuggingFace</a> on first use.
390-
</p>
391-
</div>
392-
</section>
393-
394359
<!-- ============ BIBTEX ============ -->
395360
<section class="section section-alt">
396361
<div class="container" style="max-width:700px">
397362
<h2 class="section-heading">Citation</h2>
398363
<div class="bibtex-block">
399364
<button class="copy-btn">Copy</button>
400-
<code>@article{moozy2026,
401-
title = {MOOZY: A Patient-First Foundation Model for Computational Pathology},
402-
author = {Kotp, Yousef and Trinh, Vincent Quoc-Huy and Pal, Christopher and Hosseini, Mahdi S.},
403-
year = {2026},
365+
<code>@article{moozy2026,
366+
title = {MOOZY: A Patient-First Foundation Model for
367+
Computational Pathology},
368+
author = {Kotp, Yousef and Trinh, Vincent Quoc-Huy
369+
and Pal, Christopher and Hosseini, Mahdi S.},
370+
year = {2026}
404371
}</code>
405372
</div>
406373
</div>
@@ -410,13 +377,10 @@ <h2 class="section-heading">Citation</h2>
410377
<footer class="footer" style="padding:2rem 1.5rem; background: var(--bg-alt);">
411378
<div class="container has-text-centered" style="font-size:0.85rem; color: var(--text-secondary);">
412379
<p>
413-
<a href="https://github.com/AtlasAnalyticsLab" style="color: var(--text-secondary);">Atlas Analytics Lab</a>
380+
<a href="https://atlasanalyticslab.github.io/" style="color: var(--text-secondary);">Atlas Analytics Lab</a>
414381
&ensp;|&ensp;
415382
Licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color: var(--text-secondary);">CC BY-NC-SA 4.0</a>
416383
</p>
417-
<p style="margin-top:0.3rem;">
418-
Page template inspired by <a href="https://nerfies.github.io" style="color: var(--text-secondary);">Nerfies</a>.
419-
</p>
420384
</div>
421385
</footer>
422386

0 commit comments

Comments
 (0)