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

pirl-unc / tcrsift / 25876362774

14 May 2026 05:57PM UTC coverage: 75.141% (+0.6%) from 74.553%
25876362774

push

github

web-flow
Fix #67: extended assembly QC + structured report + visualization (#71)

Closes #67. Pre-#69 QC silently passed when c_gene was missing — that
hole hid the #66 truncated-constant bug. #69 added a strict-mode
canonical-ending / canonical-start check; this PR fills out the
defense-in-depth checks #67 actually asked for plus a structured
report shape and a viz so regressions can't hide behind unstructured
log lines.

Extended per-row checks in `validate_sequences`:

- Constant length floors per chain (`CONSTANT_AA_FLOOR`): α ≥ 100,
  β ≥ 150 aa. Catches truncations that hid behind long leaders.
- β-chain J→C in-cis parity (`BETA_JC_PARITY`): TRBJ1-* must pair
  with TRBC1, TRBJ2-* with TRBC2. Disagreement is an annotation or
  assembly bug; allele suffixes are stripped.
- Byte-for-byte `full_{chain}_aa == leader + vdj + constant` when
  all three parts are present.
- No premature `*` mid-chain (frame-error tell).
- Methionine start when a leader was included.
- Standard residue alphabet only (20 AAs + X + *); flags lowercase,
  digits, and the ambiguous codes B/J/Z that have leaked from test
  fixtures.
- Single-chain (β-linker-α) checks: linker present exactly once,
  byte-for-byte construct equality, canonical 2A peptide AA when the
  linker matches a known 2A name.

Structured report (`AssemblyQCCheck` + `AssemblyQCReport`):

- `build_assembly_qc_report(df)` returns the structured object;
  `assemble_qc_report(df)` keeps returning the formatted string by
  delegating to `format_text()`.
- Each check carries name, label, chain, pass/fail counts, optional
  median + unit, and up to 3 example failures.
- `.to_dataframe()` for programmatic access; `.passed` for boolean
  gating; `__str__` defers to `format_text`.

Visualization (`plot_assembly_qc(report, output_path=None)`):

- Stacked horizontal bar per check (green pass, red fail) with row
  annotations showing X/Y plus median where applicable.
- Title encodes PASS/FAIL status + row count.
- Saves to fi... (continued)

5731 of 7627 relevant lines covered (75.14%)

3.01 hits per line

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

52.71
/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