Molecular-visualization benchmark

MolBench

Can LLM assistants turn natural-language requests — “show the heme as orange ball-and-stick”, “superpose the subunits and hide the waters” — into correct molecular visualizations? MolBench measures two distinct skills: authoring a declarative MolViewSpec scene (what the picture is) and controlling a live Mol* viewer through imperative API calls (what the tool does). Both are graded deterministically against frozen, correct-by-construction answers.

Models evaluated
8
open & closed
Benchmark tasks
84
×3 samples each
MVS F1 leader
0.87
claude-haiku-4-5
Top open model
0.85
deepseek-v3.2 at $0.0873

Leaderboard

Two tracks, two skills. MVS F1 (the primary ranking) scores scene authoring — the declarative MolViewSpec tree a model emits, matched against the reference (parse failures count as 0). API F1 scores tool control — the imperative Mol*/PDBeMolstar calls that drive a live viewer (superpose, hide waters, spin, focus), the operations a static scene cannot express. The leader is highlighted; open-weight models are namespaced with a provider slash.

# Model MVS F1 Parse % Cond F1 API F1 Cost Speed
1claude-haiku-4-5closedanthropic:claude-haiku-4-50.869 ±0.11100%0.8760.928 ±0.14$0.62541.87s
2deepseek/deepseek-v3.2openopenrouter:deepseek/deepseek-v3.20.847 ±0.1899%0.8640.859 ±0.28$0.08738.85s
3google/gemma-3-27b-itopenopenrouter:google/gemma-3-27b-it0.830 ±0.2594%0.8950.834 ±0.15$0.03295.61s
4gemini-3.5-flashclosedgemini:gemini-3.5-flash0.811 ±0.2296%0.8550.951 ±0.10$0.20085.20s
5gpt-5.4-nanoclosedopenai:gpt-5.4-nano0.681 ±0.2284%0.8320.835 ±0.17$0.03242.53s
6qwen/qwen3-30b-a3b-instruct-2507openopenrouter:qwen/qwen3-30b-a3b-instruct-25070.605 ±0.2978%0.8130.897 ±0.13$0.01994.35s
7openai/gpt-oss-20bopenopenrouter:openai/gpt-oss-20b0.529 ±0.2765%0.8630.881 ±0.14$0.02807.15s
8baseline-rulesclosed0.0009%0.7180.715 ±0.10

MVS F1: primary scene-authoring score (parse failures = 0). Engine-neutral by design — though Mol* is currently the only viewer that implements MolViewSpec. Parse %: share of samples that emitted valid output. Cond F1: scene quality given valid output — the gap from MVS F1 measures how much a model is dragged down by malformed JSON rather than visualization error. API F1: the tool-control track — imperative PDBeMolstar calls (superposition, component toggles, camera) that specify a sequence of actions on a live viewer rather than a scene. Parse % and Cond F1 reflect the primary MVS run. ± is the spread across tasks; costs use provider list prices.

Key findings

What the leaderboard actually tells you — read these before the table.

FINDING 01 · THE HEADLINE

Format reliability, not competence, drives the ranking

The MVS ranking is largely a JSON-validity ranking. Conditional on producing valid output, every LLM clusters tightly at 0.81–0.90 Cond F1 — yet the unconditional spread is ~0.34, driven almost entirely by Parse %.

gpt-oss-20b is last overall (~0.53 MVS F1) but ~4th (tied for 3rd) by Cond F1 (~0.86): a competent visualizer that is simply format-unreliable.

FINDING 02

Open weights reached the closed frontier-small tier

Open models match the small closed frontier at 6–19× lower cost — Gemma-3-27B at $0.0329, DeepSeek-V3.2 close behind. But “open” spans a wide range: Qwen3-30B and gpt-oss-20b still lag well behind on reliability.

FINDING 03

A difficulty gradient that discriminates

Tasks span translation → structure-grounded → clinical. Harder regimes separate models more — model spread grows from ~0.10 to ~0.24 — exactly the property a benchmark wants. See the per-regime table below.

FINDING 04 · NOVEL

Clinical grounding into 3D structure

Tasks bridge clinical genetics and structure: ClinVar pathogenic variants mapped via UniProt + PDBe SIFTS numbering onto the correct residues (e.g. p53 R175H). No other molecular-viz benchmark does this.

Difficulty gradient by task regime

Mean MVS F1 by how the answer key is grounded, easy → hard. Harder regimes pull the models apart — the spread you want from a benchmark.

Regimeclaude-haiku-4-5deepseek-v3.2gemma-3-27b-itgemini-3.5-flashgpt-5.4-nanoqwen3-30b-a3b-instruct-2507gpt-oss-20bbaseline-rules
Translation (n=47)0.9120.9250.8820.8990.7270.6740.5870.000
Grounded (ligand/SS) (n=8)0.8700.7040.7450.6660.6620.6130.1670.000
Clinical (SIFTS/ClinVar) (n=9)0.6460.5650.6300.4820.4600.2370.5490.000

Where models differ by skill

Mean F1 on tasks tagged with each skill (task count in parentheses). Skills are derived automatically from the reference scene tree.

Skillclaude-haiku-4-5deepseek-v3.2gemma-3-27b-itgemini-3.5-flashgpt-5.4-nanoqwen3-30b-a3b-instruct-2507gpt-oss-20bbaseline-rules
camera (n=7)0.9680.9860.4620.9930.8950.5790.5470.000
color (n=64)0.8690.8470.8300.8110.6810.6050.5290.000
load (n=64)0.8690.8470.8300.8110.6810.6050.5290.000
multi-component (n=50)0.8730.8470.7880.8170.6880.6290.4750.000
representation (n=64)0.8690.8470.8300.8110.6810.6050.5290.000
selection (n=30)0.8300.7670.7930.7330.5890.5460.3810.000
surface (n=7)0.7990.8520.9520.7780.6030.4070.6490.000

Tiered grading

Strict tree-matching is conservative — it penalises scenes that are rendered-equivalent but expressed with a different (sometimes cleaner) tree, e.g. selecting all cysteines with one label_comp_id CYS rather than enumerating them. The escalating grader renders each imperfect prediction and escalates only when needed: tree-match → visual diff → VLM judge. Across 7 models it confirmed 196 of 253 imperfect-tree tasks (77%) as the right scene — so tree-match under-credits every model by +0.04 to +0.11 F1.

Models analysed
7
tiered grading run
Imperfect-tree tasks
253
escalated for a visual check
Rescued by rendering
196 (77%)
drew the right scene despite a different tree
Tree-match under-credits
+0.04–0.11
F1 gap recovered, every model
Model Tree F1 Validated F1 Δ Rescued Diff.
claude-haiku-4-5closed0.8530.945+0.09241/5110
deepseek/deepseek-v3.2open0.8650.939+0.07428/379
gemini-3.5-flashclosed0.7980.907+0.10932/397
google/gemma-3-27b-itopen0.8580.903+0.04510/188
gpt-5.4-nanoclosed0.6900.781+0.09135/416
qwen/qwen3-30b-a3b-instruct-2507open0.6200.704+0.08436/4610
openai/gpt-oss-20bopen0.4230.461+0.03814/217

Validated F1 uses a rescue-only policy: a task scores 1.0 when the cascade confirms it renders the reference scene, otherwise it keeps its tree-match score (the VLM gives a binary same/different, not a graded score). Rescued = render-equivalent or VLM-"same" of the escalated (imperfect-tree) tasks; Diff. = confirmed genuinely different. See the side-by-side evidence in the evaluator gallery →. Judge: claude-opus-4-8.