Skip to content

2.36.0 — a junction naming neither V nor J gets a locus proposed too - #146

Merged
mikessh merged 1 commit into
masterfrom
release/2.36.0
Sep 30, 2026
Merged

mikessh merged 1 commit into
masterfrom
release/2.36.0

Conversation

@mikessh

@mikessh mikessh commented Sep 30, 2026

Copy link
Copy Markdown
Member

2.34.0 proposed a missing V or J from the junction, but only within the locus the other side named. A record naming neither came back refused — no locus, no boundary, nothing for a nucleotide stage to work on.

There is no new rule here. Every locus the organism ships now competes, scored by the same anchor_depth from each germline's own anchor, and a locus only wins by explaining residues at both ends — which is what keeps a TRA junction out of TRD, where the V genes are shared and the J genes are not.

Measured

522 of VDJdb's curated chunks records name neither side (461 distinct keys). All 461 now get a locus and 459 come back good, against none before.

The check is VDJdb's own filing: the proposed locus agrees with the cdr3.alpha / cdr3.beta column the record was filed under on 457 of 461 (99.13 %) — 318 TRB, 139 TRA. All four disagreements are CACD…DKLIF, which is TRDV2's own anchor and TRDJ1's own ending, in a schema with no δ column.

The floor is measured too

Each end must explain its own anchor residue or no locus is named. Without it a junction agreeing with nothing (QQQQQQQQQQQQ) reached depth 0 on both ends of every locus and was still handed TRA. Over the 461 real keys the winning locus clears the floor on every one — 16 at depth 1, 200 at 4, 156 at 5.

The audit instrument was blind to this

scripts/audit_cdr3fix.py required both a V and a J to be named, so the A/B could not see the rows 2.34.0 and this release change. Widened:

  • corpus 189,596 → 192,726 keys, digest rebases to 0df8541ed1060fe1
  • on the 189,596 keys the old filter kept, the digest is unchanged at 2b75491b380310aa — nothing that already worked moved

Why now

vdjtools 4.8.0's junction pipeline pins arda-mapper>=2.36.0: those 461 keys are the last of VDJdb's corpus that answered nothing.

Gate: 1,339 passed / 9 skipped. ruff check src/ clean. Docs build with -W, zero warnings.

🤖 Generated with Claude Code

2.34.0 proposed the missing side from the junction, but only within the locus
the *other* side named. A record naming neither came back refused: no locus, no
boundary, nothing for a nucleotide stage to work on.

No new rule. Every locus the organism ships now competes, scored by the same
`anchor_depth` from each germline's own anchor, and a locus only wins by
explaining residues at BOTH ends -- which is what keeps a TRA junction out of
TRD, where the V genes are shared and the J genes are not.

522 of VDJdb's curated `chunks` records name neither side (461 distinct keys).
All 461 get a locus and 459 come back `good`, against none before. The proposed
locus agrees with the `cdr3.alpha`/`cdr3.beta` column the record was filed under
on 457 of 461 (99.13 %) -- 318 TRB, 139 TRA -- and all four disagreements are
`CACD...DKLIF`: TRDV2's own anchor and TRDJ1's own ending, in a schema with no
delta column.

Each end must explain its own anchor residue or no locus is named. Without that
floor `QQQQQQQQQQQQ` agreed with nothing on every locus and was still handed
TRA; over the 461 real keys the winning locus clears it on every one.

scripts/audit_cdr3fix.py kept blank-side keys out. It required both a V and a J
to be named, so the A/B instrument was blind to exactly the rows 2.34.0 and this
release change. Corpus 189,596 -> 192,726 keys, digest rebases to
0df8541ed1060fe1; on the 189,596 the old filter kept, the digest is unchanged at
2b75491b380310aa, so nothing that already worked moved.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mikessh
mikessh merged commit 049553f into master Sep 30, 2026
3 checks passed
@mikessh
mikessh deleted the release/2.36.0 branch September 30, 2026 08:04
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