Releases: FlorianPfaff/PyRecEst
Releases · FlorianPfaff/PyRecEst
Release 2.0.0
✨ Features
- Introduce
AdditiveNoiseTransitionModelandAdditiveNoiseMeasurementModelso nonlinear additive-noise dynamics and sensor models can be defined once and reused across compatible filters. (#1950) - Add SO(3) and SO(3)^K representation conversion support, including aliases and tangent-Gaussian and Dirac approximations for rotation distributions. (#1939)
- Add reusable model adapters for grid filters so
AbstractGridFiltercan update from likelihood models and predict from transition-density models. (#1948) - Expand representation conversion aliases with domain-specific targets, custom alias registration, and a runnable conversion example for more distribution families. (#1964)
- Add
predict_model(...)andupdate_model(...)support to particle filters for reusable transition-sampling and likelihood model objects. (#1947) - Add
predict_model(...)andupdate_model(...)support toUnscentedKalmanFilterfor reusable additive-noise transition and measurement models. (#1944) - Add
KalmanFilter.predict_model(...)andupdate_model(...)so linear Gaussian model objects can be passed directly to the filter. (#1945) - Add reusable likelihood, transition-sampling, and transition-density model objects in
pyrecest.modelsfor particle, grid, and related estimators. (#1949) - Add reusable linear Gaussian transition and measurement model classes in
pyrecest.modelswith prediction and noise helper methods. (#1946) - Add string-based representation conversion aliases such as
particles,gaussian,grid, andfourier, plusconvert_to(...)convenience methods on distributions. (#1931) - Introduce a distribution representation-conversion layer with
convert_distribution(...), conversion registration helpers, and method-formconvert_to(...)access on distributions. (#1929) - Add proposal-based rejuvenation for goal-conditioned replay particle filters so particles can be pulled back onto high-likelihood position hypotheses after an update. (#1928)
- Add
GoalConditionedReplayParticleIMMFilterwith per-particle motion modes for stationary, diffusion, momentum, goal-directed, and jump replay dynamics. (#1927)
⚡ Improvements
- Make the representation conversion API available directly from
pyrecest.distributions, including package-level exports forconvert_distribution(...)and related helpers. (#1940) - Add
pyrecest.protocols.testinghelpers that make it easier to check whether custom distributions, filters, and models satisfy PyRecEst capability protocols. (#1953) - Add public model capability protocols and adapter helpers that let existing Kalman-style APIs accept structurally compatible model objects. (#1962)
- Add a protocol capability matrix for representative distributions and filters, and ensure batched particle-model predictions keep the expected particle layout. (#1965)
- Ship a
py.typedmarker so PyRecEst exposes its type information to external type checkers and typed downstream projects. (#1954) - Introduce the public
pyrecest.protocolspackage with common array and dimension contracts plus filter capability protocols for extension code. (#1952) - Add backend-aware validation utilities for model vectors, matrices, covariances, and inferred state dimensions to make reusable model objects safer to construct. (#1942)
- Speed up
StateSpaceSubdivisionFilterlinear updates and relaxed S3F covariance calculations with vectorized implementations. (#1926)
📚 Docs
Release 1.1.2
What's Changed
- [codex] improve docs and examples by @FlorianPfaff in #1886
- [codex] add von Mises-Fisher multiplication example by @FlorianPfaff in #1888
- [codex] add gaussian multiplication example by @FlorianPfaff in #1887
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1890
- [codex] add multi-target tracking example by @FlorianPfaff in #1889
- Add initial documentation pages by @FlorianPfaff in #1891
- Add Poetry build backend by @FlorianPfaff in #1898
- Add Sobol and Halton proposal grid samplers by @FlorianPfaff in #1901
- Add docstring references for distributions and filters by @FlorianPfaff in #1897
- Document common shapes and conventions by @FlorianPfaff in #1892
- Improve core API docstrings by @FlorianPfaff in #1893
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1903
- Add generated API docs by @FlorianPfaff in #1896
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1907
- Add manifold exponential moving average by @FlorianPfaff in #1905
- Add Fibonacci rejection sampler by @FlorianPfaff in #1902
- Move UKF sigma points to sampling by @FlorianPfaff in #1900
- Document backend compatibility by @FlorianPfaff in #1894
- Add SO3 chordal mean smoother by @FlorianPfaff in #1906
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1908
- Add sliding-window manifold mean smoother by @FlorianPfaff in #1904
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1909
- Add task tutorial documentation by @FlorianPfaff in #1895
- Add SO3 Dirac distribution by @FlorianPfaff in #1910
- Add circular relaxed S3F prediction helpers by @FlorianPfaff in #1899
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1916
- Add SO3 distance helpers by @FlorianPfaff in #1917
- Add SO3 tangent Gaussian distribution by @FlorianPfaff in #1911
- Bump version from 1.1.1 to 1.1.2 by @FlorianPfaff in #1919
- Fix hyperhemispherical uniform sampling by @FlorianPfaff in #1918
- Add SO3 Bingham distribution by @FlorianPfaff in #1912
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1921
- Fix SO3 Dirac chordal distance clip import by @FlorianPfaff in #1920
- Add SO3 uniform distribution by @FlorianPfaff in #1913
- Add SO3 product particle filter by @FlorianPfaff in #1922
- Update workflow actions for Node 24 by @FlorianPfaff in #1924
- Add SO3 product tangent Gaussian distribution by @FlorianPfaff in #1915
- Add SO3 product Dirac distribution by @FlorianPfaff in #1914
Full Changelog: 1.1.1...1.1.2
Release 1.1.1
What's Changed
- [codex] Fix GNN default gating threshold by @FlorianPfaff in #1845
- [codex] Fix Dirac distribution mode selection by @FlorianPfaff in #1838
- [codex] Add Fourier-coefficient RHM tracker by @FlorianPfaff in #1839
- [codex] Export score-native multisession helpers by @FlorianPfaff in #1847
- [codex] Fix groundtruth input timestep indexing by @FlorianPfaff in #1854
- [codex] Fix JAX randint backend by @FlorianPfaff in #1849
- [codex] Fix scalar filter parameter expansion by @FlorianPfaff in #1862
- [codex] Add MEM-EKF tracker by @FlorianPfaff in #1850
- [codex] Fix GPRHM contour point count by @FlorianPfaff in #1859
- [codex] Fix hypertoroidal nonadditive particle prediction by @FlorianPfaff in #1857
- [codex] Add numerical circular KL divergence by @FlorianPfaff in #1868
- [codex] Fix KernelSME empty gated update by @FlorianPfaff in #1864
- [codex] Fix EOT fixed-count array handling by @FlorianPfaff in #1855
- [codex] Fix deviation failure warning without metadata by @FlorianPfaff in #1860
- [codex] Fix summarize run count warning by @FlorianPfaff in #1840
- Allow CI workflows on PRs to any branch by @FlorianPfaff in #1869
- [codex] Fix Shapely boundary sampling by @FlorianPfaff in #1846
- [codex] Fix PyTorch choice without replacement by @FlorianPfaff in #1841
- Add abstract interface for multiple extended-object trackers by @FlorianPfaff in #1863
- [codex] Fix Poetry extras dependency declarations by @FlorianPfaff in #1842
- [codex] Add basic Kalman filter example by @FlorianPfaff in #1875
- [codex] Fix PyTorch backend std signature by @FlorianPfaff in #1872
- Update requirements by @FlorianPfaff in #1876
- Update Python image version in devcontainer.json by @FlorianPfaff in #1874
- [codex] Fix random matrix extent update by @FlorianPfaff in #1843
- [codex] Fix MTT measurement generation by @FlorianPfaff in #1852
- [codex] Fix groundtruth object-array indexing by @FlorianPfaff in #1856
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1851
- Remove 'useless-suppression' from pyproject.toml by @FlorianPfaff in #1878
- [codex] Add EKF spline tracker by @FlorianPfaff in #1865
- [codex] Add observation-specific multisession costs by @FlorianPfaff in #1870
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1879
- [codex] Align distribution method signatures by @FlorianPfaff in #1881
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1882
- Added CircularFourierFilter by @FlorianPfaff in #273
- Added SE2StateSpaceSubdivisionGaussianDistribution by @FlorianPfaff in #277
- [codex] Extend GP-RHM with full SCGP tracker variants by @FlorianPfaff in #1861
- Codex/add mem ekf tracker by @FlorianPfaff in #1880
- [codex] Fix EOT measurement timestep poses by @FlorianPfaff in #1844
- [codex] Use pyrecest.backend copy alias by @FlorianPfaff in #1884
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1883
- Bump version from 1.1.0 to 1.1.1 by @FlorianPfaff in #1885
Full Changelog: 1.1.0...1.1.1
Release 1.1.0
What's Changed
- [codex] Clarify manual PyPI publish target selection by @FlorianPfaff in #1830
- [codex] Publish PyPI artifacts from GitHub release assets by @FlorianPfaff in #1831
- [codex] Update pyrecest/evaluation/plot_results.py by @FlorianPfaff in #1791
- [codex] Update pyrecest/evaluation/summarize_filter_results.py by @FlorianPfaff in #1790
- [codex] Update pyrecest/evaluation/evaluate_for_simulation_config.py by @FlorianPfaff in #1782
- Feature/gaussvm new by @FlorianPfaff in #1764
- Added SE3LinVelCartProdStackedDistribution by @FlorianPfaff in #265
- Added feature-based association by @FlorianPfaff in #1750
- [codex] Reorganize repository layout by @FlorianPfaff in #1833
- Update requirements by @FlorianPfaff in #1832
- [codex] Update pyrecest/evaluation/eot_shape_database.py by @FlorianPfaff in #1780
- Port ComplexWatsonDistribution and BayesianComplexWatsonMixtureModel from MATLAB by @Copilot in #1648
- EOT evaluation with test by @FlorianPfaff in #1433
- [codex] Add GGIW extended object tracker by @FlorianPfaff in #1834
- Score native multisession helpers by @FlorianPfaff in #1821
- Added ROI-overlap-based global association by @FlorianPfaff in #1743
- [codex] Update pyrecest/evaluation/generate_simulated_scenarios.py by @FlorianPfaff in #1786
- [codex] Update pyrecest/filters/joint_probabilistic_data_association_filter.py by @FlorianPfaff in #1794
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1836
Full Changelog: 1.0.3...1.1.0
Release 1.0.3
What's Changed
- Added point set registration by @FlorianPfaff in #1742
- Add ability to use external cost mat for GNN by @FlorianPfaff in #1741
- Added nonrigid point set registration by @FlorianPfaff in #1749
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1773
- Remove dependency on bayesian_filters by @FlorianPfaff in #1737
- [codex] Ignore pylint redefined-builtin by @FlorianPfaff in #1800
- Bump idna from 3.11 to 3.12 by @dependabot[bot] in #1775
- Bump setuptools from 81.0.0 to 82.0.1 by @dependabot[bot] in #1770
- Consolidate point set registration by @FlorianPfaff in #1776
- [codex] Add backend isscalar function by @FlorianPfaff in #1808
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1810
- Bump certifi from 2026.2.25 to 2026.4.22 by @dependabot[bot] in #1815
- Bump torch from 2.10.0 to 2.11.0 by @dependabot[bot] in #1813
- Bump idna from 3.12 to 3.13 by @dependabot[bot] in #1814
- [codex] Update pyrecest/filters/hyperhemispherical_particle_filter.py by @FlorianPfaff in #1793
- [codex] Update pyrecest/evaluation/determine_all_deviations.py by @FlorianPfaff in #1779
- Minor cleanup for gaussian distribution by @FlorianPfaff in #1777
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1817
- Added AbstractPeriodicGridDistribution by @FlorianPfaff in #288
- Added HypercylindricalStateSpaceSubdivisionGaussianDistribution by @FlorianPfaff in #291
- Added Murty-based k-best partial assignment by @FlorianPfaff in #1738
- Added HypercylindricalStateSpaceSubdivisionDistribution by @FlorianPfaff in #248
- Bump version from 1.0.2 to 1.0.3 by @FlorianPfaff in #1823
- Added history recorder by @FlorianPfaff in #1744
- [codex] Add size to the backend interface by @FlorianPfaff in #1820
- [codex] Update pyrecest/evaluation/perform_predict_update_cycles.py by @FlorianPfaff in #1789
- [codex] Update pyrecest/filters/hyperhemisphere_cart_prod_particle_filter.py by @FlorianPfaff in #1792
- Update requirements by @FlorianPfaff in #1824
- Remove no longer required requirements file by @FlorianPfaff in #1827
- Cancel in-progress test workflow runs on new PR commits by @FlorianPfaff in #1826
- [codex] Replace stdlib copy imports with pyrecest.backend.copy by @FlorianPfaff in #1825
- Bump matplotlib from 3.10.8 to 3.10.9 by @dependabot[bot] in #1829
- Added CircularGridDistribution by @FlorianPfaff in #285
- [codex] Update pyrecest/evaluation/get_distance_function.py by @FlorianPfaff in #1787
- [codex] Update pyrecest/evaluation/iterate_configs_and_runs.py by @FlorianPfaff in #1788
Full Changelog: 1.0.2...1.0.3
Release 1.0.2
What's Changed
- Upgrade actions/cache from v4 to v5 by @FlorianPfaff in #1534
- Squeeze integrand for hypersphere by @FlorianPfaff in #1533
- Fixed warning suppression in test case by @FlorianPfaff in #1536
- Ignore one more warning by @FlorianPfaff in #1537
- Fixed deprecated assingment by @FlorianPfaff in #1539
- Ensure sigma and mu are scalar for wrapped normal by @FlorianPfaff in #1541
- Upgrade upload-artifact action to version 6 by @FlorianPfaff in #1542
- Use poetry for megalinter by @FlorianPfaff in #1535
- Update download-artifact action to version 6 by @FlorianPfaff in #1543
- Bump mpmath from 1.3.0 to 1.4.0 by @dependabot[bot] in #1521
- Bump pyshtools from 4.13.1 to 4.14.1 by @dependabot[bot] in #1522
- Bump jax from 0.9.0 to 0.9.1 by @dependabot[bot] in #1525
- Bump requests from 2.32.5 to 2.33.0 by @dependabot[bot] in #1527
- Bump numpy from 2.3.5 to 2.4.2 by @dependabot[bot] in #1502
- Update MegaLinter Python flavor to v9.4.0 by @FlorianPfaff in #1523
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1544
- Bump fsspec from 2025.7.0 to 2026.2.0 by @dependabot[bot] in #1545
- Bump ml-dtypes from 0.5.3 to 0.5.4 by @dependabot[bot] in #1546
- Bump pyshtools from 4.13.1 to 4.14.1 by @dependabot[bot] in #1549
- Bump xarray from 2025.6.1 to 2026.2.0 by @dependabot[bot] in #1547
- Output alpine version for ml by @FlorianPfaff in #1551
- Upgrade alpine for generating wheels to match version of megalinter by @FlorianPfaff in #1552
- Update astropy by @FlorianPfaff in #1554
- Minor function argument rename by @FlorianPfaff in #1553
- Bump numpy from 2.3.5 to 2.4.3 by @dependabot[bot] in #1548
- Increased tolerance in test case to avoid random failure by @FlorianPfaff in #1556
- Prevent unnecessary file in prs by megalinter by @FlorianPfaff in #1558
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1557
- Bump certifi from 2026.1.4 to 2026.2.25 by @dependabot[bot] in #1561
- Bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #1559
- Bump jaxlib from 0.9.0 to 0.9.2 by @dependabot[bot] in #1563
- Bump astropy-iers-data from 0.2026.2.23.0.48.33 to 0.2026.3.30.0.54.34 by @dependabot[bot] in #1560
- Bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #1564
- Bump filelock from 3.18.0 to 3.25.2 by @dependabot[bot] in #1565
- Bump kiwisolver from 1.4.9 to 1.5.0 by @dependabot[bot] in #1567
- Bump charset-normalizer from 3.4.4 to 3.4.6 by @dependabot[bot] in #1568
- Bump fonttools from 4.61.1 to 4.62.1 by @dependabot[bot] in #1566
- Fix warnings in test suite by @Copilot in #1569
- Megalinter: Remove temporay file before opening pr by @FlorianPfaff in #1572
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1573
- Fix 3 bugs in EOT shape database by @Copilot in #1574
- Implement SdCondSdGridDistribution for PyRecEst by @Copilot in #1575
- Fix tile/repeat swap in PartiallyWrappedNormalDistribution.pdf() and strengthen test by @Copilot in #1577
- Create only temporary npy file during tests by @FlorianPfaff in #1578
- Prevent temporary plots from remaining in the file system by @FlorianPfaff in #1579
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1581
- Add AbstractAxialFilter for hypersphere filters with antipodal symmetry by @Copilot in #1586
- Add tests for AbstractDummyFilter and HypersphericalDummyFilter by @Copilot in #1585
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1593
- Implement deterministic Fibonacci grid sampler for Euclidean spaces by @Copilot in #1584
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1596
- Fix package handling in megalinter by @FlorianPfaff in #1601
- Port MardiaSuttonDistribution from libDirectional by @Copilot in #1602
- Bump filelock from 3.18.0 to 3.25.2 by @dependabot[bot] in #1600
- Bump setuptools from 82.0.0 to 82.0.1 by @dependabot[bot] in #1599
- Bump iniconfig from 2.1.0 to 2.3.0 by @dependabot[bot] in #1597
- Bump jaxlib from 0.9.0 to 0.9.2 by @dependabot[bot] in #1598
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1604
- Always import pi from backend by @FlorianPfaff in #1606
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1610
- Port ToroidalVMRivestDistribution from libDirectional by @Copilot in #1595
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1611
- Bump pytz from 2025.2 to 2026.1.post1 by @dependabot[bot] in #1612
- Bump torch from 2.10.0 to 2.11.0 by @dependabot[bot] in #1613
- Bump requests from 2.33.0 to 2.33.1 by @dependabot[bot] in #1614
- Bump numpy from 2.4.3 to 2.4.4 by @dependabot[bot] in #1615
- Port ToroidalVMMatrixDistribution (bivariate von Mises, matrix version) from libDirectional by @Copilot in #1605
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1616
- Add rad2deg to pyrecest.backend (all backends) by @Copilot in #1617
- Bump torch from 2.10.0 to 2.11.0 by @dependabot[bot] in #1618
- Bump fsspec from 2026.2.0 to 2026.3.0 by @dependabot[bot] in #1619
- Bump numpy from 2.4.3 to 2.4.4 by @dependabot[bot] in #1620
- Bump charset-normalizer from 3.4.6 to 3.4.7 by @dependabot[bot] in #1621
- Port GSSVMDistribution and fix bessel_ratio normalization bug by @Copilot in #1609
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1622
- Port SE2BinghamDistribution from libDirectional by @Copilot in #1603
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1623
- Port Generalized von Mises distribution from libDirectional by @Copilot in #1591
- Update upload-artifact action to version 6 by @FlorianPfaff in #1624
- [MegaLinter] Apply linters automatic fixes by @FlorianPfaff in #1625
- Port GeneralizedKSineSkewedWrappedCauchyDistribution (GSSC) from libDirectional by @Copilot in #1608
- Porting ToroidalVMCosineDistribution code by @Copilot in #1607
- Implement TdCondTdGridDistribution: conditional grid distribution on the hypertorus by @Copilot in #1576
- Add S2CondS2GridDistribution: conditional distribution on S²×S² by @Copilot in #1590
- Manual fixes for linter by @FlorianPfaff in #1627
- Prevent calling transpose for 0D array by @FlorianPfaff in https://github.com/FlorianPfaff/PyR...
Release 1.0.1
Merge pull request #1531 from FlorianPfaff/FlorianPfaff-patch-18 Bump version from 1.0.0 to 1.0.1
Release 1.0.0
Merge pull request #1442 from FlorianPfaff/releasepy313 Use newer python in workflow for releases
Release 0.9.1
Merge pull request #1335 from FlorianPfaff/v0.9.1 Upped version to 0.9.1
Release 0.9.0
Merge pull request #1301 from FlorianPfaff/v.0.9.0 Upped version number