Skip to content

ci: opt-in large-dataset differential against STAR - #249

Open
BenjaminDEMAILLE wants to merge 1 commit into
mainfrom
ci/large-dataset-tests
Open

ci: opt-in large-dataset differential against STAR#249
BenjaminDEMAILLE wants to merge 1 commit into
mainfrom
ci/large-dataset-tests

Conversation

@BenjaminDEMAILLE

Copy link
Copy Markdown
Contributor

Closes #244.

Why

The suites in tests/ use a synthetic micro-genome and finish in seconds. That is why the two bugs reported from nf-core/rnaseq data (#31, #48) were invisible to them: both are about aggregate behaviour over tens of thousands of reads, not about one alignment.

What runs

test/nfcore_diff.py fetches the nf-core/rnaseq test dataset from public URLs (50 000 paired reads, S. cerevisiae chrI plus the GFP transgene — the same fixture the reporter used), builds both indexes, runs STAR and rustar-aligner, and compares:

  • uniquely mapped, multi-mapped, unmapped: too short, unmapped: other, each as a fraction of input reads;
  • the deepest multimapper (max NH), as a ratio.

Thresholds are the measured gaps plus headroom, so today's state passes and a regression trips them. --report-only prints the comparison and exits 0, which is what to use while a difference is being investigated.

Checked against a known regression

Run on main right now, the script fails on exactly the two buckets #247 fixes, and reports #31's depth gap:

metric                                         STAR     rustar      delta
Uniquely mapped reads number                  41691      41665    0.052%
Number of reads mapped to multiple loci         934        961    0.054%
Number of reads unmapped: too short            3766       7374    7.216%
Number of reads unmapped: other                3609          0    7.218%
deepest multimapper (NH)                         14         20      1.43x

FAILED:
  Number of reads unmapped: too short: 7.216% > 1.000%
  Number of reads unmapped: other: 7.218% > 1.000%

With #247 merged those two lines read 3778 and 3596, inside the thresholds.

How it is triggered

Opt-in, never on every push: manual dispatch, or the large-tests label on a pull request. The dispatch form takes a runner label, so it can be aimed at a scverse AWS runner without editing the workflow — that is the part of the issue I cannot do from here, since it needs the runner group to exist.

STAR comes from Ubuntu's rna-star package; building it from source would triple the job runtime without changing what is measured.

One note carried into the script: --readFilesCommand zcat yields zero reads on macOS for both aligners, silently, so the fixture is decompressed up front rather than piped.

🤖 Generated with Claude Code

The suites in tests/ use a synthetic micro-genome and finish in seconds, which
is why two reported bugs (#31, #48) were invisible to them: both are about
aggregate behaviour over tens of thousands of reads, not about one alignment.

test/nfcore_diff.py fetches the nf-core/rnaseq test dataset (50 000 paired
reads, S. cerevisiae chrI plus the GFP transgene), runs STAR and
rustar-aligner over it, and compares mapping rates, the unmapped-reason
buckets and the multimapper depth histogram. Thresholds are the measured gaps
plus headroom, so today's state passes and a regression does not; --report-only
prints the comparison without failing, for use while a difference is being
investigated.

The workflow is opt-in rather than per-push: manual dispatch, or the
`large-tests` label on a pull request. Dispatch takes a runner label, so it can
be aimed at a scverse AWS runner without editing the file.

Checked against a known regression: on main the script fails on exactly the two
unmapped buckets that #247 fixes, and reports the NH gap of #31 at 1.43x.

Closes #244.
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.

Enable middle/larger scale dataset tests

1 participant