How a molecule becomes a spectrum
The instrument
What physically happens to a molecule between the sample vial and a peak list?
Electrospray, ion mobility, collision-induced dissociation, time-of-flight, mass accuracy, noise, and what the controls really control.
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 hidden-test instrument is characterised from the data itself: Bruker timsTOF at fixed 20/40/60 eV (not a mobility ramp), 2 Th isolation, raw integer-count peak lists (floor 9 counts, no cap). A quarter of test spectra are "merged" = raw-count sum of the three scans, dominated by 20/40 eV.
- timsTOF spectra differ from the Orbitrap spectra public models were built on in four deterministic ways: precursor family inside the isolation window (precursor 46 %, M+1 39 %, M+2 22 %), 13C satellites on 71 % of strong fragments, 92 % of peaks below 1 % intensity, and a +4–6.5 ppm bias on fragments below m/z 150. All correctable by a numeric 5-step "telluric mask".
collision_energy_evis not a common currency: a timsTOF 20 eV scan matches Orbitrap NCE 20 (cosine 0.82), not the NCE 33 the parquet's conversion implies. Drive NCE-conditioned models at ~0.7× the formula value.- Mass accuracy is not where points are won (median precursor error 0.98 ppm; 5 vs 10 ppm windows LB-neutral); the adduct label and the energy/intensity response are.
- The astronomy lens produced two things to build (telluric mask; energy-response map with a specified 2,421-pair experiment) and two honest duds (sky subtraction; thermodynamic adduct ratios).
New concrete facts (numbered; each with file + source count; mark confidence)
Files (source counts): CID = cid_fragmentation_physics_collision_energy.md (22 + parquet); NOISE = noise_artifacts_isotopes_insource_chimeric.md (14 + parquet, scripts alongside); TIMS = tims_qtof_mechanics_mass_accuracy_resolution.md (16); ESI = esi_ionization_and_adducts.md (19); GT = ground_truth_controls_calibration_reproducibility.md (24).
- Fixed 20/40/60 eV lab-frame CE on enveda-180 and test. Test patterns: [60] 363, [40] 362, [20,40,60] 298 (24.6 %), [20] 190; 186,392 train (InChIKey14, adduct) groups have all four. CID. High; acquisition details unverified.
- Merge = raw-count sum, re-centroided (enveda-180
extract.py; reconstructed on 595/600 groups); weights ≈ 0.5/0.4/0.1; merged median 258 peaks vs 88–132 singles. CID. High. - Column semantics: Orbitrap NCE converted with eV = NCE·(m/z)/500 (ratio median 0.9998, n = 966,330); QTOF volts passed through; ion-trap NCE None (10,318 rows); 220,849 GNPS rows no energy;
_evsorted,_origin acquisition order; "Ramp 5-60 V" → [5, 60] (1,397 rows). CID. High. - Empirical eV→NCE map (2,421 same-molecule timsTOF/Orbitrap pairs): 20 eV↔NCE 20 (sqrt-cosine 0.82), 40↔45 (0.70), 60↔60 (0.61), merged↔30–45; same-instrument 20 vs 60 eV only 0.285. CID. Medium (own measurement; nothing published).
- Precursor survival ([M+H]+, 250–450 Da): ~11–13 % of TIC at 20 eV; absent in 63–72 % of spectra at 40 eV, 99 % at 60 eV. CID + Kertesz 2009 / Memboeuf 2010. High.
- Raw integer centroids, floor exactly 9 counts, no cap (p95 823 peaks); 91.8 % of peaks < 1 %, 75.1 % < 0.1 %, 39.8 % < 0.01 % (GNPS-Orbitrap 60/16/5 %). NOISE. High.
- Peak count encodes abundance: Spearman(bpi, n_peaks) = +0.71; weakest tercile median 30 peaks, strongest 332; bpi p5/p50/p95 = 2,543 / 201,708 / 14.3 M. NOISE. High.
- Isolation leakage: precursor peak in 45.9 % of spectra, M+1 38.7 % (GNPS-Orbitrap 6.1 %), M+2 21.7 % (0.7 %); M+1/M p50 0.18 → near-full transmission; −H2O 17.7 % (np-examples 29.4 %). Isolation 2 Th < m/z 700, 3 Th above (Meier 2018). NOISE + TIMS. High.
- 13C satellites: 71.1 % of peaks ≥ 5 % have a partner at +1.0034 ± 5 mDa (3.0 % control); GNPS-Orbitrap 14.0 %. NOISE. High.
- Low-mass fragment bias (unplanned): C5–C9 fragments read +0.3–0.6 mDa (+4 to +6.5 ppm) high vs ≈ 0 on Orbitrap, gone by m/z 180; sub-40 peaks are non-recurring noise. NOISE. Medium-high (mechanism unknown).
- Above-precursor peaks: 2.44 % of enveda-180 peaks, all ≤ +2.12 Da (np-examples +2.00); GNPS-QTOF 25 % and MoNA 10 % of peaks > precursor+2 (chimeric entries). NOISE. High.
- Mass accuracy: 99 % of enveda-180 precursor errors < 4.4 ppm, median 0.98 ppm; errors correlated within a run; 5 vs 10 ppm windows LB-neutral (0.302/0.303). TIMS. Medium-high.
- Adducts: five of ten test adduct strings are exactly isobaric with [M'+H]+/[M'−H]- of another formula; Na−H vs C2−2H differ by 2.4 mDa; 93 % of MassSpecGym [M+H]+/[M+Na]+ molecules back-solve to one neutral mass within 5 mDa. ESI. Medium.
- No timsTOF in cross-platform literature: Hoang 2024's "Bruker" is an Impact II QTOF; QTOF→Orbitrap shift ~4–4.7 eV. GT + CID. High (negative result).
- In-source fragmentation: 82 % of 214 natural compounds (Chen 2023), terpenoids sometimes < 1 % surviving parent. NOISE + ESI. Medium (Orbitrap source).
Forced analogies — what the cross-domain lens produced (keep the duds too, say why they died)
- Forward model × instrument response (CID) — partially holds; build it. Response map R(fragment m/z, precursor m/z, CE) fitted on 2,421 pairs, three nested forms, scaffold-split MRR@25 on a COCONUT ±10 ppm pool. Breaks where CID is kinetic, not LTE: R is molecule-dependent, not a convolution kernel; the fragmenters are the weak link.
- Telluric mask / cosmic-ray rejection (NOISE) — holds; recipe delivered. Telluric = precursor, M+1, M+2, 13C satellites. Cosmic rays = < 20-count peaks and sub-40 m/z spikes. Recipe: (1) delete m/z > precursor − 0.02; (2) merge +1.00335 ± 0.005 satellites with 0.02–0.5 ratio; (3) cut < 20 counts; (4) subtract 0.4 mDa below m/z 150; (5) optional frequency weighting, sign to be tested.
- Sky subtraction — died. The 511 recurring 2 mDa bins (29.5 % of intensity) are library chemistry (pyridinium 80.05 in enveda-180, furanyl 81.03 in NPs); Hart 2024 shows common m/z should be up-weighted. A "sky" would delete real NP ions.
- Lamp/telluric wavelength calibration (TIMS) — partially holds. The only per-spectrum reference line is the surviving precursor (one-point recalibration); the low-mass bias is the real "telluric line".
- Saha ionisation balance → adducts (ESI) — half died. Mass-position consensus across a molecule's spectra works; adduct intensity ratios are kinetic, no equilibrium constant exists.
- Per-pixel likelihood template matching (GT) — holds for scoring. SIRIUS has Gaussian ppm + Pareto noise; nobody adds CE mixing, per-spectrum offset, satellites and low-mass cut-off. Specified as a log-odds scorer to A/B against entropy.
Contradictions within my subdomain
- TIMS: "M+1 leaks at partial intensity"; NOISE: M+1/M p50 = 0.18, near-full transmission. Resolution: full inside 2 Th, m/z-dependent only at the edge.
- TIMS: symmetric max(10 ppm, 5–7 mDa) fragment tolerance; NOISE: one-sided +4–6.5 ppm bias below m/z 150. Both satisfied by max(10 ppm, 5 mDa) plus a −0.4 mDa correction; bare ±5 ppm is wrong.
- GT treats CE as a per-spectrum nuisance; CID shows CE is fixed and known — only merge weights need fitting.
- ESI: water loss in 10–15 % of public [M+H]+ spectra; NOISE: 17.7 % on enveda-180, 29.4 % on np-examples — public-library validation under-represents it.
Gotchas for the modeler (what could silently fool us)
- matchms default
intensity_from = 0.001removes 75 % of a timsTOF spectrum; MassSpecGym's "> 300 peaks" rule discards ~25 % of enveda-180 spectra. - Peak density is a concentration proxy (ρ = 0.71); cap to top-K ≈ 100–150 and check MRR@25 is flat across base-peak terciles.
- "timsTOF" is a chemistry label in train (all 1,154,969 rows are Enamine-like synthetics plus 1,184 NP rows). Validate on enveda-np-examples and the 2,288 dual-instrument molecules.
- The precursor survives at 20 eV and hence in every merged spectrum (base peak in 25–29 % of merged [M+H]+); cosine with the precursor is inflated for every right-mass candidate. Strip > precursor − 1.0.
- The +1.0034 peak, the odd/even count-frequency alternation and
base_peak_intensity(NaN / literal 100 / true counts by library) are library fingerprints — poison for mixed validation. - Dimers (282,074 rows) dissociate to monomers at 20 eV, so all-adduct survival statistics are wrong (the CID worker made and corrected this); two-energy merges (1,942 rows, median 5–9 peaks) teach "merged = tiny" — drop them.
- The eV column over-states NCE ~1.4× for Orbitrap rows; a 60 eV timsTOF single is NCE ≥ 60, beyond most library energies.
- A symmetric ±5 ppm subformula window rejects ~half of true C5–C9 fragments on timsTOF; 10–20 ppm defaults are safe.
- Five test adduct strings have exact isobaric twins; build the window around the molecule-level consensus neutral mass, never per spectrum.
- The visible test is verbatim enveda-180: anything "validated" on it is validated on train.
Questions for other queens (name the queen)
- q5_methods_lineage: run P-inst on the 2,538 dual-instrument structures with and without our telluric mask; if the penalty collapses, no timsTOF fine-tuning is needed. Does any fingerprint model strip +1.0034 satellites?
- q2_data_forensics: do test rows trim at +2.12 Da (enveda-180) or +2.00 Da (np-examples)? That identifies the pipeline behind the hidden set.
- q6_candidate_space_retrieval: how much does also querying M + 18.0106 / +162.0528 / +146.0579 inflate the COCONUT pool at ±10 ppm?
- q3_natural_product_chemistry: which NP classes have < 10 % precursor survival at 20 eV, so we know when precursor-presence is uninformative?
- q7_compute_execution: the mask + NNLS merge-weight fit on 186,392 quartets is CPU-only, under an hour — does it fit the offline notebook budget?
Layman sentences — 3 sentences a non-scientist could repeat about my subdomain
- The machine that made the hidden spectra smashes each molecule at three fixed "hardness" settings and sometimes adds the three pictures together, so the same molecule looks different from how it looks in the public libraries, and we have to translate between the two.
- Nine out of ten peaks in these spectra are tiny, and the number of peaks mostly tells you how much sample there was, not what the molecule is — so a model must be stopped from counting peaks as evidence.
- A few peaks in every spectrum come from the instrument itself (the unbroken molecule, its heavy-carbon twin, echoes of each fragment one mass unit higher); like astronomers masking Earth's atmosphere out of starlight, we remove them with fixed rules before the model sees them.
Gaps I could not fill
- Enveda's acquisition/export parameters (isolation width, resolution mode, calibration cadence, export tool): enveda-180 preprint DOI did not resolve; TIMS-Bench preprint returned HTTP 429. All inferred from data.
- Mechanism of the +0.4 mDa low-mass fragment bias; replicate CV of fragment intensities on timsTOF (no published number).
- Any published small-molecule timsTOF-vs-Orbitrap MS2 similarity study: none; our 2,421-pair measurement stands in.
- Measured MRR@25 effect of the telluric mask and the energy-response map: specified experiments, not results.
- Physics separating sugar-linkage positional isomers: mobility is not in the exported lists; treated as a tie (low confidence).