Release 2.3.0 - #30
Merged
Merged
Conversation
--transient-triage scores each --transient-detect candidate with a small CNN (new/ref/diff stamp triplet, native tract inference, advisory only -- never drops a candidate) for a real_probability, the same role ZTF's BTSbot/Rubin's DIA triage play downstream of classical image differencing. No amateur stacking tool does this today. The bundled model is trained entirely on synthetic data (tools/gen_transient_triage_data.py + torch in tools/train_transient_triage.py); tools/mine_real_transient_data.py adds a real-data path -- stacks real multi-night sessions of the same target and mines real cross-session negatives plus real-epoch-injection positives. While validating the real-data path, found that two independently-stacked sessions of the same target routinely differ in pixel dimensions (different dither pattern, different Phase 3 crop), which run_transient_detection treated as a hard failure -- a real limitation of the shipped --transient-detect flag, not just the mining tool. Fixed by promoting merge.py's shape-reconciliation helper to src.utils.embed_to_shape (shared by both callers now) and carrying a real valid-data mask through the warp so a zero-padded border reads as uncovered, not real reference data. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cancel is cooperative (threading.Event on args._cancel_event), not a thread kill -- CPython threads can't be force-stopped and Phase 1 workers are real OS processes mid-computation anyway. RunCancelled (src/models.py) propagates from a handful of checkpoints: frame_processor._check_cancel between Phase 1 frames in all three dispatch paths (ProcessPool/GPU-thread-pool/sequential, with explicit cancel_futures=True shutdown so the wait is bounded to whatever's already in flight, not the whole remaining session), and between targets in cli.process_directory's multi-session loop. Phases 2-4 of a single target aren't interruptible yet. RunManager reports a 'cancelled' status distinct from 'error'; the desktop app shows a Cancel button next to Start and a distinct "Cancelled" terminal state. originvision perf, both measured on a real full-res frame before shipping: --originvision-workers default 2->8 (near-linear scaling confirmed: 2751 -> 473 ms/frame effective at 8 workers, pure concurrency, zero accuracy risk). Also built a pre-downsample step for score_rgb's preprocessing, which scales with input pixel count even though only a 256x256 crop is ever used (85% of a full-res call was spent on discarded pixels) -- up to 7x faster, but the reject/quality heads proved genuinely resolution-sensitive (defect_probability swung +0.04 to +0.40 depending on aggressiveness, enough to flip is_defective near the boundary and feed auto_settings.py's defensive nudges). Left off by default (score_rgb(..., fast_preprocess=True), unwired to any CLI flag) rather than shipped as a silent accuracy/speed tradeoff. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
--originvision is on by default now; only --no-originvision exists to turn it off (same no-positive-flag shape as --auto/--no-auto). A bare --originvision on an old command line now errors rather than being a no-op -- deliberate, since desktop_control.py's form-schema/argv machinery keys purely on argparse dest with no dest-collision handling, so a redundant positive flag alongside the new negative one would have silently duplicated or dropped that GUI field. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ZOGY real/bogus transient triage (--transient-triage), a desktop-app Cancel button, originvision on by default with a measured 8-worker throughput default, and a fix for --transient-detect refusing two differently-shaped sessions of the same target. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Measured 3.2x on a 16-core machine (1665 tests, 169s -> 52s, no isolation issues -- same pass count either way). Wired into both CI jobs. Not the local default via pyproject.toml addopts: xdist's forked workers break --pdb/breakpoint() and interleave -s output, so it stays an explicit `-n auto` flag locally, documented in CLAUDE.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
--transient-triage): native CNN scoring of--transient-detectcandidates, trained on synthetic + optionally real-mined data--originvisionon by default now (--no-originvisionto disable);--originvision-workersdefault raised 2 -> 8 (measured 2.9x throughput)--transient-detectno longer refuses two differently-shaped sessions of the same targetSee CHANGELOG.md's
[2.3.0]section for full details.Test plan
pytest -n autogives the same pass count (isolation verified)--no-originvision/ default-on originvision,--transient-triageon real data, Cancel button smoke-tested