SeaWolf-AI commited on
Commit
3166640
·
verified ·
1 Parent(s): 6a38202

Full landing page: rationale, measured findings, participation, metrics, submission terms

Browse files

Adds a sister-benchmark strip, a rationale section with the audit that motivated the spec, three cards for what this benchmark measured itself, a three-step participation guide, metric definitions, and an explicit statement of how submissions are handled. Nine sections, both languages.

Files changed (2) hide show
  1. i18n.js +132 -2
  2. index.html +69 -0
i18n.js CHANGED
@@ -104,7 +104,68 @@ ko: {
104
  loadFail: "화면을 불러오지 못했습니다.",
105
  dataNote: "모든 부문은 ChEMBL_37 에서 구축했으며 최초 보고 연도를 기준으로 시간 분할했습니다. " +
106
  "배포되는 테스트셋은 구조만 포함하며 라벨은 포함하지 않습니다.",
107
- srcLabel: "데이터 출처"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  },
109
 
110
  en: {
@@ -213,6 +274,75 @@ en: {
213
  loadFail: "The page could not be loaded.",
214
  dataNote: "Every board is built from ChEMBL_37 and split by year of first report. " +
215
  "Distributed test sets contain structures only; labels are not included.",
216
- srcLabel: "Data source"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  }
218
  };
 
104
  loadFail: "화면을 불러오지 못했습니다.",
105
  dataNote: "모든 부문은 ChEMBL_37 에서 구축했으며 최초 보고 연도를 기준으로 시간 분할했습니다. " +
106
  "배포되는 테스트셋은 구조만 포함하며 라벨은 포함하지 않습니다.",
