2.16.0 — three named modes, and SHM that stops at Cys104 - #97
Merged
Merged
Conversation
⛔ BREAKING. `arda rnaseq run` is removed. It was the only pipeline entry point and
was used for amplicon libraries too, with the regime spelled out as four loose flags
that do not compose — and `--two-pass`, the one tuning flag it exposed for four
releases, is a LOSS in both regimes (0.762x bulk, 0.87x IGH amplicon). The regime is
now the command name: `arda rnaseq` / `arda amplicon`, each owning its own speed and
denoising configuration, `--exact` to opt out. `arda singlecell` is reserved and
exits non-zero. Stages are flat commands (`arda map|correct|assemble|shm`) and every
sharded/SLURM helper lives under `arda cluster`.
⛔ BREAKING. `v_identity` / `v_mutations` / `j_mutations` are scoped to the FRAMEWORK,
which retracts a guarantee docs/shm.rst printed until 2.14.0 and moves every SHM
number arda has published. Segment scoping is not junction exclusion: both germlines'
templated tails lie inside the junction, so chew-back read as substitution. Measured
on a TRA amplicon, where TCRs cannot hypermutate so every entry was spurious: 1.046 V
and 1.658 J entries per read, 86.2 % of the J ones at germline position <= 10. New
`--shm framework|both|off` and a standalone `arda shm` that rescopes an existing TSV
with no reference and no re-map.
Added `--call-level {allele,gene}` (collapses allele-level call splits — Jurkat's
TRGJ1*01 at 64 reads against TRGJ1*02 at 140 on one junction) and `--no-isotype`.
The Nextflow module names the mode instead of building the flag string, and pins 2.16.0.
Install path fixed after running setup.sh end to end from a clean tree: the two
version literals disagreed (now pinned by a test), `--tests` ran a pytest that was
never installed and swallowed the failure, nothing verified the C++ extensions built,
a stale build/ broke every rebuild, pybind11 was unbounded, and docs/installation.rst
still described a conda setup.sh.
Full suite green: 791 passed across tests/unit tests/synthetic tests/realworld.
Docs build zero-warning under -W. ruff 0.15.9 (CI's pin) clean on src/.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ered text typer renders errors through rich, in a box wrapped to the terminal width, so the substring assertion passed on an 80-column laptop and failed on the CI runner, which wrapped `--indel-rescue` across the line break. Assert what actually matters: non-zero exit, and `pipeline.run` never called. Same class as the `arda --help | grep` check setup.sh briefly had — do not parse rich output to test the CLI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
⛔ Two breaking changes
1.
arda rnaseq runis removed; the regime is the command name.It was the only pipeline entry point and was used for amplicon libraries as well, with the regime spelled out as four loose flags that do not compose — and
--two-pass, the one tuning flag it exposed for four releases, is a loss in both regimes (0.762× bulk, 0.87× IGH amplicon). The Nextflow module already worked around this by naming the regime and building the flag string itself; that workaround is now the CLI.arda rnaseq run … --prefilterarda rnaseq …arda rnaseq run … --two-pass --fast-segments --v-only-on-segmentarda amplicon …arda rnaseq run …arda rnaseq … --exactarda rnaseq map/correct/assemblearda map/correct/assemblearda rnaseq split/reduce/slurmarda cluster split/reduce/submitarda split/merge/slurmarda cluster split-fasta/merge/submit-fastaarda singlecellis reserved and exits non-zero with a not-implemented message (design in ROADMAP).⚠ Mode defaults change behaviour:
arda rnaseqenables--prefilter(~0.15 % of mapped reads, 122 bulk datasets) and each mode's--ec-modedefaults to its own regime.--exact --ec-mode fastreproduces the pre-2.16.0 output.2.
v_identity/v_mutations/j_mutationsare scoped to the FRAMEWORK.This retracts a guarantee
docs/shm.rstprinted until 2.14.0 and moves every SHM number arda has published. Segment scoping is not junction exclusion: both germlines' templated tails lie inside the junction, so chew-back was emitted as substitution against a germline that does not template it. Measured on a TRA amplicon — TCRs cannot hypermutate, so every entry was spurious by construction — 1.046 V and 1.658 J entries per read, 86.2 % of the J ones at germline position ≤ 10. On the committed exampleTRBV28*02'sv_identitywas 0.8723 and is now 1.0000.New
--shm framework|both|off, and a standalonearda shmthat rescopes an existing TSV with no reference and no re-map (it raises on a pre-2.14.0 file rather than copying it through with a success message).Added
--call-level {allele,gene}— collapses allele-level call splits (Jurkat:TRGJ1*0164 reads vsTRGJ1*02140 on one junction, invisible to every error model) and allele-only tie lists.--no-isotype.Install path, fixed by actually running
setup.sharda.__version__andpyproject.toml'sversionare two independent literals and they disagreed — a release could ship reporting the previous version. Now pinned by a test.--testsran apytestthat was never installed and swallowed the failure under|| true.build/from a deleted venv broke every on-import rebuild.pybind11was unbounded;docs/installation.rststill described a condasetup.sh.Verification
pytest tests/unit tests/synthetic tests/realworld— 791 passed, 9 skippedruff==0.15.9(CI's pin) clean onsrc/make html SPHINXOPTS="-W --keep-going"— zero warningssetup.sh --testsre-run end to end from a clean tree🤖 Generated with Claude Code