Skip to content

perf(extract): skip the MS1 traces a retrace skeleton zeroes - #205

Merged
RobbinBouwmeester merged 9 commits into
tims/15-rescore-load-rssfrom
tims/16-extract-skip-ms1
Oct 17, 2026
Merged

RobbinBouwmeester merged 9 commits into
tims/15-rescore-load-rssfrom
tims/16-extract-skip-ms1

Conversation

@RobbinBouwmeester

Copy link
Copy Markdown
Member

Part of a stack on #196; merge in order: 9 -> 10 -> 11 -> 12 -> 13 -> 14 -> 15 -> 16 -> 17. Measured on the six ProteoBench HYE diaPASEF runs (60 min, timsTOF SCP) on a 128-core host at 120 threads, NN seed 0, MUMDIA_CACHE_DIR=off; docs/35_diapasef.md section 16 has the details.

Summary

About half of extract's busy time on a HYE diaPASEF run (gdb samples, ms1_near) was the MS1 reads of the three isotope traces per candidate, which the retrace skeleton then zeroed because retrace rebuilds those rows. The skeleton decision reads only a row's identity, so it is taken first and a zeroed row is written without being read; the table is unchanged. Part of the six-run measurement in the run-order PR (output bit-identical).

Checks

cargo fmt --check, cargo clippy --workspace --all-targets -D warnings, cargo test --workspace, ci/gen_config_reference.py --check, ci/check_doc_refs.py, python -m compileall scripts.

🤖 Generated with Claude Code

RobbinBouwmeester and others added 9 commits October 16, 2026 16:38
Extract writes three MS1 isotope traces (mono, +1, +2) per candidate, each
read on the candidate's grid as the maximum over the nearest MS1 scan and its
ms1_scan_halfwidth neighbours. When retrace follows, the skeleton then zeroed
every one of those rows, because retrace rebuilds them from the raw events.
gdb samples of a standalone extract of a HYE diaPASEF run put about half of
extract's busy time in those MS1 reads (ms1_near).

The skeleton decision reads only the row's identity (Skeleton::zeroes, the
rule retrace classifies by), so it is now taken first, and a row it zeroes is
written as zeros without being read. The chromatogram table is the one the
reading-then-zeroing wrote, and the apex MS1 reads that feed the features are
unchanged. Without retrace, or under retrace.ms1 = false, nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RobbinBouwmeester
RobbinBouwmeester added this pull request to stack #207 October 17, 2026 08:02
@RobbinBouwmeester
RobbinBouwmeester merged commit 177e663 into tims/7-docs-bench Oct 17, 2026
10 of 11 checks passed
@RobbinBouwmeester
RobbinBouwmeester deleted the tims/16-extract-skip-ms1 branch October 18, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant