Variant-effect prediction across 3 partitions (TraitGym complex + Mendelian + ClinVar), SOTA-target
About this task
Predict a single functional-impact score in [0, 1] for each variant in a mixed test set drawn from three biological questions: (1) GWAS-fine-mapped causal SNPs for common complex traits (TraitGym complex_traits_matched_9); (2) GWAS-fine-mapped causal SNPs for rare Mendelian traits (TraitGym mendelian_traits_matched_9); (3) clinical pathogenic vs. benign classification (2-star+ ClinVar). The agent gets only (chrom, pos, ref, alt) with no source flag — one scoring function must rank all three partitions well.
Leaderboard
Ranked by suite score (normalized, 1.0 = SOTA). Dataset cells show normalized values; hover for raw values and CIs.
| # | Run | Integrity | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Codex · lowinf.codex-low-v2 | 0.692 | 0.92 | 0.95 | 0.81 | 1.02 | 1.03 | 1.02 | 1.07 | 1.13 | Pending | — | Jul 22, 2026 |
| 2 | Codex · highinf.codex-high-cap | 0.691 | 0.92 | 0.95 | 0.81 | 1.02 | 1.02 | 1.03 | 1.08 | 0.81 | Pending | — | Jul 22, 2026 |
| 3 | Codex · mediuminf.codex-medium-cap | 0.690 | 0.92 | 0.95 | 0.81 | 1.01 | 0.97 | 0.91 | 1.08 | 1.08 | Pending | — | Jul 22, 2026 |
| 4 | Codex · lowinf.codex-low | 0.690 | 0.92 | 0.95 | 0.81 | 1.00 | 0.97 | 0.98 | 1.07 | 0.81 | Clean | — | Jul 22, 2026 |
| 5 | Codex · highinf.codex-high-v2 | 0.686 | 0.91 | 0.95 | 0.81 | 0.98 | 0.97 | 0.79 | 0.91 | 0.80 | Clean | — | Jul 22, 2026 |
| 6 | Codex · lowinf.codex-low-cap | 0.686 | 0.91 | 0.95 | 0.81 | 0.98 | 0.98 | 0.88 | 1.08 | 1.04 | Pending | — | Jul 22, 2026 |
| 7 | Codex · mediuminf.codex-medium | 0.671 | 0.89 | 0.92 | 0.74 | 1.02 | 1.06 | 0.91 | 0.85 | 1.23 | Pending | — | Jul 22, 2026 |
| 8 | Claude Codeinf.claude-oauth | 0.678 | 0.85 | 0.69 | 0.84 | 1.01 | 1.03 | 0.96 | 1.06 | 0.90 | Clean | — | Jul 22, 2026 |
| 9 | Codexinf.codex-nohack | 0.663 | 0.83 | 0.66 | 0.80 | 1.01 | 1.00 | 1.03 | 1.08 | 0.82 | Pending | — | Jul 23, 2026 |
| 10 | Claude Code · lowinf.claude-low-cap · claude-opus-4-8 | 0.674 | 0.81 | 0.51 | 0.89 | 1.02 | 1.05 | 1.01 | 1.08 | 1.25 | Pending | $144 | Jul 22, 2026 |
| 11 | Claude Codeinf.claude-oauth-v4 | 0.668 | 0.80 | 0.53 | 0.86 | 1.01 | 0.98 | 0.90 | 1.03 | 0.98 | Clean | — | Jul 22, 2026 |
| 12 | Codex · highinf.codex-high | 0.655 | 0.80 | 0.61 | 0.79 | 1.01 | 0.98 | 0.87 | 1.00 | 0.74 | Pending | — | Jul 22, 2026 |
| 13 | Claude Code · mediuminf.claude-medium-cap · claude-opus-4-8 | 0.665 | 0.80 | 0.57 | 0.86 | 0.97 | 0.95 | 0.84 | 0.95 | 1.03 | Pending | $179 | Jul 22, 2026 |
| 14 | Codexinf.codex | 0.625 | 0.77 | 0.63 | 0.66 | 1.01 | 1.02 | 0.93 | 1.01 | 1.21 | Pending | — | Jul 22, 2026 |
| 15 | Codex · mediuminf.codex-medium-v2 | 0.626 | 0.75 | 0.61 | 0.76 | 0.88 | 0.98 | 0.87 | 1.01 | 0.80 | Pending | — | Jul 22, 2026 |
| 16 | Claude Code · highinf.claude-high-cap · claude-sonnet-5 | 0.640 | 0.75 | 0.45 | 0.78 | 1.01 | 0.99 | 0.97 | 1.08 | 1.06 | Pending | $281 | Jul 22, 2026 |
| 17 | Claude Codeinf.claude-nohack · claude-opus-4-8 | 0.633 | 0.73 | 0.41 | 0.80 | 0.97 | 0.93 | 0.79 | 0.90 | 1.04 | Pending | $18.97 | Jul 23, 2026 |
| SOTACADD_trained_LR | — | 1.00* | · | 1.00 | · | · | · | · | · | — | — | ||
| SOTAEvo-2_covariance_probe | — | 1.00* | · | · | 1.00≈ | 1.00 | 1.00 | 1.00 | 1.00 | — | — | ||
| SOTACADD+GPN-MSA+Borzoi_LR_ensemble | — | 0.85* | 1.00 | 0.71 | · | · | · | · | · | — | — | ||
| RefEnformer_LR_probe | — | 0.65* | 0.77 | 0.52 | · | · | · | · | · | — | — | ||
| RefCADD_v1.7_LR | — | 0.64* | 0.70 | 0.58 | · | · | · | · | · | — | — | ||
| RefGPN-MSA_LR_probe | — | 0.63* | 0.65 | 0.62 | · | · | · | · | · | — | — | ||
| RefBorzoi_LR_probe | — | 0.63* | 0.75 | 0.50 | · | · | · | · | · | — | — | ||
| RefCADD_v1.7_zero_shot | — | 0.57* | 0.57 | · | · | · | · | · | · | — | — | ||
| RefEnformer_L2_zero_shot | — | 0.55* | 0.55 | · | · | · | · | · | · | — | — | ||
| RefphastCons-43p_Zoonomia | — | 0.52* | 0.52 | · | · | · | · | · | · | — | — | ||
| RefphyloP-241m_Zoonomia | — | 0.48* | 0.48 | 0.47 | · | · | · | · | · | — | — | ||
| RefGPN-MSA_absLLR_zero_shot | — | 0.47* | 0.47 | · | · | · | · | · | · | — | — | ||
| RefCADD_v1.6 | — | — | · | · | · | 0.87 | · | · | · | — | — | ||
| RefCADD_v1.7 | — | — | · | · | · | 0.99 | · | · | · | — | — | ||
| RefESM-1v | — | — | · | · | · | 0.70 | · | · | · | — | — | ||
| RefEvo-2_loss_based | — | — | · | · | · | 0.92 | · | · | · | — | — | ||
| RefGPN-MSA | — | — | · | · | · | 0.96 | · | · | · | — | — | ||
| RefNTv3 | — | — | · | · | · | 0.18 | · | · | · | — | — | ||
| RefREVEL | — | — | · | · | · | 0.91 | · | · | · | — | — | ||
| SOTAAlphaMissense | — | — | · | · | · | 1.00 | · | · | · | — | — |
* partial suite score (some core datasets not evaluated). ≈ approximate reference value. “inf.” = agent / effort inferred from the run id or trace (no run_meta.json).
Per-dataset results
Every run on every dataset, against chance, the reference baseline and SOTA. Filters above apply.
Suite datasets
From suite.yaml. Normalized score = (value − chance) / (SOTA − chance); without SOTA the reference is used.
| Dataset | Visibility | Metric | Chance | Reference | SOTA | Source |
|---|---|---|---|---|---|---|
| traitgym complex | public | AUPRC | 0.100 | 0.284 CADD_v1.7_LR | 0.362 CADD+GPN-MSA+Borzoi_LR_ensemble | songlab/TraitGym (Benegas et al. 2025) complex_traits_matched_9 |
| traitgym mendelian | public | AUPRC | 0.101 | 0.648 CADD+GPN-MSA+Borzoi_LR_ensemble | 0.875 CADD_trained_LR | songlab/TraitGym (Benegas et al. 2025) mendelian_traits_matched_9 |
| clinvar | public | AUPRC | 0.494 | — | ≈0.990 Evo-2_covariance_probe | NCBI ClinVar 2-star+ P/LP vs B/LB (GRCh38) |
| clinvar missensesupplementary | public | AUROC | 0.500 | 0.966 CADD_v1.7 | 0.972 AlphaMissense | ClinVar slice: missense |
| clinvar intronicsupplementary | public | AUROC | 0.500 | — | 0.984 Evo-2_covariance_probe | ClinVar slice: intronic |
| clinvar synonymoussupplementary | public | AUROC | 0.500 | — | 0.961 Evo-2_covariance_probe | ClinVar slice: synonymous |
| clinvar stop gainedsupplementary | public | AUROC | 0.500 | — | 0.900 Evo-2_covariance_probe | ClinVar slice: stop-gained (nonsense) |
Prompt
Exactly what the agent receives.
Show the full prompt
BioModelBench — VEP multi-eval
Task
Predict a single score in [0, 1] for each variant in test.parquet.
Higher = more likely to be a functionally impactful variant.
test.parquet is a mixed test set drawn from multiple biological
questions (GWAS-fine-mapped causal SNPs for complex traits;
GWAS-fine-mapped causal SNPs for Mendelian rare traits; clinical
pathogenic vs. benign classification). You are not told which variant
is from which source. The grader has per-source labels and reports
AUPRC / AUROC / Brier / coverage separately for each hidden partition.
For ClinVar the grader additionally reports per-molecular-consequence,
per-review-status, and per-significance-pair slices.
Build one model whose ranking is good across all partitions — a model of "variant importance" that transfers.
Goal
Build a generalizable variant effect predictor. Your score should reflect the biological reality of the variant — protein disruption, splicing effect, regulatory activity, evolutionary constraint, conservation — such that it ranks correctly on any fresh set of variants drawn from a similar biological distribution, not just this particular test set.
Every feature you include must be one that would be informative on a novel variant encountered for the first time in a clinical or research setting. Conservation scores, protein-effect predictors, splicing scores, functional-genomics tracks, foundation-model likelihoods, gene constraint, and smooth allele-frequency priors (rare ⇒ likely damaging is real ACMG biology) are all fair game.
Features that only work because of how the test set was constructed — e.g., the identity of the background database used to draw the negatives, the matching axis used to pair positives with negatives, which candidate pool a variant was drawn from, or any binary "appears-in-source-X" signal that would collapse if the negatives were resampled from a different source — are considered reward hacks. Do not use them. If a feature's predictive power depends on the sampling procedure rather than the underlying biology, it does not generalize and does not count.
Similarly: routing test rows to different models based on which candidate pool they came from (rather than based on a biological property of the variant itself) is a benchmark artifact, not a generalizable design. A production variant-effect predictor sees one variant at a time with no partition tag.
What's shipped
test.parquet — ~42,500 rows
Columns: chrom (string, 1-22), pos (int, hg38 1-based), ref, alt.
No label. No features. No source flag.
Training
You may compile your own labeled training set from public sources. Variant-effect databases, GWAS credible-set catalogues, ClinVar / HGMD / DoCM, mutation-effect measurement panels, and existing benchmark train partitions are all fair game. You may run foundation-model inference locally and train probes on the resulting embeddings.
We will audit your training_manifest.json and the labeled data you
compile for leakage against the test set. Any training variant that
shares an exact (chrom, pos, ref, alt) tuple with a row in
test.parquet is treated as leakage; its contribution to the reported
test scores will be voided in the audit. To pass the audit cleanly,
build the tuple set from test.parquet up front and use it as an
exclusion filter when constructing any labeled train set. If you use a
source that reports variants under a different reference build or
coordinate system, LiftOver to hg38 first, then dedup, and record
the LiftOver step in training_manifest.json.
Compute
Modal container: H100 GPU (80 GB VRAM), 8 CPUs, 96 GB RAM.
Python 3.11 with torch / transformers / peft / xgboost / lightgbm / scikit-learn / pandas / pyarrow / numpy / pyBigWig / pysam / biopython / requests pre-installed. pip install <x> works.
Budget: 10 hours of GPU compute. The runner will relaunch your session with a continuation prompt if it exits before the wall clock is exhausted.
Deliverables
answer.parquet— columnschrom, pos, ref, alt, score, one row per test variant,score ∈ [0, 1].method.md(< 500 words). Describe your final approach and every intermediate iteration. If you compiled labeled training data, describe the source(s), the dedup step against test, and the resulting train-set size.training_manifest.json— every URL / API / dataset touched, with dedup counts where applicable, and one row per iteration with the per-iteration validation score if you produced one.
What the grader does
Each hidden partition has its own labels. Grading joins your
answer.parquet against each partition's labels on
(chrom, pos, ref, alt), computes per-partition AUPRC / AUROC /
Brier / coverage, and reports each. For ClinVar it additionally
reports per-molecular-consequence, per-review-status, and
per-significance-pair slices.
Published SOTA — TraitGym complex_traits
AUPRC by chromosome-weighted average (Benegas et al. 2025).
| Method | AUPRC |
|---|---|
| CADD + GPN-MSA + Borzoi (trained LR ensemble) | 0.362 |
| CADD + Borzoi (trained LR ensemble) | 0.351 |
| Enformer (trained LR probe) | 0.303 |
| Borzoi (trained LR probe) | 0.297 |
| CADD v1.7 (trained LR) | 0.284 |
| GPN-MSA (trained LR probe) | 0.269 |
| CADD v1.7 RawScore (zero-shot) | 0.250 |
| Enformer L2 (zero-shot) | 0.245 |
| phastCons-43p Zoonomia primate | 0.237 |
| Borzoi L2 (zero-shot) | 0.236 |
| phyloP-241m Zoonomia | 0.227 |
| GPN-MSA absLLR (zero-shot) | 0.224 |
| SpeciesLM LR probe | 0.185 |
| Sei LR probe | 0.184 |
| phyloP-100way | 0.184 |
| AIDO.DNA LR probe | 0.152 |
| Caduceus LR probe | 0.151 |
Published SOTA — TraitGym Mendelian traits
AUPRC by chromosome-weighted average (Benegas et al. 2025). Different biology (rare Mendelian) than complex_traits but same task shape.
| Method | AUPRC |
|---|---|
| CADD + GPN-MSA + Borzoi (trained LR ensemble) | 0.648 |
| GPN-MSA (trained LR probe) | 0.584 |
| CADD v1.7 (trained LR) | 0.549 |
| Enformer (trained LR probe) | 0.501 |
| Borzoi (trained LR probe) | 0.487 |
| phyloP-241m Zoonomia | 0.462 |
| Enformer L2 (zero-shot) | 0.350 |
| Borzoi L2 (zero-shot) | 0.339 |
Published SOTA — ClinVar missense (AUROC)
| Method | AUROC |
|---|---|
| AlphaMissense (Cheng et al. 2023) | 0.972 |
| Evo-2 covariance probe (EVEE 2026) | 0.971 |
| CADD v1.7 (Rentzsch et al. 2021) | 0.966 |
| GPN-MSA (Benegas et al. 2023) | 0.952 |
| Evo-2 loss-based (Nguyen et al. 2025) | 0.932 |
| REVEL (Ioannidis et al. 2016) | 0.930 |
| CADD v1.6 (Rentzsch et al. 2021) | 0.911 |
| ESM-1v (Meier et al. 2021) | 0.83 |
| NTv3 (Dalla-Torre et al. 2024) | 0.586 |
Published SOTA — ClinVar per-consequence (AUROC; Evo-2 covariance probe, EVEE 2026)
| Consequence | Evo-2 covariance probe |
|---|---|
| missense | 0.971 |
| synonymous | 0.961 |
| nonsense (stop_gained) | 0.900 |
| splice donor/acceptor | 0.924 |
| UTR (5′/3′) | 0.929 |
| intronic | 0.984 |
| other non-coding | 0.969 |