Add opt-in integer LAD inversion with shared-threshold rounding - #743
Open
scottstanie wants to merge 2 commits into
Open
Add opt-in integer LAD inversion with shared-threshold rounding#743scottstanie wants to merge 2 commits into
scottstanie wants to merge 2 commits into
Conversation
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.
Continuous LAD inversion can return fractional date ambiguities even when its edge observations are integer cycles. Independently rounding each date can increase the LAD objective. This adds
invert_stack_l1_integer(A, ambiguities, max_iter=20), which runs the existing solver and selects the best shared-threshold rounding. It returns integer-valued date offsets and their actual residual in cycles.The API accepts a connected, unweighted incidence graph shared by all pixels and explicitly rejects missing/nonintegral observations and disconnected inputs. Its guide shows how to construct cycle observations from consistent per-date wrapped anchors, check congruence, and reconstruct phase. The default raster workflow is unchanged; phase-anchor extraction and masked raster integration remain separate work.
For integer edge observations, shared-threshold rounding cannot increase the continuous objective, and rounding an exact continuous optimum gives an integer optimum. A fixed ADMM budget is not an optimality certificate. Stress testing found suboptimal 20-iteration results on arbitrary inconsistent networks; all 120 stress cases matched HiGHS at 200 iterations. The rounding kernel accumulates at most two cost changes per edge, avoiding a stack of candidate residuals.
Validation:
The 300-case initial probe and the 120-case stress benchmark are reproducible in the Sarlet ionosphere review experiments. Objective optimality is distinct from recovering the true unwrapped phase; acquisition-consistent errors and nonunique minimizers remain possible.