107
+ srcLabel: "데이터 출처",
108
+
109
+ sib: "자매 시험대",
110
+ sibOdc: "AI가 찾아낸 신약 후보 물질을 계산 검증합니다",
111
+ sibOmc: "전고체 배터리 신소재를 찾는 시험대입니다",
112
+
113
+ secWhy: "왜 만들었는가",
114
+ why1: "AI가 신약 후보를 쏟아내는 만큼, 그 후보를 판정하는 <b>예측 도구</b>도 쏟아집니다. " +
115
+ "흡수 · 대사 · 독성 · 표적 결합마다 도구가 수십 개씩 있습니다. 그런데 그 도구들의 " +
116
+ "성능은 개발자가 자기 논문에서, 자기가 고른 데이터로 보고합니다. " +
117
+ "<b>같은 문제로 잰 것이 아니므로 비교가 성립하지 않습니다.</b>",
118
+ why2: "2026년 2월, 널리 쓰이는 ADMET 리더보드 22개 종목의 상위 모델을 전수 검증한 결과가 " +
119
+ "보고되었습니다. 검증 대상 66개 중 완전히 재현된 것은 3개였고, 테스트셋에 맞춘 모델은 " +
120
+ "22개 종목 중 10개에서 3위 안에 진입했습니다. 같은 설계를 정직하게 구성한 모델은 2개였습니다.",
121
+ why3: "문제는 특정 연구실이 아니라 <b>시험 방식</b>입니다. " +
122
+ "정답을 함께 배포하는 시험은, 아무리 성실히 치러도 예측력과 노출을 분리하지 못합니다.",
123
+ whyCite: "Koleiev 외, Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",
124
+
125
+ secFound: "본 시험대가 실측한 것",
126
+ secFoundLead: "아래는 인용이 아니라 본 시험대가 19개 부문에서 직접 산출한 결과입니다.",
127
+ ratioLabel: "오차 ÷ 실험오차",
128
+ found1t: "분할 방식만으로 AUROC 가 0.21 이동한다",
129
+ found1d: "동일 데이터 · 동일 모델(Morgan+LightGBM 기본값) · 동일 테스트 비율에서 분할만 교체했습니다. " +
130
+ "hERG 기준 무작위 분할 0.818 → 시간 분할 0.606. " +
131
+ "<b>분할 방식이 공시되지 않은 순위표의 수치는 비교가 불가능합니다.</b>",
132
+ found2t: "19개 부문 중 7개에서 학습 기준선이 상수 예측에 미달했다",
133
+ found2d: "훈련 데이터의 중앙값을 그대로 내놓는 예측이 학습한 모델보다 정확했습니다. " +
134
+ "기준선을 순위표에 상주시키지 않으면 이 사실은 어떤 지표에도 나타나지 않습니다.",
135
+ found3t: "모델 오차가 실험 오차의 0.91 ~ 2.79 배 구간에 있다",
136
+ found3d: "동일 화합물을 서로 다른 논문에서 측정한 값의 차이로 각 부문의 실험 재현 오차를 " +
137
+ "산출했습니다. 7개 부문은 그 오차의 1.3배 안쪽에 있습니다.",
138
+
139
+ secHow: "참여 방법",
140
+ how1t: "테스트셋을 받습니다",
141
+ how1d: "부문을 선택하면 화합물 구조(SMILES)와 식별자만 담긴 파일을 내려받습니다. " +
142
+ "라벨은 포함되지 않으며, 본 서버에도 존재하지 않습니다.",
143
+ how2t: "원하는 도구로 예측합니다",
144
+ how2d: "자체 모델 · 상용 도구 · 공개 가중치 · 물리 기반 계산 무엇이든 무방합니다. 제한하지 않습니다. " +
145
+ "학습에 사용한 데이터만 기재해 주십시오 (5조 누출 검사에 사용합니다).",
146
+ how3t: "예측값을 제출하면 자동 채점됩니다",
147
+ how3d: "JSON 또는 CSV 로 올리면 채점 · 누출 검사 · 지문 각인이 자동 수행되고, " +
148
+ "기준선 3종 및 실험 오차와 함께 순위표에 표시됩니다.",
149
+
150
+ secMetric: "채점 기준",
151
+ mMae: "주지표. 예측값과 실측값의 평균 절대 오차입니다. 낮을수록 좋습니다.",
152
+ mAuroc: "분류 지표. 임계선 위아래를 가르는 능력입니다. 0.5 는 무작위와 같습니다.",
153
+ mPrauc: "양성이 드문 부문에서 AUROC 보다 실태를 잘 드러냅니다.",
154
+ mNoise: "동일 화합물의 논문 간 측정 차이로 산출한 재현 오차입니다. 이 폭 안의 차이는 순위로 인정하지 않습니다.",
155
+ mRatio: "최선 기준선 오차 ÷ 실험 오차. 1.0 에 근접하면 측정 한계에 도달한 것입니다.",
156
+ mLeak: "예측값이 실측값과 소수 자리까지 일치하는 항목의 밀도입니다. 의도를 판정하지 않고 사실만 표시합니다.",
157
+
158
+ secOwn: "제출물의 취급",
159
+ own1: "<b>제출한 예측값은 제출자의 것입니다.</b> VIDRAFT 는 채점과 순위표 표시에 필요한 " +
160
+ "범위에서만 사용하며, 개별 제출을 자사 파이프라인에 투입하지 않고 제3자에게 제공하지 않습니다.",
161
+ own2: "다만 <b>부문 단위 집계</b>는 공개할 수 있습니다 — 전 제출의 합의 예측, 모든 방법이 " +
162
+ "실패한 화합물 목록, 접근법별 성능 지형 등입니다. 개별 제출자의 예측값은 식별되지 않으며, " +
163
+ "집계 결과는 참가자를 포함한 모두에게 공개됩니다.",
164
+ own3: "방법 이름과 순위는 공개됩니다. 모델 내부 구조나 가중치를 요구하지 않습니다.",
165
+
166
+ secOpen: "개설 예정",
167
+ openLead: "각 부문은 홀드아웃과 실험 오차가 확보된 뒤에 엽니다. 확보되지 않은 부문은 열지 않습니다.",
168
+ learnMore: "자세히"
169
  },
170
 
