v2.34.1 — walk a germline run once
A packaging release: identical answers, less time, and two invariants that used to hold only by
construction are now tests.
_extend walks a germline run once instead of three times. It is the hottest function in
markup_batch — 159,240 calls per 20,000 junctions — and it used to walk the same span to find the
run, then again to count agreement, then a third time to measure the leading exact prefix. The
offsets it agrees at are already collected on the first walk.
16,287 → 18,338 junction keys/s, so VDJdb's whole 189,596-key corpus marks up in 10.3 s in one
process. The audit decision digest over every one of those keys is unchanged at 2b75491b380310aa,
which is the check that matters: a count-equal, decision-different leg is invisible in a summary.
What a boundary promises is now pinned. Every residue v_end / j_start credits is germline of
the allele they name — measured at 185,636 of 185,636 V keys and 187,272 of 187,272 J keys that place
one, zero disagreements — and cdr3_repaired is a fixed point of itself on all 324 keys that take a
FixAdd. That is the guarantee a consumer applying the repaired junction relies on (#140).
And a functional segment's anchor. A functional V opens with Cys104 and a functional J closes with
Phe or Trp118 on 3,129 of the 3,130 functional entries carrying a templated region across all five
shipped organisms. The single exception is real germline: TRAJ35*01 is IMGT-functional and its
anchor codon is TGC. The test names it rather than repairing it away — asserting there are no
exceptions, or filtering on a [FW]GXG motif, deletes a functional gene from the vocabulary and every
read from it is then called as the nearest J that survived (#138).
Full changelog: https://github.com/antigenomics/arda/blob/master/CHANGELOG.md