How a molecule becomes a spectrum

The competition

Who runs this, what are the rules, what has worked before, and where does the leaderboard stand?

CASMI 2012–2022, the 2026 rules, Enveda and PRISM, open write-ups, and the critiques.

The queen's digest

5/5 workers reported · Tue Oct 06 2026 20:00:00 GMT-0400 (Eastern Daylight Time)

TL;DR (5 bullets a chief of staff would read)

  • The public leaderboard is a 130-molecule, clone-polluted instrument. 2,703 teams (13:59 UTC pull); rank 1 = 0.481, median 0.328; 885 teams (32.7 %) sit on 16 exact scores from re-running public notebooks (149 at 0.425, 74 at 0.417, 106 at 0.328). Derived medal lines: gold 0.436 (rank 15), silver 0.425, bronze 0.421 — the silver line runs through a clone block, so ties are decided by submission timestamp. Any delta < 0.01 is noise; byte-identical reruns moved up to 0.105.
  • The scorer is fully known and strict: MolFromSmiles → TautomerEnumerator().Canonicalize → MolToInchiKey[:14] with RDKit 2026.03.3; no salt stripping; >25 tokens, NaN or duplicate ids reject the whole file; invalid or duplicate SMILES silently consume slots. 5 subs/day, team ≤ 5, entry/merge 2026-12-07, close 2026-12-14, $50k ($16k first), CC BY-NC 4.0 data, MIT required of winners.
  • Every CASMI precedent and every 2026 write-up say coverage, not ranking, is the ceiling: within-hit MRR is 0.75–0.95 across ten public write-ups; recall@25 back-solves to ≈ 0.545 at LB 0.417. Editions without a candidate list containing the answer collapsed (2014 unknowns 0/6 at rank 1; 2022 best automated 26–29 % top-1).
  • The only local validation that predicted public-LB order is the 250 enveda-np-examples structures under three masks (three independent teams); random held-out train structures predicted the opposite ranker order. The visible test is a decoy (1,213/1,213 rows are enveda-180 train rows).
  • Enveda is plaintiff, clerk and judge: it wrote the metric, chose and validated the hidden 400 on its own platform (documented stack: SIRIUS fragmentation-tree curation + NMR), revived CASMI eight days before a $311 M Series E, and states in its press release that CASMI "helps to grow PRISM". PRISM has no preprint, weights or absolute numbers. Three organisers co-authored the June-2026 MassSpecGym leakage audit — assume the answer key defeats canonicalisation and PubChem-order shortcuts.

New concrete facts (numbered; file + source count; confidence)

  1. LB 2026-10-07 13:59 UTC: ranks 1/5/10/50/100/250/500/1000 = 0.481/0.448/0.441/0.429/0.425/0.421/0.413/0.357; p90 0.421, p99 0.432; ≥0.45/0.44/0.43/0.42/0.40 = 3/12/49/317/762; 106 zeros; 95 % solo. (public_leaderboard_…md, own API pull, CSV saved; high.)
  2. Top moved 0.425 (09-26) → 0.471 (10-05) → 0.481 (10-07); bronze 0.342 → 0.401 → 0.421 in 10 days; a fixed 0.417 decays ≈ 30 ranks/day. (3 dated write-up snapshots; medium-high.)
  3. Public LB ≈ 33 % of hidden set (~130 molecules) — one kernel, unattributed to a host post. (low; settles only with host text.)
  4. Shared recipe of every ≥ 0.37 public kernel: train ∪ COCONUT 2.0 pool (~710–775k), ±10 ppm, Morgan r2+r3+MACCS / FPNet, HGB or LightGBM LambdaRank rerankers, RRF of 2–3 engines, ICEBERG/GLACIER forward models, library lock at lib_max ≥ 0.9, PubChem only as a ≤ 50-candidate gated tail (+0.011). No SIRIUS, MS2DeepScore or PRISM anywhere; DreaMS only as tail filler. (14 kernels + 20 READMEs; high.)
  5. Negative pool results: PubChem as a pool took class-2 sim 0.732 → 0.379; Enamine tier −0.013 LB; +62,744 ChEBI/LIPID MAPS = +0.000; popularity priors +0.004…+0.011 in one lineage, monotonically negative in another. (4 write-ups; high.)
  6. Scorer mechanics (metric notebook read): RDKit 2026.03.3 pinned via dataset metric/rdkit-2026-3-3-wheel; canonicalisation after heavy-atom-composition gate; comma-separated multiple acceptable truths supported; missing ids score 0 silently. (casmi2026_rules_…md; high.)
  7. [Na+].CC(=O)[O-] ≠ acetic acid under the scorer; 1.58 % of train structures shift and 1.15 % collapse under canonical keying; 2.3 % of COCONUT keys change, costing one team −0.105 on that subset. (rules + LB workers; high.)
  8. CASMI 2016 leave-out: CSI:FingerID 70 → 36 Top-1 when training overlap removed; Dührkop 2015 58.5 % → 34.4 %. Expect local top-1 to roughly halve on honest splits. (casmi_history_…md, critiques_…md; high.)
  9. enveda-180 = Enamine HLL-200 on timsTOF Pro 2 at 20/40/60 eV (Zenodo, MassIVE MSV000102122, ChemRxiv 2026-06-04); "180" unexplained. enveda-np-examples has no public description beyond "purified natural products". (enveda_…md; high / low.)
  10. PRISM: BERT-family encoder, 20 % masked-peak objective, 1.2 B spectra / 85 B tokens (~600 M public, ~600 M internal), only relative numbers (+7–16 % R² on 12 properties, +23.3 % retrieval hits vs unnamed baselines); closed-weight; Microsoft = Azure compute. (2024-05-28 blog + press; high that nothing else exists.)
  11. Fiehn (C&EN 2026-09-17, DOI 10.47287/cen.612552.newsarticle): "mass spectra of isolated compounds, which is difficult enough"; Allen: CASMI "hasn't yet had its AlphaFold moment". (high, verbatim.)
  12. Metric noise: SE ≈ 0.02 on 400 molecules; ≈ 0.04 on a 130-molecule public subset. (critiques + LB workers, arithmetic; high.)

