nrl-tracker 0.21.4__tar.gz → 1.7.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 (230) hide show
  1. {nrl_tracker-0.21.4/nrl_tracker.egg-info → nrl_tracker-1.7.4}/PKG-INFO +57 -10
  2. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/README.md +53 -9
  3. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4/nrl_tracker.egg-info}/PKG-INFO +57 -10
  4. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/SOURCES.txt +33 -3
  5. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/requires.txt +4 -0
  6. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pyproject.toml +8 -1
  7. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/__init__.py +4 -3
  8. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/__init__.py +28 -0
  9. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/data_association.py +2 -7
  10. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/gating.py +10 -10
  11. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/jpda.py +40 -40
  12. nrl_tracker-1.7.4/pytcl/assignment_algorithms/nd_assignment.py +379 -0
  13. nrl_tracker-1.7.4/pytcl/assignment_algorithms/network_flow.py +371 -0
  14. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/three_dimensional/assignment.py +3 -3
  15. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/astronomical/__init__.py +162 -8
  16. nrl_tracker-1.7.4/pytcl/astronomical/ephemerides.py +533 -0
  17. nrl_tracker-1.7.4/pytcl/astronomical/reference_frames.py +1486 -0
  18. nrl_tracker-1.7.4/pytcl/astronomical/relativity.py +473 -0
  19. nrl_tracker-1.7.4/pytcl/astronomical/sgp4.py +710 -0
  20. nrl_tracker-1.7.4/pytcl/astronomical/special_orbits.py +532 -0
  21. nrl_tracker-1.7.4/pytcl/astronomical/tle.py +558 -0
  22. nrl_tracker-1.7.4/pytcl/atmosphere/__init__.py +79 -0
  23. nrl_tracker-1.7.4/pytcl/atmosphere/ionosphere.py +512 -0
  24. nrl_tracker-1.7.4/pytcl/atmosphere/nrlmsise00.py +809 -0
  25. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/clustering/dbscan.py +2 -2
  26. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/clustering/gaussian_mixture.py +3 -3
  27. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/clustering/hierarchical.py +15 -15
  28. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/clustering/kmeans.py +4 -4
  29. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/__init__.py +28 -21
  30. nrl_tracker-1.7.4/pytcl/containers/base.py +219 -0
  31. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/cluster_set.py +2 -1
  32. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/covertree.py +26 -29
  33. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/kd_tree.py +94 -29
  34. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/measurement_set.py +1 -9
  35. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/rtree.py +200 -1
  36. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/vptree.py +21 -28
  37. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/geodetic.py +272 -5
  38. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/jacobians/jacobians.py +2 -2
  39. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/projections/__init__.py +4 -2
  40. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/projections/projections.py +2 -2
  41. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/rotations/rotations.py +10 -6
  42. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/core/__init__.py +18 -0
  43. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/core/validation.py +333 -2
  44. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/__init__.py +26 -0
  45. nrl_tracker-1.7.4/pytcl/dynamic_estimation/gaussian_sum_filter.py +434 -0
  46. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/imm.py +15 -18
  47. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/__init__.py +30 -0
  48. nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/constrained.py +382 -0
  49. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/extended.py +9 -12
  50. nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/h_infinity.py +613 -0
  51. nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/square_root.py +490 -0
  52. nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/sr_ukf.py +302 -0
  53. nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/ud_filter.py +410 -0
  54. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/unscented.py +9 -10
  55. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +15 -15
  56. nrl_tracker-1.7.4/pytcl/dynamic_estimation/rbpf.py +589 -0
  57. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/smoothers.py +1 -5
  58. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/__init__.py +1 -5
  59. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/__init__.py +1 -5
  60. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/egm.py +13 -0
  61. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/spherical_harmonics.py +98 -37
  62. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/tides.py +6 -6
  63. nrl_tracker-1.7.4/pytcl/logging_config.py +328 -0
  64. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/magnetism/__init__.py +10 -14
  65. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/magnetism/emm.py +10 -3
  66. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/magnetism/wmm.py +260 -23
  67. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/combinatorics/combinatorics.py +5 -5
  68. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/geometry/geometry.py +5 -5
  69. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/interpolation/__init__.py +2 -2
  70. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/numerical_integration/quadrature.py +6 -6
  71. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/detection.py +24 -24
  72. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/filters.py +14 -14
  73. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/matched_filter.py +12 -12
  74. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/__init__.py +2 -2
  75. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/bessel.py +15 -3
  76. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/debye.py +136 -26
  77. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/error_functions.py +3 -1
  78. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/gamma_functions.py +4 -4
  79. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/hypergeometric.py +81 -15
  80. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/fourier.py +8 -8
  81. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/stft.py +12 -12
  82. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/wavelets.py +9 -9
  83. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/__init__.py +14 -10
  84. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/geodesy.py +246 -160
  85. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/great_circle.py +101 -19
  86. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/ins.py +1 -5
  87. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/plotting/coordinates.py +7 -7
  88. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/plotting/tracks.py +2 -2
  89. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/static_estimation/maximum_likelihood.py +16 -14
  90. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/static_estimation/robust.py +5 -5
  91. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/terrain/loaders.py +5 -5
  92. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/trackers/__init__.py +3 -14
  93. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/trackers/hypothesis.py +1 -1
  94. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/trackers/mht.py +9 -9
  95. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/trackers/multi_target.py +2 -5
  96. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_assignment_algorithms.py +1 -1
  97. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_astronomical.py +25 -0
  98. nrl_tracker-1.7.4/tests/test_constrained_ekf.py +744 -0
  99. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_coordinate_systems.py +118 -0
  100. nrl_tracker-1.7.4/tests/test_ephemerides.py +343 -0
  101. nrl_tracker-1.7.4/tests/test_gaussian_sum_filter.py +504 -0
  102. nrl_tracker-1.7.4/tests/test_h_infinity.py +391 -0
  103. nrl_tracker-1.7.4/tests/test_jpda.py +236 -0
  104. nrl_tracker-1.7.4/tests/test_nd_assignment.py +337 -0
  105. nrl_tracker-1.7.4/tests/test_network_flow.py +228 -0
  106. nrl_tracker-1.7.4/tests/test_nrlmsise00.py +732 -0
  107. nrl_tracker-1.7.4/tests/test_rbpf.py +630 -0
  108. nrl_tracker-1.7.4/tests/test_relativity.py +463 -0
  109. nrl_tracker-1.7.4/tests/test_sgp4.py +389 -0
  110. nrl_tracker-1.7.4/tests/test_spatial_containers_parametrized.py +467 -0
  111. nrl_tracker-0.21.4/tests/test_special_functions_phase12.py → nrl_tracker-1.7.4/tests/test_special_functions.py +2 -2
  112. nrl_tracker-1.7.4/tests/test_special_orbits.py +357 -0
  113. nrl_tracker-1.7.4/tests/test_tod_mod.py +308 -0
  114. nrl_tracker-1.7.4/tests/test_validation.py +482 -0
  115. nrl_tracker-0.21.4/pytcl/astronomical/reference_frames.py +0 -677
  116. nrl_tracker-0.21.4/pytcl/atmosphere/__init__.py +0 -37
  117. nrl_tracker-0.21.4/pytcl/dynamic_estimation/kalman/square_root.py +0 -1003
  118. nrl_tracker-0.21.4/tests/test_v030_comprehensive.py +0 -866
  119. nrl_tracker-0.21.4/tests/test_v030_features.py +0 -447
  120. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/CONTRIBUTING.md +0 -0
  121. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/LICENSE +0 -0
  122. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/MANIFEST.in +0 -0
  123. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/dependency_links.txt +0 -0
  124. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/top_level.txt +0 -0
  125. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -0
  126. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -0
  127. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/assignment.py +0 -0
  128. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/kbest.py +0 -0
  129. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/astronomical/lambert.py +0 -0
  130. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/astronomical/orbital_mechanics.py +0 -0
  131. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/astronomical/time_systems.py +0 -0
  132. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/atmosphere/models.py +0 -0
  133. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/clustering/__init__.py +0 -0
  134. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/containers/track_list.py +0 -0
  135. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/__init__.py +0 -0
  136. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/__init__.py +0 -0
  137. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/spherical.py +0 -0
  138. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/jacobians/__init__.py +0 -0
  139. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/rotations/__init__.py +0 -0
  140. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/core/array_utils.py +0 -0
  141. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/core/constants.py +0 -0
  142. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
  143. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/information_filter.py +0 -0
  144. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/linear.py +0 -0
  145. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
  146. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -0
  147. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/__init__.py +0 -0
  148. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/continuous_time/__init__.py +0 -0
  149. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/continuous_time/dynamics.py +0 -0
  150. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
  151. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
  152. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
  153. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
  154. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/polynomial.py +0 -0
  155. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/singer.py +0 -0
  156. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/__init__.py +0 -0
  157. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/clenshaw.py +0 -0
  158. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/gravity/models.py +0 -0
  159. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/magnetism/igrf.py +0 -0
  160. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/__init__.py +0 -0
  161. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -0
  162. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/decompositions.py +0 -0
  163. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +0 -0
  164. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/combinatorics/__init__.py +0 -0
  165. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
  166. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/geometry/__init__.py +0 -0
  167. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/interpolation/interpolation.py +0 -0
  168. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -0
  169. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
  170. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/__init__.py +0 -0
  171. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/elliptic.py +0 -0
  172. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/lambert_w.py +0 -0
  173. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/marcum_q.py +0 -0
  174. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/__init__.py +0 -0
  175. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/distributions.py +0 -0
  176. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/estimators.py +0 -0
  177. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/__init__.py +0 -0
  178. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/misc/__init__.py +0 -0
  179. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/ins_gnss.py +0 -0
  180. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/navigation/rhumb.py +0 -0
  181. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/__init__.py +0 -0
  182. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/estimation_metrics.py +0 -0
  183. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/track_metrics.py +0 -0
  184. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/physical_values/__init__.py +0 -0
  185. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/plotting/__init__.py +0 -0
  186. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/plotting/ellipses.py +0 -0
  187. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/plotting/metrics.py +0 -0
  188. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/scheduling/__init__.py +0 -0
  189. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/static_estimation/__init__.py +0 -0
  190. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/static_estimation/least_squares.py +0 -0
  191. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/terrain/__init__.py +0 -0
  192. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/terrain/dem.py +0 -0
  193. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/terrain/visibility.py +0 -0
  194. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/trackers/single_target.py +0 -0
  195. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/pytcl/transponders/__init__.py +0 -0
  196. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/setup.cfg +0 -0
  197. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/__init__.py +0 -0
  198. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/conftest.py +0 -0
  199. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_additional_trees.py +0 -0
  200. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_clustering.py +0 -0
  201. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_coverage_boost.py +0 -0
  202. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_coverage_boost_2.py +0 -0
  203. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_dynamic_models.py +0 -0
  204. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_egm.py +0 -0
  205. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_emm.py +0 -0
  206. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_gaussian_mixtures.py +0 -0
  207. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_geophysical.py +0 -0
  208. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_great_circle.py +0 -0
  209. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_ins.py +0 -0
  210. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_ins_gnss.py +0 -0
  211. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_kalman_filters.py +0 -0
  212. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_mathematical_functions.py +0 -0
  213. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_maximum_likelihood.py +0 -0
  214. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_mht.py +0 -0
  215. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_performance_evaluation.py +0 -0
  216. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_phase6_specialized.py +0 -0
  217. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_plotting.py +0 -0
  218. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_projections.py +0 -0
  219. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_rhumb.py +0 -0
  220. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_signal_processing.py +0 -0
  221. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_smoothers.py +0 -0
  222. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_spatial_structures.py +0 -0
  223. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_static_estimation.py +0 -0
  224. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_terrain.py +0 -0
  225. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_terrain_loaders.py +0 -0
  226. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_tides.py +0 -0
  227. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_trackers.py +0 -0
  228. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_tracking_containers.py +0 -0
  229. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/test_transforms.py +0 -0
  230. {nrl_tracker-0.21.4 → nrl_tracker-1.7.4}/tests/unit/test_core.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 0.21.4
