Skip to content

docs(quant): dated quantification numbers; bench: ProteoBench submission options - #229

Merged
RobbinBouwmeester merged 9 commits into
mainfrom
quant/docs-submission
Oct 28, 2026
Merged

RobbinBouwmeester merged 9 commits into
mainfrom
quant/docs-submission

Conversation

@RobbinBouwmeester

Copy link
Copy Markdown
Member

Summary

Two changes that do not alter any engine output.

  • Documentation. The quant.fixed_scan_halfwidth and quant.fragment_selection reference text and docs/12 quoted measurements of earlier pipelines as current. Each number now carries its pipeline version and ion filter. docs/12 states that the second-pass trace pad applies only to spectra with 1/K0, and adds "Fragment selection under interference", which documents how the default observed_area top-3 rule compresses the ratios of the minor species when fragments are interfered.
  • bench/make_proteobench_submission.py. New options, defaults unchanged (with no option the output is byte-identical to the previous script):
    • --quantity {raw,maxlfq,aligned}: aligned aligns the replicates within each condition (label-blind, cannot change composition); maxlfq submits the MaxLFQ precursor column, also aligned within conditions.
    • --condition-gate: keeps an ion's values in a condition only if one of its runs has a first-pass identification at run_psm_q <= 0.01, derived from first_pass/scored_combined.parquet (or the first-pass flag column where present).
    • A summary of ion counts and finite-ratio counts per species, because the gate removes far more finite ratios than the ProteoBench ion count shows.

Validation

  • --quantity raw with no other option: byte-identical submission tables on the Astral, AIF and Low Input benchmark runs.
  • Offline ProteoBench scoring of every option on the same runs; the gated tables equal the gate derived independently from the scored tables.
  • python ci/check_doc_refs.py and python ci/gen_config_reference.py --check pass locally; the Rust change is doc comments only.

🤖 Generated with Claude Code

RobbinBouwmeester and others added 6 commits October 27, 2026 14:58
The quant.fixed_scan_halfwidth and quant.fragment_selection reference text
and docs/12 quoted 2026-08/10 measurements as current. Each now names its
pipeline and ion filter, next to what 0.8.0 measures: 0.218 global /
0.294 species-weighted on ProteoBench Astral under the old filter (at least
2 runs per condition), and the walked against fixed window on fixed IDs.

docs/12 also states that the second-pass trace pad is 4D-only, with the
measured 3D clipping on ProteoBench Astral, and documents how the default
observed_area top-3 rule compresses minor-species ratios under
interference, with the predicted and cross_run arms. Regenerated docs/24
and configs/config-schema.json. No code or output change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d counts

make_proteobench_submission.py gains three options. With none of them the
output is the raw peptide_quant.quantity, byte-identical to the previous
script on four fixed-ID reruns.

- --quantity maxlfq submits the precursor table of the cross-run MaxLFQ
  output (lfq_maxlfq.parquet.precursor.parquet), mapped to each input by
  the experiment run index from experiment_manifest.json.
- --quantity aligned aligns the replicates within each condition: per run,
  the median over its ions of log2 quantity minus the ion's condition mean.
  It reads no species label and cannot change composition or the offset
  between conditions.
- --condition-gate keeps an ion's values in a condition only if one of its
  runs quantified the ion and identified it in the first pass at
  run_psm_q <= --gate-q (rule F1 of prov_filter.py), read from a
  first_pass_id column when the quant tables carry one, else from
  first_pass/scored_combined.parquet, so it works on existing runs.

The last stderr line now gives the ProteoBench ion count and the
finite-ratio count per species and condition pair (--summary-json writes
the same), because the gate removes far more finite ratios than ions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Measured on four fixed-ID reruns: the MaxLFQ size factors move every
ratio between conditions by one amount (species gaps unchanged, human
median moved), and the within-condition offsets average to about zero
per condition, so aligned changes the ratio of an ion mainly where a
replicate is missing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its size factors differ between the runs of one condition as well, so on
AIF it lowers the CV like the aligned option does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The summary line counted ions over HUMAN, YEAST and ECOLI flags for every
module. The Low Input module maps only HUMAN and YEAST, so ions with an
E. coli flag were dropped or treated as ambiguous and the count differed
from ProteoBench's (43,240 against 43,229 on the Low Input rerun).
--species sets the flags; the default is unchanged and the TSV is not
affected.

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

The run index fallback took the directory name of the resolved path, so a
staged tree of links r<i>/peptide_quant.parquet pointing at quant-arm
tables (pq_<i>.parquet) was refused. The path as given is tried first, the
resolved path second; a path in the manifest is matched as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RobbinBouwmeester
RobbinBouwmeester merged commit dcf56ab into main Oct 28, 2026
12 checks passed
RobbinBouwmeester added a commit that referenced this pull request Oct 28, 2026
…238)

The documentation that #229 added describes the quantification trace pad as
4D-only; with this branch it applies to every second pass, so those passages
are rewritten in the past tense and the duplicated pad bullet is dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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