pyrecest 2.2.2__tar.gz → 2.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. pyrecest-2.2.2/README.md → pyrecest-2.2.4/PKG-INFO +93 -0
  2. pyrecest-2.2.2/PKG-INFO → pyrecest-2.2.4/README.md +50 -31
  3. pyrecest-2.2.4/pyproject.toml +165 -0
  4. pyrecest-2.2.4/src/pyrecest/__init__.py +58 -0
  5. pyrecest-2.2.4/src/pyrecest/_backend/__init__.py +762 -0
  6. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_dtype_utils.py +1 -1
  7. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_shared_numpy/__init__.py +35 -13
  8. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_shared_numpy/_common.py +50 -16
  9. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_shared_numpy/linalg.py +18 -11
  10. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_shared_numpy/random.py +10 -1
  11. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/__init__.py +57 -6
  12. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/_common.py +0 -1
  13. pyrecest-2.2.4/src/pyrecest/_backend/autograd/fft.py +3 -0
  14. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/linalg.py +5 -1
  15. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/random.py +3 -2
  16. pyrecest-2.2.4/src/pyrecest/_backend/autograd/signal.py +3 -0
  17. pyrecest-2.2.4/src/pyrecest/_backend/autograd/spatial.py +3 -0
  18. pyrecest-2.2.4/src/pyrecest/_backend/capabilities.py +218 -0
  19. pyrecest-2.2.4/src/pyrecest/_backend/jax/__init__.py +618 -0
  20. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/jax/_dtype.py +1 -2
  21. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/jax/autodiff.py +0 -1
  22. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/jax/fft.py +5 -5
  23. pyrecest-2.2.4/src/pyrecest/_backend/jax/linalg.py +57 -0
  24. pyrecest-2.2.4/src/pyrecest/_backend/jax/random.py +297 -0
  25. pyrecest-2.2.4/src/pyrecest/_backend/jax/signal.py +1 -0
  26. pyrecest-2.2.4/src/pyrecest/_backend/jax/spatial.py +1 -0
  27. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/__init__.py +45 -49
  28. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/_common.py +0 -1
  29. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/autodiff.py +2 -0
  30. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/fft.py +5 -4
  31. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/linalg.py +2 -2
  32. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/random.py +7 -2
  33. pyrecest-2.2.4/src/pyrecest/_backend/numpy/signal.py +1 -0
  34. pyrecest-2.2.4/src/pyrecest/_backend/numpy/spatial.py +1 -0
  35. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/__init__.py +472 -143
  36. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/_common.py +2 -0
  37. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/_dtype.py +1 -2
  38. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/fft.py +5 -5
  39. pyrecest-2.2.4/src/pyrecest/_backend/pytorch/linalg.py +254 -0
  40. pyrecest-2.2.4/src/pyrecest/_backend/pytorch/random.py +250 -0
  41. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/signal.py +1 -1
  42. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/spatial.py +1 -1
  43. pyrecest-2.2.4/src/pyrecest/api_registry.py +103 -0
  44. pyrecest-2.2.4/src/pyrecest/backend_support.py +58 -0
  45. pyrecest-2.2.4/src/pyrecest/backend_tools.py +54 -0
  46. pyrecest-2.2.4/src/pyrecest/backends/__init__.py +33 -0
  47. pyrecest-2.2.4/src/pyrecest/calibration/__init__.py +37 -0
  48. pyrecest-2.2.4/src/pyrecest/calibration/bias.py +387 -0
  49. pyrecest-2.2.4/src/pyrecest/calibration/time_offset.py +390 -0
  50. pyrecest-2.2.4/src/pyrecest/cli.py +198 -0
  51. pyrecest-2.2.4/src/pyrecest/deprecation.py +53 -0
  52. pyrecest-2.2.4/src/pyrecest/diagnostics.py +314 -0
  53. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/__init__.py +0 -3
  54. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/_so3_helpers.py +13 -3
  55. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_custom_distribution.py +9 -5
  56. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_dirac_distribution.py +19 -9
  57. pyrecest-2.2.4/src/pyrecest/distributions/abstract_ellipsoidal_ball_distribution.py +84 -0
  58. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_mixture.py +38 -4
  59. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_hypercylindrical_distribution.py +7 -3
  60. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_bounded_cart_prod_distribution.py +6 -4
  61. pyrecest-2.2.4/src/pyrecest/distributions/cart_prod/cart_prod_stacked_distribution.py +91 -0
  62. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/custom_hypercylindrical_distribution.py +1 -1
  63. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/gauss_von_mises_distribution.py +64 -9
  64. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/hypercylindrical_dirac_distribution.py +2 -1
  65. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/hypercylindrical_state_space_subdivision_distribution.py +25 -0
  66. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/lin_hypersphere_cart_prod_dirac_distribution.py +2 -1
  67. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/mardia_sutton_distribution.py +52 -7
  68. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/partially_wrapped_normal_distribution.py +96 -19
  69. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/se2_bingham_distribution.py +26 -1
  70. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/se3_lin_vel_cart_prod_stacked_distribution.py +2 -1
  71. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/abstract_circular_distribution.py +2 -1
  72. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/circular_fourier_distribution.py +1 -0
  73. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/circular_mixture.py +5 -0
  74. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/circular_uniform_distribution.py +2 -1
  75. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/custom_circular_distribution.py +1 -0
  76. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/generalized_von_mises_distribution.py +28 -7
  77. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/piecewise_constant_distribution.py +46 -5
  78. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/sine_skewed_distributions.py +25 -11
  79. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/von_mises_distribution.py +7 -3
  80. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/wrapped_cauchy_distribution.py +37 -5
  81. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/wrapped_exponential_distribution.py +32 -4
  82. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/wrapped_laplace_distribution.py +17 -6
  83. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/wrapped_normal_distribution.py +43 -17
  84. pyrecest-2.2.4/src/pyrecest/distributions/custom_hyperrectangular_distribution.py +41 -0
  85. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/ellipsoidal_ball_uniform_distribution.py +36 -7
  86. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hypersphere_subset_distribution.py +25 -39
  87. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hypersphere_subset_uniform_distribution.py +2 -1
  88. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_sphere_subset_distribution.py +10 -7
  89. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/bingham_distribution.py +30 -1
  90. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/complex_angular_central_gaussian_distribution.py +43 -1
  91. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/complex_bingham_distribution.py +25 -0
  92. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/complex_watson_distribution.py +25 -0
  93. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/custom_hyperhemispherical_distribution.py +9 -8
  94. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperspherical_dirac_distribution.py +2 -3
  95. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperspherical_grid_distribution.py +8 -13
  96. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperspherical_uniform_distribution.py +28 -1
  97. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/spherical_grid_distribution.py +8 -4
  98. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/von_mises_fisher_distribution.py +10 -2
  99. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/watson_distribution.py +13 -2
  100. pyrecest-2.2.4/src/pyrecest/distributions/hypertorus/_input_validation.py +45 -0
  101. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/abstract_hypertoroidal_distribution.py +11 -5
  102. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/abstract_toroidal_bivar_vm_distribution.py +8 -2
  103. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/custom_hypertoroidal_distribution.py +12 -6
  104. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/custom_toroidal_distribution.py +4 -2
  105. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_dirac_distribution.py +27 -4
  106. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_fourier_distribution.py +2 -5
  107. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_grid_distribution.py +11 -1
  108. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_mixture.py +5 -1
  109. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_uniform_distribution.py +88 -14
  110. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/hypertoroidal_wrapped_normal_distribution.py +22 -10
  111. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_vm_matrix_distribution.py +16 -2
  112. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_vm_rivest_distribution.py +12 -3
  113. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_von_mises_cosine_distribution.py +4 -2
  114. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_von_mises_sine_distribution.py +2 -1
  115. pyrecest-2.2.4/src/pyrecest/distributions/nonperiodic/abstract_hyperrectangular_distribution.py +66 -0
  116. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/abstract_linear_distribution.py +8 -5
  117. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/custom_linear_distribution.py +22 -4
  118. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/gaussian_distribution.py +114 -39
  119. pyrecest-2.2.4/src/pyrecest/distributions/nonperiodic/hyperrectangular_uniform_distribution.py +47 -0
  120. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/linear_box_particle_distribution.py +35 -15
  121. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/linear_dirac_distribution.py +31 -9
  122. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/se2_dirac_distribution.py +19 -9
  123. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/se3_dirac_distribution.py +18 -6
  124. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_bingham_distribution.py +40 -18
  125. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_conversion.py +13 -2
  126. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_dirac_distribution.py +22 -11
  127. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_product_dirac_distribution.py +13 -2
  128. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_product_tangent_gaussian_distribution.py +42 -2
  129. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_tangent_gaussian_distribution.py +43 -2
  130. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/check_and_fix_config.py +41 -19
  131. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/configure_for_filter.py +43 -2
  132. pyrecest-2.2.4/src/pyrecest/evaluation/diagnostic_summaries.py +334 -0
  133. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/generate_measurements.py +60 -29
  134. pyrecest-2.2.4/src/pyrecest/evaluation/get_distance_function.py +190 -0
  135. pyrecest-2.2.4/src/pyrecest/evaluation/get_extract_mean.py +116 -0
  136. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/perform_predict_update_cycles.py +58 -8
  137. pyrecest-2.2.4/src/pyrecest/exceptions.py +137 -0
  138. pyrecest-2.2.4/src/pyrecest/experimental/__init__.py +9 -0
  139. pyrecest-2.2.4/src/pyrecest/experimental/dvs/__init__.py +90 -0
  140. pyrecest-2.2.4/src/pyrecest/experimental/dvs/active_contour.py +105 -0
  141. pyrecest-2.2.4/src/pyrecest/experimental/dvs/event_likelihood.py +308 -0
  142. pyrecest-2.2.4/src/pyrecest/experimental/dvs/point_process_tracker.py +431 -0
  143. pyrecest-2.2.4/src/pyrecest/experimental/dvs/synthetic.py +123 -0
  144. pyrecest-2.2.4/src/pyrecest/experimental/dvs/trackers.py +490 -0
  145. pyrecest-2.2.4/src/pyrecest/experimental/dvs/vectorized_flow.py +98 -0
  146. pyrecest-2.2.4/src/pyrecest/filters/__init__.py +233 -0
  147. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/_linear_gaussian.py +19 -14
  148. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/_ukf.py +15 -16
  149. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_dummy_filter.py +4 -1
  150. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_filter.py +10 -3
  151. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_grid_filter.py +17 -11
  152. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_nearest_neighbor_tracker.py +2 -2
  153. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_particle_filter.py +52 -7
  154. pyrecest-2.2.4/src/pyrecest/filters/adaptive_process_noise.py +174 -0
  155. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/association_hypotheses.py +183 -29
  156. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/axial_kalman_filter.py +35 -17
  157. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/bingham_filter.py +73 -16
  158. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/block_particle_filter.py +104 -49
  159. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/circular_ukf.py +85 -27
  160. pyrecest-2.2.4/src/pyrecest/filters/discrete_state.py +654 -0
  161. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/euclidean_box_particle_filter.py +13 -6
  162. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/euclidean_boxed_particle_filter.py +17 -3
  163. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/euclidean_particle_filter.py +13 -4
  164. pyrecest-2.2.4/src/pyrecest/filters/gaussian_hypothesis_mixture.py +81 -0
  165. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/global_nearest_neighbor.py +54 -14
  166. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/goal_conditioned_replay_particle_filter.py +43 -0
  167. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/gprhm_tracker.py +52 -13
  168. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperspherical_dummy_filter.py +7 -1
  169. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperspherical_particle_filter.py +2 -8
  170. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hypertoroidal_dummy_filter.py +7 -1
  171. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/interacting_multiple_model_filter.py +10 -0
  172. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/joint_probabilistic_data_association_filter.py +4 -3
  173. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/kalman_filter.py +29 -9
  174. pyrecest-2.2.4/src/pyrecest/filters/linear_update_planning.py +441 -0
  175. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/multi_bernoulli_mixture_tracker.py +33 -1
  176. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/multi_bernoulli_tracker.py +52 -17
  177. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/multi_hypothesis_tracker.py +461 -32
  178. pyrecest-2.2.4/src/pyrecest/filters/online_time_offset_estimator.py +59 -0
  179. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/out_of_sequence.py +2 -2
  180. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/random_matrix_tracker.py +2 -0
  181. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/relaxed_s3f_circular.py +38 -3
  182. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/relaxed_s3f_so3.py +50 -11
  183. pyrecest-2.2.4/src/pyrecest/filters/replay_grid_likelihood.py +424 -0
  184. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/se2_ukf.py +59 -31
  185. pyrecest-2.2.4/src/pyrecest/filters/sequence_association.py +289 -0
  186. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/so3_grid_transition.py +10 -2
  187. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/so3_product_particle_filter.py +99 -14
  188. pyrecest-2.2.4/src/pyrecest/filters/so3_product_sequence_filter.py +531 -0
  189. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/toroidal_wrapped_normal_filter.py +2 -1
  190. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/track_manager.py +71 -11
  191. pyrecest-2.2.4/src/pyrecest/filters/tracklet_viterbi.py +641 -0
  192. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/unscented_kalman_filter.py +13 -24
  193. pyrecest-2.2.4/src/pyrecest/filters/vbrm_o_tracker.py +14 -0
  194. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/von_mises_filter.py +59 -5
  195. pyrecest-2.2.4/src/pyrecest/filters/von_mises_fisher_filter.py +129 -0
  196. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/wrapped_normal_filter.py +34 -4
  197. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/additive_noise.py +56 -4
  198. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/likelihood.py +28 -18
  199. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/motion_models.py +117 -53
  200. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/sensor_models.py +138 -25
  201. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/validation.py +3 -1
  202. pyrecest-2.2.4/src/pyrecest/numerics.py +177 -0
  203. pyrecest-2.2.4/src/pyrecest/optional_dependencies.py +37 -0
  204. pyrecest-2.2.4/src/pyrecest/protocols/__init__.py +47 -0
  205. pyrecest-2.2.4/src/pyrecest/protocols/distributions.py +75 -0
  206. pyrecest-2.2.4/src/pyrecest/protocols/estimator.py +35 -0
  207. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/protocols/filters.py +4 -0
  208. pyrecest-2.2.4/src/pyrecest/reproducibility.py +75 -0
  209. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/euclidean_sampler.py +97 -13
  210. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/hyperspherical_sampler.py +115 -31
  211. pyrecest-2.2.4/src/pyrecest/sampling/hypertoroidal_sampler.py +66 -0
  212. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/sigma_points.py +36 -33
  213. pyrecest-2.2.4/src/pyrecest/scenarios.py +293 -0
  214. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/__init__.py +6 -0
  215. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/mem_rbpf_ffbsi_smoother.py +22 -3
  216. pyrecest-2.2.4/src/pyrecest/smoothers/so3_tangent_savitzky_golay_smoother.py +347 -0
  217. pyrecest-2.2.4/src/pyrecest/stability.py +109 -0
  218. pyrecest-2.2.4/src/pyrecest/types.py +32 -0
  219. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/__init__.py +12 -1
  220. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/assignment.py +89 -3
  221. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/association_models.py +27 -6
  222. pyrecest-2.2.4/src/pyrecest/utils/candidate_pruning.py +236 -0
  223. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/history_recorder.py +5 -2
  224. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/metrics.py +31 -11
  225. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/multisession_assignment.py +78 -20
  226. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/multisession_assignment_score.py +29 -6
  227. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/roi_assignment.py +9 -3
  228. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/track_evaluation.py +1 -1
  229. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/track_metrics.py +26 -8
  230. pyrecest-2.2.2/pyproject.toml +0 -97
  231. pyrecest-2.2.2/src/pyrecest/__init__.py +0 -2
  232. pyrecest-2.2.2/src/pyrecest/_backend/__init__.py +0 -368
  233. pyrecest-2.2.2/src/pyrecest/_backend/jax/__init__.py +0 -432
  234. pyrecest-2.2.2/src/pyrecest/_backend/jax/linalg.py +0 -34
  235. pyrecest-2.2.2/src/pyrecest/_backend/jax/random.py +0 -161
  236. pyrecest-2.2.2/src/pyrecest/_backend/jax/signal.py +0 -1
  237. pyrecest-2.2.2/src/pyrecest/_backend/jax/spatial.py +0 -1
  238. pyrecest-2.2.2/src/pyrecest/_backend/numpy/signal.py +0 -1
  239. pyrecest-2.2.2/src/pyrecest/_backend/numpy/spatial.py +0 -1
  240. pyrecest-2.2.2/src/pyrecest/_backend/pytorch/linalg.py +0 -161
  241. pyrecest-2.2.2/src/pyrecest/_backend/pytorch/random.py +0 -83
  242. pyrecest-2.2.2/src/pyrecest/distributions/abstract_ellipsoidal_ball_distribution.py +0 -49
  243. pyrecest-2.2.2/src/pyrecest/distributions/cart_prod/cart_prod_stacked_distribution.py +0 -58
  244. pyrecest-2.2.2/src/pyrecest/distributions/custom_hyperrectangular_distribution.py +0 -19
  245. pyrecest-2.2.2/src/pyrecest/distributions/nonperiodic/abstract_hyperrectangular_distribution.py +0 -43
  246. pyrecest-2.2.2/src/pyrecest/distributions/nonperiodic/hyperrectangular_uniform_distribution.py +0 -13
  247. pyrecest-2.2.2/src/pyrecest/evaluation/get_distance_function.py +0 -68
  248. pyrecest-2.2.2/src/pyrecest/evaluation/get_extract_mean.py +0 -51
  249. pyrecest-2.2.2/src/pyrecest/filters/__init__.py +0 -329
  250. pyrecest-2.2.2/src/pyrecest/filters/von_mises_fisher_filter.py +0 -69
  251. pyrecest-2.2.2/src/pyrecest/protocols/__init__.py +0 -21
  252. pyrecest-2.2.2/src/pyrecest/sampling/hypertoroidal_sampler.py +0 -30
  253. {pyrecest-2.2.2 → pyrecest-2.2.4}/LICENSE +0 -0
  254. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/.pylintrc +0 -0
  255. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/LICENSE_geomstats +0 -0
  256. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/README.md +0 -0
  257. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_backend_config.py +0 -0
  258. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_common.py +0 -0
  259. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/_shared_numpy/_dispatch.py +0 -0
  260. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/_dtype.py +0 -0
  261. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/autograd/autodiff.py +0 -0
  262. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/numpy/_dtype.py +0 -0
  263. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/_backend/pytorch/autodiff.py +0 -0
  264. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_bounded_domain_distribution.py +0 -0
  265. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_bounded_nonperiodic_distribution.py +0 -0
  266. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_custom_nonperiodic_distribution.py +0 -0
  267. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_disk_distribution.py +0 -0
  268. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_distribution_type.py +0 -0
  269. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_grid_distribution.py +0 -0
  270. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_manifold_specific_distribution.py +0 -0
  271. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_nonperiodic_distribution.py +0 -0
  272. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_orthogonal_basis_distribution.py +0 -0
  273. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_periodic_distribution.py +0 -0
  274. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_periodic_grid_distribution.py +0 -0
  275. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_se2_distribution.py +0 -0
  276. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_se3_distribution.py +0 -0
  277. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/abstract_uniform_distribution.py +0 -0
  278. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/__init__.py +0 -0
  279. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_cart_prod_distribution.py +0 -0
  280. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_custom_lin_bounded_cart_prod_distribution.py +0 -0
  281. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_hemisphere_cart_prod_distribution.py +0 -0
  282. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_hyperhemisphere_cart_prod_distribution.py +0 -0
  283. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_hypersphere_cart_prod_distribution.py +0 -0
  284. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_hypersphere_subset_cart_prod_distribution.py +0 -0
  285. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/abstract_lin_periodic_cart_prod_distribution.py +0 -0
  286. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/cart_prod_dirac_distribution.py +0 -0
  287. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/hypercylindrical_state_space_subdivision_gaussian_distribution.py +0 -0
  288. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/hyperhemisphere_cart_prod_dirac_distribution.py +0 -0
  289. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/lin_bounded_cart_prod_dirac_distribution.py +0 -0
  290. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/lin_hypersphere_subset_dirac_distribution.py +0 -0
  291. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/lin_periodic_cart_prod_dirac_distribution.py +0 -0
  292. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/se2_pwn_distribution.py +0 -0
  293. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/se2_state_space_subdivision_gaussian_distribution.py +0 -0
  294. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/state_space_subdivision_distribution.py +0 -0
  295. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/cart_prod/state_space_subdivision_gaussian_distribution.py +0 -0
  296. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/__init__.py +0 -0
  297. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/circular_dirac_distribution.py +0 -0
  298. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/circle/circular_grid_distribution.py +0 -0
  299. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/__init__.py +0 -0
  300. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/abstract_conditional_distribution.py +0 -0
  301. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/s2_cond_s2_grid_distribution.py +0 -0
  302. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/sd_cond_sd_grid_distribution.py +0 -0
  303. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/sd_half_cond_sd_half_grid_distribution.py +0 -0
  304. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conditional/td_cond_td_grid_distribution.py +0 -0
  305. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/conversion.py +0 -0
  306. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/disk_uniform_distribution.py +0 -0
  307. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/__init__.py +0 -0
  308. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_complex_hyperspherical_distribution.py +0 -0
  309. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hemispherical_distribution.py +0 -0
  310. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hyperhemispherical_distribution.py +0 -0
  311. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hypersphere_subset_dirac_distribution.py +0 -0
  312. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hypersphere_subset_grid_distribution.py +0 -0
  313. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_hyperspherical_distribution.py +0 -0
  314. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_spherical_distribution.py +0 -0
  315. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/abstract_spherical_harmonics_distribution.py +0 -0
  316. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/bayesian_complex_watson_mixture_model.py +0 -0
  317. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/custom_hemispherical_distribution.py +0 -0
  318. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/custom_hyperspherical_distribution.py +0 -0
  319. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hemispherical_uniform_distribution.py +0 -0
  320. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperhemispherical_bingham_distribution.py +0 -0
  321. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperhemispherical_dirac_distribution.py +0 -0
  322. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperhemispherical_grid_distribution.py +0 -0
  323. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperhemispherical_uniform_distribution.py +0 -0
  324. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperhemispherical_watson_distribution.py +0 -0
  325. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/hyperspherical_mixture.py +0 -0
  326. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/spherical_harmonics_distribution_complex.py +0 -0
  327. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypersphere_subset/spherical_harmonics_distribution_real.py +0 -0
  328. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/__init__.py +0 -0
  329. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/abstract_toroidal_distribution.py +0 -0
  330. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_dirac_distribution.py +0 -0
  331. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_fourier_distribution.py +0 -0
  332. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_mixture.py +0 -0
  333. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_uniform_distribution.py +0 -0
  334. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/hypertorus/toroidal_wrapped_normal_distribution.py +0 -0
  335. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/__init__.py +0 -0
  336. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/gaussian_mixture.py +0 -0
  337. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/nonperiodic/linear_mixture.py +0 -0
  338. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/se3_cart_prod_stacked_distribution.py +0 -0
  339. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_helpers.py +0 -0
  340. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/distributions/so3_uniform_distribution.py +0 -0
  341. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/__init__.py +0 -0
  342. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/determine_all_deviations.py +0 -0
  343. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/eot_shape_database.py +0 -0
  344. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/evaluate_for_file.py +0 -0
  345. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/evaluate_for_simulation_config.py +0 -0
  346. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/evaluate_for_variables.py +0 -0
  347. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/generate_groundtruth.py +0 -0
  348. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/generate_simulated_scenarios.py +0 -0
  349. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/get_axis_label.py +0 -0
  350. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/group_results_by_filter.py +0 -0
  351. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/iterate_configs_and_runs.py +0 -0
  352. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/plot_results.py +0 -0
  353. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/simulation_database.py +0 -0
  354. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/evaluation/summarize_filter_results.py +0 -0
  355. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_axial_filter.py +0 -0
  356. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_circular_filter.py +0 -0
  357. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_extended_object_tracker.py +0 -0
  358. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_multiple_extended_object_tracker.py +0 -0
  359. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_multitarget_tracker.py +0 -0
  360. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/abstract_tracker_with_logging.py +0 -0
  361. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/circular_fourier_filter.py +0 -0
  362. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/circular_particle_filter.py +0 -0
  363. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/ekf_spline_tracker.py +0 -0
  364. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/factorized_giw_random_matrix_tracker.py +0 -0
  365. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/fourier_rhm_tracker.py +0 -0
  366. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/gaussian_mixture_phd_filter.py +0 -0
  367. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/ggiw_tracker.py +0 -0
  368. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/goal_conditioned_replay_imm_filter.py +0 -0
  369. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/goal_conditioned_replay_particle_imm_filter.py +0 -0
  370. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hypercylindrical_particle_filter.py +0 -0
  371. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperhemisphere_cart_prod_particle_filter.py +0 -0
  372. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperhemispherical_grid_filter.py +0 -0
  373. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperhemispherical_particle_filter.py +0 -0
  374. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hyperspherical_ukf.py +0 -0
  375. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hypertoroidal_fourier_filter.py +0 -0
  376. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/hypertoroidal_particle_filter.py +0 -0
  377. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/information_form_distributed_kalman_filter.py +0 -0
  378. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/iterated_batch_mem_qkf_tracker.py +0 -0
  379. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/kernel_sme_filter.py +0 -0
  380. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/lin_bounded_particle_filter.py +0 -0
  381. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/lin_periodic_particle_filter.py +0 -0
  382. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/lomem_tracker.py +0 -0
  383. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/manifold_exponential_moving_average.py +0 -0
  384. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/manifold_mixins.py +0 -0
  385. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_ekf_star_oa_tracker.py +0 -0
  386. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_ekf_star_tracker.py +0 -0
  387. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_ekf_tracker.py +0 -0
  388. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_qkf_tracker.py +0 -0
  389. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_rbpf_tracker.py +0 -0
  390. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mem_soekf_tracker.py +0 -0
  391. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/mode_rbpf_manifold_ukf_tracker.py +0 -0
  392. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/orientation_vector_eot_tracker.py +0 -0
  393. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/partitioned_so3_product_particle_filter.py +0 -0
  394. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/piecewise_constant_filter.py +0 -0
  395. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/so3_product_block_particle_filter.py +0 -0
  396. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/spherical_harmonics_eot_tracker.py +0 -0
  397. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/spherical_harmonics_filter.py +0 -0
  398. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/state_space_subdivision_filter.py +0 -0
  399. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/toroidal_particle_filter.py +0 -0
  400. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/ukf_on_manifolds.py +0 -0
  401. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/vbrm_tracker.py +0 -0
  402. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/velocity_aided_mem_qkf_tracker.py +0 -0
  403. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/filters/velocity_locked_mem_qkf_tracker.py +0 -0
  404. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/__init__.py +0 -0
  405. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/adapters.py +0 -0
  406. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/grid.py +0 -0
  407. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/linear_gaussian.py +0 -0
  408. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/models/particle.py +0 -0
  409. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/protocols/common.py +0 -0
  410. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/protocols/models.py +0 -0
  411. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/protocols/testing.py +0 -0
  412. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/py.typed +0 -0
  413. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/__init__.py +0 -0
  414. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/abstract_sampler.py +0 -0
  415. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/sampling/leopardi_sampler.py +0 -0
  416. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/abstract_smoother.py +0 -0
  417. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/fixed_lag_mem_qkf_smoother.py +0 -0
  418. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/fixed_lag_random_matrix_smoother.py +0 -0
  419. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/fixed_lag_velocity_locked_mem_qkf_smoother.py +0 -0
  420. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/rauch_tung_striebel_smoother.py +0 -0
  421. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/sliding_window_manifold_mean_smoother.py +0 -0
  422. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/so3_chordal_mean_smoother.py +0 -0
  423. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/smoothers/unscented_rauch_tung_striebel_smoother.py +0 -0
  424. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/_point_set_registration_common.py +0 -0
  425. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/association_features.py +0 -0
  426. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/multisession_assignment_observation_costs.py +0 -0
  427. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/nonrigid_point_set_registration.py +0 -0
  428. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/pairwise_covariance_features.py +0 -0
  429. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/plotting.py +0 -0
  430. {pyrecest-2.2.2 → pyrecest-2.2.4}/src/pyrecest/utils/point_set_registration.py +0 -0
