/* LEADBOARD 문자열 사전. * * 문자열은 전부 여기에만 둔다. 화면 코드에 한국어가 섞이면 영어판이 조용히 뒤처진다. * 작은따옴표를 쓰지 않는다 - 영문 축약형(don't) 하나가 문자열을 끊어 사전 전체를 * 무너뜨린 전례가 있다. 축약형은 풀어 쓴다. */ window.T = { ko: { htmlLang: "ko", title: "LEADBOARD — 신약 예측 도구 시험대", navSpec: "규격", login: "HF 로그인", logout: "로그아웃", langBtn: "EN", heroKicker: "AI 신약 개발 벤치마크", heroTag: "신약 예측 도구를
분야별로, 동일한 기준으로 평가합니다", heroLede: "본 시험대는 정답을 배포하지 않습니다. 대신 학습하지 않은 기준선과 " + "해당 종목의 실험실 간 재현 오차를 사전에 공시하여, 보고된 성능이 " + "측정 한계 대비 어디에 위치하는지 판정할 수 있게 합니다.", 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: "가로축은 기준선 오차 ÷ 실험 재현 오차입니다. 1.0 에 근접할수록 " + "모델을 개선해도 측정의 산포를 예측하는 일에 가까워집니다.", secMethod: "채점 규격 8개 조항", secMethodLead: "참가자에게 부과하는 요건이 아니라, 채점자가 스스로에게 부과하는 제약입니다.", secData: "데이터와 라이선스", terrLeft: "실험 오차 안쪽", terrRight: "모델 오차가 더 큼", insideCount: n => `${n}개 부문이 1.3배 안쪽에 위치합니다.`, lostNote: n => `${n}개 부문에서 학습 기준선이 상수 예측에 미달했습니다. ` + "학습하지 않은 예측이 더 정확했다는 의미입니다. 기준선을 순위표에 상주시키지 " + "않으면(3조) 이 사실은 어떤 지표에도 나타나지 않습니다.", openN: n => `${n} 개설`, prep: "준비 중", cardBoards: (o, p) => `부문 ${o}/${p}`, cardCompounds: n => `${n} 화합물`, clauses: [ ["정답은 배포하지 않는다", "부문마다 분할 등급과 정답 등급을 공시한다"], ["점수마다 두 개의 지문", "데이터 판본과 채점 코드의 SHA-256 을 각인한다"], ["기준선은 순위표에서 내려가지 않는다", "상수 예측 · 최근접 이웃 · Morgan+LightGBM 영구 등재"], ["실험 오차를 사전 공시한다", "동일 화합물의 논문 간 측정 차이로 산출한다"], ["누출은 매 제출마다 검사한다", "정답과 소수 자리까지 일치하는 항목의 과밀도를 공시한다"], ["결과 제출과 모델 제출을 구분한다", "직접 재실행하여 확인한 제출에만 [검증됨]을 부여한다"], ["미산출은 0점이 아니다", "측정하지 못한 것과 측정하여 나쁜 것은 다르다"], ["반복 제출로 순위가 오르지 않는다", "Ladder · Blum & Hardt, ICML 2015"] ], all: "전체", tabRank: "순위", tabSubmit: "제출", tabInfo: "부문 정보", thRank: "#", thMethod: "방법", thUser: "제출자", thLeak: "누출", thGrade: "등급", baseline: "기준선", submitted: "제출됨", verified: "검증됨", reference: "참조 도구", leakHigh: "조회 흔적", leakElev: "근접 과밀", noiseNote: v => `실험 재현 오차 ${v}. 이 폭 안의 차이는 순위 차이로 주장하지 ` + "않습니다 (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: "동일 화합물을 서로 다른 논문에서 측정한 값의 차이", noiseSd: "단일 측정 표준편차 추정", nearNote: (p, hi) => `분류 임계선에서 실험 오차 1 표준편차 안에 있는 테스트 화합물이 ` + `${p}% 입니다. ` + (hi ? "재측정 시 라벨이 반전될 수 있어 회귀를 주지표로 둡니다." : "분류 지표를 함께 사용합니다."), beatsYes: "학습 기준선이 상수 예측을 상회했습니다.", beatsNo: "학습 기준선이 상수 예측에 미달했습니다. 학습하지 않은 예측이 더 정확했습니다.", noiseFloorRow: "실험 오차 바닥", step1: "테스트셋 수령", step2: "예측 제출", step3: "컨테이너 제출 (선택)", step1d: n => `화합물 ${n}개의 구조(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) => `8조. 반복 제출로는 순위가 오르지 않습니다. 직전 최고 점수를 ` + `실험 오차 ${v} 이상 개선한 경우에만 새 점수가 공개됩니다. 일일 제출 한도 ${c}회.`, accepted: id => `접수 완료 · 제출 번호 ${id}`, parseFail: m => `예측값을 해석하지 못했습니다: ${m}`, sending: n => `${n}개 항목 전송 중`, emptyCat: "본 분야는 아직 개설된 부문이 없습니다.", loadFail: "화면을 불러오지 못했습니다.", dataNote: "모든 부문은 ChEMBL_37 에서 구축했으며 최초 보고 연도를 기준으로 시간 분할했습니다. " + "배포되는 테스트셋은 구조만 포함하며 라벨은 포함하지 않습니다.", srcLabel: "데이터 출처", sib: "자매 시험대", sibOdc: "AI가 찾아낸 신약 후보 물질을 계산 검증합니다", sibOmc: "전고체 배터리 신소재를 찾는 시험대입니다", secWhy: "왜 만들었는가", why1: "AI가 신약 후보를 쏟아내는 만큼, 그 후보를 판정하는 예측 도구도 쏟아집니다. " + "흡수 · 대사 · 독성 · 표적 결합마다 도구가 수십 개씩 있습니다. 그런데 그 도구들의 " + "성능은 개발자가 자기 논문에서, 자기가 고른 데이터로 보고합니다. " + "같은 문제로 잰 것이 아니므로 비교가 성립하지 않습니다.", why2: "2026년 2월, 널리 쓰이는 ADMET 리더보드 22개 종목의 상위 모델을 전수 검증한 결과가 " + "보고되었습니다. 검증 대상 66개 중 완전히 재현된 것은 3개였고, 테스트셋에 맞춘 모델은 " + "22개 종목 중 10개에서 3위 안에 진입했습니다. 같은 설계를 정직하게 구성한 모델은 2개였습니다.", why3: "문제는 특정 연구실이 아니라 시험 방식입니다. " + "정답을 함께 배포하는 시험은, 아무리 성실히 치러도 예측력과 노출을 분리하지 못합니다.", 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. " + "분할 방식이 공시되지 않은 순위표의 수치는 비교가 불가능합니다.", 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: "제출한 예측값은 제출자의 것입니다. VIDRAFT 는 채점과 순위표 표시에 필요한 " + "범위에서만 사용하며, 개별 제출을 자사 파이프라인에 투입하지 않고 제3자에게 제공하지 않습니다.", own2: "다만 부문 단위 집계는 공개할 수 있습니다 — 전 제출의 합의 예측, 모든 방법이 " + "실패한 화합물 목록, 접근법별 성능 지형 등입니다. 개별 제출자의 예측값은 식별되지 않으며, " + "집계 결과는 참가자를 포함한 모두에게 공개됩니다.", own3: "방법 이름과 순위는 공개됩니다. 모델 내부 구조나 가중치를 요구하지 않습니다.", secOpen: "개설 예정", openLead: "각 부문은 홀드아웃과 실험 오차가 확보된 뒤에 엽니다. 확보되지 않은 부문은 열지 않습니다.", learnMore: "자세히", tabGuide: "참여 가이드", gdIntro: "예측 도구를 처음 만드신다면 아래 순서대로 하시면 됩니다. " + "직접 코딩하셔도 되고, 아래 프롬프트를 언어모델에 그대로 붙여 넣으셔도 됩니다.", gdWhat: "무엇을 만드는가", gdWhatD: "화합물 구조(SMILES)를 받아 값 하나를 내놓는 함수입니다. " + "그 값이 실측과 얼마나 가까운지로 채점합니다.", 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,
for drug prediction tools", heroLede: "We do not release the answer key. Instead we publish, in advance, " + "baselines that learned nothing and the inter-laboratory reproducibility " + "of each endpoint — 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 baseline error divided by experimental error. " + "The closer to 1.0, the more that further tuning amounts to " + "predicting measurement scatter.", 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 => `On ${n} boards the trained baseline failed to beat constant prediction. ` + "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 & 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 => `Experimental error ${v}. 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 different publications", noiseSd: "Estimated single-measurement SD", nearNote: (p, hi) => `${p}% of test compounds lie within one experimental SD of the ` + "classification threshold. " + (hi ? "Labels there can invert on re-measurement, so " + "regression is the primary metric." : "Classification metrics are reported alongside."), beatsYes: "The trained baseline beat constant prediction.", beatsNo: "The trained baseline failed to beat constant prediction. " + "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 ${n} compounds. 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) => `Clause 8. 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 ` + `${v}. 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 prediction tools 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. " + "They were not measured on the same problem, so the comparison does not hold.", 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 the format of the examination. " + "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. " + "A leaderboard that does not declare its split cannot be compared against.", 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: "Your predictions remain yours. 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 board-level aggregates — 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 one number. " + "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.", } };