You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Sad Catapella N3][Scientific provenance] Distinct percentile settings share the same serialized method identifier #35
Normalization Batch 3, pinned f784c95e3049483f87466150ffc5764375fa631d. Confirmed source-level settings identity collision, independently verified with isolated Python float formatting (not the package pytest suite). This is not the large-value arithmetic issue #32.
Evidence
NormalizationSettings.method_name lines 139–145 constructs the only written percentile-method identifier with f"percentile {low:g}-{high:g}". Python's :g defaults to six significant digits.
Settings serialization does preserve the original percentile numeric values, so they may be materially different despite the identical method label.
Tests check human-readable ordinary values, not collisions; fitting tests check a different method name, not two distinct settings whose names collide.
Deterministic counterexample
NormalizationSettings(percentile=(1.000001, 99.8)).method_name and NormalizationSettings(percentile=(1.000002, 99.8)).method_name both yield 'percentile 1-99.8'. A parameter row written with one is accepted by Parameters.from_columns(row, other_settings), despite distinct percentile thresholds. This is a proven identity collision; whether an actual dataset changes its fitted quantile values depends on distribution and pixel count.
Impact
Silently accepting stale/incompatible fitted normalization parameters, and ambiguous method/provenance reporting across runs. Especially problematic when preserving exact experimental parameter choices is a contract requirement.
Fix and acceptance
Treat the label as display text, not the full scientific settings identity. Store/validate exact method parameters or a canonical settings signature/version alongside parameters; maintain existing column layout only with explicit compatibility semantics. If changing the method string, version and migrate that contract and preserve old-row rejection behavior. Test high precision percentile pairs with identical short names, ordinary pairs, rgb, changed consistency, matching/contradictory settings, and round-trip exactly. No Numba role.
Activity