@@ -1,5 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyrecest
3
+ Version: 2.2.4
4
+ Summary: Framework for recursive Bayesian estimation in Python.
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Keywords: bayesian-filtering,recursive-estimation,tracking,multi-target-tracking,manifolds,directional-statistics
8
+ Author: Florian Pfaff
9
+ Author-email: pfaff@ias.uni-stuttgart.de
10
+ Requires-Python: >=3.11,<3.15
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Topic :: Scientific/Engineering
21
+ Provides-Extra: all-support
22
+ Provides-Extra: healpy-support
23
+ Provides-Extra: jax-support
24
+ Provides-Extra: pytorch-support
25
+ Requires-Dist: autograd (>=1.7,<2.0) ; extra == "jax-support" or extra == "all-support"
26
+ Requires-Dist: beartype (>=0.18,<0.23)
27
+ Requires-Dist: healpy (>=1.17,<2.0) ; extra == "healpy-support" or extra == "all-support"
28
+ Requires-Dist: jax (>=0.4.30,<0.11) ; extra == "jax-support" or extra == "all-support"
29
+ Requires-Dist: jaxlib (>=0.4.30,<0.11) ; extra == "jax-support" or extra == "all-support"
30
+ Requires-Dist: matplotlib (>=3.8,<4.0)
31
+ Requires-Dist: mpmath (>=1.3,<1.4)
32
+ Requires-Dist: numpy (>=2.0,<2.5)
33
+ Requires-Dist: pyshtools (>=4.12,<5.0)
34
+ Requires-Dist: scipy (>=1.14,<1.18)
35
+ Requires-Dist: shapely (>=2.0,<3.0)
36
+ Requires-Dist: torch (>=2.4,<3.0) ; extra == "pytorch-support" or extra == "all-support"
37
+ Project-URL: Documentation, https://florianpfaff.github.io/PyRecEst/
38
+ Project-URL: Homepage, https://github.com/FlorianPfaff/PyRecEst
39
+ Project-URL: Issues, https://github.com/FlorianPfaff/PyRecEst/issues
40
+ Project-URL: Repository, https://github.com/FlorianPfaff/PyRecEst
41
+ Description-Content-Type: text/markdown
42
+
1
43
  # PyRecEst