171
  en: {
 
274
  loadFail: "The page could not be loaded.",
275
  dataNote: "Every board is built from ChEMBL_37 and split by year of first report. " +
276
  "Distributed test sets contain structures only; labels are not included.",
277
+ srcLabel: "Data source",
278
+
279
+ sib: "Sister benchmarks",
280
+ sibOdc: "Computational validation of AI-generated drug candidates",
281
+ sibOmc: "A benchmark for solid-state battery materials",
282
+
283
+ secWhy: "Why this exists",
284
+ why1: "As AI produces drug candidates, it also produces the <b>prediction tools</b> that judge " +
285
+ "them. Absorption, metabolism, toxicity, target binding — each has dozens of tools. " +
286
+ "Yet their performance is reported by their own authors, on data of their own choosing. " +
287
+ "<b>They were not measured on the same problem, so the comparison does not hold.</b>",
288
+ why2: "In February 2026 an audit of the top-ranked models across 22 endpoints of a widely used " +
289
+ "ADMET leaderboard was published. Of 66 models examined, three reproduced fully. Models " +
290
+ "deliberately tuned on the public test set reached the top three on 10 of 22 endpoints; " +
291
+ "the same design built honestly reached it on two.",
292
+ why3: "The fault lies not with any laboratory but with <b>the format of the examination</b>. " +
293
+ "A test distributed together with its answer key cannot separate predictive power from exposure.",
294
+ whyCite: "Koleiev et al., Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",
295
+
296
+ secFound: "What this benchmark measured",
297
+ secFoundLead: "These are not citations. They were produced here, across 19 boards.",
298
+ ratioLabel: "error / experimental error",
299
+ found1t: "The split alone moves AUROC by 0.21",
300
+ found1d: "Same data, same model (Morgan+LightGBM at defaults), same test fraction — only the split " +
301
+ "changed. On hERG: random split 0.818, time split 0.606. " +
302
+ "<b>A leaderboard that does not declare its split cannot be compared against.</b>",
303
+ found2t: "On 7 of 19 boards the trained baseline failed to beat constant prediction",
304
+ found2d: "Returning the training median outperformed a trained model. Without baselines resident " +
305
+ "on the leaderboard, this fact appears in no metric.",
306
+ found3t: "Model error sits between 0.91x and 2.79x the experimental error",
307
+ found3d: "Each board carries an experimental error derived from measurements of the same compound " +
308
+ "in different publications. Seven boards lie within 1.3x of that error.",
309
+
310
+ secHow: "How to take part",
311
+ how1t: "Obtain the test set",
312
+ how1d: "Choose a board and download a file containing structures (SMILES) and identifiers only. " +
313
+ "No labels are included, and none exist on this server.",
314
+ how2t: "Predict with any tool you like",
315
+ how2d: "Proprietary models, commercial tools, open weights, physics-based calculation — all are " +
316
+ "permitted. We impose no restriction. Only declare the data you trained on, which is used " +
317
+ "for the clause 5 leakage screen.",
318
+ how3t: "Submit predictions for automatic scoring",
319
+ how3d: "Upload JSON or CSV. Scoring, leakage screening and fingerprinting run automatically, and " +
320
+ "the result appears on the leaderboard beside the three baselines and the experimental error.",
321
+
322
+ secMetric: "What is scored",
323
+ mMae: "Primary metric. Mean absolute error against the measured value. Lower is better.",
324
+ mAuroc: "Classification metric. Ability to separate above and below the threshold. 0.5 equals chance.",
325
+ mPrauc: "More informative than AUROC where positives are rare.",
326
+ mNoise: "Reproducibility derived from cross-publication measurements of the same compound. " +
327
+ "Differences within this band are not recognised as rank differences.",
328
+ mRatio: "Best baseline error divided by experimental error. Approaching 1.0 means the measurement " +
329
+ "limit has been reached.",
330
+ mLeak: "Density of predictions matching the measured value to the decimal. We do not adjudicate " +
331
+ "intent; we report the fact.",
332
+
333
+ secOwn: "How submissions are handled",
334
+ own1: "<b>Your predictions remain yours.</b> VIDRAFT uses them only as required for scoring and " +
335
+ "leaderboard display. Individual submissions are not fed into our own pipeline and are not " +
336
+ "provided to third parties.",
337
+ own2: "We may publish <b>board-level aggregates</b> — a consensus prediction across all entries, " +
338
+ "the compounds every method failed, the performance landscape by approach. Individual " +
339
+ "predictions are not identifiable in these, and the aggregates are released to everyone, " +
340
+ "entrants included.",
341
+ own3: "Method names and ranks are public. We do not ask for model internals or weights.",
342
+
343
+ secOpen: "Opening next",
344
+ openLead: "A board opens only once its holdout and experimental error are established. " +
345
+ "Boards without them are not opened.",
346
+ learnMore: "Detail"
347
  }
348
  };
index.html CHANGED
@@ -63,6 +63,37 @@
63
  .btn:hover{filter:brightness(1.08);text-decoration:none}
64
  .btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  .hero{padding:78px 0 46px;position:relative}
67
  .hero::before{content:"";position:absolute;inset:-70% -30% auto -30%;height:520px;z-index:-1;
68
  background:radial-gradient(ellipse 55% 50% at 32% 55%,color-mix(in srgb,var(--acc) 16%,transparent),transparent 70%)}
@@ -196,6 +227,7 @@
196
  <span id="who" style="font-size:13px;color:var(--muted)"></span>
197
  </div></nav>
198
 
 
199
  <div id="app"><div class="wrap"><div class="skel" style="margin-top:70px"></div></div></div>
200
  <footer class="wrap" id="foot"></footer>
201
 
