Skip to content

2.16.0 — three named modes, and SHM that stops at Cys104 - #97

Merged
mikessh merged 2 commits into
masterfrom
release/2.16.0
Aug 10, 2026
Merged

mikessh merged 2 commits into
masterfrom
release/2.16.0

Conversation

@mikessh

@mikessh mikessh commented Aug 10, 2026

Copy link
Copy Markdown
Member

⛔ Two breaking changes

1. arda rnaseq run is 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.

was now
arda rnaseq run … --prefilter arda rnaseq …
arda rnaseq run … --two-pass --fast-segments --v-only-on-segment arda amplicon …
arda rnaseq run … arda rnaseq … --exact
arda rnaseq map/correct/assemble arda map/correct/assemble
arda rnaseq split/reduce/slurm arda cluster split/reduce/submit
arda split/merge/slurm arda cluster split-fasta/merge/submit-fasta

arda singlecell is reserved and exits non-zero with a not-implemented message (design in ROADMAP).

⚠ Mode defaults change behaviour: arda rnaseq enables --prefilter (~0.15 % of mapped reads, 122 bulk datasets) and each mode's --ec-mode defaults to its own regime. --exact --ec-mode fast reproduces the pre-2.16.0 output.

2. v_identity / v_mutations / j_mutations are scoped to the FRAMEWORK.

This 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 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 example TRBV28*02's v_identity was 0.8723 and is now 1.0000.

New --shm framework|both|off, and a standalone arda shm that 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*01 64 reads vs TRGJ1*02 140 on one junction, invisible to every error model) and allele-only tie lists. --no-isotype.

Install path, fixed by actually running setup.sh

  • arda.__version__ and pyproject.toml's version are two independent literals and they disagreed — a release could ship reporting the previous version. Now pinned by a test.
  • --tests ran a pytest that was never installed and swallowed the failure under || true.
  • Nothing verified the C++ extensions built (arda silently falls back to pure Python).
  • A stale build/ from a deleted venv broke every on-import rebuild.
  • pybind11 was unbounded; docs/installation.rst still described a conda setup.sh.

Verification

  • pytest tests/unit tests/synthetic tests/realworld791 passed, 9 skipped
  • ruff==0.15.9 (CI's pin) clean on src/
  • make html SPHINXOPTS="-W --keep-going" — zero warnings
  • setup.sh --tests re-run end to end from a clean tree
  • The SHM regression tests were verified to fail without the fix (7 of 8; the eighth is a no-anchor case that is correct either way)

🤖 Generated with Claude Code

mikessh and others added 2 commits August 10, 2026 15:14
⛔ 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>
@mikessh
mikessh merged commit fdadf5d into master Aug 10, 2026
1 check passed
@mikessh
mikessh deleted the release/2.16.0 branch August 10, 2026 12:35
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