2
44
 
45
+ [![Tests](https://github.com/FlorianPfaff/PyRecEst/actions/workflows/tests.yml/badge.svg)](https://github.com/FlorianPfaff/PyRecEst/actions/workflows/tests.yml)
46
+ [![PyPI version](https://img.shields.io/pypi/v/pyrecest.svg)](https://pypi.org/project/pyrecest/)
47
+ [![Python versions](https://img.shields.io/pypi/pyversions/pyrecest.svg)](https://pypi.org/project/pyrecest/)
48
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://florianpfaff.github.io/PyRecEst/)
49
+
3
50
  Recursive Bayesian Estimation for Python.
4
51
 
5
52
  PyRecEst is a Python library for recursive Bayesian estimation on Euclidean
@@ -16,6 +63,37 @@ PyRecEst provides tools for:
16
63
  - evaluation of filters and trackers; and
17
64
  - sampling distributions and generating grids.
18
65
 
66
+ ## Which API Should I Start With?
67
+
68
+ | Task | Start with |
69
+ |---------------------------------------------------------|------------------------------------------------------------------|
70
+ | Linear Euclidean Gaussian filtering | `KalmanFilter` and `examples/basic/kalman_filter.py` |
71
+ | Reusable transition and measurement models | `examples/basic/kalman_filter_with_models.py` |
72
+ | Nonlinear filtering | `examples/basic/ukf_with_models.py` or particle-filter examples |
73
+ | Multi-target tracking with clutter or missed detections | `examples/basic/multi_target_tracking.py` |
74
+ | Circular, spherical, or manifold-valued states | circular, hypertoroidal, and hyperspherical distribution modules |
75
+ | Backend-portable code | `pyrecest.backend` imports plus focused tests under each backend |
76
+
77
+ For more detail, see `docs/choosing-an-api.md` and `docs/backend-compatibility.md`.
78
+
79
+ ## Command Line And Reproducible Scenarios
80
+
81
+ After installation, use the lightweight CLI to inspect an environment or run a
82
+ reproducible scenario:
83
+
84
+ ```bash
85
+ pyrecest info
86
+ pyrecest backends --format markdown
87
+ pyrecest run-scenario scenarios/linear_gaussian_cv_1d/config.toml
88
+ ```
89
+
90
+ The same scenario runner is available from a source checkout via
91
+ `scripts/run_scenario.py`. Scenario definitions live in `scenarios/` and include
92
+ TOML configuration plus JSON golden outputs.
93
+
94
+ The `pyrecest.diagnostics` module defines common diagnostics containers for
95
+ innovation statistics, particle-filter health, and association decisions.
96
+
19
97
  ## Installation
20
98
 
21
99
  PyRecEst requires Python 3.11 or newer and earlier than Python 3.15.
@@ -32,8 +110,14 @@ Optional backend and domain-specific dependencies can be installed with extras:
32
110
  python -m pip install "pyrecest[pytorch_support]"
33
111
  python -m pip install "pyrecest[jax_support]"
34
112
  python -m pip install "pyrecest[healpy_support]"
113
+ python -m pip install "pyrecest[all_support]"
35
114
  ```
36
115
 
116
+ Pip normalizes extra names, so the equivalent hyphenated spellings such as
117
+ `pyrecest[pytorch-support]`, `pyrecest[jax-support]`,
118
+ `pyrecest[healpy-support]`, and `pyrecest[all-support]` may also appear in
119
+ package-index metadata.
120
+
37
121
  For development from a source checkout, use Poetry or the provided conda
38
122
  environment:
39
123
 
@@ -87,6 +171,12 @@ The `docs/` directory contains the first project documentation pages:
87
171
  most common public entry points.
88
172
  - [Backend compatibility](docs/backend-compatibility.md) explains the NumPy,
89
173
  PyTorch, and JAX support model and known limitations.
174
+ - [Choosing an API](docs/choosing-an-api.md) maps task families to recommended
175
+ filters, distributions, trackers, and examples.
176
+ - [Distribution taxonomy](docs/distribution-taxonomy.md) summarizes the main
177
+ representation families by domain and use case.
178
+ - [Error handling](docs/error-handling.md) documents the shared exception types
179
+ and user-facing diagnostics policy.
90
180
  - [API reference](docs/reference/index.md) contains generated package reference
91
181
  pages built with MkDocs and mkdocstrings.
92
182
  - [Task tutorials](docs/tutorials/index.md) show common distribution, filtering,
@@ -120,6 +210,8 @@ Install the matching optional extra before using a non-default backend.
120
210
 
121
211
  - `examples/basic/kalman_filter.py` contains a small executable Kalman filter
122
212
  example.
213
+ - `examples/basic/scgp_measurement_reliability.py` demonstrates
214
+ reliability-weighted measurements for the full SCGP extended-object tracker.
123
215
  - `tests/` contains additional usage examples for distributions, filters,
124
216
  smoothers, evaluation, sampling, metrics, and tracking utilities.
125
217
 
@@ -173,3 +265,4 @@ backend implementations are based on those of
173
265
 
174
266
  ## License
175
267
  `PyRecEst` is licensed under the MIT License.
268
+
@@ -1,35 +1,10 @@
1
- Metadata-Version: 2.4
2
- Name: pyrecest
3
- Version: 2.2.2
4
- Summary: Framework for recursive Bayesian estimation in Python.
5
- License-File: LICENSE
6
- Author: Florian Pfaff
7
- Author-email: pfaff@ias.uni-stuttgart.de
8
- Requires-Python: >=3.11,<3.15
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.11
11
- Classifier: Programming Language :: Python :: 3.12
12
- Classifier: Programming Language :: Python :: 3.13
13
- Classifier: Programming Language :: Python :: 3.14
14
- Provides-Extra: healpy-support
15
- Provides-Extra: jax-support
16
- Provides-Extra: pytorch-support
17
- Requires-Dist: autograd ; extra == "jax-support"
18
- Requires-Dist: beartype
19
- Requires-Dist: healpy ; extra == "healpy-support"
20
- Requires-Dist: jax ; extra == "jax-support"
21
- Requires-Dist: jaxlib ; extra == "jax-support"
22
- Requires-Dist: matplotlib
23
- Requires-Dist: mpmath
24
- Requires-Dist: numpy
25
- Requires-Dist: pyshtools
26
- Requires-Dist: scipy (>=1.17.1,<2.0.0)
27
- Requires-Dist: shapely
28
- Requires-Dist: torch ; extra == "pytorch-support"
29
- Description-Content-Type: text/markdown
30
-
31
1
  # PyRecEst
32
2
 
3
+ [![Tests](https://github.com/FlorianPfaff/PyRecEst/actions/workflows/tests.yml/badge.svg)](https://github.com/FlorianPfaff/PyRecEst/actions/workflows/tests.yml)
4
+ [![PyPI version](https://img.shields.io/pypi/v/pyrecest.svg)](https://pypi.org/project/pyrecest/)
5
+ [![Python versions](https://img.shields.io/pypi/pyversions/pyrecest.svg)](https://pypi.org/project/pyrecest/)
6
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://florianpfaff.github.io/PyRecEst/)
7
+
33
8
  Recursive Bayesian Estimation for Python.
34
9
 
35
10
  PyRecEst is a Python library for recursive Bayesian estimation on Euclidean
@@ -46,6 +21,37 @@ PyRecEst provides tools for:
46
21
  - evaluation of filters and trackers; and
47
22
  - sampling distributions and generating grids.
48
23
 
24
+ ## Which API Should I Start With?
25
+
26
+ | Task | Start with |
27
+ |---------------------------------------------------------|------------------------------------------------------------------|
28
+ | Linear Euclidean Gaussian filtering | `KalmanFilter` and `examples/basic/kalman_filter.py` |
29
+ | Reusable transition and measurement models | `examples/basic/kalman_filter_with_models.py` |
30
+ | Nonlinear filtering | `examples/basic/ukf_with_models.py` or particle-filter examples |
31
+ | Multi-target tracking with clutter or missed detections | `examples/basic/multi_target_tracking.py` |
32
+ | Circular, spherical, or manifold-valued states | circular, hypertoroidal, and hyperspherical distribution modules |
33
+ | Backend-portable code | `pyrecest.backend` imports plus focused tests under each backend |
34
+
35
+ For more detail, see `docs/choosing-an-api.md` and `docs/backend-compatibility.md`.
36
+
37
+ ## Command Line And Reproducible Scenarios
38
+
39
+ After installation, use the lightweight CLI to inspect an environment or run a
40
+ reproducible scenario:
41
+
42
+ ```bash
43
+ pyrecest info
44
+ pyrecest backends --format markdown
45
+ pyrecest run-scenario scenarios/linear_gaussian_cv_1d/config.toml
46
+ ```
47
+
48
+ The same scenario runner is available from a source checkout via
49
+ `scripts/run_scenario.py`. Scenario definitions live in `scenarios/` and include
50
+ TOML configuration plus JSON golden outputs.
51
+
52
+ The `pyrecest.diagnostics` module defines common diagnostics containers for
53
+ innovation statistics, particle-filter health, and association decisions.
54
+
49
55
  ## Installation
50
56
 
51
57
  PyRecEst requires Python 3.11 or newer and earlier than Python 3.15.
@@ -62,8 +68,14 @@ Optional backend and domain-specific dependencies can be installed with extras:
62
68
  python -m pip install "pyrecest[pytorch_support]"
63
69
  python -m pip install "pyrecest[jax_support]"
64
70
  python -m pip install "pyrecest[healpy_support]"
71
+ python -m pip install "pyrecest[all_support]"
65
72
  ```
66
73
 
74
+ Pip normalizes extra names, so the equivalent hyphenated spellings such as
75
+ `pyrecest[pytorch-support]`, `pyrecest[jax-support]`,
76
+ `pyrecest[healpy-support]`, and `pyrecest[all-support]` may also appear in
77
+ package-index metadata.
78
+
67
79
  For development from a source checkout, use Poetry or the provided conda
68
80
  environment:
69
81
 
@@ -117,6 +129,12 @@ The `docs/` directory contains the first project documentation pages:
117
129
  most common public entry points.
118
130
  - [Backend compatibility](docs/backend-compatibility.md) explains the NumPy,
119
131
  PyTorch, and JAX support model and known limitations.
132
+ - [Choosing an API](docs/choosing-an-api.md) maps task families to recommended
133
+ filters, distributions, trackers, and examples.
134
+ - [Distribution taxonomy](docs/distribution-taxonomy.md) summarizes the main
135
+ representation families by domain and use case.
136
+ - [Error handling](docs/error-handling.md) documents the shared exception types
137
+ and user-facing diagnostics policy.
120
138
  - [API reference](docs/reference/index.md) contains generated package reference
121
139
  pages built with MkDocs and mkdocstrings.
122
140
  - [Task tutorials](docs/tutorials/index.md) show common distribution, filtering,
@@ -150,6 +168,8 @@ Install the matching optional extra before using a non-default backend.
150
168
 
151
169
  - `examples/basic/kalman_filter.py` contains a small executable Kalman filter
152
170
  example.
171
+ - `examples/basic/scgp_measurement_reliability.py` demonstrates
172
+ reliability-weighted measurements for the full SCGP extended-object tracker.
153
173
  - `tests/` contains additional usage examples for distributions, filters,
154
174
  smoothers, evaluation, sampling, metrics, and tracking utilities.
155
175
 
@@ -203,4 +223,3 @@ backend implementations are based on those of
203
223
 
204
224
  ## License
205
225
  `PyRecEst` is licensed under the MIT License.
206
-
@@ -0,0 +1,165 @@
1
+ [tool.poetry]
2
+ name = "pyrecest"
3
+ description = "Framework for recursive Bayesian estimation in Python."
4
+ readme = "README.md"
5
+ authors = ["Florian Pfaff <pfaff@ias.uni-stuttgart.de>"]
6
+ version = "2.2.4"
7
+ include = ["src/pyrecest/py.typed"]
8
+ license = "MIT"
9
+ keywords = [
10
+ "bayesian-filtering",
11
+ "recursive-estimation",
12
+ "tracking",
13
+ "multi-target-tracking",
14
+ "manifolds",
15
+ "directional-statistics",
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Intended Audience :: Science/Research",
20
+ "License :: OSI Approved :: MIT License",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
27
+ "Topic :: Scientific/Engineering",
28
+ ]
29
+
30
+ [tool.poetry.urls]
31
+ Homepage = "https://github.com/FlorianPfaff/PyRecEst"
32
+ Documentation = "https://florianpfaff.github.io/PyRecEst/"
33
+ Repository = "https://github.com/FlorianPfaff/PyRecEst"
34
+ Issues = "https://github.com/FlorianPfaff/PyRecEst/issues"
35
+
36
+ [build-system]
37
+ requires = ["poetry-core>=2.0.0,<3.0.0"]
38
+ build-backend = "poetry.core.masonry.api"
39
+
40
+ [tool.poetry.dependencies]
41
+ python = ">=3.11,<3.15"
42
+ numpy = ">=2.0,<2.5"
43
+ scipy = ">=1.14,<1.18"
44
+ matplotlib = ">=3.8,<4.0"
45
+ mpmath = ">=1.3,<1.4"
46
+ pyshtools = ">=4.12,<5.0"
47
+ beartype = ">=0.18,<0.23"
48
+ shapely = ">=2.0,<3.0"
49
+ healpy = { version = ">=1.17,<2.0", optional = true }
50
+ torch = { version = ">=2.4,<3.0", optional = true }
51
+ jax = { version = ">=0.4.30,<0.11", optional = true }
52
+ jaxlib = { version = ">=0.4.30,<0.11", optional = true }
53
+ autograd = { version = ">=1.7,<2.0", optional = true }
54
+
55
+ [tool.poetry.scripts]
56
+ pyrecest = "pyrecest.cli:main"
57
+
58
+ [tool.poetry.extras]
59
+ healpy_support = ["healpy"]
60
+ pytorch_support = ["torch"]
61
+ jax_support = ["jax", "jaxlib", "autograd"]
62
+ all_support = ["healpy", "torch", "jax", "jaxlib", "autograd"]
63
+
64
+ [tool.poetry.group.dev.dependencies]
65
+ autopep8 = "^2.3.2"
66
+ pytest = ">=8,<10"
67
+ pytest-cov = ">=5,<8"
68
+ parameterized = ">=0.9,<1.0"
69
+ nox = ">=2024.10,<2027.0"
70
+ pytest-benchmark = ">=4.0,<6.0"
71
+ asv = ">=0.6,<1.0"
72
+
73
+ [tool.poetry.group.docs.dependencies]
74
+ mkdocs = "^1.6.1"
75
+ mkdocstrings = { version = "^1.0.4", extras = ["python"] }
76
+
77
+ [tool.mypy]
78
+ check_untyped_defs = true
79
+
80
+ [[tool.mypy.overrides]]
81
+ module = [
82
+ "pyrecest.diagnostics",
83
+ "pyrecest.reproducibility",
84
+ "pyrecest.scenarios",
85
+ ]
86
+ disallow_untyped_defs = true
87
+ warn_return_any = true
88
+
89
+ [tool.ruff]
90
+ line-length = 180
91
+
92
+ [tool.ruff.lint]
93
+ select = ["F821", "F822", "F823"]
94
+
95
+ [tool.isort]
96
+ profile = "black"
97
+
98
+ [tool.pytest.ini_options]
99
+ filterwarnings = [
100
+ "ignore::DeprecationWarning:mpmath.*",
101
+ "ignore::scipy.optimize.OptimizeWarning",
102
+ "ignore:'return' in a 'finally' block:SyntaxWarning:autograd\\.wrap_util",
103
+ ]
104
+ markers = [
105
+ "numerical_stress: slower numerical stability and ill-conditioning checks",
106
+ "benchmark: optional performance benchmark tests",
107
+ "backend_portable: subprocess-based checks that verify import-time backend portability",
108
+ "doc_example: executable documentation examples",
109
+ "validation: closed-form or reference-result algorithm validation tests",
110
+ ]
111
+
112
+ [tool.coverage.run]
113
+ branch = true
114
+ source = ["pyrecest"]
115
+ omit = [
116
+ "*/tests/*",
117
+ "*/benchmarks/*",
118
+ ]
119
+
120
+ [tool.coverage.report]
121
+ show_missing = true
122
+ skip_covered = true
123
+ fail_under = 20
124
+ exclude_lines = [
125
+ "pragma: no cover",
126
+ "if TYPE_CHECKING:",
127
+ "if __name__ == .__main__.:",
128
+ ]
129
+ [tool.pylint.MAIN]
130
+ py-version = "3.13"
131
+ fail-under = 10
132
+ ignore = ["CVS"]
133
+ ignored-modules = ["pyrecest.backend", "healpy", "torch", "jax", "jaxlib"]
134
+
135
+ [tool.pylint."MESSAGES CONTROL"]
136
+ disable = [
137
+ "raw-checker-failed",
138
+ "bad-inline-option",
139
+ "locally-disabled",
140
+ "file-ignored",
141
+ "suppressed-message",
142
+ "deprecated-pragma",
143
+ "use-symbolic-message-instead",
144
+ "C",
145
+ "W0221",
146
+ "redefined-builtin",
147
+ "cyclic-import",
148
+ "too-many-locals",
149
+ "too-many-return-statements",
150
+ "too-many-branches",
151
+ "too-many-statements",
152
+ "too-many-arguments",
153
+ "too-many-positional-arguments",
154
+ "too-many-instance-attributes",
155
+ "duplicate-code",
156
+ ]
157
+
158
+ [tool.pylint.FORMAT]
159
+ max-line-length = 180
160
+
161
+ [tool.pylint.DESIGN]
162
+ max-args = 6
163
+ max-parents = 15
164
+ max-public-methods = 25
165
+ min-public-methods = 0
@@ -0,0 +1,58 @@
1
+ from importlib.metadata import PackageNotFoundError, version
2
+
3
+ import pyrecest._backend # noqa
4
+ from pyrecest.backend import copy # noqa: F401
5
+ from pyrecest.backend_support import ( # noqa: F401
6
+ backend_support,
7
+ format_backend_support_markdown,
8
+ get_backend_support,
9
+ )
10
+ from pyrecest.backend_tools import ( # noqa: F401
11
+ assert_backend,
12
+ get_backend_name,
13
+ is_backend,
14
+ warn_if_backend_env_changed,
15
+ )
16
+ from pyrecest.exceptions import ( # noqa: F401
17
+ BackendNotSupportedError,
18
+ BackendSupportError,
19
+ DimensionMismatchError,
20
+ NumericalStabilityError,
21
+ OptionalDependencyError,
22
+ PyRecEstError,
23
+ ShapeError,
24
+ ValidationError,
25
+ )
26
+ from pyrecest.stability import ( # noqa: F401
27
+ get_public_api_status,
28
+ iter_public_api_status,
29
+ stability,
30
+ )
31
+
32
+ try:
33
+ __version__ = version("pyrecest")
34
+ except PackageNotFoundError: # pragma: no cover - source tree without install metadata
35
+ __version__ = "0+unknown"
36
+
37
+ __all__ = [
38
+ "BackendNotSupportedError",
39
+ "BackendSupportError",
40
+ "DimensionMismatchError",
41
+ "NumericalStabilityError",
42
+ "OptionalDependencyError",
43
+ "PyRecEstError",
44
+ "ShapeError",
45
+ "ValidationError",
46
+ "__version__",
47
+ "assert_backend",
48
+ "backend_support",
49
+ "copy",
50
+ "format_backend_support_markdown",
51
+ "get_backend_name",
52
+ "get_backend_support",
53
+ "get_public_api_status",
54
+ "is_backend",
55
+ "iter_public_api_status",
56
+ "stability",
57
+ "warn_if_backend_env_changed",
58
+ ]