leadboard / i18n.js
SeaWolf-AI's picture
submit: reject wrong-shaped predictions with a clear message
2b82572 verified
Raw
History Blame Contribute Delete
28.8 kB
/* LEADBOARD 문자열 사전.
*
* 문자열은 전부 여기에만 둔다. 화면 코드에 한국어가 섞이면 영어판이 조용히 뒤처진다.
* 작은따옴표를 쓰지 않는다 - 영문 축약형(don't) 하나가 문자열을 끊어 사전 전체를
* 무너뜨린 전례가 있다. 축약형은 풀어 쓴다.
*/
window.T = {
ko: {
htmlLang: "ko",
title: "LEADBOARD — 신약 예측 도구 시험대",
navSpec: "규격",
login: "HF 로그인", logout: "로그아웃",
langBtn: "EN",
heroKicker: "AI 신약 개발 벤치마크",
heroTag: "신약 예측 도구를<br>분야별로, 동일한 기준으로 평가합니다",
heroLede: "본 시험대는 정답을 배포하지 않습니다. 대신 <b>학습하지 않은 기준선</b>과 " +
"<b>해당 종목의 실험실 간 재현 오차</b>를 사전에 공시하여, 보고된 성능이 " +
"측정 한계 대비 어디에 위치하는지 판정할 수 있게 합니다.",
statBoards: "개설 부문", statCompounds: "테스트 화합물", statFields: "분야",
statClauses: "규격 조항", statPlanned: "계획 부문",
secLeaders: "부문별 1위",
secLeadersLead: "각 부문의 현재 선두입니다. 참가 제출이 없는 부문은 비워 둡니다 — 기준선은 넘어야 할 선이지 우승자가 아닙니다.",
thBoard: "부문", thBest: "1위", thScore: "점수", thVs: "기준선 대비", thN: "테스트",
noLeader: "아직 없음",
leadersEmpty: n => `${n}개 부문 모두 참가 제출을 기다리고 있습니다.`,
leadersSome: (a, b) => `${b}개 부문 중 ${a}개에 선두가 있습니다.`,
secBrowse: "분야", secBrowseLead: "분야를 선택하면 소속 부문의 순위표와 제출 창구로 이동합니다.",
secEvidence: "측정 한계 지형",
secEvidenceLead: "가로축은 <b>기준선 오차 ÷ 실험 재현 오차</b>입니다. 1.0 에 근접할수록 " +
"모델을 개선해도 <b>측정의 산포를 예측하는 일</b>에 가까워집니다.",
secMethod: "채점 규격 8개 조항",
secMethodLead: "참가자에게 부과하는 요건이 아니라, 채점자가 스스로에게 부과하는 제약입니다.",
secData: "데이터와 라이선스",
terrLeft: "실험 오차 안쪽", terrRight: "모델 오차가 더 큼",
insideCount: n => `${n}개 부문이 1.3배 안쪽에 위치합니다.`,
lostNote: n => `<b>${n}개 부문에서 학습 기준선이 상수 예측에 미달했습니다.</b> ` +
"학습하지 않은 예측이 더 정확했다는 의미입니다. 기준선을 순위표에 상주시키지 " +
"않으면(3조) 이 사실은 어떤 지표에도 나타나지 않습니다.",
openN: n => `${n} 개설`, prep: "준비 중",
cardBoards: (o, p) => `부문 ${o}/${p}`,
cardCompounds: n => `${n} 화합물`,
clauses: [
["정답은 배포하지 않는다", "부문마다 분할 등급과 정답 등급을 공시한다"],
["점수마다 두 개의 지문", "데이터 판본과 채점 코드의 SHA-256 을 각인한다"],
["기준선은 순위표에서 내려가지 않는다", "상수 예측 · 최근접 이웃 · Morgan+LightGBM 영구 등재"],
["실험 오차를 사전 공시한다", "동일 화합물의 논문 간 측정 차이로 산출한다"],
["누출은 매 제출마다 검사한다", "정답과 소수 자리까지 일치하는 항목의 과밀도를 공시한다"],
["결과 제출과 모델 제출을 구분한다", "직접 재실행하여 확인한 제출에만 [검증됨]을 부여한다"],
["미산출은 0점이 아니다", "측정하지 못한 것과 측정하여 나쁜 것은 다르다"],
["반복 제출로 순위가 오르지 않는다", "Ladder · Blum &amp; Hardt, ICML 2015"]
],
all: "전체",
tabRank: "순위", tabSubmit: "제출", tabInfo: "부문 정보",
thRank: "#", thMethod: "방법", thUser: "제출자", thLeak: "누출", thGrade: "등급",
baseline: "기준선", submitted: "제출됨", verified: "검증됨", reference: "참조 도구",
leakHigh: "조회 흔적", leakElev: "근접 과밀",
noiseNote: v => `<b>실험 재현 오차 ${v}.</b> 이 폭 안의 차이는 순위 차이로 주장하지 ` +
"않습니다 (4조). 기준선 3종은 순위표에서 내려가지 않습니다 (3조).",
noEntries: "참가 제출이 아직 없습니다. 표에 표시된 것은 기준선입니다.",
updated: t => `순위 갱신 ${t}`,
gradeH: "등급", holdoutH: "홀드아웃", noiseH: "실험 재현 오차", baseH: "기준선",
splitGrade: "분할 등급", answerGrade: "정답 등급",
gradeNote: {
T: "시간 분할 — 최초 보고 연도 기준. 기준일 이후 처음 등장한 화합물만 평가한다",
S: "스캐폴드 분할 — 골격이 훈련에 없는 화합물만 평가한다",
P1: "정답이 공개 데이터베이스에 존재한다. 조회 방어는 8조가 담당한다",
P2: "원자료는 공개지만 선별과 환산이 본 판본을 구성한다. 공개 DB 조회로는 동일 값이 나오지 않는다",
P3: "파트너로부터 제공받은 미공표 실측",
P4: "부문 개설 이후 생성된 측정. 개설 시점에 존재하지 않았다"
},
kSource: "출처", kCut: "분할 기준일", kTrainTest: "훈련 / 테스트",
kOverlap: "구조 겹침", kThr: "분류 임계", kSha: "데이터 지문", kLicense: "라이선스",
cutNote: "최초 보고 연도 기준", overlapNote: "0 (시간 분할 정의상)",
posRate: p => `양성 ${p}%`,
noisePairs: (p, c) => `비교쌍 ${p} · 화합물 ${c}`,
noiseDesc: "동일 화합물을 <b>서로 다른 논문</b>에서 측정한 값의 차이",
noiseSd: "단일 측정 표준편차 추정",
nearNote: (p, hi) => `분류 임계선에서 실험 오차 1 표준편차 안에 있는 테스트 화합물이 ` +
`<b>${p}%</b> 입니다. ` + (hi ? "재측정 시 라벨이 반전될 수 있어 <b>회귀를 주지표</b>로 둡니다."
: "분류 지표를 함께 사용합니다."),
beatsYes: "학습 기준선이 상수 예측을 상회했습니다.",
beatsNo: "<b>학습 기준선이 상수 예측에 미달했습니다.</b> 학습하지 않은 예측이 더 정확했습니다.",
noiseFloorRow: "실험 오차 바닥",
step1: "테스트셋 수령", step2: "예측 제출", step3: "컨테이너 제출 (선택)",
step1d: n => `화합물 <b>${n}개</b>의 구조(SMILES)만 포함합니다. 라벨은 본 서버에 존재하지 않습니다.`,
licLine: "ChEMBL 파생 · CC BY-SA 3.0 — 재배포 시 출처와 동일 라이선스를 유지하십시오.",
dl: "테스트셋 내려받기",
fMethod: "방법 이름", fMethodH: "순위표에 표시될 명칭",
fTrain: "학습에 사용한 데이터", fTrainH: "5조 누출 검사에 사용합니다",
fPred: "예측값", fPredH: "JSON 또는 CSV (compound_id, prediction)",
fPredAx: n => `이 부문은 축이 ${n}개다 — 화합물마다 숫자 ${n}개짜리 배열을 JSON 으로 올린다`,
drop: "파일을 끌어다 놓거나 클릭하여 선택",
send: "제출", needLogin: "제출하려면 HF 계정 로그인이 필요합니다.",
step3d: "모델과 추론 환경을 함께 제출하면 직접 재실행하여 동일 결과를 확인하고 " +
"[검증됨]을 부여합니다 (6조).",
ladderNote: (v, c) => `<b>8조.</b> 반복 제출로는 순위가 오르지 않습니다. 직전 최고 점수를 ` +
`실험 오차 <b>${v}</b> 이상 개선한 경우에만 새 점수가 공개됩니다. 일일 제출 한도 ${c}회.`,
accepted: id => `접수 완료 · 제출 번호 ${id}`,
parseFail: m => `예측값을 해석하지 못했습니다: ${m}`,
sending: n => `${n}개 항목 전송 중`,
emptyCat: "본 분야는 아직 개설된 부문이 없습니다.",
loadFail: "화면을 불러오지 못했습니다.",
dataNote: "모든 부문은 ChEMBL_37 에서 구축했으며 최초 보고 연도를 기준으로 시간 분할했습니다. " +
"배포되는 테스트셋은 구조만 포함하며 라벨은 포함하지 않습니다.",
srcLabel: "데이터 출처",
sib: "자매 시험대",
sibOdc: "AI가 찾아낸 신약 후보 물질을 계산 검증합니다",
sibOmc: "전고체 배터리 신소재를 찾는 시험대입니다",
secWhy: "왜 만들었는가",
why1: "AI가 신약 후보를 쏟아내는 만큼, 그 후보를 판정하는 <b>예측 도구</b>도 쏟아집니다. " +
"흡수 · 대사 · 독성 · 표적 결합마다 도구가 수십 개씩 있습니다. 그런데 그 도구들의 " +
"성능은 개발자가 자기 논문에서, 자기가 고른 데이터로 보고합니다. " +
"<b>같은 문제로 잰 것이 아니므로 비교가 성립하지 않습니다.</b>",
why2: "2026년 2월, 널리 쓰이는 ADMET 리더보드 22개 종목의 상위 모델을 전수 검증한 결과가 " +
"보고되었습니다. 검증 대상 66개 중 완전히 재현된 것은 3개였고, 테스트셋에 맞춘 모델은 " +
"22개 종목 중 10개에서 3위 안에 진입했습니다. 같은 설계를 정직하게 구성한 모델은 2개였습니다.",
why3: "문제는 특정 연구실이 아니라 <b>시험 방식</b>입니다. " +
"정답을 함께 배포하는 시험은, 아무리 성실히 치러도 예측력과 노출을 분리하지 못합니다.",
whyCite: "Koleiev 외, Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",
secFound: "본 시험대가 실측한 것",
secFoundLead: "아래는 인용이 아니라 본 시험대가 19개 부문에서 직접 산출한 결과입니다.",
ratioLabel: "오차 ÷ 실험오차",
found1t: "분할 방식만으로 AUROC 가 0.21 이동한다",
found1d: "동일 데이터 · 동일 모델(Morgan+LightGBM 기본값) · 동일 테스트 비율에서 분할만 교체했습니다. " +
"hERG 기준 무작위 분할 0.818 → 시간 분할 0.606. " +
"<b>분할 방식이 공시되지 않은 순위표의 수치는 비교가 불가능합니다.</b>",
found2t: "19개 부문 중 7개에서 학습 기준선이 상수 예측에 미달했다",
found2d: "훈련 데이터의 중앙값을 그대로 내놓는 예측이 학습한 모델보다 정확했습니다. " +
"기준선을 순위표에 상주시키지 않으면 이 사실은 어떤 지표에도 나타나지 않습니다.",
found3t: "모델 오차가 실험 오차의 0.91 ~ 2.79 배 구간에 있다",
found3d: "동일 화합물을 서로 다른 논문에서 측정한 값의 차이로 각 부문의 실험 재현 오차를 " +
"산출했습니다. 7개 부문은 그 오차의 1.3배 안쪽에 있습니다.",
secHow: "참여 방법",
how1t: "테스트셋을 받습니다",
how1d: "부문을 선택하면 화합물 구조(SMILES)와 식별자만 담긴 파일을 내려받습니다. " +
"라벨은 포함되지 않으며, 본 서버에도 존재하지 않습니다.",
how2t: "원하는 도구로 예측합니다",
how2d: "자체 모델 · 상용 도구 · 공개 가중치 · 물리 기반 계산 무엇이든 무방합니다. 제한하지 않습니다. " +
"학습에 사용한 데이터만 기재해 주십시오 (5조 누출 검사에 사용합니다).",
how3t: "예측값을 제출하면 자동 채점됩니다",
how3d: "JSON 또는 CSV 로 올리면 채점 · 누출 검사 · 지문 각인이 자동 수행되고, " +
"기준선 3종 및 실험 오차와 함께 순위표에 표시됩니다.",
secMetric: "채점 기준",
mMae: "주지표. 예측값과 실측값의 평균 절대 오차입니다. 낮을수록 좋습니다.",
mAuroc: "분류 지표. 임계선 위아래를 가르는 능력입니다. 0.5 는 무작위와 같습니다.",
mPrauc: "양성이 드문 부문에서 AUROC 보다 실태를 잘 드러냅니다.",
mNoise: "동일 화합물의 논문 간 측정 차이로 산출한 재현 오차입니다. 이 폭 안의 차이는 순위로 인정하지 않습니다.",
mRatio: "최선 기준선 오차 ÷ 실험 오차. 1.0 에 근접하면 측정 한계에 도달한 것입니다.",
mLeak: "예측값이 실측값과 소수 자리까지 일치하는 항목의 밀도입니다. 의도를 판정하지 않고 사실만 표시합니다.",
secOwn: "제출물의 취급",
own1: "<b>제출한 예측값은 제출자의 것입니다.</b> VIDRAFT 는 채점과 순위표 표시에 필요한 " +
"범위에서만 사용하며, 개별 제출을 자사 파이프라인에 투입하지 않고 제3자에게 제공하지 않습니다.",
own2: "다만 <b>부문 단위 집계</b>는 공개할 수 있습니다 — 전 제출의 합의 예측, 모든 방법이 " +
"실패한 화합물 목록, 접근법별 성능 지형 등입니다. 개별 제출자의 예측값은 식별되지 않으며, " +
"집계 결과는 참가자를 포함한 모두에게 공개됩니다.",
own3: "방법 이름과 순위는 공개됩니다. 모델 내부 구조나 가중치를 요구하지 않습니다.",
secOpen: "개설 예정",
openLead: "각 부문은 홀드아웃과 실험 오차가 확보된 뒤에 엽니다. 확보되지 않은 부문은 열지 않습니다.",
learnMore: "자세히",
tabGuide: "참여 가이드",
gdIntro: "예측 도구를 처음 만드신다면 아래 순서대로 하시면 됩니다. " +
"직접 코딩하셔도 되고, 아래 프롬프트를 언어모델에 그대로 붙여 넣으셔도 됩니다.",
gdWhat: "무엇을 만드는가",
gdWhatD: "화합물 구조(SMILES)를 받아 <b>값 하나</b>를 내놓는 함수입니다. " +
"그 값이 실측과 얼마나 가까운지로 채점합니다.",
gdPrompt: "언어모델용 프롬프트",
gdPromptD: "아래를 통째로 복사해 Claude · GPT · Gemini 등에 붙여 넣으십시오. " +
"이 부문의 값이 이미 채워져 있습니다.",
gdCopy: "복사", gdCopied: "복사됨",
gdStarter: "바로 돌려볼 수 있는 뼈대",
gdStarterD: "직접 짜시려면 이 뼈대에서 시작하십시오. 훈련 자료를 받아 지문을 만들고 " +
"모델을 학습해 제출 파일까지 씁니다.",
gdRules: "지켜야 할 것",
gdR1: "기준일 이후 최초 보고된 화합물은 학습에 쓰지 마십시오. 그것이 테스트셋입니다.",
gdR2: "같은 화합물이 여러 논문에 있으면 InChIKey 로 접어 중앙값을 쓰십시오. " +
"문자열로 접으면 같은 분자가 여러 번 들어갑니다.",
gdR3: "정답을 조회해 채우지 마십시오. 예측값이 실측과 소수 자리까지 일치하는 밀도를 " +
"검사해 순위표에 함께 표시합니다.",
gdR4: "방법에는 제한이 없습니다. 지문+트리 · 그래프 신경망 · 사전학습 모델 · 물리 계산 " +
"무엇이든 좋습니다.",
gdTarget: "넘어야 할 선",
gdTargetD: "기준선을 넘지 못하면 순위표에서 그 아래에 표시됩니다.",
},
en: {
htmlLang: "en",
title: "LEADBOARD — Benchmark for Drug Prediction Tools",
navSpec: "spec",
login: "Sign in with HF", logout: "Sign out",
langBtn: "한국어",
heroKicker: "AI Drug Discovery Benchmark",
heroTag: "One yardstick, per discipline,<br>for drug prediction tools",
heroLede: "We do not release the answer key. Instead we publish, in advance, " +
"<b>baselines that learned nothing</b> and <b>the inter-laboratory reproducibility " +
"of each endpoint</b> — so that any reported score can be judged against the " +
"measurement limit itself.",
statBoards: "open boards", statCompounds: "test compounds", statFields: "disciplines",
statClauses: "spec clauses", statPlanned: "planned boards",
secLeaders: "Current leaders",
secLeadersLead: "The leading entry on each board. Boards without an entrant are left blank — a baseline is a line to cross, not a winner.",
thBoard: "Board", thBest: "Leader", thScore: "Score", thVs: "vs baseline", thN: "Test",
noLeader: "none yet",
leadersEmpty: n => `All ${n} boards are awaiting their first entry.`,
leadersSome: (a, b) => `${a} of ${b} boards have a leader.`,
secBrowse: "Disciplines",
secBrowseLead: "Select a discipline to reach its boards, leaderboards and submission desk.",
secEvidence: "Measurement-limit landscape",
secEvidenceLead: "The axis is <b>baseline error divided by experimental error</b>. " +
"The closer to 1.0, the more that further tuning amounts to " +
"<b>predicting measurement scatter</b>.",
secMethod: "Eight clauses the scorer imposes on itself",
secMethodLead: "These are not requirements placed on entrants. They are constraints we accept.",
secData: "Data and licence",
terrLeft: "inside experimental error", terrRight: "model error larger",
insideCount: n => `${n} boards sit within 1.3x.`,
lostNote: n => `<b>On ${n} boards the trained baseline failed to beat constant prediction.</b> ` +
"A prediction that learned nothing was more accurate. Without baselines resident on the " +
"leaderboard (clause 3), this fact appears in no metric.",
openN: n => `${n} open`, prep: "in preparation",
cardBoards: (o, p) => `boards ${o}/${p}`,
cardCompounds: n => `${n} compounds`,
clauses: [
["The answer key is not distributed", "Each board declares its split grade and answer grade"],
["Every score carries two fingerprints", "SHA-256 of the data revision and of the scoring code"],
["Baselines never leave the table", "Constant, nearest-neighbour and Morgan+LightGBM stay resident"],
["Experimental error is published first", "Derived from cross-publication measurements of the same compound"],
["Leakage is screened on every submission", "We report the density of predictions matching labels to the decimal"],
["Result submission and model submission are distinct", "Only re-executed submissions receive [verified]"],
["An unmeasured axis is not a zero", "Failing to measure differs from measuring a poor result"],
["Repeated submission does not raise rank", "Ladder · Blum &amp; Hardt, ICML 2015"]
],
all: "All",
tabRank: "Leaderboard", tabSubmit: "Submit", tabInfo: "Board detail",
thRank: "#", thMethod: "Method", thUser: "Entrant", thLeak: "Leakage", thGrade: "Grade",
baseline: "baseline", submitted: "submitted", verified: "verified", reference: "reference tool",
leakHigh: "lookup trace", leakElev: "near-exact density",
noiseNote: v => `<b>Experimental error ${v}.</b> Differences within this band are not ` +
"claimed as rank differences (clause 4). The three baselines stay resident (clause 3).",
noEntries: "No entrant submissions yet. The rows shown are baselines.",
updated: t => `Leaderboard updated ${t}`,
gradeH: "Grades", holdoutH: "Holdout", noiseH: "Experimental error", baseH: "Baselines",
splitGrade: "Split grade", answerGrade: "Answer grade",
gradeNote: {
T: "Time split by year of first report. Only compounds first reported after the cut are scored",
S: "Scaffold split. Only compounds whose scaffold is absent from training are scored",
P1: "The answer exists in a public database. Clause 8 carries the defence against lookup",
P2: "The source is public, but selection and unit conversion define this revision. " +
"Querying the public database does not reproduce these values",
P3: "Unpublished measurements provided by a partner",
P4: "Measured after the board opened. It did not exist at opening"
},
kSource: "Source", kCut: "Split year", kTrainTest: "Train / test",
kOverlap: "Structure overlap", kThr: "Classification threshold", kSha: "Data fingerprint",
kLicense: "Licence",
cutNote: "by year of first report", overlapNote: "0 (by construction of the time split)",
posRate: p => `positives ${p}%`,
noisePairs: (p, c) => `${p} pairs · ${c} compounds`,
noiseDesc: "Difference between measurements of the same compound in <b>different publications</b>",
noiseSd: "Estimated single-measurement SD",
nearNote: (p, hi) => `<b>${p}%</b> of test compounds lie within one experimental SD of the ` +
"classification threshold. " + (hi ? "Labels there can invert on re-measurement, so " +
"<b>regression is the primary metric</b>." : "Classification metrics are reported alongside."),
beatsYes: "The trained baseline beat constant prediction.",
beatsNo: "<b>The trained baseline failed to beat constant prediction.</b> " +
"A prediction that learned nothing was more accurate.",
noiseFloorRow: "experimental error floor",
step1: "Obtain the test set", step2: "Submit predictions", step3: "Submit a container (optional)",
step1d: n => `Structures (SMILES) for <b>${n} compounds</b>. No labels — they do not exist on this server.`,
licLine: "Derived from ChEMBL · CC BY-SA 3.0 — retain attribution and the same licence on redistribution.",
dl: "Download test set",
fMethod: "Method name", fMethodH: "as it will appear on the leaderboard",
fTrain: "Training data used", fTrainH: "used for the clause 5 leakage screen",
fPred: "Predictions", fPredH: "JSON or CSV (compound_id, prediction)",
fPredAx: n => `This board has ${n} axes — upload JSON with an array of ${n} numbers per compound`,
drop: "Drop a file here, or click to choose",
send: "Submit", needLogin: "Signing in with a Hugging Face account is required to submit.",
step3d: "Submit the model with its inference environment and we re-execute it, confirm the " +
"same numbers, and mark it [verified] (clause 6).",
ladderNote: (v, c) => `<b>Clause 8.</b> Repeated submission does not raise rank. A new score is ` +
`released only when it improves on your previous best by more than the experimental error ` +
`<b>${v}</b>. Daily limit ${c}.`,
accepted: id => `Accepted · submission ${id}`,
parseFail: m => `Could not parse the predictions: ${m}`,
sending: n => `sending ${n} entries`,
emptyCat: "No boards are open in this discipline yet.",
loadFail: "The page could not be loaded.",
dataNote: "Every board is built from ChEMBL_37 and split by year of first report. " +
"Distributed test sets contain structures only; labels are not included.",
srcLabel: "Data source",
sib: "Sister benchmarks",
sibOdc: "Computational validation of AI-generated drug candidates",
sibOmc: "A benchmark for solid-state battery materials",
secWhy: "Why this exists",
why1: "As AI produces drug candidates, it also produces the <b>prediction tools</b> that judge " +
"them. Absorption, metabolism, toxicity, target binding — each has dozens of tools. " +
"Yet their performance is reported by their own authors, on data of their own choosing. " +
"<b>They were not measured on the same problem, so the comparison does not hold.</b>",
why2: "In February 2026 an audit of the top-ranked models across 22 endpoints of a widely used " +
"ADMET leaderboard was published. Of 66 models examined, three reproduced fully. Models " +
"deliberately tuned on the public test set reached the top three on 10 of 22 endpoints; " +
"the same design built honestly reached it on two.",
why3: "The fault lies not with any laboratory but with <b>the format of the examination</b>. " +
"A test distributed together with its answer key cannot separate predictive power from exposure.",
whyCite: "Koleiev et al., Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",
secFound: "What this benchmark measured",
secFoundLead: "These are not citations. They were produced here, across 19 boards.",
ratioLabel: "error / experimental error",
found1t: "The split alone moves AUROC by 0.21",
found1d: "Same data, same model (Morgan+LightGBM at defaults), same test fraction — only the split " +
"changed. On hERG: random split 0.818, time split 0.606. " +
"<b>A leaderboard that does not declare its split cannot be compared against.</b>",
found2t: "On 7 of 19 boards the trained baseline failed to beat constant prediction",
found2d: "Returning the training median outperformed a trained model. Without baselines resident " +
"on the leaderboard, this fact appears in no metric.",
found3t: "Model error sits between 0.91x and 2.79x the experimental error",
found3d: "Each board carries an experimental error derived from measurements of the same compound " +
"in different publications. Seven boards lie within 1.3x of that error.",
secHow: "How to take part",
how1t: "Obtain the test set",
how1d: "Choose a board and download a file containing structures (SMILES) and identifiers only. " +
"No labels are included, and none exist on this server.",
how2t: "Predict with any tool you like",
how2d: "Proprietary models, commercial tools, open weights, physics-based calculation — all are " +
"permitted. We impose no restriction. Only declare the data you trained on, which is used " +
"for the clause 5 leakage screen.",
how3t: "Submit predictions for automatic scoring",
how3d: "Upload JSON or CSV. Scoring, leakage screening and fingerprinting run automatically, and " +
"the result appears on the leaderboard beside the three baselines and the experimental error.",
secMetric: "What is scored",
mMae: "Primary metric. Mean absolute error against the measured value. Lower is better.",
mAuroc: "Classification metric. Ability to separate above and below the threshold. 0.5 equals chance.",
mPrauc: "More informative than AUROC where positives are rare.",
mNoise: "Reproducibility derived from cross-publication measurements of the same compound. " +
"Differences within this band are not recognised as rank differences.",
mRatio: "Best baseline error divided by experimental error. Approaching 1.0 means the measurement " +
"limit has been reached.",
mLeak: "Density of predictions matching the measured value to the decimal. We do not adjudicate " +
"intent; we report the fact.",
secOwn: "How submissions are handled",
own1: "<b>Your predictions remain yours.</b> VIDRAFT uses them only as required for scoring and " +
"leaderboard display. Individual submissions are not fed into our own pipeline and are not " +
"provided to third parties.",
own2: "We may publish <b>board-level aggregates</b> — a consensus prediction across all entries, " +
"the compounds every method failed, the performance landscape by approach. Individual " +
"predictions are not identifiable in these, and the aggregates are released to everyone, " +
"entrants included.",
own3: "Method names and ranks are public. We do not ask for model internals or weights.",
secOpen: "Opening next",
openLead: "A board opens only once its holdout and experimental error are established. " +
"Boards without them are not opened.",
learnMore: "Detail",
tabGuide: "Guide",
gdIntro: "If this is your first predictor, follow the steps below. Write it yourself, " +
"or paste the prompt into a language model as it is.",
gdWhat: "What you are building",
gdWhatD: "A function that takes a structure (SMILES) and returns <b>one number</b>. " +
"We score how close that number is to the measured value.",
gdPrompt: "Prompt for a language model",
gdPromptD: "Copy the whole block into Claude, GPT, Gemini or similar. " +
"The values for this board are already filled in.",
gdCopy: "Copy", gdCopied: "Copied",
gdStarter: "A skeleton you can run",
gdStarterD: "If you would rather write it yourself, start here. It pulls the training data, " +
"builds fingerprints, fits a model and writes the submission file.",
gdRules: "Rules to observe",
gdR1: "Do not train on compounds first reported on or after the split year. That is the test set.",
gdR2: "Fold duplicate measurements by InChIKey and take the median. Folding by SMILES string " +
"leaves the same molecule in several times.",
gdR3: "Do not fill predictions by looking up the answer. We measure how many predictions match " +
"the measured value to the decimal and show it on the leaderboard.",
gdR4: "There is no restriction on method. Fingerprints and trees, graph networks, pretrained " +
"models, physics-based calculation — all are fine.",
gdTarget: "Lines to cross",
gdTargetD: "A submission that does not clear a baseline is shown below it on the leaderboard.",
}
};