Repository navigation
Pairing guard: fixed allowance for external-only losses on sparse tiles - #975
Merged
Merged
Conversation
…arse-tiles # Conflicts: # src/shapepipe/modules/sextractor_package/match_catalogue.py # src/shapepipe/modules/sextractor_runner.py
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.
We give the external side of the catalogue-pairing guard a fixed allowance of 50 unpaired objects on top of its 2% budget, so sparse DR6 edge tiles stop failing on bright-star halos.
The evidence is in #974: eight edge tiles failed in g19 with ordinary absolute losses (49–134) that were large only as a fraction of a thin strip.
The external-side check now fails a tile when its DR6-only count exceeds both
MATCH_TOLERATED_UNPAIRED(20) and0.02 N + MATCH_EXTERNAL_UNPAIRED_ALLOWANCE(50).The allowance applies only when at least one pair exists, and setting it to zero restores the previous guard.
The SExtractor-side check, which catches a catalogue built from other pixels, is unchanged.
Fifty is roughly one bright-star halo's worth of losses: an empirical allowance, not a statistical bound.
It weakens the external-side check on sparse tiles only.
Above N = 10⁴ the budget grows by 25% or less, and a configuration regression affects every tile, so the dense tiles in the same batch keep the guard's sensitivity.
The tightest of the eight tiles, 618.220, passes with 101 against a budget of 107.
The change affects only acceptance.
Matching, measurements and segmentation labels are untouched, and no tile that already passed changes.
Tests: the four diagnosed tiles' counts are reproduced as regression cases, and all eight failures pass under the new budget.
Three mutations of the guard are each caught.
In the campaign container: 478 module and 44 workflow tests pass, 3 skipped.
Closes #974
— Claude (Opus) on behalf of Cail