Forced analogies — what the law-of-evidence lens produced

  • Standard of proof → seat-filling rule (paid off; corrects my interim block rule). Fitting the within-list hit curve f(k) ∝ k^−s to the measured ranking-only MRR (0.765) gives s ≈ 2.07 (64 % of hits at rank 1, 92 % in top-5). Bayes-optimal seating is sort all candidates from all hypotheses by posterior; block seating ("13–15 primary then hedges") loses 0.01–0.03 EV; the first alternative-hypothesis candidate belongs at seat 2 unless P(primary) ≥ 0.90. Back-solve across ten write-ups is consistent (LB rank-1 share ≈ 0.35 matches an independent 0.30–0.35).
  • Daubert on the benchmark (paid off). "Known error rate" fails worst: no label-error rate, SE ≈ 0.02 ⇒ never promote a model on an unpaired delta < 0.04.
  • Standing and motive of the plaintiff (paid off as a validation rule). Ground truth was validated by Enveda's SIRIUS + NMR stack ⇒ SIRIUS-explainable spectra are over-represented; formula assignment on the hidden set should beat wild-data rates. Defensive rule: validate only on hold-outs the host could have produced (NP-like, structure-disjoint, timsTOF, explainable).
  • Duds, kept honestly. "Burden shifts to the defence" — nothing: wrong guesses cost zero. "Acquittal" — no analogue. "Gatekeeping" — Kaggle admits every method. "Double jeopardy" — the same suspect can appear twice (duplicate canonical InChIKey14) and the only penalty is a dead seat. The lens is useful for allocation and trust in evidence, useless for penalties.

Contradictions within my subdomain

  • Public-LB fraction: ≈ 33 % (one kernel) vs unknown (rules worker: solution file has a Public/Private column, no fraction stated).
  • Hidden spectra count 1,500 vs 2,500; adducts 10 vs 7 (official texts).
  • Class-2/3 split of hidden molecules: 16/45/39 vs 16/27/55 (two write-ups) — fixes whether the retrieval ceiling is ≈ 0.45 or ≈ 0.61.
  • Popularity priors: small positive in one lineage, monotonically negative in another (and 2016 vs 2017 precedents disagree). Resolution: useful only on the known class, gated by library-hit score.

Gotchas for the modeler (what could silently fool us)

  1. Visible test is a decoy; kernels detect commit-vs-rerun via SHA256/MD5 of test.parquet — if Kaggle swaps the placeholder, those paths run 9 h on commit.
  2. train.inchikey14 is not the scoring key; dedup and validate on the scorer's canonical key, pinned to RDKit 2026.03.3 (local box is 2026.03.6).
  3. Salts, multi-fragment SMILES and ring-chain tautomers are not normalised by the scorer; pools must be parent-stripped by us.
  4. Invalid SMILES, duplicate keys and missing molecule_ids are silent zeros; > 25 tokens or NaN rejects the file and burns a daily slot.
  5. Local CV on train structures inverts on the LB; only the 250-NP three-mask backtest has predicted LB order.
  6. Fixed wall-clock budgets for ICEBERG/GLACIER starve on large query counts (18 % coverage at 300 s).
  7. enveda-180 is an instrument twin but a chemistry decoy (Enamine library, ~0.03–0.2 % in COCONUT): a good enveda-180 hold-out score means the instrument was learned.
  8. The organisers wrote the MassSpecGym leakage audit (arXiv 2606.19624; spectrum-blind PubChem order scored 49.98 %): always report a spectrum-blind baseline beside any local score.

Questions for other queens

  • q7_compute_execution: copy Rules/Overview/discussion 741404 verbatim from a logged-in browser (public fraction, rerun limit, RAM, Rule 2.6). Adopt the 250-NP three-mask backtest as the primary selector?
  • q6_candidate_space_retrieval: what is recall@25 of COCONUT ∪ LOTUS ∪ train at ±10 ppm on enveda-np-examples with the scorer's canonical key, after salt/ring-chain normalisation? Can a one-step NP-scaffold analog enumerator lift coverage for Enveda-style med-chem analogs absent from COCONUT?
  • q5_methods_lineage: nobody in the public tree stacks calibrated log-odds (all RRF/LambdaRank); is your +0.03–0.05 reproducible on the 250-NP backtest?
  • q8_serendipity: a per-hypothesis P(formula correct) calibrator with no MS1 — any eyewitness confidence–accuracy analogue for a formula claim?

Layman sentences

  1. The contest asks a computer to pick, from a molecule's fragmentation pattern, the right drawing out of 25 guesses, paying most when the right one is first.
  2. The public scoreboard is crowded with hundreds of copies of the same shared notebook, so small differences in score mean nothing; real progress shows up only when a method finds molecules nobody's candidate list contained.
  3. The company running the contest also made the answer key with its own tools, so the fairest practice test is one it could have made too: new natural products, measured on the same instrument.

Gaps I could not fill

  • Host wording of discussion 741404, the public/private split, notebook RAM, Rule 2.6 text and the 9 h limit remain mirrored or unknown (Kaggle pages are JS/reCAPTCHA shells; forum not in the API).
  • Whether the hidden 400 are isolates, purchased standards or synthesised analogs; what "180" means; any description of enveda-np-examples.
  • PRISM's architecture size and any absolute retrieval number (none exist publicly).