Skip to content

Align LOMEM update with paper reduction#2074

Merged
FlorianPfaff merged 3 commits into
mainfrom
fix/lomem-paper-update
May 18, 2026
Merged

Align LOMEM update with paper reduction#2074
FlorianPfaff merged 3 commits into
mainfrom
fix/lomem-paper-update

Conversation

@FlorianPfaff
Copy link
Copy Markdown
Owner

Summary

  • replace the direct scatter-eigendecomposition axis update with a paper-aligned L:OMEM reduced-measurement update
  • reduce scans to mean measurements and sample-covariance pseudo-measurements
  • include the equivalent measurement covariance Cν = S C_h S^T + CII + C_v and BLUE/Kalman-style pseudo-measurement moments
  • update LOMEM tests for the covariance pseudo-measurement and add a regression test that sensor noise is not interpreted as target extent

Verification

  • python -m py_compile /mnt/data/new_lomem_tracker.py /mnt/data/new_test_lomem_tracker.py
  • local standalone NumPy stub: python /mnt/data/new_test_lomem_tracker.py (10 tests passed)

Note: the full repository test suite was not run locally because this execution environment cannot clone/install the repository dependencies.

@github-actions
Copy link
Copy Markdown
Contributor

Test Results

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

Results for commit 5b1c83b.

@github-actions
Copy link
Copy Markdown
Contributor

MegaLinter analysis: Error

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 16.79s
✅ JSON prettier 2 0 0 0 0.43s
✅ JSON v8r 2 0 0 3.84s
✅ MARKDOWN markdownlint 28 0 0 0 1.33s
✅ MARKDOWN markdown-table-formatter 28 0 0 0 0.29s
✅ PYTHON bandit 568 0 0 9.11s
✅ PYTHON black 568 18 0 0 15.63s
❌ PYTHON flake8 568 3 0 5.48s
✅ PYTHON isort 568 19 0 0 1.06s
❌ PYTHON mypy 568 1 0 7.36s
❌ PYTHON pylint 568 6 0 101.79s
❌ PYTHON ruff 568 20 3 0 0.12s
✅ REPOSITORY checkov yes no no 27.72s
✅ REPOSITORY gitleaks yes no no 14.35s
✅ REPOSITORY git_diff yes no no 0.09s
✅ REPOSITORY osv-scanner yes no no 1.03s
✅ REPOSITORY secretlint yes no no 9.87s
✅ REPOSITORY syft yes no no 3.2s
✅ REPOSITORY trivy-sbom yes no no 3.48s
✅ REPOSITORY trufflehog yes no no 21.8s
✅ YAML prettier 5 0 0 0 0.47s
✅ YAML v8r 5 0 0 6.41s
✅ YAML yamllint 5 0 0 0.5s

Detailed Issues

❌ PYTHON / flake8 - 3 errors
tests/distributions/test_abstract_hypersphere_subset_distribution.py:9:1: F401 'pyrecest.backend.prod' imported but unused
tests/filters/test_multi_bernoulli_mixture_tracker.py:9:1: F401 'pyrecest.filters.KalmanFilter' imported but unused
tests/test_jax_autodiff_backend.py:6:1: E402 module level import not at top of file
❌ PYTHON / mypy - 1 error
src/pyrecest/utils/history_recorder.py:34: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/distributions/so3_bingham_distribution.py:84: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/distributions/circle/wrapped_normal_distribution.py:187: error: Argument 1 of "convolve" is incompatible with supertype "pyrecest.distributions.hypertorus.hypertoroidal_wrapped_normal_distribution.HypertoroidalWrappedNormalDistribution"; supertype defines the argument type as "HypertoroidalWrappedNormalDistribution"  [override]
src/pyrecest/distributions/circle/wrapped_normal_distribution.py:187: note: This violates the Liskov substitution principle
src/pyrecest/distributions/circle/wrapped_normal_distribution.py:187: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
src/pyrecest/smoothers/unscented_rauch_tung_striebel_smoother.py:50: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/smoothers/fixed_lag_mem_qkf_smoother.py:339: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/smoothers/fixed_lag_mem_qkf_smoother.py:340: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/smoothers/fixed_lag_velocity_locked_mem_qkf_smoother.py:395: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
src/pyrecest/smoothers/fixed_lag_velocity_locked_mem_qkf_smoother.py:396: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
Found 1 error in 1 file (checked 568 source files)
❌ PYTHON / pylint - 6 errors
************* Module pyrecest.distributions.abstract_manifold_specific_distribution
src/pyrecest/distributions/abstract_manifold_specific_distribution.py:112:4: R0913: Too many arguments (7/6) (too-many-arguments)
************* Module pyrecest.distributions.hypersphere_subset.bingham_distribution
src/pyrecest/distributions/hypersphere_subset/bingham_distribution.py:94:4: E0102: function already defined line 65 (function-redefined)
************* Module tests.distributions.test_abstract_hypersphere_subset_distribution
tests/distributions/test_abstract_hypersphere_subset_distribution.py:9:0: W0611: Unused prod imported from pyrecest.backend (unused-import)
************* Module tests.filters.test_lomem_tracker
tests/filters/test_lomem_tracker.py:113:32: W0212: Access to a protected member _equivalent_measurement_covariance of a client class (protected-access)
************* Module tests.filters.test_multi_bernoulli_mixture_tracker
tests/filters/test_multi_bernoulli_mixture_tracker.py:58:24: W0212: Access to a protected member _measurement_likelihood_and_distance of a client class (protected-access)
tests/filters/test_multi_bernoulli_mixture_tracker.py:9:0: W0611: Unused KalmanFilter imported from pyrecest.filters (unused-import)

------------------------------------
Your code has been rated at 10.00/10
❌ PYTHON / ruff - 3 errors
E402 Module level import not at top of file
 --> tests/test_jax_autodiff_backend.py:6:1
  |
4 | jnp = pytest.importorskip("jax.numpy")
5 |
6 | from pyrecest._backend.jax import autodiff
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |

Found 3 errors (2 fixed, 1 remaining).

Notices

📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)

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.5.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_OSV_SCANNER,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 6dbd60a into main May 18, 2026
4 of 17 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