Skip to content

Releases: FlorianPfaff/PyRecEst

Release 2.2.0

09 May 13:19
f86262b

Choose a tag to compare

⚡ Improvements

  • Expose linear Gaussian innovation diagnostics through KalmanFilter.innovation_linear(...) and KalmanFilter.normalized_innovation_squared_linear(...) for backend-native Kalman consistency checks. (#1999)
  • Add KalmanFilter.update_model_robust(...) so model-based Kalman filters can use robust linear-Gaussian updates with gating, Huber, and Student-t scaling. (#2002)
  • Add optional diagnostics to linear Gaussian and Kalman updates, including residuals, normalized innovation squared, measurement-noise scale, and action labels. (#1987)
  • Add inverse and composition helpers to AffineTransform for point-set registration workflows. (#1991)
  • Add student_t_covariance_scale(...) to compute robust measurement-covariance inflation for Student-t Kalman updates. (#1988)

✨ Features

  • Add NamedPairwiseFeatureSchema and CalibratedPairwiseAssociationModel to define named pairwise association features and turn them into calibrated match probabilities or costs. (#2004)
  • Add pairwise_mahalanobis_distances and pairwise_covariance_shape_components in pyrecest.utils for generic covariance-based association features. (#2003)
  • Add linear_gaussian_update_robust(...) and KalmanFilter.update_linear_robust(...) for gated, Student-t, Huber, and NIS-inflated linear-Gaussian measurement updates. (#1992)
  • Add pyrecest.filters.relaxed_s3f_so3 with relaxed S3F prediction helpers for SO(3) and S3+ x R3 state spaces. (#1998)
  • Add generic track-evaluation utilities in pyrecest.utils for scoring links, complete tracks, fragmentation, and aggregate track matrices across sessions. (#1997)
  • Add confidence-aware, heteroskedastic geodesic log-likelihood updates for SO3ProductParticleFilter and PartitionedSO3ProductParticleFilter. (#1996)
  • Expose a public pyrecest.distributions.so3_helpers module for quaternion normalization, exp/log maps, rotation conversion, geodesic distance, and vector rotation on SO(3). (#1990)
  • Add so3_right_multiplication_grid_transition(...) and quaternion_grid_transition_density(...) for quaternion-grid prediction on SO(3). (#1995)

🐛 Fixes

  • Resolve scalar SO(3) geodesic-distance handling and keep quaternion-grid transition densities normalized for SO(3) particle-filter workflows. (#2000)

Release 2.1.0

08 May 15:28
efc21d7

Choose a tag to compare

✨ Features

  • Add PartitionedSO3ProductParticleFilter for SO(3)^K states with configurable partitions, per-block weights, and block-wise resampling. (#1980)
  • Add configurable post-update resampling to particle filters so users can keep weighted particles, trigger resampling manually, or apply a custom resampling rule. (#1978)
  • Let FullSCGPTracker.update() weight or mask individual measurements so unreliable detections can be down-weighted or ignored during shape and kinematic updates. (#1976)
  • Add SphericalHarmonicsEOTTracker for 3-D star-convex extended-object tracking with spherical-harmonic extent coefficients. (#1973)

⚡ Improvements

  • Speed up BinghamDistribution normalization and moment fitting, especially for 2D and 4D cases, to make Bingham-based estimation much faster. (#1972)
  • Make HyperhemisphericalGridFilter.get_point_estimate() return the dominant scatter-matrix eigenvector directly for much faster point estimates. (#1970)

Release 2.0.0

04 May 16:21
d07b3ec

Choose a tag to compare

✨ Features

  • Introduce AdditiveNoiseTransitionModel and AdditiveNoiseMeasurementModel so 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 AbstractGridFilter can 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(...) and update_model(...) support to particle filters for reusable transition-sampling and likelihood model objects. (#1947)
  • Add predict_model(...) and update_model(...) support to UnscentedKalmanFilter for reusable additive-noise transition and measurement models. (#1944)
  • Add KalmanFilter.predict_model(...) and update_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.models for particle, grid, and related estimators. (#1949)
  • Add reusable linear Gaussian transition and measurement model classes in pyrecest.models with prediction and noise helper methods. (#1946)
  • Add string-based representation conversion aliases such as particles, gaussian, grid, and fourier, plus convert_to(...) convenience methods on distributions. (#1931)
  • Introduce a distribution representation-conversion layer with convert_distribution(...), conversion registration helpers, and method-form convert_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 GoalConditionedReplayParticleIMMFilter with 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 for convert_distribution(...) and related helpers. (#1940)
  • Add pyrecest.protocols.testing helpers 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.typed marker so PyRecEst exposes its type information to external type checkers and typed downstream projects. (#1954)
  • Introduce the public pyrecest.protocols package 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 StateSpaceSubdivisionFilter linear updates and relaxed S3F covariance calculations with vectorized implementations. (#1926)

📚 Docs

  • Document how to extend pyrecest.protocols and add runnable custom distribution and custom filter examples. (#1963)
  • Add executable Kalman, Unscented Kalman, and particle filter examples that show how to use reusable model objects across filters. (#1943)

Release 1.1.2

29 Apr 10:52
81fac1a

Choose a tag to compare

What's Changed

Full Changelog: 1.1.1...1.1.2

Release 1.1.1

26 Apr 15:38
1c808e2

Choose a tag to compare

What's Changed

Full Changelog: 1.1.0...1.1.1

Release 1.1.0

25 Apr 08:44
f344bab

Choose a tag to compare

What's Changed

Full Changelog: 1.0.3...1.1.0

Release 1.0.3

24 Apr 07:48
beca106

Choose a tag to compare

What's Changed

Full Changelog: 1.0.2...1.0.3

Release 1.0.2

21 Apr 18:24

Choose a tag to compare

What's Changed

Read more

Release 1.0.1

26 Mar 15:30
fd3d0be

Choose a tag to compare

Merge pull request #1531 from FlorianPfaff/FlorianPfaff-patch-18

Bump version from 1.0.0 to 1.0.1

Release 1.0.0

07 Dec 04:06
97f7b5d

Choose a tag to compare

Merge pull request #1442 from FlorianPfaff/releasepy313

Use newer python in workflow for releases