Skip to content

docs(hardware): measure the report step and the clinical pipe before the Rust port - #352

Merged
GeiserX merged 4 commits into
GeiserX:mainfrom
geiresx:pgp/rust-m0
Nov 9, 2026
Merged

GeiserX merged 4 commits into
GeiserX:mainfrom
geiresx:pgp/rust-m0

Conversation

@geiresx

@geiresx geiresx commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Before we port OwnGenome's own code to Rust we need numbers to beat. Two were missing from the hardware page. The runtime table said "not measured" for the HTML report, because run-all.sh writes both reports outside Nextflow's trace. And step 23 had one total time, with no way to tell whether bin/csq_rank.awk, the bcftools decode or the compression is the slow part. That decides whether porting the awk to Rust makes the step faster at all.

Fix

Two new sections in docs/hardware-requirements.md, each with its numbers and the exact commands that produced them:

  • The report step. The HTML report takes 11-15 s at about 0.4 GB, and the text report takes as long again. Nearly all of that is collecting summary.json, which each of the two scripts does separately (82% of it is reading the small-variant VCF in Python). Rendering from a finished summary.json takes under half a second. The two reports together take about 25 s, not the 1-3 minutes the page estimated.
  • The clinical filter, stage by stage. We put pv on each edge of the two pipes and timed each stage alone. csq_rank.awk is the saturated stage: about 135 s of the main pipe's 157-171 s. bcftools decodes the same 20 GiB stream in 28 s and compresses the result in 2.5 s. Adding --threads 2 to both bcftools view calls makes no difference (154-173 s, same records), so that one-flag change is not worth shipping. A faster ranker could bring the pipe down toward the decode time, about 25-30 s.

Rows 23 and 24 of the runtime table now link to these sections. Row 24 keeps its estimate as the end-test figure, because assets/steps.tsv feeds that estimate to the ETA and this PR does not change it.

No code, option, config key or output changes. The docs contain only aggregate numbers and commands.

Decisions:

  • The plan named a separate docs/owngenome-baseline-2026-11.md page. A new page also needs a nav entry in zensical.toml, or the site check fails. The plan's lane note puts these numbers in docs/hardware-requirements.md anyway, so they go there and nothing else changes.
  • There is no CHANGELOG.md in the repo, so this PR adds none.
  • We did not start a new traced e2e run (E2E_TRACE=true). It takes one serial runner leg of about 4-6 hours and records only per-case times and which files each case reads, which the sharded runs already give us. It measures neither the report step nor the clinical pipe.

How it was checked

Bead: pgp-bs9u.3

…the Rust port

The runtime table had no time for the two reports (run-all.sh writes them
outside the trace) and no breakdown of step 23. Both were measured on the
three end-test genomes and are written down with the commands that took
them, so the Rust port has a baseline to beat:

- the HTML and text reports take 11-15 s each at about 0.4 GB, almost all
  of it collecting summary.json (each script collects it again); rendering
  is under half a second;
- in step 23's main pipe csq_rank.awk is the saturated stage (about 135 of
  157-171 s); bcftools decodes the same stream in 28 s, and --threads 2
  changes nothing.

Bead: pgp-bs9u.3
@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 33 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between d94837a and bf14b7f.

Files selected for processing: 1

  • docs/hardware-requirements.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@GeiserX
GeiserX merged commit 0f26a1e into GeiserX:main Nov 9, 2026
44 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.

2 participants