Skip to content

release: 0.7.0 - #213

Merged
RobbinBouwmeester merged 2 commits into
mainfrom
release/0.7.0
Oct 18, 2026
Merged

RobbinBouwmeester merged 2 commits into
mainfrom
release/0.7.0

Conversation

@RobbinBouwmeester

Copy link
Copy Markdown
Member

Release 0.7.0. A minor release: it reads a new kind of data and changes what a search finds.

What 0.7.0 brings (CHANGELOG ## [0.7.0]):

Release commit

  • The version bump in the same 8 files as 0.6.0: the workspace Cargo.toml and Cargo.lock, the desktop Cargo.toml, tauri.conf.json and Cargo.lock, docs/14, bench/pb_eval.py and sbom.cdx.json.
  • CHANGELOG: Unreleased becomes ## [0.7.0] - 2026-10-18, with a preamble on why it is minor. The two diaPASEF gate entries are merged, and entries that still said opt-in are reconciled with the defaults.

Still to come on this PR

  • Validation against the v0.6.0 tag, each version on its own defaults (hippogriff):
    • the six-file Astral HYE experiment (timing);
    • ProteoBench Astral entrapment, Orbitrap AIF E. coli entrapment and single-cell HeLa species entrapment, three NN seeds per arm;
    • 22 HeLa runs and one single cell.
  • Then a second commit with the measured numbers in the CHANGELOG preamble.
  • Dry runs: release.yml and docker.yml dispatched on this branch; neither publishes anything.

Tag only after main's CI on the merge commit has finished: the release gate requires a successful ci.yml run for the tagged SHA.

🤖 Generated with Claude Code

RobbinBouwmeester and others added 2 commits October 18, 2026 12:42
A minor rather than a patch release: it reads a new kind of data and changes
what a search finds.

- Bruker diaPASEF (.d) is read natively with ion mobility through the
  library, extraction, features, a raw-event retrace and cross-run
  quantification (docs/35_diapasef.md); on diaPASEF input a second
  extraction gate, an MS1 noise filter and search anchors are on by default.
- run-experiment matches between runs with a second pass over an empirical
  library of the pooled first pass (mbr.strategy = "second_pass").
- rt_im_train.multihead_anchors = "auto": the adapting run refits its
  multi-head RT calibration on search anchors when its seed found few.
- rescore.prefilter_keep_decoys = 0.35: only PSMs an out-of-fold linear model
  scores above 35% of the decoys go to the classifier.

Version bumped in rust/mumdia/Cargo.toml (workspace), desktop/src-tauri/
Cargo.toml, desktop/src-tauri/tauri.conf.json, docs/14 and bench/pb_eval.py;
lockfiles refreshed with cargo update, sbom.cdx.json versions bumped.
CHANGELOG: Unreleased becomes 0.7.0, the diaPASEF gate entries are merged
and entries that said opt-in are reconciled with the defaults.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rescore.prefilter_min_psms (default 1,000,000): a smaller pool goes to the
classifier whole. The prefilter is a speed and memory lever for large pools.
The 0.7.0 release check found the one place it cost identifications: the
Orbitrap AIF E. coli entrapment run (27,376 PSMs), rescored three times per
arm on the stored competed tables, gave 11,644 against 11,798 real
precursors at an entrapment FDP of 1% (-1.3%) at an unchanged FDP at q 1%,
for 7.9 instead of 9.8 s. Every pool measured from 1.8 million PSMs up
(HYE Orbitrap, six Astral runs, 24 single cells pooled, 22 HeLa runs, six
diaPASEF runs) was within seed noise or better, and keeps the cut.
The 0.6.0 and 0.7.0 competed tables of that run rescore bit-identically, so
the prefilter was the whole difference there.

0 cuts every pool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RobbinBouwmeester

Copy link
Copy Markdown
Member Author

Release check: v0.6.0 against the 0.7.0 candidate

Setup:

  • Engines: the v0.6.0 tag against main at efdbfbc (the engine of this PR before fb9c060).
  • Configs: each version on its own defaults, with one config holding paths, nn_torch and q_filter.
  • Environment: one DeepLC 4.5 environment; hippogriff, timing arms alone on the host.
benchmark 0.6.0 0.7.0 candidate FDR
six-file Astral HYE (run-experiment, NN seed 0) 133,135 peptides experiment-wide; 696,882 per-run precursors; 10:31, 23.3 GB 129,796 experiment-wide (-2.5%); 709,354 per-run precursors (+1.8%), per-run peptides +2.8%; 9:42, 22.9 GB
ProteoBench Astral entrapment (3 runs, 3 NN seeds) 91,778 precursors experiment-wide; 240,600 per run 90,472 (-1.4%); 249,097 per run (+3.5%) paired FDP 0.86/0.90/0.89% vs 0.85/0.85/0.91%
Orbitrap AIF E. coli entrapment (3 NN seeds) 11,850 real precursors at FDP 1% 11,747 (-0.9%) FDP at q 1% 1.06-1.09% vs 1.03-1.11%
single-cell HeLa B8 species entrapment (3 NN seeds) 15,787 real at FDP 1% 16,333 (+3.5%) FDP at q 1% 0.78-0.96% vs 0.89-1.05%
22 single-cell HeLa runs (run-experiment) 355,171 human precursors per run; 24,128 peptides; 15:27, 44.2 GB 407,341 (+14.7%); 24,753 peptides; 12:55, 14.7 GB species FDP 1.52% -> 1.00% (precursor level 1.69% -> 1.18%)
one single cell (Cell_A C10), cold / warm cache 5,835 peptides; 4:11 / 1:04 6,376 (+9.3%); 5:09 / 2:15

Reading:

  • Experiment-wide counts: they fall on the Astral pools because second-pass MBR is now the default. The second pass searches only what the pooled first pass accepted, so experiment-wide counts fall by 1.4-2.5% while per-run counts rise. mbr.strategy = "none" restores 0.6.0. The candidate's own first pass on the six-file experiment was 132,515 peptides (-0.5%, one seed).
  • Single cells: the cell and HeLa gains come from search anchors (multihead_anchors = auto, below 2,500 seed anchors). The extra minute per cell is that refit; the projection cache keeps it to about 70 s.
  • AIF entrapment (-0.9%): this was the prefilter, so fb9c060 now limits it to pools of at least 1 M PSMs.
    • Evidence: the 0.6.0 and candidate competed tables rescore bit-identically, and on them the prefilter gave 11,644 against 11,798 real precursors (-1.3%, FDP unchanged), saving 2 s of a 10 s rescore.
    • Effect: with the guard, single runs of that size are scored as in 0.6.0.
  • diaPASEF: 0.6.0 cannot read .d natively, so there is no baseline; see docs/35 section 16.

Dry runs on this branch: release.yml (4 engine archives, MSI, Linux desktop) and docker.yml are green.

@RobbinBouwmeester
RobbinBouwmeester merged commit 3f11cba into main Oct 18, 2026
12 checks passed
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