Skip to content

2.33.0 — the repair policy, and the D posterior moves to vdjtools

Choose a tag to compare

@mikessh mikessh released this 30 Sep 05:19
· 9 commits to master since this release
8156273

Closes #141, #142, #143, #144.

The repair policy: when it is not certain, flag it — do not change it

cdr3fix admits four edits, in this order, and rewrites nothing else:

  1. re-call the V or J when another allele explains 2 more residues contiguously from its own anchor and does not break an anchor the submission already holds;
  2. trim framework past that allele's anchor;
  3. add back germline the submission was cut inside of;
  4. substitute the first or last residue only, to the anchor, on a solid match.

A residue disagreeing with germline inside the templated run is reported (new mismatch flag) and left as submitted — a curation error and an allele IMGT does not record are indistinguishable from one junction. The previous behaviour turned CAAAETSYDKV{M,R,T,V}F on TRAJ50 into four copies of CAAAETSYDKVIF.

_RECALL_GAIN = 2 is measured against isalgo/airr_control's nucleotide-called V/J on 3,059 human TRA and 426 human TRB curation keys: the smallest margin at which no re-call moves a call away from the nucleotide answer.

Against the authoritative VDJdb 2026-06-03 release, all 187,488 keys

2.32.0 (unreleased) 2.33.0
repaired junction agrees 98.3604 % 99.8352 %
the release's own repairs reproduced 4,267/4,499 4,331/4,499
rewrites the release never ships 2,842 141
— into an already-canonical junction 2,744 35
non-canonical junctions shipped (release: 715) 709 677

arda ships fewer malformed junctions than the release it is measured against. Reproduce with scripts/compare_vdjdb_release.py.

BREAKING: arda.dpost moved to vdjtools.model.posterior_d

A posterior over the D gene marginalises model distributions, so it belongs with the recombination model (#144). Ported, not rewritten: identical field-for-field on 3,000 real human TRB junctions, and it gained the batch entry point #142 asked for. arda markup --d-posterior / --d-prior are gone. The prior table, its fitter and its new reader (arda.scenarios.load_prior_table) stay here.

Needs vdjtools>=4.8.0 for the posterior.

Also

  • v_alts / j_alts — the alleles a junction cannot separate travel with the answer, for the nucleotide stage to settle.
  • map_d_junction(v_end=, j_start=) — take the interior instead of re-deriving it from an inferred sequence.
  • arda.hmm deprecated: nothing consumes it, and vdjtools.model.infer_nt_batch answers the same question batched and in C++.
  • #143 is closed by the 2.32.0 port — there is no Python alignment DP in cdr3fix any more; throughput is 28,900 keys/s including the new per-record re-call.

1,312 tests pass.