[codex] Fix hypertoroidal nonadditive particle prediction#1857
Merged
FlorianPfaff merged 3 commits intomainfrom Apr 25, 2026
Merged
[codex] Fix hypertoroidal nonadditive particle prediction#1857FlorianPfaff merged 3 commits intomainfrom
FlorianPfaff merged 3 commits intomainfrom
Conversation
Contributor
✅MegaLinter analysis: Success
See detailed reports in MegaLinter artifacts Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining
|
Contributor
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.

Summary
Fix
HypertoroidalParticleFilter.predict_nonlinear_nonadditiveso it reuses the base particle-filter nonadditive prediction logic and then wraps particles back onto the torus withmod(..., 2*pi).This avoids treating
filter_stateas if it were a raw particle array.filter_stateis aHypertoroidalDiracDistribution; the raw particles live infilter_state.d.Root Cause
The hypertoroidal override used
self.filter_state.shape,zeros_like(self.filter_state), andself.filter_state[i, :], which are array operations on a distribution object. Its input validation also compared the fullsamples.shapetuple toweights.size, rejecting valid(n_samples, dim)noise samples.Tests
Added a regression test in
tests/filters/test_hypertoroidal_particle_filter.pythat callspredict_nonlinear_nonadditive, checks the particle shape is preserved, and verifies the resulting angular particles remain in[0, 2*pi).Not run locally because this Codex workspace is read-only and the change was applied through the GitHub connector. The repository's PR CI should run the backend matrix.