Repository navigation
fix: autoadaloc 'ensemble' projection in approx_update (#170) - #171
Merged
Merged
Conversation
The projected anomalies were X2 @ D_anom, an (nr, ne) @ (nd, ne) product that fails unless nd == ne and counts the innovations twice. Use V_r S_r X2, so an all-ones taper reproduces the non-localized step. Fixes #170 Co-Authored-By: Claude Opus 5.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.
Fixes #170.
In
approx_update, theautoadalocbranch withprojection = "ensemble"built the projected anomalies asX2 @ D_anom. That is an(nr, ne) @ (nd, ne)product, so it raisesValueErrorunlessnd == ne. Even when it does run, it counts the innovations twice.This PR replaces it with
(VrT.T * Sr[None, :]) @ X2, which is theV_r Σ_r (I+Σ²)⁻¹ U_rᵀ Dtransform the non-localized branch already computes asX3. The taper is then(nx, ne), and with an all-ones taper the step equals the non-localized step exactly.nd=15, ne=10, cutoff 0, so the taper is all ones). It fails onmainwith theValueErrorfrom the issue and passes with the fix.🤖 Generated with Claude Code