3
+ Version: 1.7.4
4
4
  Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
5
5
  Author: Original: David F. Crouse, Naval Research Laboratory
6
6
  Maintainer: Python Port Contributors
@@ -45,6 +45,7 @@ Provides-Extra: dev
45
45
  Requires-Dist: pytest>=7.0.0; extra == "dev"
46
46
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
47
47
  Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
48
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
48
49
  Requires-Dist: hypothesis>=6.0.0; extra == "dev"
49
50
  Requires-Dist: black>=23.0.0; extra == "dev"
50
51
  Requires-Dist: isort>=5.12.0; extra == "dev"
@@ -55,20 +56,24 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
55
56
  Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "dev"
56
57
  Requires-Dist: myst-parser>=1.0.0; extra == "dev"
57
58
  Requires-Dist: nbsphinx>=0.9.0; extra == "dev"
59
+ Provides-Extra: benchmark
60
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "benchmark"
58
61
  Provides-Extra: all
59
62
  Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualization]; extra == "all"
60
63
 
61
64
  # Tracker Component Library (Python)
62
65
 
63
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.4-blue.svg)](https://pypi.org/project/nrl-tracker/)
66
+ [![PyPI version](https://img.shields.io/badge/pypi-v1.7.2-blue.svg)](https://pypi.org/project/nrl-tracker/)
64
67
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
65
68
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
66
69
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
67
- [![Tests](https://img.shields.io/badge/tests-1530%20passing-success.svg)](https://github.com/nedonatelli/TCL)
70
+ [![Tests](https://img.shields.io/badge/tests-1988%20passing-success.svg)](https://github.com/nedonatelli/TCL)
71
+ [![MATLAB Parity](https://img.shields.io/badge/MATLAB%20Parity-100%25-brightgreen.svg)](docs/gap_analysis.rst)
72
+ [![Type Checking](https://img.shields.io/badge/mypy--strict-passing-brightgreen.svg)](mypy.ini)
68
73
 
69
74
  A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
70
75
 
71
- **800+ functions** | **144 modules** | **1,530 tests** | **15+ algorithm categories**
76
+ **1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
72
77
 
73
78
  ## Overview
74
79
 
@@ -76,12 +81,15 @@ The Tracker Component Library provides building blocks for developing target tra
76
81
 
77
82
  - **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
78
83
  - **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
79
- - **Estimation Algorithms**: Kalman filters (EKF, UKF, etc.), particle filters, and batch estimation
80
- - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, and multi-dimensional assignment
84
+ - **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
85
+ - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
86
+ - **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
81
87
  - **Mathematical Functions**: Special functions, statistics, numerical integration, and more
82
- - **Astronomical Code**: Ephemeris calculations, time systems, celestial mechanics
83
- - **Navigation**: Geodetic calculations, INS algorithms, GNSS utilities
84
- - **Geophysical Models**: Gravity, magnetism, atmosphere, and terrain models
88
+ - **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
89
+ - **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
90
+ - **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
91
+ - **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
92
+ - **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
85
93
 
86
94
  ## Installation
87
95
 
@@ -201,7 +209,46 @@ pytcl/
201
209
 
202
210
  - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
203
211
  - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
204
- - [Examples](examples/)
212
+ - [Examples](examples/) - 29 validated example scripts
213
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
214
+
215
+ ## Examples & Tutorials
216
+
217
+ The library includes 39 runnable code examples demonstrating all major features:
218
+
219
+ ### Examples (29 files in `/examples/`)
220
+
221
+ Comprehensive demonstrations of library functionality:
222
+ - **Tracking & Estimation**: Kalman filters, particle filters, smoothers
223
+ - **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
224
+ - **Coordinates**: Frame conversions, transformations, geodetic calculations
225
+ - **Dynamics**: State models, motion models, dynamic systems
226
+ - **Filtering**: Uncertainty visualization, multi-target tracking
227
+ - **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
228
+ - **Navigation**: INS/GNSS integration, geophysical modeling
229
+ - **Signal Processing**: Detection, filtering, transforms
230
+ - **Terrain & Atmosphere**: Elevation models, atmospheric properties
231
+
232
+ **Status**: ✅ All 29 examples validated and passing (100% execution success)
233
+
234
+ ### Tutorials (10 modules in `/docs/tutorials/`)
235
+
236
+ Interactive learning modules with visualizations:
237
+ - Assignment algorithms and 3D assignment problems
238
+ - Atmospheric and geophysical models
239
+ - Dynamical systems and reference frames
240
+ - Filtering and smoothing techniques
241
+ - Sensor fusion and advanced filtering
242
+ - Special functions and mathematical tools
243
+
244
+ **Status**: ✅ All 10 tutorials validated and passing (100% execution success)
245
+
246
+ ## Documentation
247
+
248
+ - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
249
+ - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
250
+ - [Examples](examples/) - 29 validated example scripts
251
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
205
252
 
206
253
  ## Comparison with Original MATLAB Library
207
254
 
@@ -1,14 +1,16 @@
1
1
  # Tracker Component Library (Python)
2
2
 
3
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.4-blue.svg)](https://pypi.org/project/nrl-tracker/)
3
+ [![PyPI version](https://img.shields.io/badge/pypi-v1.7.2-blue.svg)](https://pypi.org/project/nrl-tracker/)
4
4
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
5
5
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
6
6
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
7
- [![Tests](https://img.shields.io/badge/tests-1530%20passing-success.svg)](https://github.com/nedonatelli/TCL)
7
+ [![Tests](https://img.shields.io/badge/tests-1988%20passing-success.svg)](https://github.com/nedonatelli/TCL)
8
+ [![MATLAB Parity](https://img.shields.io/badge/MATLAB%20Parity-100%25-brightgreen.svg)](docs/gap_analysis.rst)
9
+ [![Type Checking](https://img.shields.io/badge/mypy--strict-passing-brightgreen.svg)](mypy.ini)
8
10
 
9
11
  A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
10
12
 
11
- **800+ functions** | **144 modules** | **1,530 tests** | **15+ algorithm categories**
13
+ **1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
12
14
 
13
15
  ## Overview
14
16
 
@@ -16,12 +18,15 @@ The Tracker Component Library provides building blocks for developing target tra
16
18
 
17
19
  - **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
18
20
  - **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
19
- - **Estimation Algorithms**: Kalman filters (EKF, UKF, etc.), particle filters, and batch estimation
20
- - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, and multi-dimensional assignment
21
+ - **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
22
+ - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
23
+ - **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
21
24
  - **Mathematical Functions**: Special functions, statistics, numerical integration, and more
22
- - **Astronomical Code**: Ephemeris calculations, time systems, celestial mechanics
23
- - **Navigation**: Geodetic calculations, INS algorithms, GNSS utilities
24
- - **Geophysical Models**: Gravity, magnetism, atmosphere, and terrain models
25
+ - **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
26
+ - **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
27
+ - **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
28
+ - **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
29
+ - **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
25
30
 
26
31
  ## Installation
27
32
 
@@ -141,7 +146,46 @@ pytcl/
141
146
 
142
147
  - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
143
148
  - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
144
- - [Examples](examples/)
149
+ - [Examples](examples/) - 29 validated example scripts
150
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
151
+
152
+ ## Examples & Tutorials
153
+
154
+ The library includes 39 runnable code examples demonstrating all major features:
155
+
156
+ ### Examples (29 files in `/examples/`)
157
+
158
+ Comprehensive demonstrations of library functionality:
159
+ - **Tracking & Estimation**: Kalman filters, particle filters, smoothers
160
+ - **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
161
+ - **Coordinates**: Frame conversions, transformations, geodetic calculations
162
+ - **Dynamics**: State models, motion models, dynamic systems
163
+ - **Filtering**: Uncertainty visualization, multi-target tracking
164
+ - **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
165
+ - **Navigation**: INS/GNSS integration, geophysical modeling
166
+ - **Signal Processing**: Detection, filtering, transforms
167
+ - **Terrain & Atmosphere**: Elevation models, atmospheric properties
168
+
169
+ **Status**: ✅ All 29 examples validated and passing (100% execution success)
170
+
171
+ ### Tutorials (10 modules in `/docs/tutorials/`)
172
+
173
+ Interactive learning modules with visualizations:
174
+ - Assignment algorithms and 3D assignment problems
175
+ - Atmospheric and geophysical models
176
+ - Dynamical systems and reference frames
177
+ - Filtering and smoothing techniques
178
+ - Sensor fusion and advanced filtering
179
+ - Special functions and mathematical tools
180
+
181
+ **Status**: ✅ All 10 tutorials validated and passing (100% execution success)
182
+
183
+ ## Documentation
184
+
185
+ - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
186
+ - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
187
+ - [Examples](examples/) - 29 validated example scripts
188
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
145
189
 
146
190
  ## Comparison with Original MATLAB Library
147
191
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 0.21.4
3
+ Version: 1.7.4
4
4
  Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
5
5
  Author: Original: David F. Crouse, Naval Research Laboratory
6
6
  Maintainer: Python Port Contributors
@@ -45,6 +45,7 @@ Provides-Extra: dev
45
45
  Requires-Dist: pytest>=7.0.0; extra == "dev"
46
46
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
47
47
  Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
48
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
48
49
  Requires-Dist: hypothesis>=6.0.0; extra == "dev"
49
50
  Requires-Dist: black>=23.0.0; extra == "dev"
50
51
  Requires-Dist: isort>=5.12.0; extra == "dev"
@@ -55,20 +56,24 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
55
56
  Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "dev"
56
57
  Requires-Dist: myst-parser>=1.0.0; extra == "dev"
57
58
  Requires-Dist: nbsphinx>=0.9.0; extra == "dev"
59
+ Provides-Extra: benchmark
60
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "benchmark"
58
61
  Provides-Extra: all
59
62
  Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualization]; extra == "all"
60
63
 
61
64
  # Tracker Component Library (Python)
62
65
 
63
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.4-blue.svg)](https://pypi.org/project/nrl-tracker/)
66
+ [![PyPI version](https://img.shields.io/badge/pypi-v1.7.2-blue.svg)](https://pypi.org/project/nrl-tracker/)
64
67
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
65
68
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
66
69
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
67
- [![Tests](https://img.shields.io/badge/tests-1530%20passing-success.svg)](https://github.com/nedonatelli/TCL)
70
+ [![Tests](https://img.shields.io/badge/tests-1988%20passing-success.svg)](https://github.com/nedonatelli/TCL)
71
+ [![MATLAB Parity](https://img.shields.io/badge/MATLAB%20Parity-100%25-brightgreen.svg)](docs/gap_analysis.rst)
72
+ [![Type Checking](https://img.shields.io/badge/mypy--strict-passing-brightgreen.svg)](mypy.ini)
68
73
 
69
74
  A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
70
75
 
71
- **800+ functions** | **144 modules** | **1,530 tests** | **15+ algorithm categories**
76
+ **1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
72
77
 
73
78
  ## Overview
74
79
 
@@ -76,12 +81,15 @@ The Tracker Component Library provides building blocks for developing target tra
76
81
 
77
82
  - **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
78
83
  - **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
79
- - **Estimation Algorithms**: Kalman filters (EKF, UKF, etc.), particle filters, and batch estimation
80
- - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, and multi-dimensional assignment
84
+ - **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
85
+ - **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
86
+ - **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
81
87
  - **Mathematical Functions**: Special functions, statistics, numerical integration, and more
82
- - **Astronomical Code**: Ephemeris calculations, time systems, celestial mechanics
83
- - **Navigation**: Geodetic calculations, INS algorithms, GNSS utilities
84
- - **Geophysical Models**: Gravity, magnetism, atmosphere, and terrain models
88
+ - **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
89
+ - **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
90
+ - **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
91
+ - **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
92
+ - **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
85
93
 
86
94
  ## Installation
87
95
 
@@ -201,7 +209,46 @@ pytcl/
201
209
 
202
210
  - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
203
211
  - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
204
- - [Examples](examples/)
212
+ - [Examples](examples/) - 29 validated example scripts
213
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
214
+
215
+ ## Examples & Tutorials
216
+
217
+ The library includes 39 runnable code examples demonstrating all major features:
218
+
219
+ ### Examples (29 files in `/examples/`)
220
+
221
+ Comprehensive demonstrations of library functionality:
222
+ - **Tracking & Estimation**: Kalman filters, particle filters, smoothers
223
+ - **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
224
+ - **Coordinates**: Frame conversions, transformations, geodetic calculations
225
+ - **Dynamics**: State models, motion models, dynamic systems
226
+ - **Filtering**: Uncertainty visualization, multi-target tracking
227
+ - **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
228
+ - **Navigation**: INS/GNSS integration, geophysical modeling
229
+ - **Signal Processing**: Detection, filtering, transforms
230
+ - **Terrain & Atmosphere**: Elevation models, atmospheric properties
231
+
232
+ **Status**: ✅ All 29 examples validated and passing (100% execution success)
233
+
234
+ ### Tutorials (10 modules in `/docs/tutorials/`)
235
+
236
+ Interactive learning modules with visualizations:
237
+ - Assignment algorithms and 3D assignment problems
238
+ - Atmospheric and geophysical models
239
+ - Dynamical systems and reference frames
240
+ - Filtering and smoothing techniques
241
+ - Sensor fusion and advanced filtering
242
+ - Special functions and mathematical tools
243
+
244
+ **Status**: ✅ All 10 tutorials validated and passing (100% execution success)
245
+
246
+ ## Documentation
247
+
248
+ - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
249
+ - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
250
+ - [Examples](examples/) - 29 validated example scripts
251
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
205
252
 
206
253
  ## Comparison with Original MATLAB Library
207
254
 
@@ -9,28 +9,39 @@ nrl_tracker.egg-info/dependency_links.txt
9
9
  nrl_tracker.egg-info/requires.txt
10
10
  nrl_tracker.egg-info/top_level.txt
11
11
  pytcl/__init__.py
12
+ pytcl/logging_config.py
12
13
  pytcl/assignment_algorithms/__init__.py
13
14
  pytcl/assignment_algorithms/data_association.py
14
15
  pytcl/assignment_algorithms/gating.py
15
16
  pytcl/assignment_algorithms/jpda.py
17
+ pytcl/assignment_algorithms/nd_assignment.py
18
+ pytcl/assignment_algorithms/network_flow.py
16
19
  pytcl/assignment_algorithms/three_dimensional/__init__.py
17
20
  pytcl/assignment_algorithms/three_dimensional/assignment.py
18
21
  pytcl/assignment_algorithms/two_dimensional/__init__.py
19
22
  pytcl/assignment_algorithms/two_dimensional/assignment.py
20
23
  pytcl/assignment_algorithms/two_dimensional/kbest.py
21
24
  pytcl/astronomical/__init__.py
25
+ pytcl/astronomical/ephemerides.py
22
26
  pytcl/astronomical/lambert.py
23
27
  pytcl/astronomical/orbital_mechanics.py
24
28
  pytcl/astronomical/reference_frames.py
29
+ pytcl/astronomical/relativity.py
30
+ pytcl/astronomical/sgp4.py
31
+ pytcl/astronomical/special_orbits.py
25
32
  pytcl/astronomical/time_systems.py
33
+ pytcl/astronomical/tle.py
26
34
  pytcl/atmosphere/__init__.py
35
+ pytcl/atmosphere/ionosphere.py
27
36
  pytcl/atmosphere/models.py
37
+ pytcl/atmosphere/nrlmsise00.py
28
38
  pytcl/clustering/__init__.py
29
39
  pytcl/clustering/dbscan.py
30
40
  pytcl/clustering/gaussian_mixture.py
31
41
  pytcl/clustering/hierarchical.py
32
42
  pytcl/clustering/kmeans.py
33
43
  pytcl/containers/__init__.py
44
+ pytcl/containers/base.py
34
45
  pytcl/containers/cluster_set.py
35
46
  pytcl/containers/covertree.py
36
47
  pytcl/containers/kd_tree.py
@@ -53,14 +64,20 @@ pytcl/core/array_utils.py
53
64
  pytcl/core/constants.py
54
65
  pytcl/core/validation.py
55
66
  pytcl/dynamic_estimation/__init__.py
67
+ pytcl/dynamic_estimation/gaussian_sum_filter.py
56
68
  pytcl/dynamic_estimation/imm.py
57
69
  pytcl/dynamic_estimation/information_filter.py
70
+ pytcl/dynamic_estimation/rbpf.py
58
71
  pytcl/dynamic_estimation/smoothers.py
59
72
  pytcl/dynamic_estimation/batch_estimation/__init__.py
60
73
  pytcl/dynamic_estimation/kalman/__init__.py
74
+ pytcl/dynamic_estimation/kalman/constrained.py
61
75
  pytcl/dynamic_estimation/kalman/extended.py
76
+ pytcl/dynamic_estimation/kalman/h_infinity.py
62
77
  pytcl/dynamic_estimation/kalman/linear.py
63
78
  pytcl/dynamic_estimation/kalman/square_root.py
79
+ pytcl/dynamic_estimation/kalman/sr_ukf.py
80
+ pytcl/dynamic_estimation/kalman/ud_filter.py
64
81
  pytcl/dynamic_estimation/kalman/unscented.py
65
82
  pytcl/dynamic_estimation/measurement_update/__init__.py
66
83
  pytcl/dynamic_estimation/particle_filters/__init__.py
@@ -157,37 +174,50 @@ tests/test_additional_trees.py
157
174
  tests/test_assignment_algorithms.py
158
175
  tests/test_astronomical.py
159
176
  tests/test_clustering.py
177
+ tests/test_constrained_ekf.py
160
178
  tests/test_coordinate_systems.py
161
179
  tests/test_coverage_boost.py
162
180
  tests/test_coverage_boost_2.py
163
181
  tests/test_dynamic_models.py
164
182
  tests/test_egm.py
165
183
  tests/test_emm.py
184
+ tests/test_ephemerides.py
166
185
  tests/test_gaussian_mixtures.py
186
+ tests/test_gaussian_sum_filter.py
167
187
  tests/test_geophysical.py
168
188
  tests/test_great_circle.py
189
+ tests/test_h_infinity.py
169
190
  tests/test_ins.py
170
191
  tests/test_ins_gnss.py
192
+ tests/test_jpda.py
171
193
  tests/test_kalman_filters.py
172
194
  tests/test_mathematical_functions.py
173
195
  tests/test_maximum_likelihood.py
174
196
  tests/test_mht.py
197
+ tests/test_nd_assignment.py
198
+ tests/test_network_flow.py
199
+ tests/test_nrlmsise00.py
175
200
  tests/test_performance_evaluation.py
176
201
  tests/test_phase6_specialized.py
177
202
  tests/test_plotting.py
178
203
  tests/test_projections.py
204
+ tests/test_rbpf.py
205
+ tests/test_relativity.py
179
206
  tests/test_rhumb.py
207
+ tests/test_sgp4.py
180
208
  tests/test_signal_processing.py
181
209
  tests/test_smoothers.py
210
+ tests/test_spatial_containers_parametrized.py
182
211
  tests/test_spatial_structures.py
183
- tests/test_special_functions_phase12.py
212
+ tests/test_special_functions.py
213
+ tests/test_special_orbits.py
184
214
  tests/test_static_estimation.py
185
215
  tests/test_terrain.py
186
216
  tests/test_terrain_loaders.py
187
217
  tests/test_tides.py
218
+ tests/test_tod_mod.py
188
219
  tests/test_trackers.py
189
220
  tests/test_tracking_containers.py
190
221
  tests/test_transforms.py
191
- tests/test_v030_comprehensive.py
192
- tests/test_v030_features.py
222
+ tests/test_validation.py
193
223
  tests/unit/test_core.py
@@ -9,10 +9,14 @@ nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualization]
9
9
  astropy>=5.0
10
10
  jplephem>=2.18
11
11
 
12
+ [benchmark]
13
+ pytest-benchmark>=4.0.0
14
+
12
15
  [dev]
13
16
  pytest>=7.0.0
14
17
  pytest-cov>=4.0.0
15
18
  pytest-xdist>=3.0.0
19
+ pytest-benchmark>=4.0.0
16
20
  hypothesis>=6.0.0
17
21
  black>=23.0.0
18
22
  isort>=5.12.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "nrl-tracker"
7
- version = "0.21.4"
7
+ version = "1.7.4"
8
8
  description = "Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -67,6 +67,7 @@ dev = [
67
67
  "pytest>=7.0.0",
68
68
  "pytest-cov>=4.0.0",
69
69
  "pytest-xdist>=3.0.0",
70
+ "pytest-benchmark>=4.0.0",
70
71
  "hypothesis>=6.0.0",
71
72
  "black>=23.0.0",
72
73
  "isort>=5.12.0",
@@ -78,6 +79,9 @@ dev = [
78
79
  "myst-parser>=1.0.0",
79
80
  "nbsphinx>=0.9.0",
80
81
  ]
82
+ benchmark = [
83
+ "pytest-benchmark>=4.0.0",
84
+ ]
81
85
  all = [
82
86
  "nrl-tracker[astronomy,geodesy,visualization,optimization,signal,dev]",
83
87
  ]
@@ -100,6 +104,9 @@ testpaths = ["tests"]
100
104
  markers = [
101
105
  "slow: marks tests as slow (deselect with '-m \"not slow\"')",
102
106
  "matlab_validated: tests validated against MATLAB reference output",
107
+ "benchmark: marks tests as benchmarks",
108
+ "light: marks benchmark as part of light (PR) suite",
109
+ "full: marks benchmark as part of full (main) suite",
103
110
  ]
104
111
  filterwarnings = [
105
112
  "ignore::DeprecationWarning",
@@ -6,7 +6,8 @@ systems, dynamic models, estimation algorithms, and mathematical functions.
6
6
 
7
7
  This is a Python port of the U.S. Naval Research Laboratory's Tracker Component
8
8
  Library originally written in MATLAB.
9
-
9
+ **Current Version:** 1.7.4 (January 4, 2026)
10
+ **Status:** Production-ready, 2,057 tests passing, 76% line coverage
10
11
  Examples
11
12
  --------
12
13
  >>> import pytcl as pytcl
@@ -20,7 +21,7 @@ References
20
21
  no. 5, pp. 18-27, May 2017.
21
22
  """
22
23
 
23
- __version__ = "0.21.4"
24
+ __version__ = "1.7.3"
24
25
  __author__ = "Python Port Contributors"
25
26
  __original_author__ = "David F. Crouse, Naval Research Laboratory"
26
27
 
@@ -44,7 +45,7 @@ from pytcl import (
44
45
 
45
46
  # Version tuple for programmatic access
46
47
  # Handle dev/alpha/beta/rc suffixes by extracting only numeric parts
47
- def _parse_version(version_str):
48
+ def _parse_version(version_str: str) -> tuple[int, ...]:
48
49
  """Parse version string into tuple of integers."""
49
50
  import re
50
51
 
@@ -32,6 +32,21 @@ from pytcl.assignment_algorithms.jpda import (
32
32
  jpda_probabilities,
33
33
  jpda_update,
34
34
  )
35
+ from pytcl.assignment_algorithms.nd_assignment import (
36
+ AssignmentNDResult,
37
+ auction_assignment_nd,
38
+ detect_dimension_conflicts,
39
+ greedy_assignment_nd,
40
+ relaxation_assignment_nd,
41
+ validate_cost_tensor,
42
+ )
43
+ from pytcl.assignment_algorithms.network_flow import (
44
+ FlowStatus,
45
+ MinCostFlowResult,
46
+ assignment_to_flow_network,
47
+ min_cost_assignment_via_flow,
48
+ min_cost_flow_successive_shortest_paths,
49
+ )
35
50
  from pytcl.assignment_algorithms.three_dimensional import (
36
51
  Assignment3DResult,
37
52
  assign3d,
@@ -91,4 +106,17 @@ __all__ = [
91
106
  "jpda_update",
92
107
  "jpda_probabilities",
93
108
  "compute_likelihood_matrix",
109
+ # N-Dimensional Assignment (4D+)
110
+ "AssignmentNDResult",
111
+ "validate_cost_tensor",
112
+ "greedy_assignment_nd",
113
+ "relaxation_assignment_nd",
114
+ "auction_assignment_nd",
115
+ "detect_dimension_conflicts",
116
+ # Network Flow-Based Assignment
117
+ "FlowStatus",
118
+ "MinCostFlowResult",
119
+ "assignment_to_flow_network",
120
+ "min_cost_flow_successive_shortest_paths",
121
+ "min_cost_assignment_via_flow",
94
122
  ]
@@ -10,13 +10,8 @@ from typing import List, NamedTuple, Optional
10
10
  import numpy as np
11
11
  from numpy.typing import ArrayLike, NDArray
12
12
 
13
- from pytcl.assignment_algorithms.gating import (
14
- mahalanobis_batch,
15
- mahalanobis_distance,
16
- )
17
- from pytcl.assignment_algorithms.two_dimensional import (
18
- assign2d,
19
- )
13
+ from pytcl.assignment_algorithms.gating import mahalanobis_batch, mahalanobis_distance
14
+ from pytcl.assignment_algorithms.two_dimensional import assign2d
20
15
 
21
16
 
22
17
  class AssociationResult(NamedTuple):
@@ -5,7 +5,7 @@ This module provides gating methods to determine which measurements
5
5
  fall within a validation region around predicted track states.
6
6
  """
7
7
 
8
- from typing import List, Tuple
8
+ from typing import Any, List, Tuple
9
9
 
10
10
  import numpy as np
11
11
  from numba import njit
@@ -15,8 +15,8 @@ from scipy.stats import chi2
15
15
 
16
16
  @njit(cache=True, fastmath=True)
17
17
  def _mahalanobis_distance_2d(
18
- innovation: np.ndarray,
19
- S_inv: np.ndarray,
18
+ innovation: np.ndarray[Any, Any],
19
+ S_inv: np.ndarray[Any, Any],
20
20
  ) -> float:
21
21
  """JIT-compiled Mahalanobis distance for 2D innovations."""
22
22
  return innovation[0] * (
@@ -26,8 +26,8 @@ def _mahalanobis_distance_2d(
26
26
 
27
27
  @njit(cache=True, fastmath=True)
28
28
  def _mahalanobis_distance_3d(
29
- innovation: np.ndarray,
30
- S_inv: np.ndarray,
29
+ innovation: np.ndarray[Any, Any],
30
+ S_inv: np.ndarray[Any, Any],
31
31
  ) -> float:
32
32
  """JIT-compiled Mahalanobis distance for 3D innovations."""
33
33
  result = 0.0
@@ -39,8 +39,8 @@ def _mahalanobis_distance_3d(
39
39
 
40
40
  @njit(cache=True, fastmath=True)
41
41
  def _mahalanobis_distance_general(
42
- innovation: np.ndarray,
43
- S_inv: np.ndarray,
42
+ innovation: np.ndarray[Any, Any],
43
+ S_inv: np.ndarray[Any, Any],
44
44
  ) -> float:
45
45
  """JIT-compiled Mahalanobis distance for general dimension."""
46
46
  n = len(innovation)
@@ -341,9 +341,9 @@ def compute_gate_volume(
341
341
 
342
342
  @njit(cache=True, fastmath=True, parallel=False)
343
343
  def mahalanobis_batch(
344
- innovations: np.ndarray,
345
- S_inv: np.ndarray,
346
- output: np.ndarray,
344
+ innovations: np.ndarray[Any, Any],
345
+ S_inv: np.ndarray[Any, Any],
346
+ output: np.ndarray[Any, Any],
347
347
  ) -> None:
348
348
  """
349
349
  Compute Mahalanobis distances for a batch of innovations.