• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pirl-unc / tcrsift / 26686040337

30 May 2026 02:16PM UTC coverage: 78.886% (+0.2%) from 78.701%
26686040337

push

github

web-flow
2.4.0: fix #116 — codon optimizer + dual stops + NT triad (#117)

* 2.4.0: fix #117 — motif-aware codon optimizer + dual stops + NT triad

Add an in-house, dependency-free codon optimizer (`optimize_codons`)
that walks synonymous codons in CAI-descending order with 1-codon
lookahead, rejecting picks that introduce a forbidden motif. Default
motif set covers ≥5-mer mononucleotide runs and 10 common Type-II
restriction sites (EcoRI / BamHI / HindIII / NdeI / NheI / NotI /
SalI / XbaI / XhoI / KpnI). Greedy without lookahead got stuck on
F+P+P in TRBC1 (terminal C of F joining two P codons into a 6-mer
C run); lookahead-1 fixes it.

Add `stop_codons=("TAA", "TGA")` parameter to `assemble_full_sequences`
and `get_constant_region_sequences`. The dual default uses two
non-redundant stops (different release factors → reduced read-through
in synthesized constructs). Validated upfront — invalid codons raise
`ValueError`. CLI flag `--stop-codons` exposes it.

Emit a per-chain NT triad on assembly output:
- `{chain}_constant_nt_assembly` — pure CellRanger contig bytes past
  the J→C junction. `None` when no contig. Useful for QC + allele
  detection with zero canonical splicing.
- `{chain}_constant_nt_optimized` — codon-optimized canonical CDS +
  stops. Same string for every donor with the same picked allele.
- `{chain}_constant_nt` — assembly-aware blend (donor where it
  agrees with canonical, optimized for the rest). Unchanged behavior
  vs 2.3; kept as alias / default for back-compat. Same triad on
  `full_{chain}_nt`.

Fix latent picker stop-codon bug: when the #113 allele picker
overrode the canonical via `back_translate(canonical_aa)`, the
trailing stop codon was dropped. Now threaded consistently via
`stops_nt`; explicit-override and auto-detect branches both emit
stops.

Other fixes:
- `_add_single_chain` now strips ALL trailing stops (not just one)
  before splicing the linker, so the dual-stop default doesn't
  leave a residual stop upstream of T2A.
... (continued)

6983 of 8852 relevant lines covered (78.89%)

3.15 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

52.63
/cli.py


Source Not Available

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc