Noise, artefacts, isotopologues, in-source fragments and chimeric peaks in timsTOF MS2 (enveda-180 vs Orbitrap libraries)

expertconfidence medium-high (local numbers high; literature ISF/purity rates medium; Bruker export settings low)relevance 4/512 sources7.7k words
Forced analogyAstronomy sky/cosmic-ray/telluric pipeline mapped onto timsTOF MS2: telluric = precursor, M+1, M+2 and the +1.0034 Da ¹³C satellite on 71 % of strong peaks (mask holds, deterministic); cosmic rays = 9–20-count peaks and non-recurring sub-40 m/z spikes (holds statistically); sky breaks — recurring m/z are library chemistry (pyridinium 80.05 in enveda-180, furanyl 81.03 in NPs), not background, and Hart 2024 up-weights them. Paid off: yielded a numeric mask recipe plus the +0.4 mDa low-mass calibration bias found while looking for telluric lines.

TL;DR The hidden test spectra come from the same Bruker timsTOF pipeline as enveda-180, whose peak lists are raw integer-count centroids with a hard floor of 9 counts and no relative threshold: 92 % of peaks are below 1 % of the base peak, the number of peaks tracks ion abundance (Spearman 0.71), 39 % of spectra carry the co-isolated ¹³C M+1 precursor, 71 % of strong fragments have a ¹³C satellite at +1.0034 Da, and low-mass fragments read +0.4 mDa (+5 ppm) high — none of which is true of the GNPS/MassBank Orbitrap spectra that public models were trained and tuned on. The astronomy analogy pays off for the "telluric" part (precursor family and ¹³C satellites: fixed offsets, zero chemistry lost) and for cosmic rays (sub-20-count and sub-40 m/z non-recurring spikes), but there is no "sky": recurring ions are library chemistry, not instrument background. A numeric timsTOF mask recipe and the gotchas (default matchms cleaning deletes 75 % of a timsTOF spectrum; in-source water/sugar loss relabels the precursor silently) are the actionable output.

1. Local measurements on train.parquet

Script: research/q1_instrument_physics/noise_artifacts_measure.py (streams all 21 row groups of C:\Temp\casmi26\data\train.parquet, pyarrow 25.0.1, numpy 2.5.2, python 3.12; random thinning per slice, seed 26). Raw output: noise_artifacts_measurements_raw.json; per-library table: noise_artifacts_isotopes_insource_chimeric.json. Slices: enveda-180 (18 % sample = 207,915 spectra, 51.3 M peaks), GNPS rows whose instrument_type contains "Orbitrap" (all 118,493), GNPS rows containing "TOF" (61,838), MassBank (all 101,727), MoNA (all 92,416), Pluskal MS2 (40 % = 211,234), RIKEN (50 % = 173,461), enveda-np-examples (all 1,184). Every library normalises intensities to max = 1 (100 % of spectra). Tolerances: ±10 mDa for precursor-region tests, ±5 mDa for the ¹³C partner test, with a +0.5 Da offset as a chance-coincidence control.

1a. Intensity floor and quantisation

slice peaks < 1 % < 0.1 % < 0.01 % min nonzero rel. int. per-spectrum min rel. int. (p50) intensity × base_peak is integer min counts per spectrum (p50)
enveda-180 91.8 % 75.1 % 39.8 % 5.1e-8 1.3e-4 100 % 26
enveda-np-examples 80.3 % 46.2 % 11.5 % 8.2e-7 4.1e-4 98.4 % 27.5
GNPS-Orbitrap 60.2 % 16.3 % 4.9 % 8.7e-10 2.5e-3 17.6 % 2,166
GNPS-QTOF 50.7 % 30.7 % 7.1 % 7.1e-13 2.9e-3 52.1 % 26.6
MoNA 69.7 % 44.6 % 14.1 % 1.0e-8 1.5e-3 n/a (no bpi) n/a
Pluskal MS2 50.2 % 5.0 % 0.001 % 8.0e-5 5.1e-3 n/a n/a
MassBank 29.6 % 0 % 0 % 0.001001 (= 1/999) 0.011 n/a n/a
RIKEN 3.9 % 0 % 0 % 0.005 0.015 n/a n/a

Reading: enveda-180 is a raw integer-count list (intensity × base-peak = integer for 100 % of 51 M peaks; only 819,623 distinct intensity values in 2 M peaks because low counts repeat). The median spectrum's weakest peak is 26 counts; with a median base peak of 201,708 counts that is 1.3e-4 relative. MassBank and RIKEN were thresholded at 0.1 % / 0.5 % by the submitters; Pluskal at ~0.01–0.05 %. The hidden test (timsTOF, same pipeline as enveda-180, median 138 peaks) will look like the first row: three quarters of its peaks are below 0.1 % and would be deleted by matchms's default intensity_from = 0.001.

1b. Precursor-region peaks (fraction of spectra with a peak within ±10 mDa)

slice precursor M+1 (+1.0034) M+2 (+2.0067) −H2O (−18.0106) −NH3 −2 H2O precursor rel. int. p50 when present precursor is base peak
enveda-180 45.9 % 38.7 % 21.7 % 17.7 % 8.3 % 2.8 % 0.115 14.5 %
enveda-np-examples 55.6 % 47.1 % 3.4 % 29.4 % 14.1 % 13.9 % 0.237 27.5 %
GNPS-Orbitrap 68.8 % 6.1 % 0.7 % 26.3 % 10.3 % 6.6 % 0.397 34.4 %
GNPS-QTOF 52.3 % 22.1 % 11.7 % 22.9 % 8.1 % 10.1 % 0.231 28.7 %
MoNA 46.5 % 18.0 % 11.8 % 19.8 % 7.7 % 7.4 % 0.354 35.5 %
Pluskal MS2 63.9 % 2.6 % 0.2 % 12.8 % 3.6 % 1.6 % 0.229 25.3 %
MassBank 41.1 % 5.3 % 1.9 % 11.7 % 4.4 % 3.1 % 1.000 51.3 %
RIKEN 29.6 % 7.1 % 4.0 % 6.3 % 1.7 % 2.0 % 1.000 50.3 %

Peaks at precursor + 21.982 (Na for H) and + 17.027 (NH4 for H) occur in exactly 0.0 % of enveda-180 spectra — the +2 Da trim removes them, so adduct co-isolation leaves no trace in the lists (and the model cannot use it). The surviving precursor in enveda-180 is weak (median 11.5 % of base peak, base peak in only 14.5 % of spectra) because 26.5 % of the rows are 20/40/60 eV merges and single-CE rows are mostly 40–60 eV.

