TL;DR. A calibrated Bruker timsTOF (Pro/Pro 2/HT/fleX class) resolves R ≈ 50,000–60,000 FWHM at m/z ≈ 1,222 and delivers < 2 ppm RMS precursor mass error with external (sodium-formate / ESI-L tuning-mix) calibration, < 0.8 ppm RMS with internal lock-mass; independent papers see peptide errors centred on zero within ±2 ppm, and a competitor's log of enveda-180 (the same instrument as the hidden test) reports 99 % of precursor_error_ppm under 4.4 ppm. The quadrupole isolates 2 Th below m/z 700 (3 Th above), so the M+1 isotopologue sits exactly on the window edge and leaks into MS2 spectra at partial intensity; TIMS pre-separation cuts co-fragmentation roughly 4-fold. A ±5 ppm window on neutral mass (with a 2 mDa absolute floor) keeps the true structure essentially always; ±10 ppm costs ~1.5–2× more formulas but, because candidates are dominated by isomers of the correct formula, the leaderboard effect of 5 vs 10 ppm is nil (0.302 vs 0.303 in one public log) — so the window is not where points are won; the ranking of isomers is.
1. timsTOF family: resolving power and mass accuracy
Bruker's product pages carry almost no numbers; the numbers below come from core-facility spec pages (which reproduce Bruker spec sheets), downloaded Bruker brochures, and papers. "Vendor" = spec-sheet language; "Independent" = measured in a paper.
| Model (launch) | TOF resolving power (vendor) | Mass accuracy (vendor) | Mobility resolution / CCS | Independent measurement | Source |
|---|---|---|---|---|---|
| timsTOF (2016, ESI-only, non-Pro) | "Temperature controlled TOF analyzer: 50,000 resolving power" | "ppm accurate mass" (no number) | "R > 200" IMS; CCS precision < 0.5 % | — | Bruker timsTOF brochure (labwrench mirror #10490) |
| timsTOF Pro (2017) | "resolving power of 50,000 (FWHM @ m/z 1222)" (figure caption) | not stated numerically in brochure | > 100 Hz MS/MS | Meier 2018: "mass resolution of more than 35,000 within about 100 μs" (TOF transient), peptides recalibrated to ≤ 20 ppm individual tolerances in MaxQuant; Wilding-McBride 2022 (PLoS One): precursor mass-error distribution "centered around zero within +/- 2 ppm"; UZH facility SOP: ESI-L calibration m/z 118–2,721 or Na-formate m/z 158–1,450 at R ≈ 20,000–25,000 "giving a mass accuracy below 2 ppm" | Bruker Pro brochure (labwrench #10487); Meier et al. 2018 MCP; Wilding-McBride et al. 2022; UZH InstrDescr PDF |
| timsTOF Pro 2 (2020) | "60,000 FSR (full sensitivity resolution) at m/z 1,200" | "Less than 2 ppm RMS" external; "Less than 0.8 ppm RMS" internal calibration | TIMS: "< 0.5 %" (internal) / "< 1 % RSD" (external); > 120 Hz PASEF; m/z 20–40,000 | — | PolyU UCEA spec page; UF mass-spec facility page ("60,000", "< 2 ppm") |
| timsTOF HT (June 2022) | "60,000 FSR @ 1222 m/z" | "< 2 ppm" | "R ≥ 200 in a single pass at a 350 msec mobility scan time", CCS "≤ 0.5 % RSD"; 4th-gen TIMS-XR, 14-bit digitizer (press release) | — | OIST equipment page; BusinessWire/Bruker 2022 launch release |
| timsTOF fleX (2019, ESI + MALDI) | "60,000 FSR @ 1222 m/z" | "< 2 ppm" | "R ≥ 200 … 350 msec", "≤ 0.5 % RSD" | — | OIST fleX MALDI-2 page (same TOF as HT); tender text seen only via search snippet (≤ 2 ppm RMS external, ≤ 800 ppb RMS internal, m/z 20–40,000) — unverified |
| timsTOF SCP (2021) | same TOF as Pro 2 (inferred) | — | — | — | No primary spec page opened; unverified |
| timsTOF Ultra (2023) / Ultra 2 (June 2024) | spec pages give no R; search snippet claims "60,000" and "< 1 ppm internal", m/z 20–20,000, 1–300 Hz | — | "300 Hz" PASEF (Bruker Ultra page) | — | Bruker Ultra page; Ultra 2 press release (sensitivity only). Resolution/ppm unverified |
Reading: all generations since the Pro share the same TOF geometry class (R ≈ 50–60 k at m/z 1,222; FSR is Bruker's "full sensitivity resolution", i.e. without the sensitivity-costing narrow slit modes). At m/z 200–450 (the hidden-test precursor range; visible-test precursor m/z 245.09–460.16, median 329.20 per a public data profile) resolving power of a reflectron TOF is roughly constant in R, so FWHM ≈ m/z / 50,000 ≈ 5–9 mDa — i.e. the peak width is ~20 ppm and the centroid accuracy (<2 ppm) is a 10× sub-peak-width interpolation that depends on ion statistics.
The R ≈ 20,000–25,000 in the UZH SOP is not a contradiction: facilities routinely run the TOF in a lower-resolution, higher-sensitivity mode for small molecules; enveda-180's acquisition mode is not public (see Open questions).
2. Quadrupole isolation window and what leaks into MS2
Default (dda-PASEF, Meier et al. 2018, Methods): "The quadrupole isolation width was set to 2 Th for m/z < 700 and 3 Th for m/z > 700." A later PASEF review repeats "2 Th for m/z ≤ 700 and 3 Th for m/z ≥ 800" (PMC8453224 via search snippet). For small molecules the UZH LC-MS/MS SOP used "3 m/z isolation width" on a timsTOF Pro. Bruker brochure: "Within a 2 Th isolation window peptides are not distinguishable based on their m/z."
| Window | Half-width | M+1 (+1.0034 Da) | M+2 (+2.0067 Da) | Consequence in MS2 |
|---|---|---|---|---|
| 2 Th (m/z < 700) | ±1.0 Th | at the edge (1.0034 > 1.0) | excluded | M+1 isotopologue transmitted at partial intensity (quad transmission is a rounded trapezoid, not a box); expect a weak peak at precursor + 1.003 and weak ¹³C-shifted satellites on large fragments |
| 3 Th | ±1.5 Th | fully inside | excluded | M+1 fully co-isolated: fragments carry a ¹³C satellite at natural abundance (≈ 1.1 % × n_C) |
| 3 Th with a ±0.5 offset (some methods) | — | — | partially | not applicable to published defaults |
The Kaggle data description says peaks above precursor + 2 Da were removed, which is consistent with a 2–3 Th window and explains why a public audit still finds 418 visible-test spectra with a top peak 2.0–2.18 Da above the recorded precursor (Clyde0513 data notes). Implication: a peak at precursor + 1.003 is the co-isolated M+1 precursor, not a fragment, and must not be counted as evidence against a candidate.
TIMS as a second isolation dimension. In PASEF the quadrupole position is switched in sync with the TIMS elution, so the effective isolation is 2–3 Th × a mobility slice. Charkow & Röst 2021 (Anal. Chem., DOI 10.1021/acs.analchem.1c01399) quantified this on proteome data: "TIMS separation increases the number of interference-free MS1 peptide features 9.2-fold, while decreasing the average peptide density in precursor spectra 6.5-fold"; in DDA "IM separation increases the number of spectra without cofragmentation by a factor of 4.1 and the number of high-quality spectra 17-fold"; in DIA the reduction "is estimated to be equivalent to a 4-fold decrease in the isolation window width (from 25 to 6.5 Da)". No equivalent number exists for small-molecule DDA; for the hidden test (isolated pure compounds, Fiehn's caveat) chimerism is a non-issue except for in-source fragments and adduct co-elution of the same compound.
3. Realistic precursor-error distribution on a calibrated timsTOF
| Evidence | Population | Number | Confidence |
|---|---|---|---|
| Pro 2 spec sheet (PolyU) | vendor | < 2 ppm RMS external, < 0.8 ppm RMS internal | high (vendor) |
| UZH timsTOF Pro SOP | facility, small molecules, Na-formate or ESI-L calibration each run | "mass accuracy below 2 ppm" | medium |
| Wilding-McBride et al. 2022 PLoS One (timsTOF Pro, peptides) | independent | "distribution of mass accuracy is centered around zero within +/- 2 ppm" | high |
| Meier 2018 (peptides) | independent | MaxQuant initial tolerance 70 ppm precursor / 35 ppm fragment, recalibrated to ≤ 20 ppm individual; these are search tolerances, not measured error | — |
| Willems/"Simplifying MS1 and MS2 spectra" PLoS One 2022 (timsTOF Pro) | independent | removing saturated points before intensity-weighted centroiding shifts error by only 0.064 ppm on average; search used 20 ppm then 4.5 ppm after recalibration (MaxQuant defaults) | medium |
Enveda TIMS-Bench (Rajkumar et al. 2026, enveda/tims-bench, ReFRAME drug library on timsTOF, MSV000098263) |
Enveda's own instrument class | Max-F1 of library annotation vs MS1 tolerance is highest at the smallest tested value, 10 ppm, and falls monotonically to 100 ppm (MetaboScape, MZmine); MS2 tolerance optimum 0.0065 Da (MZmine) / 0.007 Da (MetaboScape), 0.015 Da (MS-DIAL) | high for the figure; the preprint text (DOI 10.64898/2026.05.23.724673) could not be fetched (HTTP 429) |
Competitor log (yasumorishima, GitHub mirror) on enveda-180 |
same ingest_lib as hidden test | "99 % of enveda-180 errors are below 4.4 ppm" (precursor_error_ppm) |
unverified — single public notebook log |
m/z dependence. In a reflectron TOF, t = k·√(m/z); a constant timing/centroid error Δt gives Δ(m/z)/(m/z) = 2Δt/t ∝ 1/√(m/z), so ppm error grows toward low mass while mDa error shrinks (derivation, not a cited measurement). Two further low-mass effects: (i) calibrant coverage — sodium-formate clusters start at m/z 90.977 ([Na(HCOONa)₁]⁺) / 112.986 ([HCOO(HCOONa)₁]⁻) and ESI-L tuning mix at 118.086 (positive) / 112.986 (negative, TFA; Calgary QTOF SOP lists 112.985587), so below m/z ≈ 90–120 the calibration curve is extrapolated; (ii) fewer ions per centroid. SIRIUS encodes exactly this with "For masses below 200 Da, the allowed mass deviation is (200 · ppm_max / 10⁶)" — an absolute floor of 2 mDa at the default 10 ppm (Q-TOF profile), 1 mDa for the 5 ppm Orbitrap profile. I found no timsTOF paper that tabulates ppm error vs m/z for small molecules (gap; see Open questions). Enveda's own MS2 optimum of ~7 mDa on timsTOF is the best proxy for fragment-level error: 7 mDa is 70 ppm at m/z 100 and 14 ppm at m/z 500, i.e. the fragment axis behaves far closer to "constant mDa" than "constant ppm".
4. The precursor_error_ppm column
Official definition (Kaggle Data page, mirrored verbatim in dalloliogm's references): "ppm error between the measured precursor m/z and the value implied by the labelled structure and adduct. Ships uncleaned, so it doubles as a label-quality signal." Public audits add: null for 4,286 of 2,539,608 train rows (Clyde0513 data_profile.json); the column is absent from test; "Only enveda-180 and enveda-np-examples are uniformly labelled timsTOF". Per-ingest_lib distributions were not published in any write-up I opened; the only distributional statement is the unverified "99 % < 4.4 ppm for enveda-180". I attempted to compute it directly (Kaggle API) but the download returned HTTP 403 (competition rules not accepted on this account) — a sibling data-forensics worker should compute: median, p95, p99 of |ppm| per ingest_lib, and the sign (systematic offset) for enveda-180, plus |ppm| vs precursor_mz binned by 50 Da.
5. Candidate mass window: recommendation and pool arithmetic
Parametrisations at the hidden-test mass range (m/z 245–460):
| m/z | ±2 ppm (mDa) | ±5 ppm (mDa) | ±10 ppm (mDa) | 2 mDa in ppm | max(5 ppm, 2 mDa) |
|---|---|---|---|---|---|
| 150 | 0.30 | 0.75 | 1.5 | 13.3 | 2.0 mDa |
| 250 | 0.50 | 1.25 | 2.5 | 8.0 | 2.0 mDa |
| 330 | 0.66 | 1.65 | 3.3 | 6.1 | 2.0 mDa |
| 460 | 0.92 | 2.30 | 4.6 | 4.3 | 2.3 mDa |
| 600 | 1.20 | 3.00 | 6.0 | 3.3 | 3.0 mDa |
How the pool scales with window — formulas (Kind & Fiehn 2006, BMC Bioinformatics 7:234, Table 3, CHNOPS):
| Mass (Da) | 10 ppm | 5 ppm | 3 ppm | 1 ppm | 3 ppm + 2 % isotope |
|---|---|---|---|---|---|
| 200 | 3 | 2 | 2 | 1 | 1 |
| 300 | 24 | 11 | 7 | 2 | 1 |
| 400 | 78 | 37 | 23 | 7 | 2 |
| 500 | 266 | 115 | 64 | 21 | 3 |
| 600 | 505 | 257 | 155 | 50 | 4 |
Formula count is ~linear in window (10→5 ppm removes ~55 %), and super-linear in mass. Structures behave differently: within a 10 ppm window at m/z 330 only ~24 formulas exist, and COCONUT+train structures concentrate on a few of them, so the pool is dominated by isomers of the correct formula, which no mass window removes.
Empirical pool sizes (public write-ups; competitor numbers, not reproduced by me): COCONUT 2.0 (≈460 k) + train structures (≈280 k), InChIKey14-deduplicated ≈ 710 k; neutral-mass ±10 ppm → median 56 candidates per molecule (public top pipeline, per yasumorishima's notes); their own COCONUT build (474,231 structures, 100–1,500 Da) → median 116; adding an Enamine layer (4.73 M structures) → median 1,010, p90 2,407 at ±10 ppm; one public pipeline used 8.5 ppm on a 712 k pool (eganeganegan). Scaling rule of thumb: candidates ≈ 80–210 per million structures per ±10 ppm in this mass range, the higher value for drug-like libraries concentrated at 250–450 Da. Window ablation on the leaderboard: ±5 ppm 0.302 vs ±10 ppm 0.303 (same log) — within noise.
Recommendation. Retrieve at ±10 ppm on neutral mass with an absolute floor of 2 mDa (irrelevant above m/z 200 but harmless), which given <2 ppm RMS and the 99 % < 4.4 ppm figure is a ≥ 99.9 % recall window; do not shrink to 5 ppm for recall reasons — instead put the mass error into the ranker as a feature (|Δppm|, and a Gaussian prior with σ ≈ 2 ppm, saturating at 10 ppm) so that near-isobaric formulas (e.g. CH₄ vs O, Δ = 36.4 mDa, trivially separated; N₂ vs CO, Δ = 11.2 mDa; C₃ vs SH₄... the classic ≤ 3 mDa pairs like CH₂ vs N (12.6 mDa) are all > 10 ppm at m/z < 600) are decided by MS2 only when the mass term is truly ambiguous. If multiple spectra per molecule report slightly different precursor_mz, use their median (same run, so errors are correlated; do not divide σ by √n). Keep a 20 ppm "rescue" tier only for adduct-misassignment recovery, ranked behind the main pool.
6. What Bruker and the open converters do to MS2 peaks before export
- On-instrument centroiding. The TDF format stores per-TIMS-scan line spectra (TOF index, intensity) that are already peak-picked on the acquisition hardware; the OpenTIMS paper is the usual citation that centroiding runs on an FPGA and no peak-shape information is retained — I could only read its abstract (ACS full text blocked), so treat the FPGA detail as secondary/unverified; what is verifiable is that every open reader (AlphaTims, timsrust, OpenTIMS, tdfpy) describes TDF contents as centroided per scan and that MSConvert reports TDF as "centroid" even without peak picking (pwiz issue #886).
- m/z axis. AlphaTims: "the
mz_valuesarray is defined by using the functiontims_index_to_mzfromtimsdata.dll" — i.e. the vendor calibration (including any lock-mass recalibration state stored in the .tdf) is applied by Bruker's SDK. timsrust README: "The Bruker TimsData SDK provides proprietary calibration algorithms that typically yield ±5 ppm m/z accuracy (vs. ±10–20 ppm with pure Rust methods)" — an open re-implementation of the TOF→m/z conversion degrades accuracy 2–10×; anything exported without the SDK (pure-Rust timsrust, some thyra builds; thyra issue #401 notes--use-recalibratedapplies the online lock-mass state only on TSF not TDF) carries a worse mass axis than DataAnalysis/MetaboScape output. - Merging across mobility and across PASEF frames. A dda-PASEF MS2 "spectrum" of one precursor is the sum over the mobility scans in which the quadrupole sat on that precursor, and often over several frames; each reader re-centroids this sum differently: MSConvert needs
combineIonMobilitySpectra+peakPicking+scanSumming(FragPipe docs; with scanSumming "there is no ion mobility array"), tdf2mzml applies--ms2_thresholddefault 10.0 and optional--ms2_nlargest, timsrust ships its owntimsrust-centroidcrate, tdfpy "3D centroiding". Peak counts, low-intensity cut-offs and centroid positions of weak peaks therefore differ by tool; the training libraries (GNPS/MassBank/MoNA/RIKEN) were built with yet other exporters. - Bruker DataAnalysis / Compass. No public document I could open specifies the peak-picking algorithm or thresholds used for the enveda-180 MGF/library export; MetaboScape (Bruker's small-molecule package, used in TIMS-Bench) is the likely path. Unverified.
- Multi-CE merging (test set).
collision_energy_evis a list and "several values ⇒ merged multi-CE spectrum" (BRIEF); merging centroided lists from different CEs duplicates near-identical m/z values within a few mDa unless re-binned — a modeler using 0.005 Da bins will split them, one using 0.01–0.02 Da bins will not.
Forced analogy: astronomy / stellar spectroscopy
Statement. In an échelle spectrograph the wavelength solution λ(pixel) is fitted to a ThAr/Fabry-Pérot/laser-comb lamp exposure (the external calibration = sodium formate / ESI-L run at the start of each LC run), the radial-velocity precision is limited by the line-spread function (LSF ↔ TOF peak width, m/z/R ≈ 20 ppm FWHM), by photon noise per line (↔ ions per centroid), and by drift between lamp and science exposure (↔ TOF temperature/voltage drift over the LC gradient; Bruker ships a temperature-controlled TOF for this reason). Astronomers recover sub-pixel precision by (a) averaging thousands of stellar lines and (b) using telluric lines — O₂/H₂O absorption of known wavelength imprinted on every science exposure — as a free secondary reference ("simultaneous reference").
Mapping to a timsTOF MS2 spectrum. Candidate telluric lines: (1) the ¹²C/¹³C spacing 1.003355 Da (known exactly); (2) ubiquitous fragment ions — C₆H₅⁺ 77.0386, C₇H₇⁺ 91.0542, C₃H₅O⁺ 57.0335, hexose fragments (C₆H₅O₃⁺ 125.0233...) — known only if the identity is right; (3) the unfragmented precursor peak, whose theoretical m/z is known conditionally on each candidate.
Derived, testable idea — "candidate-conditional self-calibration": for each candidate c with theoretical [M+adduct] m/z μ_c, measure the residual precursor peak in the MS2 list (the most intense peak within ±20 ppm of precursor_mz), compute the multiplicative correction k_c = μ_c / m_obs, apply m' = k_c·m to all fragments, then score fragment-formula explainability at a tight tolerance (max(3 ppm, 2 mDa)) — the candidate that both explains the precursor and makes the fragments land on sub-formulas gets a boost. This is a one-point recalibration, which is exactly what a TOF needs: to first order TOF errors are a global scale term (Δt/t), so one anchor fixes most of the spectrum. Test on enveda-180: does the MS2 residual-precursor error correlate with precursor_error_ppm (r > 0.5 ⇒ the MS1 and MS2 axes share the drift and one anchor is enough)? Does fragment-explanation rate at 3 ppm rise after correction? If yes, replace the fixed fragment tolerance in the ranker by a per-spectrum tolerance = max(2 mDa, 2 × MAD of residuals after anchoring).
Where it holds / breaks. Holds: TOF errors are dominated by a scale term and by drift that is shared between MS1 and MS2 of the same frame cycle; SpectiCal (Zhang & Deutsch, JPR 2024, DOI 10.1021/acs.jproteome.3c00882) already does file-level recalibration of MS2 from known low-mass ions in proteomics, demonstrating the principle on real instruments (only the abstract was accessible). Partially holds: isotope spacing is exact, but with a 2 Th window the M+1 precursor is transmitted only partially and ¹³C satellites of fragments are weak/absent, so (1) gives at most one noisy anchor; multiple spectra per molecule (1–16, median 3) come from the same run and do not average down the drift. Breaks: (2) is circular — fragment identities are what we are trying to infer, and a wrong anchor assignment pulls the whole spectrum by tens of ppm (the telluric analogy fails because telluric lines are unconditionally known); and below m/z ≈ 100 the dominant error is calibration extrapolation beyond the lowest calibrant (90.98/118.09), which a single high-mass anchor does not fix — a mDa floor remains necessary.
Gotchas / what could fool us
- Peak-width vs accuracy confusion. R = 60,000 at m/z 1,222 means FWHM ≈ 20 ppm; "< 2 ppm" is centroid accuracy with good statistics. Weak fragments (few counts) have centroid error that approaches the FWHM scale — a fixed 5 ppm fragment tolerance silently discards real low-intensity fragments; Enveda's own optimum is ≈ 7 mDa.
- The M+1 ghost. With 2–3 Th isolation the M+1 precursor leaks in; a peak at precursor + 1.0034 (and fragment satellites at +1.0034) is not evidence of a different formula. Also: precursor + 2 Da trimming leaves these in.
- ppm vs mDa at low mass. Below m/z 200, constant-ppm windows become sub-mDa and reject true peaks; SIRIUS's 200 Da floor exists for this reason. Conversely, a constant-mDa window at m/z 450 (2 mDa = 4.4 ppm) is tighter than the instrument's 99th percentile (4.4 ppm) — use max(ppm, mDa).
- Export-tool mass axis. Spectra converted without Bruker's SDK can be 5–20 ppm worse (timsrust README). If any training library's timsTOF spectra came through such a path, their fragment errors are not representative of Enveda's; conversely Enveda's MetaboScape/DataAnalysis exports are at the "good" end.
precursor_error_ppmis a label-quality signal, not a physics signal. It mixes instrument error with wrong adduct labels, wrong structures and unit/rounding issues from 11 sources ("ships uncleaned"). A per-library median says more about curation than about the instrument; only enveda-180/np-examples speak for the test instrument. It is absent from test — never train a model on it as a feature.- Correlated errors within a molecule. 1–16 spectra per hidden molecule were acquired in the same run; their precursor errors share the drift, so consensus m/z does not improve as 1/√n.
- Window ablation is LB-neutral — and that is itself a trap. 5 vs 10 ppm did nothing (0.302/0.303) because isomers dominate; a team could conclude "mass accuracy does not matter" and then lose the few molecules whose formula is distinguishable only by < 5 ppm (N₂/CO-type pairs at m/z > 500).
- Resolution mode is unknown. Facilities run small molecules at R ≈ 20–25 k (UZH SOP) for sensitivity. If enveda-180 was acquired that way, fragment peak widths are ~40–50 ppm FWHM and 7 mDa tolerance is near the limit at m/z 300.
- Multi-CE merged test spectra contain near-duplicate m/z values from different CEs; binning choices change peak counts and cosine scores.
- Vendor FSR numbers are at m/z 1,222; nothing in the spec sheets is measured at m/z 200–450. The 2 ppm RMS figure is an internal-lock-mass or freshly-calibrated value; over a long batch (TIMS-Bench recalibrated "at most 48 h"; the plant CCS library paper injected tune mix "at the end of each analysis … for internal sample calibration") the drift between calibrations is what determines the tail, and that tail is undocumented for enveda-180.
Implications for the challenge
- Candidate retrieval window: neutral-mass ±10 ppm with 2 mDa floor (recall ≥ 99.9 %); do not fight for points here.
- Put |Δppm| and a σ ≈ 2 ppm Gaussian mass prior into the ranker; expect it to matter only for near-isobaric formula pairs (≥ m/z 500).
- Fragment tolerance for any matching/explanation step: max(10 ppm, 5–7 mDa) — Enveda's timsTOF optimum is 6.5–7 mDa; never pure ppm below m/z 200.
- Remove or flag the precursor + 1.0034 peak and fragment ¹³C satellites (+1.0034 within 10 mDa of a stronger peak) before fingerprint prediction and before cosine against Orbitrap libraries (which, with 0.7–1 Th windows, lack them).
- Compute
precursor_error_ppmstatistics for enveda-180 vs other libraries (median, p95, p99, sign, vs m/z) — the 4.4 ppm/99 % figure needs verification; if a systematic sign offset exists in enveda-180, apply it as a prior shift for the test. - Pilot the candidate-conditional self-calibration (Section "Forced analogy") on enveda-180: measure Δ fragment-explanation rate at 3 ppm; adopt only if it moves held-out MRR.
- When building a timsTOF-matched validation split, keep only timsTOF-labelled libraries and keep the per-tool export differences in mind: cosine thresholds tuned on Orbitrap libraries (0.005 Da binning) are too tight for timsTOF fragment errors.
- Treat MS1 isotope-pattern filtering as unavailable (only MS2 lists are given) — Kind & Fiehn's 10× candidate-formula reduction from 2 % isotope accuracy cannot be used; formula ambiguity must be resolved from fragments.
Open questions
- Acquisition parameters of enveda-180 (TOF resolution mode, isolation width, calibration cadence, lock mass or not, MetaboScape vs DataAnalysis export, peak-picking thresholds). A Bruker/Enveda app note or the TIMS-Bench preprint methods would settle it (preprint fetch failed with HTTP 429; retry
https://www.biorxiv.org/content/10.64898/2026.05.23.724673v1.full). - Measured ppm error vs m/z for small-molecule fragments on a timsTOF (no paper found). Computable from enveda-180 by fragment-formula assignment against the known structure (SIRIUS/msbuddy at 20 ppm, then residuals).
- Per-
ingest_libprecursor_error_ppmdistribution (needs the 3 GB train.parquet; the Kaggle rules must be accepted on the account first). - Is the test
precursor_mzthe MS1 centroid, the quadrupole target, or the library-curated value? Each has different error. - Whether co-isolated M+1 appears at measurable intensity in enveda-180 MS2 lists (count peaks at precursor + 1.0034 ± 0.005).
Sources
- Meier F. et al., "Online Parallel Accumulation–Serial Fragmentation (PASEF) with a Novel Trapped Ion Mobility Mass Spectrometer", Mol Cell Proteomics 2018, DOI 10.1074/mcp.TIR118.000900, read via https://www.ebi.ac.uk/europepmc/webservices/rest/PMC6283298/fullTextXML
- Charkow J., Röst H.L., "Trapped Ion Mobility Spectrometry Reduces Spectral Complexity in Mass Spectrometry-Based Proteomics", Anal Chem 2021, DOI 10.1021/acs.analchem.1c01399 (abstract via Europe PMC REST, PMID 34881875)
- Wilding-McBride D. et al., "A de novo MS1 feature detector for the Bruker timsTOF Pro", PLoS One 2022, https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0277122
- "Simplifying MS1 and MS2 spectra to achieve lower mass error… on the Bruker timsTOF Pro", PLoS One 2022, https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0271025
- Zhang N.H., Deutsch E.W., "SpectiCal: m/z Calibration of MS2 Peptide Spectra Using Known Low Mass Ions", J Proteome Res 2024, DOI 10.1021/acs.jproteome.3c00882 (abstract only, via Europe PMC REST)
- Kind T., Fiehn O., "Metabolomic database annotations via query of elemental compositions: Mass accuracy is insufficient even at less than 1 ppm", BMC Bioinformatics 2006 7:234, Table 3, via https://www.ebi.ac.uk/europepmc/webservices/rest/PMC1464138/fullTextXML
- Schroeder M. et al., "Generation of a Collision Cross Section Library for Multi-Dimensional Plant Metabolomics Using UHPLC-Trapped Ion Mobility-MS/MS", Metabolites 2020, via Europe PMC PMC7023306 (calibration cadence)
- Rajkumar P. et al. 2026, TIMS-Bench, repo https://github.com/enveda/tims-bench (README,
notebooks/02_tolerance_selection.ipynb,benchmarking/optimization.py,figures/supplementary_figure_1.png,figures/supplementary_figure_2.png); Zenodo https://zenodo.org/records/20816379; preprint DOI 10.64898/2026.05.23.724673 (not fetched) - PolyU UCEA timsTOF Pro 2 spec page https://www.polyu.edu.hk/ucea/equipment-and-facility/equipment/timstof-ms/
- UF Mass Spectrometry Services, timsTOF Pro2 https://mass-spec.chem.ufl.edu/instruments/bruker-timstof-pro2-trapped-ion-mobility/
- OIST timsTOF HT https://www.oist.jp/node/46015 ; OIST timsTOF fleX MALDI-2 https://www.oist.jp/node/46870
- Bruker timsTOF HT launch release (BusinessWire, 2022-06-06) https://www.businesswire.com/news/home/20220606005373/en ; Bruker Ultra page https://www.bruker.com/en/products-and-solutions/mass-spectrometry/timstof/timstof-ultra.html ; Ultra 2 press release (2024-06-03) https://www.bruker.com/en/news-and-events/news/2024/bruker-launches-ultimate-sensitivity-timstof-ultra-2-to-enable-new-research-paradigms-in-single-cell-and-subcellular-proteomics.html ; Pro 2 page https://www.bruker.com/en/products-and-solutions/mass-spectrometry/timstof/timstof-pro-2.html
- Bruker timsTOF Pro brochure (labwrench mirror) https://cdn.labwrench.com/eMan/manualNo/10487/bruker_optics_timstof_pro_brochure.pdf ; timsTOF brochure https://cdn.labwrench.com/eMan/manualNo/10490/bruker_optics_timstof_brochure.pdf
- UZH Chemistry instrument description, timsTOF Pro https://www.chem.uzh.ch/dam/jcr:e93ba644-82b2-4958-a1f7-aa823febd71f/InstrDescr_LC-HR-IM-MS_timsTOFPro.pdf
- University of Calgary QTOF Tuning & Calibration SOP (calibrant ions) https://research4kids.ucalgary.ca/sites/default/files/teams/21/QTOF%20Tuning%20&%20Calibration_ACHBC00008_v1.1.pdf
- SIRIUS v6 docs, GUI compute dialog (200 Da rule) https://v6.docs.sirius-ms.io/gui/ ; CLI (qtof 10 ppm / orbitrap 5 ppm profiles, --ppm-max, --ppm-max-ms2) https://v6.docs.sirius-ms.io/cli/ ; OpenMS SiriusAdapter docs (ppm_max_ms2 default 10) https://abibuilder.cs.uni-tuebingen.de/archive/openms/Documentation/nightly/html/TOPP_SiriusAdapter.html
- AlphaTims README https://github.com/MannLabs/alphatims ; timsrust README https://github.com/MannLabs/timsrust ; tdf2mzml README https://github.com/mafreitas/tdf2mzml ; tdfpy docs https://tacular-omics.github.io/tdfpy/ ; OpenTIMS (Łącki, Startek et al., J Proteome Res 2021, DOI 10.1021/acs.jproteome.0c00962, abstract only)
- ProteoWizard issue #886 https://github.com/ProteoWizard/pwiz/issues/886 ; filters doc https://proteowizard.sourceforge.io/tools/filters.html ; FragPipe conversion tutorial https://fragpipe.nesvilab.org/docs/tutorial_convert.html ; thyra issue #401 (search snippet only)
- Kaggle data description mirror: https://github.com/dalloliogm/kaggle_competitions (references/data_description.md); data audits: https://github.com/Clyde0513/CASMI-2026 (reports/data_profile.json, data_notes.md), https://github.com/chiparon/enveda-casmi26 (artifacts/data_audit.json); competitor logs: https://github.com/yasumorishima/kaggle-competitions (enveda-casmi26/CLAUDE.md), https://github.com/eganeganegan/casmi26, https://github.com/ibnmarzuk/casmi26-molecule-id, https://github.com/NoName7n11/Enveda_CASMI_2026 — all Kaggle facts taken from these GitHub mirrors, not from kaggle.com
- Derived arithmetic (calibrant cluster masses, isotope-window geometry, ppm/mDa table) computed locally from IUPAC atomic masses; not cited values.