@@ -226,6 +258,11 @@ function setLang(l){
226
  function paintChrome(){
227
  $("#who").innerHTML=ME.user?`${esc(ME.user.user)} · <a href="/logout">${t.logout}</a>`
228
  :(ME.login_enabled?`<a href="/login?next=${encodeURIComponent(location.hash||"#/")}">${t.login}</a>`:"");
 
 
 
 
 
229
  $("#foot").innerHTML=`<span>LEADBOARD · FINAL-Bench / VIDRAFT</span>
230
  <span class="dim">${t.srcLabel} <a href="https://www.ebi.ac.uk/chembl/">ChEMBL</a> ·
231
  <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a></span>
@@ -290,6 +327,18 @@ function hub(){
290
  </div>
291
  </div>
292
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  <div class="sec"><h2>${t.secBrowse}</h2><p class="lead2">${t.secBrowseLead}</p>
294
  <div class="grid">${CATS.categories.map(cardHTML).join("")}</div></div>
295
 
@@ -298,9 +347,29 @@ function hub(){
298
  ${terrain(items,true)}
299
  ${lost?`<div class="note">${t.lostNote(lost)}</div>`:""}</div>
300
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
  <div class="sec"><h2>${t.secMethod}</h2><p class="lead2">${t.secMethodLead}</p>
302
  <ol class="cl">${t.clauses.map(([a,b])=>`<li><b>${a}</b><span>${b}</span></li>`).join("")}</ol></div>
303
 
 
 
 
304
  <div class="sec"><h2>${t.secData}</h2>
305
  <div class="note n">${t.dataNote}<br><br>
306
  ${t.srcLabel} · <a href="https://www.ebi.ac.uk/chembl/">ChEMBL_37 (EMBL-EBI)</a> ·
 
63
  .btn:hover{filter:brightness(1.08);text-decoration:none}
64
  .btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}
65
 
66
+ /* 자매 시험대 띠 — ODC/OMC 로 건너가는 자리. 사이트가 혼자 서 있지 않다는 표시이기도 하다 */
67
+ .sib{border-bottom:1px solid var(--line);background:var(--bg2)}
68
+ .sib .in{max-width:1060px;margin:0 auto;padding:10px 24px;display:flex;gap:10px;
69
+ align-items:center;flex-wrap:wrap;font-size:12.5px}
70
+ .sib .lb{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:10.5px;font-weight:700}
71
+ .sib a{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:99px;
72
+ border:1px solid var(--line2);background:var(--card);color:var(--ink2);font-weight:600}
73
+ .sib a:hover{border-color:var(--acc);color:var(--acc);text-decoration:none}
74
+ .sib a span{color:var(--muted);font-weight:400}
75
+
76
+ /* 발견 카드 — 서사가 아니라 수치가 주인공이 되게 한다 */
77
+ .finds{display:grid;grid-template-columns:repeat(auto-fit,minmax(288px,1fr));gap:15px}
78
+ .find{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:21px;
79
+ box-shadow:var(--sh);border-top:3px solid var(--acc)}
80
+ .find b{display:block;font-size:16.5px;font-weight:750;letter-spacing:-.02em;margin-bottom:8px;line-height:1.4}
81
+ .find p{font-size:13.5px;color:var(--muted);line-height:1.62;margin:0}
82
+
83
+ .prose{font-size:15.5px;color:var(--ink2);line-height:1.78;max-width:44em}
84
+ .prose p{margin:0 0 16px}
85
+ .cite{font-size:12.5px;color:var(--muted);font-style:italic;border-left:2px solid var(--line2);
86
+ padding-left:13px;margin:6px 0 0}
87
+
88
+ /* 지표 정의 */
89
+ .defs{display:grid;grid-template-columns:auto 1fr;gap:0;border:1px solid var(--line);
90
+ border-radius:16px;overflow:hidden;background:var(--card);box-shadow:var(--sh)}
91
+ .defs dt{padding:14px 18px;font-family:var(--m);font-size:13px;font-weight:750;color:var(--acc);
92
+ border-top:1px solid var(--line);white-space:nowrap}
93
+ .defs dd{padding:14px 18px 14px 0;margin:0;font-size:13.5px;color:var(--ink2);
94
+ border-top:1px solid var(--line);line-height:1.6}
95
+ .defs dt:first-of-type,.defs dd:first-of-type{border-top:0}
96
+
97
  .hero{padding:78px 0 46px;position:relative}
98
  .hero::before{content:"";position:absolute;inset:-70% -30% auto -30%;height:520px;z-index:-1;
99
  background:radial-gradient(ellipse 55% 50% at 32% 55%,color-mix(in srgb,var(--acc) 16%,transparent),transparent 70%)}
 
227
  <span id="who" style="font-size:13px;color:var(--muted)"></span>
228
  </div></nav>
229
 
230
+ <div class="sib"><div class="in" id="sibbar"></div></div>
231
  <div id="app"><div class="wrap"><div class="skel" style="margin-top:70px"></div></div></div>
232
  <footer class="wrap" id="foot"></footer>
233
 
 
258
  function paintChrome(){
259
  $("#who").innerHTML=ME.user?`${esc(ME.user.user)} · <a href="/logout">${t.logout}</a>`
260
  :(ME.login_enabled?`<a href="/login?next=${encodeURIComponent(location.hash||"#/")}">${t.login}</a>`:"");
261
+ $("#sibbar").innerHTML=`<span class="lb">${t.sib}</span>
262
+ <a href="https://huggingface.co/spaces/FINAL-Bench/open-discovery-challenge">
263
+ 🧪 Open Discovery Challenge <span>${t.sibOdc}</span></a>
264
+ <a href="https://huggingface.co/spaces/FINAL-Bench/open-materials-challenge">
265
+ 🔋 Open Materials Challenge <span>${t.sibOmc}</span></a>`;
266
  $("#foot").innerHTML=`<span>LEADBOARD · FINAL-Bench / VIDRAFT</span>
267
  <span class="dim">${t.srcLabel} <a href="https://www.ebi.ac.uk/chembl/">ChEMBL</a> ·
268
  <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a></span>
 
327
  </div>
328
  </div>
329
 
330
+ <div class="sec"><h2>${t.secWhy}</h2>
331
+ <div class="prose"><p>${t.why1}</p><p>${t.why2}</p><p>${t.why3}</p>
332
+ <p class="cite">${t.whyCite}</p></div></div>
333
+
334
+ <div class="sec"><h2>${t.secFound}</h2>
335
+ <p class="lead2">${t.secFoundLead}</p>
336
+ <div class="finds">
337
+ <div class="find"><b>${t.found1t}</b><p>${t.found1d}</p></div>
338
+ <div class="find"><b>${t.found2t}</b><p>${t.found2d}</p></div>
339
+ <div class="find"><b>${t.found3t}</b><p>${t.found3d}</p></div>
340
+ </div></div>
341
+
342
  <div class="sec"><h2>${t.secBrowse}</h2><p class="lead2">${t.secBrowseLead}</p>
343
  <div class="grid">${CATS.categories.map(cardHTML).join("")}</div></div>
344
 
 
347
  ${terrain(items,true)}
348
  ${lost?`<div class="note">${t.lostNote(lost)}</div>`:""}</div>
349
 
350
+ <div class="sec"><h2>${t.secHow}</h2>
351
+ <ol class="steps">
352
+ <li><b>${t.how1t}</b><p class="dim" style="font-size:14px">${t.how1d}</p></li>
353
+ <li><b>${t.how2t}</b><p class="dim" style="font-size:14px">${t.how2d}</p></li>
354
+ <li><b>${t.how3t}</b><p class="dim" style="font-size:14px">${t.how3d}</p></li>
355
+ </ol></div>
356
+
357
+ <div class="sec"><h2>${t.secMetric}</h2>
358
+ <dl class="defs">
359
+ <dt>MAE</dt><dd>${t.mMae}</dd>
360
+ <dt>AUROC</dt><dd>${t.mAuroc}</dd>
361
+ <dt>PR-AUC</dt><dd>${t.mPrauc}</dd>
362
+ <dt>${t.noiseH}</dt><dd>${t.mNoise}</dd>
363
+ <dt>${t.ratioLabel}</dt><dd>${t.mRatio}</dd>
364
+ <dt>${t.thLeak}</dt><dd>${t.mLeak}</dd>
365
+ </dl></div>
366
+
367
  <div class="sec"><h2>${t.secMethod}</h2><p class="lead2">${t.secMethodLead}</p>
368
  <ol class="cl">${t.clauses.map(([a,b])=>`<li><b>${a}</b><span>${b}</span></li>`).join("")}</ol></div>
369
 
370
+ <div class="sec"><h2>${t.secOwn}</h2>
371
+ <div class="prose"><p>${t.own1}</p><p>${t.own2}</p><p>${t.own3}</p></div></div>
372
+
373
  <div class="sec"><h2>${t.secData}</h2>
374
  <div class="note n">${t.dataNote}<br><br>
375
  ${t.srcLabel} · <a href="https://www.ebi.ac.uk/chembl/">ChEMBL_37 (EMBL-EBI)</a> ·