Skip to content

ab1kit 1.1.0: clone verification, refreshed UI, CLI, Linux release - #1

Merged
adrobi merged 44 commits into
mainfrom
feature/clone-verification
Oct 31, 2026
Merged

adrobi merged 44 commits into
mainfrom
feature/clone-verification

Conversation

@adrobi

@adrobi adrobi commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Summary

ab1kit 1.1.0: clone verification of plasmid constructs becomes the main screen, plus analysis accuracy fixes, a refreshed UI, a CLI, an app icon and Windows + Linux release builds.

  • Clone verification (chrom_core/clones.py, ui/construct/*): load a construct (FASTA / GenBank / SnapGene, circular or linear), drop a folder of reads, reads are grouped into clones by file name (editable), set a region → per-clone verdict ok / errors / incomplete / mixed / no_data in a matrix on a shared axis; clicking a difference shows the chromatograms of all reads of the clone at that position. CDS effects (synonymous / missense / stop / frameshift / in-frame) when the construct is annotated. Projects (.ab1proj), CSV/XLSX reports.
  • Analysis accuracy: dye-normalised secondary-peak detection at any read position (peaks.py), circular alignment with origin-spanning reads, ambiguity = distinct placements.
  • UI: tabs, QSS light/dark theme, Lucide icons, one status palette, coloured quality bars, background tasks with cancel; main_window.py split into ui/read_view/*.
  • CLI: ab1kit verify-clones | qc | export (no Qt import on the CLI path).
  • Release: release.yml builds ab1kit.exe and ab1kit-linux-x86_64.tar.gz, smoke-tests the frozen CLI, one release job; CI gains an ubuntu-22.04 test leg. App icon (SVG → PNG/ICO).
  • Fixed (pre-existing): reverse-strand reads were indexed in the wrong orientation in expected-SNP verification and the reference overlay; reverse-complement misplaced peak positions (sessions saved after a flip with ≤1.0.0 hold wrong peaks — see CHANGELOG).

Design spec: docs/superpowers/specs/2026-10-25-clone-verification-design.md · plan: docs/superpowers/plans/2026-10-25-clone-verification.md.

Test plan

  • pytest -q on Windows: 380 passed, 1 skipped (timing tests behind -m perf: 2 passed)
  • Real-data corpus: sangeranalyseR reads (MIT) + NCBI references (COI, pUC19)
  • Frozen Windows exe built with PyInstaller 6.22.3; verify-clones smoke test passes; exe carries the icon
  • CI ubuntu-22.04 leg (first run on this PR)
  • Release workflow Linux leg — run once via workflow_dispatch before tagging
  • Manual look at the real window (renders were checked offscreen only)

🤖 Generated with Claude Code

adrobi and others added 30 commits October 25, 2026 01:22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…verse-strand indexing

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
verify_clone/verify_all with VerifyParams, ReadResult, CloneDifference and
CloneReport; reads are quality-trimmed before alignment and mapped back to
full displayed indices. load_read (session-aware) replaces batch._edited_read.

Also fixes EditableRead.reverse_complement mapping peaks against the last
peak instead of the trace length, which misplaced every peak of a flipped
read relative to its flipped traces.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ReadAlignment.placements clusters co-optimal paths whose reference spans
overlap (mod L for circular constructs), so alternative gap positions in a
homopolymer are one placement. verify_clone marks a read ambiguous only for
placements > 1; alternatives is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… parent

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… icon bindings, tooltip/stretch tweaks

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ow disputed, 1-based ruler

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ows, shared zoom, failed/ambiguous reads

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…resets results, drop/project edge cases

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adrobi and others added 14 commits October 30, 2026 16:38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… and verdict notes

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lease job

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… deletions)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fferences count = what the verdict uses

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…F_FACTOR

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… README Linux runtime libraries; changelog

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adrobi
adrobi merged commit 234fed6 into main Oct 31, 2026
7 checks passed
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