Subframe Inspection, Scoring, and Culling
Inspect comparable light frames before integration, exclude clearly damaging frames, and preserve as much useful integration time as the evidence supports.
schema 1 · revision 1Recognize it
- A subset of subframes has broader or more elongated stars than the rest.
- Cloud, obstruction, bright sky, or a strong gradient creates a visibly poor tail.
- A proposed cull sharpens the stack but also reduces frame count and depth.
Intended output
Persisted per-frame measurements and a deterministic retained-frame set for stacking under a declared policy; culling does not transform the input FITS files.
Required input state
- Individual light frames before integration, with calibration and CFA/debayer state known.
- A comparison pool matched enough in field or panel, image scale, filter/capture mode, exposure regime, and measurement version for ranking to be meaningful.
- Fallback or unavailable measurements distinguished from observed star measurements.
What NOVA does
NOVA first applies hard gates for weak star support, excessive eccentricity, measured gradient severity, and session-relative sky level. It then ranks the measured survivors by fwhm × (1 + eccentricity), where lower is better, and rejects the requested fraction from the high-scoring, worst end. The old reversed-tail defect reported by P06 is historical: commit 524d899 fixed it, and the current shared helper explicitly rejects the highest composite scores. Unscored frames have no measurement basis for percentile rejection. Manual, registration, exposure, and mount-mode eligibility remain separate filters.
Use when
- A coherent frame pool contains a clearly degraded tail from tracking, focus, seeing, cloud, bright sky, or gradients.
- Enough frames remain for rejection and integration to behave reliably.
- A matched policy experiment can retain the exact frame manifest and compare final stacks.
Skip when
- Frames are uniformly similar and discarded integration time is likely to cost more than the suspected defect.
- The dataset is small, or source-extraction measurements are unreliable for its field, filter, or sampling.
- Different panels, filters, scales, exposures, or measurement versions would be rank-compared as one population.
- Real extended emission may be mistaken for a sky gradient without review or appropriate grouping.
Limits
- FWHM, eccentricity, star support, sky level, and gradient severity are indicators, not a universal quality score.
- The 10% cull is NOVA's current engineering default, not a proven general optimum; no comparative corpus establishes one best percentage.
- The minimum of 20 detected stars is a heuristic guardrail, not proof of clear sky or a universal physical threshold.
- The eccentricity 0.66, sky-factor 3.0, and gradient 0.5 defaults are engineering heuristics, not empirically optimal constants.
- Whether culling generally improves NOVA final stacks remains unresolved without matched stack-level experiments.
- Cached measurements remain bound to the analysis implementation and settings that produced them.
Scientific and aesthetic notes
- Rejecting a damaged subframe can improve star shape or artifact burden, but rejecting usable frames reduces signal averaging; the final stack is the response that matters.
- Experiment Mode (experiment-mode) supplies the no-op-control principle: compare no quality culling with declared treatments while keeping the captured pool and stack settings fixed.
- How NOVA Knows (how-nova-knows) defines the evidence-strength vocabulary used here; source-confirmed defaults are not validation or recommendation.
- A 20% cut retains 80% of the frames and, for otherwise comparable sky-noise-limited data, begins with the integration-depth trade implied by square-root-N scaling.
- Sparse fields, filtered data, crowded clusters, nebulae, and mosaics can change what star count, shape, sky, and gradient measurements mean.
Evidence and measurements
| Measurements | Acceptance criteria |
|---|---|
|
|
Cross-tool matrix
| Tool | Equivalence | Expected result | Evidence |
|---|---|---|---|
| nova | Exact replay | A reproducible retained-frame set whose final stack can be compared with the no-culling control. | nova-subframe-culling-source, nova-culling-fix-468 |
| pixinsight | Functional alternative | A documented alternative retained-frame set; exact equivalence to NOVA's formulas is not claimed. | unverified |
| siril | Functional alternative | A functionally similar, tool-specific selection whose metric definitions are not assumed identical to NOVA's. | siril-sequence-filter-docs |
| saspro | Conceptual substitute | A manual or score-assisted alternative selection; exact mathematical equivalence is unverified. | packet-p06 |
NOVA stack selection current source
- Form a comparable candidate pool and preserve its frame identities.
- Inspect hard-gate failures separately from percentile-ranked rejection.
- Start with no quality culling as the control; treat 5%, 10%, and 20% as policy probes, not promises of improvement.
- Build matched final stacks and retain each arm's kept/rejected manifest, frame count, and integration time.
Controls and starting ranges
- bottom_pct
- 0% control; 5% mild probe; 10% current default/reference; 20% aggressive research probe
- min_stars
- 20 current heuristic default; retune only with data-class evidence
- ecc_threshold
- 0.66 current heuristic default
- sky_level_factor
- 3.0 × session median current heuristic default
- gradient_threshold
- 0.5 current heuristic default
Mask behavior: No image mask is applied; comparability comes from pool definition and recorded eligibility/rejection reasons.
Failure modes
- Over-culling reduces depth without a compensating stack-level benefit.
- Sparse fields or filtered data fail a fixed star-support gate.
- Mixed populations or real extended emission distort ranking and gradient decisions.
Recovery
- Reduce or disable the percentile cut and compare matched final stacks.
- Stratify the pool and review rejected frames by reason.
- Treat unavailable or fallback measurements as unavailable, not observed PSF evidence.
PixInsight SubframeSelector unverified installed version
- Measure one comparable subframe population with one fixed expression and scale configuration.
- Review measurement plots and rejected frames instead of adopting an unverified threshold blindly.
- Export the retained-frame list and compare a matched integration against a keep-all control.
Controls and starting ranges
No fixed starting range is claimed.
Mask behavior: No starting mask is claimed; record any ROI or support restriction because it changes the measurement population.
Failure modes
- Scale or expression differences make scores incomparable.
- A ranking expression hides the integration-time cost.
Recovery
- Re-measure with one configuration and inspect both retained and rejected tails.
- Compare final integrations, not scores alone.
Siril sequence filtering 1.4.4 documentation
- Register and measure a comparable sequence using consistent settings.
- Filter by documented FWHM, roundness, background, star-count, quality, or manual criteria as appropriate.
- Record the filter expression or percentage and compare the resulting stack with the same sequence kept eligible.
Controls and starting ranges
- percentage
- Use as a declared probe; NOVA's 5/10/20% values are not transferable scientific constants.
Mask behavior: No image mask is claimed; sequence membership and measurement configuration define support.
Failure modes
- Different metric definitions are mistaken for exact NOVA equivalence.
- Filtering is optimized without measuring the final stack.
Recovery
- Record Siril's actual filter and weighting choices.
- Compare matched output stacks and retained integration time.
Seti Astro Suite Pro Blink Comparator 1.18.0 research snapshot
- Inspect the comparable frame pool and record the frame-selection criteria used.
- Treat NOVA source comments about Blink Comparator lineage as claimed lineage, not proof of the same formula.
- Retain the selected-frame manifest and compare the final stack with a keep-all control.
Controls and starting ranges
No fixed starting range is claimed.
Mask behavior: No image mask is claimed; visually inspected frame content supplies the decision context.
Failure modes
- Visual preference is presented as a reproducible threshold.
- Claimed lineage is presented as exact formula equivalence.
Recovery
- Record explicit acceptance/rejection criteria and the frame manifest.
- Bound the conclusion to the tested pool and final-stack evidence.
Validation status
Not yet Jeff-validated. Use this as sourced guidance, not a certification.
Sources
- Phase-2 research packet P06, 2026-08-27
Handbook P06 — Subframe Inspection, Scoring, and Culling— Reasoned translation - NOVA frame-quality gates and corrected percentile ordering
nas_server/frame_quality.py:worst_percentile_keys; nas_server/database.py:get_frames_for_stack; nas_server/stack_config.py:STACK_CONFIG_DEFAULTS— NOVA source-confirmed - Issue #468 fix: Reject worst percentile frames
commit 524d899 (issue #468)— NOVA source-confirmed - SEP source extraction and ellipse-parameter documentation — Vendor-documented
- Siril sequence filtering and stacking command documentation — Vendor-documented
- AAVSO stacking guidance — Reasoned translation
Related evidence
The M66 recipe and Jeff-validation ledger will link here when their static exports are available. Until then, this article remains explicitly unvalidated.