1c. ¹³C fragment satellites (peak with a lower-intensity partner at +1.0034 ± 5 mDa)

slice all peaks peaks ≥ 5 % rel. int. ≥ 5 % and m/z > 200 control (+0.5 Da, ≥ 5 %) median satellite/parent
enveda-180 16.3 % 71.1 % 67.0 % 3.0 % 0.084
enveda-np-examples 19.6 % 58.4 % 61.1 % 1.1 % 0.097
GNPS-Orbitrap 8.4 % 14.0 % 12.6 % 0.3 % 0.090
GNPS-QTOF 11.0 % 21.7 % 15.9 % 13.6 % 0.345
MoNA 9.8 % 31.6 % 27.4 % 5.5 % 0.104
MassBank 10.8 % 19.9 % 23.4 % 0.1 % 0.181
RIKEN 10.7 % 20.1 % 20.4 % 3.7 % 0.217

The 71 % vs 3 % control is decisive: on timsTOF almost every real fragment above 5 % has its ¹³C twin in the list. These twins are not in Orbitrap training spectra (14 %), so a model trained on GNPS/MassBank sees ~5× more "+1 Da" peak pairs at inference than in training. (GNPS-QTOF's 13.6 % control shows that slice contains profile-like or multiply-centroided spectra — its satellite numbers are unreliable.)

1d. Lowest fragment m/z per spectrum

slice p5 p25 p50 p75 p95 spectra with min m/z < 50 min m/z < ⅓ precursor
enveda-180 20.2 23.7 65.0 78.0 194.3 36.3 % 94.5 %
enveda-np-examples 20.9 32.2 62.1 71.0 137.0 42.8 % 94.3 %
GNPS-Orbitrap 41.0 50.0 53.3 61.0 108.0 24.7 % 90.8 %
GNPS-QTOF 29.5 45.0 67.1 95.9 194.1 28.9 % 84.0 %
MoNA 41.0 50.3 57.0 83.1 168.0 10.0 % 79.4 %
Pluskal MS2 40.6 42.0 45.0 69.0 153.1 55.8 % 90.0 %
MassBank 39.0 55.0 71.1 119.0 283.2 15.3 % 63.4 %
RIKEN 54.4 81.0 143.1 271.1 522.2 1.7 % 42.4 %

There is no ion-trap-style ⅓ cut-off anywhere (QTOF and Orbitrap-HCD both transmit low m/z). The timsTOF lists start at m/z ≈ 20 — a quarter of enveda-180 spectra have their lowest peak below m/z 24, where no plausible organic fragment of a C-containing [M+H]+ exists except Na+ (22.989) and a handful of CH-ions (the follow-up script, §1g, characterises these). Orbitrap lists start at ≈ 50 (the HCD scan range default).

1e. Peaks above the precursor

slice peaks > precursor + 0.5 peaks > precursor + 2.0 spectra with any peak > +0.5 spectra with any > +2.0 max(m/z − precursor) p75 / p95
enveda-180 2.44 % 0.28 % 46.1 % 24.6 % 1.999 / 2.119
enveda-np-examples 2.25 % 0.00 % 50.0 % 0.0 % 1.123 / 1.995
GNPS-Orbitrap 1.39 % 1.02 % 26.1 % 19.7 % 0.987 / 28.3
GNPS-QTOF 25.6 % 25.1 % 54.8 % 36.6 % 103.8 / 1231
MoNA 10.2 % 9.7 % 46.8 % 42.4 % 22.0 / 1193
Pluskal MS2 0.14 % 0.04 % 3.9 % 0.8 % 0.001 / 0.185
MassBank 1.58 % 1.08 % 9.6 % 4.3 % 0.000 / 1.991
RIKEN 6.46 % 5.46 % 37.5 % 31.2 % 5.13 / 224

In enveda-180 essentially everything above the precursor sits in the +0.5…+2.12 Da band (M+1, M+2 and their ±10 mDa neighbours): "impossible" fragments beyond +2.12 Da do not exist, i.e. Enveda already trimmed them. In GNPS-QTOF and MoNA, 10–25 % of peaks are above the precursor + 2 — those are chimeric/MS1-contaminated library entries (and hundreds of Da above), which MassSpecGym removes with its "> precursor + 3 and > 20 % intensity" rule.

1f. Absolute base-peak intensity (counts) and its effect on peak lists

slice bpi p5 p50 p95 peaks < 1 % in low-bpi tercile in high-bpi tercile median n_peaks low / high tercile Spearman(bpi, n_peaks)
enveda-180 2,543 201,708 14.3 M 68.4 % 95.7 % 30 / 332 +0.71
enveda-np-examples 1,825 115,061 4.17 M 33.7 % 89.5 % 42 / 321 +0.60
GNPS-Orbitrap 100 (placeholder) 504,050 129 M 56.7 % 74.7 % 42 / 34 −0.04
GNPS-QTOF 100 18,428 1.02 M 3.5 % 88.4 % 30 / 141 +0.43
MassBank / MoNA / Pluskal / RIKEN NaN (bpi absent)

The dominant finding of this section: in enveda-180 the number of peaks is a function of ion abundance, not of chemistry (ρ = 0.71; 30 peaks in the weakest tercile vs 332 in the strongest, with 96 % of those extra peaks below 1 %). A fixed 26-count floor on a 14 M-count base peak lets everything down to 2e-6 through. Any model that uses num_peaks, peak density, or un-normalised peak sets learns the injection concentration. GNPS-Orbitrap shows no such correlation because its lists were thresholded relative to the base peak before deposit (and 25 % of its bpi values are the literal placeholder 100).

1g. Recurring m/z ("sky") across unrelated structures

2 mDa bins present in > 5 % of distinct InChIKey14 structures: enveda-180 511 bins (12.4 % of peaks, 29.5 % of total intensity); GNPS-Orbitrap 280 bins (22.3 % / 25.4 %); np-examples 2,445 bins over only 250 structures (34.6 % / 55.8 %). Top recurring m/z in enveda-180 (fraction of 121,069 structures): 80.050 (36.5 %), 77.040 (33.8 %), 91.054 (33.2 %), 82.066 (30.8 %), 79.054 (29.8 %), 68.050 (29.6 %), 92.050 (28.3 %), 94.066 (27.8 %), 78.034 (25.6 %), 77.038 (25.6 %), 106.066 (24.6 %), 70.066 (24.6 %), 104.050, 103.054, 105.070, 93.058, 65.040, 118.066, 117.058. These are C5H6N+ (pyridinium 80.0495), C6H5+ (77.0386), C7H7+ (tropylium 91.0542), C5H8N+ (82.0651), C6H7+ (79.0542), C4H6N+ (68.0495), C6H6N+ (92.0495), C6H8N+ (94.0651), C5H4N+ (78.0338), C7H8N+ (106.0651), C4H8N+ (70.0651)… — the generic aromatic / N-heterocycle fragment ions of a synthetic drug-like library. GNPS-Orbitrap's top list (91.054 45 %, 79.054, 95.050, 67.054, 65.038, 105.070, 56.050, 55.054, 55.018…) and np-examples' (77.040 63 %, 91.054, 65.040, 107.050, 79.054, 81.034 = C5H5O+, 105.070, 103.054, 69.034 = C4H5O+, 115.054, 95.050 = C6H7O+) show the "sky" is chemistry of the library, not the instrument — N-heterocycle ions dominate enveda-180, oxygenated furanyl/phenol ions dominate natural products. Note the split bins 77.038 vs 77.040 and 65.038 vs 65.040: C6H5+ (77.0386) sits on a 2 mDa bin edge, and enveda-180's small positive mass bias pushes it into the upper bin while GNPS-Orbitrap stays in the lower one — the bias itself is only +0.4 mDa (measured directly in §1h, not the ~1.4 mDa the bin split suggests).

1h. Follow-up: mass bias on reference fragment ions, absolute-count floor, sub-50 peaks, M+1/M ratio

Script noise_artifacts_followup.py (12 % enveda-180 sample = 138,618 spectra; all GNPS-Orbitrap, MassBank, np-examples). Raw: noise_artifacts_followup_raw.json.

Reference-ion residuals (most intense peak ≥ 1 % within ±20 mDa of the exact cation mass; only ions with no isobaric neighbour inside the window are listed — the ones with a CH2/N isobar 12.6 mDa away are bimodal and discarded):

ion exact m/z enveda-180 median residual (n) np-examples GNPS-Orbitrap MassBank
C5H5+ 65.0386 +0.32 mDa / +4.9 ppm (5,849) +0.74 / +11.4 −0.08 / −1.2 +0.02 / +0.3
C6H5+ 77.0386 +0.42 / +5.5 (24,676) +0.63 / +8.2 −0.08 / −1.0 +0.02 / +0.3
C6H7+ 79.0542 +0.37 / +4.7 (18,026) +0.61 / +7.7 −0.03 / −0.4 −0.03 / −0.4
C5H6N+ 80.0495 +0.52 / +6.5 (14,784) — (bimodal) −0.18 / −2.2 +0.02 / +0.2
C7H7+ 91.0542 +0.47 / +5.2 (22,338) +0.44 / +4.8 −0.03 / −0.3 −0.03 / −0.3
C8H7+ 103.0542 +0.47 / +4.6 (12,812) +0.36 / +3.5 −0.13 / −1.3 −0.03 / −0.3
C8H9+ 105.0699 +0.42 / +4.0 (11,664) +0.45 / +4.3 −0.08 / −0.8 +0.02 / +0.2
C9H7+ 115.0542 +0.47 / +4.1 (11,507) +0.48 / +4.2 −0.13 / −1.1 −0.03 / −0.3
C9H8N+ 130.0651 +0.57 / +4.4 (11,655) — −0.03 / −0.2 +0.07 / +0.5
C14H11+ 179.0855 +0.07 / +0.4 (3,503) — −0.23 / −1.3 —

enveda-180 fragments below m/z ≈ 130 read systematically +0.4 mDa (+4 to +6.5 ppm) high (IQR ≈ 0.0–0.8 mDa), although its precursors are calibrated to a median |error| of 0.98 ppm (train_eda.md): the classic low-mass curvature of a TOF calibration whose lowest sodium-formate calibrant is m/z 90.98. By m/z 180 the bias is gone. Orbitrap and MassBank sit within ±0.2 mDa of zero. A symmetric ±5 ppm fragment tolerance on a timsTOF spectrum therefore rejects roughly half of the true low-mass fragments; use max(10 ppm, 2 mDa) or shift by −0.4 mDa below m/z 150. (The 2 mDa-bin split in §1g — 77.040 vs 77.038 — is this bias straddling a bin edge, not an 18 ppm error.)

Absolute-count floor (enveda-180). Global minimum = 9 counts exactly; p1 = 9, p5 = 14; histogram of counts: 9 → 884,144 peaks, 10 → 339,103, 11 → 183,282, 12 → 145,629, then flat ≈ 120–155 k per integer up to 60. So the Bruker peak picker's absolute threshold in this dataset is 9 counts, 2.6 % of all peaks sit exactly at 9, 7.1 % are below 20 counts, 19 % below 50, 35 % below 100, 77 % below 1,000. From 21 to 60 counts odd values are ~20 % more frequent than even ones (e.g. 37 → 154,791 vs 38 → 124,118) — an ADC/summation quantisation fingerprint of the instrument. Per-spectrum minimum counts: p25 = 19, p50 = 26, p75 = 53, p95 = 203. GNPS-Orbitrap "counts" are not counts (p1 = 0.048, 38 % < 10: scaled or placeholder bpi).

Sub-50 m/z peaks (enveda-180). 4.2 % of all peaks lie below m/z 50 (1.6 % below 30, 3.0 % below 40); their median relative intensity is 3.2e-5 and 92 % are below 0.1 %. The commonest 2 mDa bin below 50 occurs in only 0.21 % of spectra (41.040 = C3H5+), followed by non-chemical values (32.716, 22.406, 20.304, 29.262, 31.188 …, each ≈ 0.17 % of spectra) — i.e. the sub-40 region of enveda-180 is non-recurring random noise, whereas GNPS-Orbitrap's sub-50 peaks are real recurring ions (42.034 C2H4N+ in 9.8 % of spectra, 41.038 C3H5+ 8.6 %, 44.050 C2H6N+ 7.0 %, 43.018 C2H3O+ 5.9 %) and np-examples' likewise (41.040 8.9 %, 39.024 C3H3+ 7.9 %, 43.018 6.7 %).

M+1 / M when both present (±10 mDa). enveda-180: n = 52,357, ratio p25/p50/p75 = 0.130 / 0.179 / 0.230; P(M+1 | precursor present) = 82.7 %, P(M+1 | precursor absent) = 1.3 %, P(M+2 | M+1) = 54.6 %. np-examples: 0.095 / 0.165 / 0.255, P(M+1|M) = 83.3 %, P(M+2|M+1) = 7.0 %. GNPS-Orbitrap: ratio p50 = 0.034, P(M+1|M) = 8.3 %. MassBank: 0.141, 12.2 %. A C15–C25 molecule has natural M+1/M ≈ 0.16–0.28, so the 2 Th window transmits M+1 at close to full efficiency (ratio 0.18 is not attenuated), and in enveda-180 (not np-examples) M+2 also gets through half the time, implying 3 Th windows for part of that library.

2. timsTOF isolation and export behaviour

Quadrupole isolation width. The dda-PASEF reference method (Meier et al. 2018, MCP, PMC6283298) states verbatim: "The quadrupole isolation width was set to 2 Th for m/z < 700 and 3 Th for m/z > 700", with "MS and MS/MS spectra ... recorded from m/z 100 to 1700" and a precursor "target value" of 20,000 a.u. (low-abundance precursors are re-scheduled until the summed ion count reaches the target). A 2024 DDA-PASEF rescoring preprint repeats "isolation width of 2–3 Th" as the standard. For the hidden test (precursor m/z 245–460, see train_eda.md) the relevant window is therefore 2 Th = ±1.0 Th around the precursor, which is not a box: the quadrupole transmission is a rounded trapezoid, so M+1 at +1.0034 sits exactly at the nominal edge and is transmitted at partial, m/z-dependent efficiency. Measured consequence in §1b: 38.7 % of enveda-180 spectra carry a peak within ±10 mDa of precursor + 1.0034 (47.1 % in enveda-np-examples), versus 6.1 % of GNPS-Orbitrap and 5.3 % of MassBank spectra (narrow windows plus library curation). M+2 (+2.0067) is nominally outside a 2 Th window yet appears in 21.7 % of enveda-180 spectra (only 3.4 % of np-examples): the max(m/z − precursor) per spectrum has p75 = 1.999 and p95 = 2.119 in enveda-180 but never exceeds 2.000 in np-examples, so the two Enveda slices were trimmed slightly differently (consistent with the Kaggle statement, relayed in the sibling tims_qtof document, that peaks above precursor + 2 Da were removed) and a part of the enveda-180 methods must use a wider (3 Th) window.

What co-isolates besides M+1. Within ±1 Th of [M+H]+ nothing else of the same molecule can appear: [M+Na]+ is +21.98 Da away, [M+NH4]+ +17.03 Da, [M+H–H2O]+ −18.01 Da — all far outside the window. So Na/K adducts are not co-isolated with the protonated precursor; they appear in MS2 only when the selected precursor itself was the adduct (train has 178,092 [M+Na]+ and 18,955 [M+K]+ rows). The real same-molecule contaminants of a 2 Th window are (i) ¹³C M+1 (≈1.1 % × n_C ≈ 20–30 % of M for C20–C25 natural products), (ii) for Cl/Br compounds nothing extra (A+2 is at +1.997), (iii) ²H/¹⁵N/¹⁷O/³³S fine-structure under the M+1 envelope. Chimeric contamination by other molecules is excluded by Fiehn's "pure compound" statement, but see §4 for dimers.

Detector / ADC noise floor. Bruker does not publish timsTOF ADC specifications; the generic physics (Verenchikov/Raznikov-style TOF detection patents retrieved by search) is: a 12-bit GS/s ADC has ~3–5 counts of electronic noise, gain is set so a single ion gives ≈5–10× that (≈20 counts in one worked example), and an acquisition threshold at the noise level makes recorded peaks "practically free of ADC noise". For the timsTOF Pro specifically, the PLoS One 2022 paper (Simplifying MS1 and MS2 spectra, DOI 10.1371/journal.pone.0271025) documents detector saturation ("electrons ... do not have sufficient time to be replenished") affecting ~5 % of identified peptide monoisotopic peaks at 200 ng load, a 21 % reduction in MS2 fragment ions by mass-defect ("forbidden zone") filtering, and uses a Gaussian peak model with 3σ bounds at R = 40,000. Ringing: MCP/TOF detector readouts exhibit post-pulse ringing from parasitic inductance; the ringing amplitude is "adequately lower than the signal" and short-lived (patent EP2621089 / Google Patents summary). Bruker's centroiding suppresses it; I found no primary evidence of ringing satellites surviving into enveda-180 peak lists. The local control test in §1c (partner at +0.5 Da) gives an upper bound.

Export thresholds / peak-count caps. No public Bruker document states an MS2 intensity threshold or peak cap for DataAnalysis or MetaboScape MS/MS export; MetaboScape's T-ReX feature-finding uses an MS1 intensity threshold in counts (an application note example uses 1,500 counts), and SNAP centroiding can be run with absolute/relative thresholds of 0. Enveda's own acquisition/export settings (TIMS-Bench preprint, bioRxiv 10.64898/2026.05.23.724673) could not be fetched (HTTP 429 three times) — unverified. What the data say (§1): enveda-180 intensity lists go down to 5e-8 of the base peak (p1 of nonzero = 2.5e-6), 75 % of all peaks are below 0.1 % relative intensity, spectra reach p95 = 823 peaks (max 7,915 in a 20k-row sample from the earlier attempt's noise_stats.json), and ms2_normalized_intensities × base_peak_intensity is an exact integer for 100 % of peaks, i.e. the lists are raw integer-count centroid lists with no relative-intensity threshold and no peak-count cap. The only floor is absolute: the smallest peak in a spectrum has a median of 26 counts (§1a). MassBank's median of 11 peaks reflects curated, thresholded submissions (minimum relative intensity exactly 0.001 = 1/999 in the MassBank "relative intensity 1–999" convention), not fewer fragments.

3. In-source fragmentation (ISF) prevalence

Study Platform / sample Key number Source
Chen et al. 2023 214 natural compounds, LC–Q/Orbitrap ESI 82 % of tested compounds underwent ISF; half of compounds with >1 fragile moiety showed "successive and severe" ISF; moieties: hydroxyl, lactone, glycosyl, ether → losses of H2O, CO, sugar, ether cleavage; "some compounds such as terpenoids ... less than 1 % parent form can be observed" RCM 37:e9519, DOI 10.1002/rcm.9519 (abstract via Europe PMC)
Xue et al. 2020 (eISA) 50 standards, Agilent QTOF ISF tuned with transfer isCID 0–100 eV; at 30 eV (pos) / 40 eV (neg) fragment patterns match METLIN MS/MS for >90 % of molecules with ≤10 % precursor loss; under standard conditions "not all molecules undergo ISF at low energy" (no % given) Anal Chem 92:6051, DOI 10.1021/acs.analchem.0c00409, PMC8966047
Guo et al. 2021 (ISFrag) standards + untargeted, Bruker-type source parameters (capillary voltage, end-plate offset, ion energy, "collision energy") 100 % recognition of level-1 ISF features; "while increasing energies can increase the number of real metabolic features and ISF features, the percentage of ISF features might not necessarily increase" Anal Chem 93:10243, DOI 10.1021/acs.analchem.1c01644
Guo & Huan 2020 134 standards + urine, full-scan vs DDA vs DIA DDA captures 64.8 % fewer features than full scan; not an ISF-rate paper (the brief's attribution was wrong — corrected here) Anal Chem 92:8072, DOI 10.1021/acs.analchem.9b05135

Consequence for the challenge. An ISF product [M+H–H2O]+ or [M+H–hexose]+ that is intense enough gets picked by DDA as its own precursor. Enveda's pipeline (and the train metadata) label the selected ion with an adduct string; train contains 21,682 [M-H2O+H]+, 3,439 [M-2H2O+H]+ and 624 [M-H2O]+ rows that were recognised as water-loss precursors — but recognition requires knowing the structure, which the hidden test by construction lacks. The test adduct column has 7 values (see decoy test.parquet). The silent failure mode: a terpenoid/glycoside whose [M+H]+ is <1 % of its [M+H–H2O]+ is labelled [M+H]+ with precursor = true M − 18.0106 + 1.0073, and every candidate retrieved by neutral mass is wrong. Local evidence of how labile these groups are inside the collision cell: 17.7 % of enveda-180 spectra have a peak within ±10 mDa of precursor − 18.0106 (water loss from the selected ion) and 2.8 % at −2×H2O; in the NP-examples slice (99.6 % COCONUT natural products, the chemistry of the hidden test) the figures rise to 29.4 % and 13.9 %, with −NH3 at 14.1 %. GNPS-Orbitrap: 26.3 % / 6.6 %. These are post-isolation losses; the same bonds break in the source, which is what Chen et al. measured.

4. Chimeric spectra from a pure compound

Fiehn's caveat ("no coelution, chimeric spectra or weird adducts") removes inter-molecular chimeras but not the three intra-molecular ones:

  1. ¹³C M+1 co-isolation (2 Th window): quantified in §1: 38.7 % of enveda-180 spectra show precursor+1.0034; 71.1 % of peaks ≥5 % relative intensity have a lower-intensity partner at +1.0034 ± 5 mDa (67.0 % restricted to m/z > 200), against 3.0 % at the +0.5 Da control offset, compared with 14.0 % (12.6 %) on GNPS-Orbitrap with a 0.27 % control; median satellite/parent ratio 0.084 (enveda-180) vs 0.090 (Orbitrap) — the same natural-abundance ratio, just detected far more often because timsTOF lists are not thresholded. The +1 satellites are real ¹³C fragment isotopologues, not noise, and carry formula information (SIRIUS deliberately "flags these peaks and ignores them during the optimization process", v6 docs).
  2. Proton-bound dimers [2M+H]+ / [2M+Na]+: train has 92,041 [2M+H]+ and 190,033 [2M+Na]+ rows (train_eda.md), i.e. concentrated standards routinely form dimers. CID of a proton-bound dimer typically cleaves the proton bridge and "behave[s] as a [M+H]+-type precursor" (Pan et al. 2008, RCM DOI 10.1002/rcm.3767), so a [2M+H]+ MS2 looks like [M+H]+ MS2 plus a dominant peak at the monomer mass. The hidden test's 7 adducts include dimers (visible decoy has [2M+H]+-type rows — check test.parquet before assuming), and their "precursor_mz" is then ≈ 2M+1.007: a neutral-mass candidate query must divide by two.
  3. Precursor purity in general. msPurity (Lawson et al. 2017, Anal Chem 89:2432, DOI 10.1021/acs.analchem.6b04358): purity = "intensity of a selected precursor divided by the summed intensity of the isolation window". Across 10 public LC-MS² DDA datasets with > ±1 Da windows the median purity ranged 0.67–0.96; for theoretical ±0.5 Da windows the most complex sample had median purity 0.46 over 64,498 features vs 0.66 for a simpler sample; the proteomics rule of thumb is that purity <0.5 degrades library matching. For a pure-standard injection the impurity term is dominated by the M+1 isotope (which msPurity can optionally exclude) and by in-source fragments/adducts of the same molecule that fall in the window — for [M+H]+ and 2 Th there are none, so purity ≈ 1/(1 + 0.2–0.3) ≈ 0.77–0.83 for a C20–C25 compound. No study reports purity statistics for pure standards on a timsTOF (unverified gap).

5. What trained models do with these artefacts at inference

Tool / pipeline Preprocessing actually applied (defaults, verified in source/docs) Effect on timsTOF artefacts
matchms DEFAULT_FILTERS (v0.2x, default_pipelines.py) metadata harmonisation + normalize_intensities (0–1) + require_precursor_mz (min 10) + require_correct_ionmode; no peak filtering at all all 138 peaks, M+1, precursor and 1e-6 noise pass through
matchms CLEAN_PEAKS (used in MS2DEEPSCORE_TRAINING = LIBRARY_CLEANING + CLEAN_PEAKS) select_by_mz(0, 1000); select_by_relative_intensity(intensity_from=0.001); remove_peaks_relative_to_precursor_mz (removes m/z > precursor − 1.6 Da — "based on Flash Entropy article by Li and Fiehn 2023"); reduce_to_number_of_peaks(n_max=1000); require_minimum_number_of_high_peaks(no_peaks=5, intensity_percent=2.0); remove_profiled_spectra; remove_noise_below_frequent_intensities (if an intensity value repeats ≥5 times, keep only peaks above 2× the highest such value) removes precursor, M+1 and everything within 1.6 Da below the precursor; intensity_from=0.001 drops 75 % of enveda-180 peaks (§1a); the "frequent intensity" rule fires on integer-count timsTOF spectra (the lowest counts 26, 27, 28 ... repeat many times in a 300-peak list) and can delete the whole low-intensity half
matchms optional filters remove_peaks_around_precursor_mz(mz_tolerance=17 Da); remove_peaks_outside_top_k(k=6, mz_window=50); require_minimum_number_of_peaks(n_required=10); require_maximum_number_of_peaks(1000) 17 Da default also kills real [M+H–H2O]+ / –NH3 fragments; not in any default pipeline
MS2DeepScore 2.x (SettingsMS2Deepscore.py) min_mz=10, max_mz=1000, mz_bin_width=0.1, intensity_scaling=0.5 (sqrt); training augmentation removes up to 20 % of peaks below 0.2 intensity 0.1 Da bins merge M and M+1 fragment satellites into adjacent bins (+1.0034 = 10 bins) — satellites become extra features the model never saw at timsTOF frequency
MassSpecGym (arXiv 2410.23326, Appendix "Data cleaning") matchms-based; noise = "multiple identical intensity values ... intensity value multiplied by 2 as a minimum intensity threshold"; spectra with >300 or <1 fragments discarded; precursor m/z ≤ 1000; spectra dropped if any peak > precursor + 3 with intensity > 20 % of base; precursor signals excluded from evaluation ("tendency for strong precursor signals to inflate model performance"); simulation binned at 0.01 Da to 1005 A model trained on MassSpecGym never saw a 595-peak spectrum; enveda-180 p90 = 595 peaks, so ~10 % of hidden-test-like spectra exceed the training support unless truncated
SIRIUS / CSI:FingerID (v6 docs, methods-background) assumes a single ion species per spectrum ("does not support the analysis of chimeric spectra"); DDA isotope peaks inside MS2 are "flag[ged] ... and ignore[d] during the optimization"; noise is modelled inside the fragmentation-tree scoring; the OpenMS SiriusAdapter exposes noise = "median intensity of noise peaks", default 0 robust to M+1 and to low-intensity noise by design; a ±1.6 Da precursor trim is still advisable before export
MIST (Goldman et al. 2023) formula-annotates peaks (SIRIUS or internal subformula labeller); peak-dropout augmentation removes Binomial(n, 0.5) peaks with probability ∝ 1/intensity and rescales Binomial(n, 0.1) (MIST SI, Algorithm) learns intensity-robustness but the subformula step silently discards any peak with no subformula of the (possibly wrong) precursor formula — ISF-shifted precursors poison every peak label
Flash Entropy / Li & Fiehn 2023 remove peaks above precursor − 1.6 Da; intensities to spectral entropy weighting this is where matchms's −1.6 Da comes from
Hart et al. 2024 (JASMS 35:266, PMC10854760) weights = intensity^0.5-style low-peak boost × (relative m/z frequency in GNPS, rounded to 0.1 Da)^0.25 — common peaks are up-weighted, not masked; +49 % F1 in spectral alignment (0.14 vs 0.094); hurt when a spectrum has few peaks or one peak > 0.7 of total intensity ("glycosidic flavonoids") the opposite sign to the astronomy analogy — see below

Forced analogy: astronomy's sky subtraction, cosmic-ray rejection and telluric masking

The analogy, stated precisely. A stellar spectrograph pipeline removes three non-stellar components before fitting: (1) sky — an additive background spectrum measured on a blank patch of sky in the same exposure, with lines (OH, Na D) at fixed wavelengths independent of the target; (2) cosmic rays — single-pixel spikes with no point-spread-function width, rejected by comparing exposures or by shape; (3) telluric lines — absorption imposed by the Earth's atmosphere at fixed wavelengths that depend on the site and airmass, not the star, masked (set to NaN) before fitting. Mapping onto a timsTOF MS2 peak list:

astronomy MS2 counterpart enveda-180 measurement mask?
telluric line at a fixed wavelength peaks whose position is fixed relative to the precursor: precursor (45.9 % of spectra), M+1 (38.7 %), M+2 (21.7 %); and the ¹³C satellite of every fragment (71 % of strong peaks) positions known exactly (+1.00335 n), intensities ≈ 0.011 × n_C yes — deterministic, zero chemistry lost
telluric line (site-dependent) mass-axis bias: +0.4 mDa below m/z 130 §1h correct, do not mask
cosmic ray (no PSF, single event) peaks at 9–20 counts (7.1 % of peaks), non-recurring sub-40 m/z spikes (3 % of peaks, 92 % < 0.1 %) counts histogram piles at the 9-count threshold; sub-40 bins never recur yes, statistically
sky (additive background measured off-target) no blank-sky exposure exists; the closest analogue is Hart-style document frequency of m/z across unrelated molecules 511 bins in > 5 % of structures carry 29.5 % of intensity, but they are chemistry (pyridinium 80.05, tropylium 91.05) and differ between libraries (N-heterocycles in enveda-180, furan/phenol ions in NPs) no — subtracting them removes signal; at most IDF-weight them
the star itself fragment peaks are the signal and molecule-specific — never

Testable recipe — "timsTOF telluric mask" (apply identically at training on enveda-180 and at inference; all numbers from §1):

  1. Precursor-relative mask: record precursor_present (peak within ±10 mDa, its relative intensity) as a scalar feature, then delete every peak with m/z > precursor − 0.02 Da (this removes precursor, M+1 at +1.0034 ± 0.01, M+2 at +2.0067 ± 0.01 and the 2.44 % of peaks above precursor + 0.5). Expected to change 46 % of spectra.
  2. ¹³C satellite merge: for each peak i with I_i ≥ 0.01, if a peak j exists at m_i + 1.00335 ± 0.005 with 0.02 ≤ I_j / I_i ≤ 0.50, add I_j to I_i and delete j. False-merge rate from the +0.5 Da control ≈ 3 %; true-merge rate ≈ 71 % of strong peaks. Optionally keep n_C_estimate = I_j / (0.0107 I_i) as a per-peak feature — this is information Orbitrap-trained models never had.
  3. Cosmic-ray cut: delete peaks with I_rel × base_peak_intensity < 20 counts (7.1 % of peaks) or, when bpi is unavailable, peaks with m/z < 40 and I_rel < 0.001 (3.0 %). Do not use a relative threshold above 1e-4: 75 % of peaks are below 1e-3 and §1f shows they scale with abundance, not chemistry.
  4. Mass-axis correction: subtract 0.4 mDa from fragments below m/z 150 (or use an asymmetric window −3/+10 ppm) before any formula annotation.
  5. Sky weighting (optional, opposite sign to Hart 2024): multiply binned intensities by (df/N)^−0.25 where df is the 2 mDa-bin document frequency across enveda-180 structures; Hart found the positive exponent +0.25 helps library matching of the same compound, so for novel-structure retrieval the sign must be tested, not assumed.

How to measure: hold out ≥ 2,000 enveda-180 structures absent from training (InChIKey14-disjoint, precursor 245–460), train the fingerprint model twice (mask on/off at both train and inference), score MRR@25 on the same COCONUT-based candidate pools; also run the cross-instrument test — train on GNPS/MassBank only, evaluate on the held-out timsTOF set with and without the mask — because the hidden test is timsTOF while 54 % of train is not. A bootstrap over molecules (not spectra) gives the confidence interval; MassSpecGym reports that excluding precursor signals alone changes scores enough that they do it in the benchmark.

Does the analogy hold? It holds cleanly for the telluric component (precursor family and ¹³C satellites: fixed offsets, instrument-caused, zero chemical information lost except the carbon-count side channel) and reasonably for cosmic rays (the 9-count floor behaves like a read-noise threshold; sub-40 spikes do not recur). It breaks for sky: there is no off-target exposure, the recurring ions are molecule chemistry (and library-specific chemistry — an enveda-180 "sky" would subtract real NP furan/phenol ions), and the best published evidence (Hart 2024) says common peaks should be up-weighted for library matching. It also breaks on the most basic point: in astronomy the star's spectrum is a smooth continuum with known line lists, whereas fragments are the discrete signal, so every "mask" risks deleting signal — the +0.5 Da control and the n_C side channel are the only reasons the satellite merge is safe.

Gotchas / what could fool us

  1. Peak count encodes concentration, not chemistry. In enveda-180 Spearman(bpi, n_peaks) = +0.71; the weakest tercile has a median of 30 peaks, the strongest 332, and 96 % of the extra peaks are < 1 %. Any feature derived from peak count/density, and any model fed un-thresholded lists, learns injection abundance. The hidden test's "median 138 peaks" is a dynamic-range statement.
  2. Default library cleaning deletes most of a timsTOF spectrum. matchms intensity_from = 0.001 removes 75 % of enveda-180 peaks; MassSpecGym's "> 300 fragments" rule discards ~25 % of enveda-180 spectra (p75 = 327); remove_noise_below_frequent_intensities (keep only > 2× the highest intensity that repeats ≥ 5 times) can wipe the lower half of an integer-count list (counts 9–60 each repeat 100k+ times). If training data were cleaned this way and test data are not, the distributions do not match.
  3. The precursor family masquerades as fragments. Peaks at precursor + 1.0034 (38.7 %) and + 2.0067 (21.7 %) exist in enveda-180 but in 6 % / 0.7 % of GNPS-Orbitrap. A model trained on train.parquet without masking learns that "+1 above precursor" is a timsTOF marker — harmless on the hidden test, but it makes any Orbitrap-vs-timsTOF validation look worse than it is.
  4. ¹³C satellites double the strong-peak count and shift binned representations. 71 % of strong peaks carry a +1.0034 twin (3 % by chance); with 0.1 Da bins (MS2DeepScore) the twin lands 10 bins up, with 0.01 Da bins (MassSpecGym) 100 bins up. Orbitrap training sets have 14 %.
  5. Low-mass +5 ppm bias. Fragment formula assignment with a symmetric ±5 ppm window rejects about half the true C5–C9 fragment ions on enveda-180; SIRIUS-style default MS2 tolerances (10–20 ppm) are safe, "tight" custom tolerances are not.
  6. The precursor is absent in 54 % of enveda-180 spectra (69 % present in GNPS-Orbitrap, 100 % in RIKEN/MassBank as base peak in half the cases). Cosine-type scores that implicitly reward the precursor match behave differently across libraries.
  7. Two trimming conventions inside Enveda's own data. enveda-180 allows peaks up to precursor + 2.12 Da, np-examples strictly ≤ + 2.00; the hidden test may follow either. Never let a +2.0067 peak count as evidence against a candidate.
  8. Chimeric library garbage in GNPS-QTOF and MoNA. 25 % of GNPS-QTOF peaks and 10 % of MoNA peaks lie above precursor + 2 (p95 of max(m/z − precursor) > 1,000 Da) — MS1 or wrong-precursor entries. Training on them teaches that super-precursor peaks are normal; MassSpecGym's rule (drop if any peak > precursor + 3 with > 20 % intensity) is the minimum.
  9. base_peak_intensity is not comparable across libraries. NaN for MassBank/MoNA/Pluskal/RIKEN, literal 100 for 25 % of GNPS-Orbitrap rows, true counts only for Enveda and part of GNPS; any absolute-intensity feature silently becomes a library indicator.
  10. The odd/even count fingerprint (odd counts 20 % more frequent than even between 21 and 60) identifies the instrument from intensities alone — a leakage channel in any library-mixed validation, irrelevant on the all-timsTOF hidden test.
  11. In-source fragments as precursors are undetectable from the list. 82 % of 214 natural compounds showed ISF on an Orbitrap source (Chen 2023), terpenoids sometimes with < 1 % surviving parent; train.parquet contains 21,682 [M-H2O+H]+ rows that were labelled only because the structure was known. On the hidden test the adduct label is Enveda's guess; a wrong guess shifts every candidate mass by 18.011 (or 162.053 for a hexose).
  12. Dimers. [2M+H]+ (92,041 rows) and [2M+Na]+ (190,033) fragment like [M+H]+ plus a monomer peak; if the test adduct string says 2M, divide the neutral mass by two before retrieval.
  13. The M+1 ratio is a free carbon count — and a trap. M+1/M ≈ 0.011 × n_C only if M and M+1 were transmitted equally; §1h shows they nearly are (ratio p50 = 0.18 fits C16–C17, the library's typical size), but at the window edge the ratio becomes m/z-dependent; use it as a soft feature, not a filter.

Implications for the challenge

  1. Build the timsTOF telluric mask (recipe above) as the first preprocessing module and A/B it on an InChIKey14-disjoint enveda-180 hold-out with MRR@25; keep precursor_present, precursor_rel_intensity, and the ¹³C-derived n_C_estimate as scalar side features.
  2. Never apply relative-intensity thresholds above 1e-4 to timsTOF lists; use the absolute 20-count cut instead (bpi is given in test.parquet). If a trained public model requires intensity_from = 0.001, expect it to see 25 % of each spectrum.
  3. Fragment tolerance for formula/subformula annotation on timsTOF: max(10 ppm, 2 mDa), asymmetric (−3/+10 ppm) below m/z 150, or recalibrate by −0.4 mDa; do not reuse Orbitrap-tuned 5 ppm.
  4. Strip peaks above precursor + 2.2 Da from every training library and drop spectra with > 20 % intensity above precursor + 3 (MassSpecGym rule) before training — GNPS-QTOF and MoNA are the offenders.
  5. Normalise peak count away: feed models a fixed top-K (K = 100–150, the hidden median is 138) after the mask, or sqrt/log-intensity with K-cap, so that abundance does not leak through peak density; validate that MRR@25 is flat across base-peak terciles.
  6. Treat [M+H]+ as a hypothesis: for candidates failing to explain the spectrum, also query COCONUT at M + 18.0106 (water-loss precursor), M + 162.0528 (hexose) and M + 146.0579 (deoxyhexose) and let the ranker decide; the cost is pool size, the upside is the ISF-prone terpenoid/glycoside slice of the test.
  7. Do not subtract a "sky"; if anything, test IDF weighting of the 511 common bins as an ablation, with the opposite sign to Hart 2024 held as the null.
  8. Cross-instrument validation must include the mask on both sides, otherwise the Orbitrap→timsTOF gap is dominated by precursor-family and satellite artefacts rather than by fragmentation chemistry.

Open questions

  • Enveda's actual acquisition/export parameters (isolation width per m/z range, MS2 absolute threshold — the data say 9 counts — merging rule for 20/40/60 eV, trimming at + 2.0 vs + 2.12). The TIMS-Bench preprint (bioRxiv 10.64898/2026.05.23.724673) returned HTTP 429 on four attempts; its Methods would settle this.
  • Whether the 9-count floor corresponds to one, two or several ions on the timsTOF detector (Bruker publishes no single-ion count value); this decides whether the 9–20-count band is Poisson noise or weak real fragments.
  • Why enveda-180 shows P(M+2 | M+1) = 55 % but np-examples 7 % — different isolation widths, different export version, or an m/z-dependent window (3 Th above 700 is not relevant at 245–460)?
  • The actual MRR@25 delta of the telluric mask — untested; the recipe is derived, not validated.
  • Does the +0.4 mDa low-mass bias hold on the hidden-test instrument/period (calibration drifts; train spans an unknown time range)? Check on the visible decoy test rows (they are enveda-180 rows, so yes for those).
  • Precursor-purity statistics for pure standards on a timsTOF (no publication found); msPurity's numbers are for complex samples.

Sources

  • Local: C:\Temp\casmi26\data\train.parquet (official Kaggle download, 2026-10-07); scripts research/q1_instrument_physics/noise_artifacts_measure.py and noise_artifacts_followup.py; raw JSON noise_artifacts_measurements_raw.json, noise_artifacts_followup_raw.json; research/_meta/train_eda.md; research/q1_instrument_physics/tims_qtof_mechanics_mass_accuracy_resolution.md §2 (isolation, Kaggle +2 Da trim statement); earlier attempt's noise_stats.json (20k-row sample; max peaks 7,915).
  • Meier F. et al. 2018, "Online Parallel Accumulation–Serial Fragmentation (PASEF) with a Novel Trapped Ion Mobility Mass Spectrometer", Mol Cell Proteomics 17:2534, DOI 10.1074/mcp.TIR118.000900, PMC6283298 (isolation width 2 Th < m/z 700, 3 Th > 700; target 20,000 a.u.; m/z 100–1700).
  • Lawson T. N. et al. 2017, "msPurity: Automated Evaluation of Precursor Ion Purity for Mass Spectrometry-Based Fragmentation in Metabolomics", Anal Chem 89:2432, DOI 10.1021/acs.analchem.6b04358, PMID 28194963 (abstract via Europe PMC REST).
  • Chen L. et al. 2023, "Widespread occurrence of in-source fragmentation in the analysis of natural compounds by LC-ESI-MS", Rapid Commun Mass Spectrom 37:e9519, DOI 10.1002/rcm.9519, PMID 37038638 (abstract via Europe PMC REST).
  • Xue J. et al. 2020, "Enhanced In-source Fragmentation Annotation Enables Novel Data Independent Acquisition and Autonomous METLIN Molecular Identification", Anal Chem 92:6051, DOI 10.1021/acs.analchem.0c00409, PMC8966047 (full text).
  • Guo J. et al. 2021, "ISFrag: De Novo Recognition of In-Source Fragments for LC-MS Data", Anal Chem 93:10243, DOI 10.1021/acs.analchem.1c01644, PMID 34270210 (abstract).
  • Guo J., Huan T. 2020, "Comparison of Full-Scan, Data-Dependent, and Data-Independent Acquisition Modes in LC-MS Based Untargeted Metabolomics", Anal Chem 92:8072, DOI 10.1021/acs.analchem.9b05135, PMID 32401506 (abstract; not an ISF-rate paper).
  • Pan et al. 2008, "A non-covalent dimer formed in electrospray ionisation mass spectrometry behaving as a precursor for fragmentations", Rapid Commun Mass Spectrom, DOI 10.1002/rcm.3767 (search-result excerpt only; confidence medium).
  • Engler Hart C., Kind T., Dorrestein P. C., Healey D., Domingo-Fernández D. 2024, "Weighting Low-Intensity MS/MS Ions and m/z Frequency for Spectral Library Annotation", J Am Soc Mass Spectrom 35:266, DOI 10.1021/jasms.3c00353, PMC10854760 (full text).
  • Bushuiev R. et al. 2024, "MassSpecGym", arXiv 2410.23326 (full text, §3.3 and Appendix 2.3 "Data cleaning", Table 2).
  • matchms source: matchms/filtering/default_pipelines.py, peak_processing/remove_peaks_relative_to_precursor_mz.py, remove_noise_below_frequent_intensities.py, remove_peaks_around_precursor_mz.py (master, raw.githubusercontent.com) and https://matchms.readthedocs.io/en/latest/api/matchms.filtering.html.
  • MS2DeepScore: ms2deepscore/SettingsMS2Deepscore.py and README (github.com/matchms/ms2deepscore, main).
  • MIST: README (github.com/samgoldman97/mist, master) and the MIST supplementary text already in the hive scratchpad (mist_si.txt, peak-dropout augmentation algorithm).
  • SIRIUS v6 documentation, "Methods and algorithms" (https://v6.docs.sirius-ms.io/methods-background/): DDA isotope peaks in MS2 are flagged and ignored; single-ion-species assumption. OpenMS SiriusAdapter docs: noise = median intensity of noise peaks, default 0.
  • "Simplifying MS1 and MS2 spectra to achieve lower mass error, more dynamic range, and higher peptide identification confidence on the Bruker timsTOF Pro", PLoS One 2022, DOI 10.1371/journal.pone.0271025 (detector saturation, mass-defect filtering numbers).
  • Generic TOF detection/ADC noise statements: USPTO patents retrieved by search (e.g. US 11,881,387 "TOF MS detection system with improved dynamic range"; EP2621089 "Data processing method and device" for ringing) — search-result excerpts, confidence low; no Bruker-specific numbers found.
  • Bruker MetaboScape/T-ReX intensity-threshold example (1,500 counts, MS1 feature finding): Bruker application note excerpt via search (news-medical.net whitepaper mirror), confidence low.
  • NOT retrieved: Enveda TIMS-Bench preprint (bioRxiv 10.64898/2026.05.23.724673, HTTP 429 ×4); SIRIUS 4 book-chapter preprint (HTTP 503 ×2); ACS full texts (HTTP 403).