Skip to content

Add log-likelihood updates for SO3 particle filters#2000

Merged
FlorianPfaff merged 7 commits into
mainfrom
codex/log-likelihood-so3-particle-updates
May 8, 2026
Merged

Add log-likelihood updates for SO3 particle filters#2000
FlorianPfaff merged 7 commits into
mainfrom
codex/log-likelihood-so3-particle-updates

Conversation

@FlorianPfaff
Copy link
Copy Markdown
Owner

@FlorianPfaff FlorianPfaff commented May 8, 2026

Summary

  • add regression coverage for SO3ProductParticleFilter.update_with_log_likelihood(...), including equivalence to positive-likelihood updates and an underflow-safe case
  • fix SO(3) scalar geodesic-distance handling so scalar quaternion pairs return a scalar-compatible value
  • normalize SO(3) grid-transition densities through the same hemisphere quadrature integral used by the grid-distribution checks

CI notes

This branch fixes the concrete failures observed in the previous CI run:

  • tests/filters/test_relaxed_s3f_so3.py::RelaxedS3FSO3Test::test_quaternion_rotation_and_distance_helpers
  • tests/filters/test_so3_grid_transition.py::TestSO3GridTransition::test_returns_normalized_conditional_density

Latest checks have been triggered and are still running on GitHub Actions.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

Test Results

0 tests  ±0   0 ✅ ±0   0s ⏱️ ±0s
0 suites ±0   0 💤 ±0 
0 files   ±0   0 ❌ ±0 

Results for commit 536ba45. ± Comparison against base commit 2154731.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

MegaLinter analysis: Error

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 15.67s
✅ JSON prettier 2 0 0 0 0.48s
✅ JSON v8r 2 0 0 2.76s
✅ MARKDOWN markdownlint 28 0 0 0 1.25s
✅ MARKDOWN markdown-table-formatter 28 0 0 0 0.3s
✅ PYTHON bandit 505 0 0 7.3s
✅ PYTHON black 505 8 0 0 11.48s
✅ PYTHON flake8 505 0 0 3.99s
✅ PYTHON isort 505 9 0 0 0.88s
✅ PYTHON mypy 505 0 0 5.82s
❌ PYTHON pylint 505 8 0 106.63s
✅ PYTHON ruff 505 9 0 0 0.09s
✅ REPOSITORY checkov yes no no 21.11s
✅ REPOSITORY gitleaks yes no no 11.89s
✅ REPOSITORY git_diff yes no no 0.09s
✅ REPOSITORY secretlint yes no no 8.77s
✅ REPOSITORY syft yes no no 3.32s
✅ REPOSITORY trivy-sbom yes no no 3.46s
✅ REPOSITORY trufflehog yes no no 19.82s
✅ YAML prettier 5 0 0 0 0.5s
✅ YAML v8r 5 0 0 5.47s
✅ YAML yamllint 5 0 0 0.5s

Detailed Issues

❌ PYTHON / pylint - 8 errors
************* Module pyrecest.filters._linear_gaussian
src/pyrecest/filters/_linear_gaussian.py:47:27: W0621: Redefining name 'normalized_innovation_squared' from outer scope (line 31) (redefined-outer-name)
src/pyrecest/filters/_linear_gaussian.py:72:4: W0621: Redefining name 'normalized_innovation_squared' from outer scope (line 31) (redefined-outer-name)
************* Module pyrecest.filters.relaxed_s3f_so3
src/pyrecest/filters/relaxed_s3f_so3.py:49:0: R0902: Too many instance attributes (8/7) (too-many-instance-attributes)
************* Module pyrecest.utils.track_evaluation
src/pyrecest/utils/track_evaluation.py:393:0: R0917: Too many positional arguments (8/5) (too-many-positional-arguments)
************* Module tests.filters.test_relaxed_s3f_so3
tests/filters/test_relaxed_s3f_so3.py:46:21: E1120: No value for argument 'grid_values' in function call (no-value-for-parameter)
tests/filters/test_relaxed_s3f_so3.py:46:21: E1120: No value for argument 'body_increment_values' in function call (no-value-for-parameter)
tests/filters/test_relaxed_s3f_so3.py:46:21: E1120: No value for argument 'cell_sample_count' in function call (no-value-for-parameter)
tests/filters/test_relaxed_s3f_so3.py:46:21: E1120: No value for argument 'method' in function call (no-value-for-parameter)

-----------------------------------
Your code has been rated at 9.99/10

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 FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.4.0 --custom-flavor-setup --custom-flavor-linters PYTHON_PYLINT,PYTHON_BLACK,PYTHON_FLAKE8,PYTHON_ISORT,PYTHON_BANDIT,PYTHON_MYPY,PYTHON_RUFF,COPYPASTE_JSCPD,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@FlorianPfaff FlorianPfaff merged commit 876d5cc into main May 8, 2026
5 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant