nrl-tracker 0.21.5__tar.gz → 0.22.1__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 (199) hide show
  1. {nrl_tracker-0.21.5/nrl_tracker.egg-info → nrl_tracker-0.22.1}/PKG-INFO +2 -2
  2. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/README.md +1 -1
  3. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1/nrl_tracker.egg-info}/PKG-INFO +2 -2
  4. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/SOURCES.txt +4 -0
  5. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pyproject.toml +1 -1
  6. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/__init__.py +1 -1
  7. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/data_association.py +2 -7
  8. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/gating.py +3 -3
  9. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/jpda.py +4 -12
  10. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/kbest.py +1 -3
  11. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/__init__.py +60 -7
  12. nrl_tracker-0.22.1/pytcl/astronomical/ephemerides.py +522 -0
  13. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/lambert.py +4 -14
  14. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/orbital_mechanics.py +1 -3
  15. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/reference_frames.py +1 -3
  16. nrl_tracker-0.22.1/pytcl/astronomical/relativity.py +466 -0
  17. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/atmosphere/__init__.py +2 -2
  18. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/atmosphere/models.py +1 -3
  19. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/gaussian_mixture.py +4 -8
  20. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/hierarchical.py +1 -5
  21. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/kmeans.py +1 -3
  22. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/__init__.py +4 -21
  23. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/cluster_set.py +4 -19
  24. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/measurement_set.py +3 -15
  25. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/rtree.py +2 -5
  26. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/geodetic.py +3 -15
  27. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/__init__.py +4 -2
  28. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/projections.py +11 -38
  29. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/rotations/rotations.py +1 -3
  30. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/array_utils.py +1 -4
  31. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/constants.py +1 -3
  32. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/validation.py +6 -17
  33. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/imm.py +4 -13
  34. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/extended.py +1 -4
  35. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/square_root.py +2 -6
  36. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/unscented.py +1 -4
  37. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
  38. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/smoothers.py +2 -8
  39. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/__init__.py +1 -5
  40. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/__init__.py +1 -5
  41. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/polynomial.py +2 -6
  42. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/clenshaw.py +2 -6
  43. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/egm.py +1 -3
  44. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/models.py +1 -3
  45. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/spherical_harmonics.py +4 -10
  46. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/tides.py +7 -16
  47. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/__init__.py +3 -14
  48. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/emm.py +3 -12
  49. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/wmm.py +2 -9
  50. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/decompositions.py +1 -3
  51. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -3
  52. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/geometry/geometry.py +4 -12
  53. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/interpolation/__init__.py +2 -2
  54. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/interpolation/interpolation.py +1 -3
  55. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/detection.py +3 -6
  56. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/filters.py +2 -6
  57. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/matched_filter.py +2 -4
  58. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/__init__.py +2 -2
  59. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/elliptic.py +1 -3
  60. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -3
  61. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/lambert_w.py +1 -3
  62. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/distributions.py +12 -36
  63. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/estimators.py +1 -3
  64. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/stft.py +3 -9
  65. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/wavelets.py +6 -18
  66. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/__init__.py +14 -10
  67. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/geodesy.py +9 -31
  68. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/great_circle.py +4 -12
  69. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/ins.py +3 -13
  70. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/ins_gnss.py +7 -25
  71. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/rhumb.py +3 -10
  72. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/track_metrics.py +1 -3
  73. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/coordinates.py +5 -17
  74. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/metrics.py +3 -9
  75. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/tracks.py +3 -11
  76. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/least_squares.py +1 -2
  77. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/maximum_likelihood.py +3 -3
  78. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/dem.py +2 -8
  79. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/loaders.py +5 -13
  80. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/visibility.py +2 -7
  81. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/__init__.py +3 -14
  82. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/hypothesis.py +2 -7
  83. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/mht.py +5 -15
  84. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/multi_target.py +1 -4
  85. nrl_tracker-0.22.1/tests/test_ephemerides.py +340 -0
  86. nrl_tracker-0.22.1/tests/test_relativity.py +458 -0
  87. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/CONTRIBUTING.md +0 -0
  88. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/LICENSE +0 -0
  89. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/MANIFEST.in +0 -0
  90. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/dependency_links.txt +0 -0
  91. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/requires.txt +0 -0
  92. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/top_level.txt +0 -0
  93. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/__init__.py +0 -0
  94. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -0
  95. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/three_dimensional/assignment.py +0 -0
  96. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -0
  97. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/assignment.py +0 -0
  98. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/time_systems.py +0 -0
  99. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/__init__.py +0 -0
  100. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/dbscan.py +0 -0
  101. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/covertree.py +0 -0
  102. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/kd_tree.py +0 -0
  103. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/track_list.py +0 -0
  104. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/vptree.py +0 -0
  105. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/__init__.py +0 -0
  106. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/__init__.py +0 -0
  107. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/spherical.py +0 -0
  108. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/jacobians/__init__.py +0 -0
  109. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/jacobians/jacobians.py +0 -0
  110. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/rotations/__init__.py +0 -0
  111. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/__init__.py +0 -0
  112. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/__init__.py +0 -0
  113. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
  114. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/information_filter.py +0 -0
  115. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/__init__.py +0 -0
  116. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/linear.py +0 -0
  117. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
  118. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -0
  119. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/__init__.py +0 -0
  120. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/continuous_time/__init__.py +0 -0
  121. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/continuous_time/dynamics.py +0 -0
  122. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
  123. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
  124. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
  125. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
  126. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/singer.py +0 -0
  127. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/__init__.py +0 -0
  128. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/igrf.py +0 -0
  129. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/__init__.py +0 -0
  130. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -0
  131. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +0 -0
  132. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/combinatorics/__init__.py +0 -0
  133. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
  134. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/geometry/__init__.py +0 -0
  135. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -0
  136. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/numerical_integration/quadrature.py +0 -0
  137. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
  138. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/__init__.py +0 -0
  139. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/bessel.py +0 -0
  140. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/debye.py +0 -0
  141. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/error_functions.py +0 -0
  142. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/hypergeometric.py +0 -0
  143. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/marcum_q.py +0 -0
  144. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/__init__.py +0 -0
  145. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/__init__.py +0 -0
  146. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/fourier.py +0 -0
  147. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/misc/__init__.py +0 -0
  148. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/__init__.py +0 -0
  149. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/estimation_metrics.py +0 -0
  150. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/physical_values/__init__.py +0 -0
  151. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/__init__.py +0 -0
  152. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/ellipses.py +0 -0
  153. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/scheduling/__init__.py +0 -0
  154. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/__init__.py +0 -0
  155. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/robust.py +0 -0
  156. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/__init__.py +0 -0
  157. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/single_target.py +0 -0
  158. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/transponders/__init__.py +0 -0
  159. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/setup.cfg +0 -0
  160. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/__init__.py +0 -0
  161. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/conftest.py +0 -0
  162. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_additional_trees.py +0 -0
  163. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_assignment_algorithms.py +0 -0
  164. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_astronomical.py +0 -0
  165. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_clustering.py +0 -0
  166. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coordinate_systems.py +0 -0
  167. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coverage_boost.py +0 -0
  168. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coverage_boost_2.py +0 -0
  169. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_dynamic_models.py +0 -0
  170. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_egm.py +0 -0
  171. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_emm.py +0 -0
  172. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_gaussian_mixtures.py +0 -0
  173. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_geophysical.py +0 -0
  174. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_great_circle.py +0 -0
  175. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_ins.py +0 -0
  176. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_ins_gnss.py +0 -0
  177. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_kalman_filters.py +0 -0
  178. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_mathematical_functions.py +0 -0
  179. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_maximum_likelihood.py +0 -0
  180. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_mht.py +0 -0
  181. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_performance_evaluation.py +0 -0
  182. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_phase6_specialized.py +0 -0
  183. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_plotting.py +0 -0
  184. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_projections.py +0 -0
  185. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_rhumb.py +0 -0
  186. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_signal_processing.py +0 -0
  187. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_smoothers.py +0 -0
  188. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_spatial_structures.py +0 -0
  189. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_special_functions_phase12.py +0 -0
  190. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_static_estimation.py +0 -0
  191. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_terrain.py +0 -0
  192. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_terrain_loaders.py +0 -0
  193. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_tides.py +0 -0
  194. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_trackers.py +0 -0
  195. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_tracking_containers.py +0 -0
  196. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_transforms.py +0 -0
  197. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_v030_comprehensive.py +0 -0
  198. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_v030_features.py +0 -0
  199. {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/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.5
3
+ Version: 0.22.1
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
@@ -60,7 +60,7 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
60
60
 
61
61
  # Tracker Component Library (Python)
62
62
 
63
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.5-blue.svg)](https://pypi.org/project/nrl-tracker/)
63
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.22.0-blue.svg)](https://pypi.org/project/nrl-tracker/)
64
64
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
65
65
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
66
66
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -1,6 +1,6 @@
1
1
  # Tracker Component Library (Python)
2
2
 
3
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.5-blue.svg)](https://pypi.org/project/nrl-tracker/)
3
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.22.0-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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 0.21.5
3
+ Version: 0.22.1
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
@@ -60,7 +60,7 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
60
60
 
61
61
  # Tracker Component Library (Python)
62
62
 
63
- [![PyPI version](https://img.shields.io/badge/pypi-v0.21.5-blue.svg)](https://pypi.org/project/nrl-tracker/)
63
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.22.0-blue.svg)](https://pypi.org/project/nrl-tracker/)
64
64
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
65
65
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
66
66
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -19,9 +19,11 @@ pytcl/assignment_algorithms/two_dimensional/__init__.py
19
19
  pytcl/assignment_algorithms/two_dimensional/assignment.py
20
20
  pytcl/assignment_algorithms/two_dimensional/kbest.py
21
21
  pytcl/astronomical/__init__.py
22
+ pytcl/astronomical/ephemerides.py
22
23
  pytcl/astronomical/lambert.py
23
24
  pytcl/astronomical/orbital_mechanics.py
24
25
  pytcl/astronomical/reference_frames.py
26
+ pytcl/astronomical/relativity.py
25
27
  pytcl/astronomical/time_systems.py
26
28
  pytcl/atmosphere/__init__.py
27
29
  pytcl/atmosphere/models.py
@@ -163,6 +165,7 @@ tests/test_coverage_boost_2.py
163
165
  tests/test_dynamic_models.py
164
166
  tests/test_egm.py
165
167
  tests/test_emm.py
168
+ tests/test_ephemerides.py
166
169
  tests/test_gaussian_mixtures.py
167
170
  tests/test_geophysical.py
168
171
  tests/test_great_circle.py
@@ -176,6 +179,7 @@ tests/test_performance_evaluation.py
176
179
  tests/test_phase6_specialized.py
177
180
  tests/test_plotting.py
178
181
  tests/test_projections.py
182
+ tests/test_relativity.py
179
183
  tests/test_rhumb.py
180
184
  tests/test_signal_processing.py
181
185
  tests/test_smoothers.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "nrl-tracker"
7
- version = "0.21.5"
7
+ version = "0.22.1"
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 = [
@@ -20,7 +20,7 @@ References
20
20
  no. 5, pp. 18-27, May 2017.
21
21
  """
22
22
 
23
- __version__ = "0.21.5"
23
+ __version__ = "0.22.1"
24
24
  __author__ = "Python Port Contributors"
25
25
  __original_author__ = "David F. Crouse, Naval Research Laboratory"
26
26
 
@@ -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):
@@ -19,9 +19,9 @@ def _mahalanobis_distance_2d(
19
19
  S_inv: np.ndarray,
20
20
  ) -> float:
21
21
  """JIT-compiled Mahalanobis distance for 2D innovations."""
22
- return innovation[0] * (
23
- S_inv[0, 0] * innovation[0] + S_inv[0, 1] * innovation[1]
24
- ) + innovation[1] * (S_inv[1, 0] * innovation[0] + S_inv[1, 1] * innovation[1])
22
+ return innovation[0] * (S_inv[0, 0] * innovation[0] + S_inv[0, 1] * innovation[1]) + innovation[
23
+ 1
24
+ ] * (S_inv[1, 0] * innovation[0] + S_inv[1, 1] * innovation[1])
25
25
 
26
26
 
27
27
  @njit(cache=True, fastmath=True)
@@ -94,9 +94,7 @@ def compute_measurement_likelihood(
94
94
  return 0.0
95
95
 
96
96
  mahal_sq = innovation @ np.linalg.solve(innovation_cov, innovation)
97
- likelihood = (
98
- detection_prob * np.exp(-0.5 * mahal_sq) / np.sqrt((2 * np.pi) ** m * det_S)
99
- )
97
+ likelihood = detection_prob * np.exp(-0.5 * mahal_sq) / np.sqrt((2 * np.pi) ** m * det_S)
100
98
 
101
99
  return likelihood
102
100
 
@@ -210,9 +208,7 @@ def jpda_probabilities(
210
208
  if n_tracks <= 5 and n_meas <= 5:
211
209
  beta = _jpda_exact(likelihood_matrix, gated, detection_prob, clutter_density)
212
210
  else:
213
- beta = _jpda_approximate(
214
- likelihood_matrix, gated, detection_prob, clutter_density
215
- )
211
+ beta = _jpda_approximate(likelihood_matrix, gated, detection_prob, clutter_density)
216
212
 
217
213
  return beta
218
214
 
@@ -258,9 +254,7 @@ def _jpda_exact(
258
254
  if gated[track_idx, meas_idx] and track_idx not in used_tracks:
259
255
  current_assignment.append(track_idx)
260
256
  used_tracks.add(track_idx)
261
- yield from generate_hypotheses(
262
- meas_idx + 1, current_assignment, used_tracks
263
- )
257
+ yield from generate_hypotheses(meas_idx + 1, current_assignment, used_tracks)
264
258
  used_tracks.remove(track_idx)
265
259
  current_assignment.pop()
266
260
 
@@ -298,9 +292,7 @@ def _jpda_exact(
298
292
  hypothesis_probs = [p / total_prob for p in hypothesis_probs]
299
293
 
300
294
  # Compute marginal association probabilities
301
- for h_idx, (assignment, prob) in enumerate(
302
- zip(hypothesis_assignments, hypothesis_probs)
303
- ):
295
+ for h_idx, (assignment, prob) in enumerate(zip(hypothesis_assignments, hypothesis_probs)):
304
296
  detected_tracks = set()
305
297
  for j, track_idx in enumerate(assignment):
306
298
  if track_idx >= 0:
@@ -335,9 +335,7 @@ def _partition_solution(
335
335
 
336
336
  for i in range(start_idx, n_assigned):
337
337
  # Require assignments 0..i-1, forbid assignment i
338
- new_required = required + [
339
- (row_ind[j], col_ind[j]) for j in range(start_idx, i)
340
- ]
338
+ new_required = required + [(row_ind[j], col_ind[j]) for j in range(start_idx, i)]
341
339
  new_forbidden = forbidden + [(row_ind[i], col_ind[i])]
342
340
 
343
341
  # Solve constrained problem
@@ -2,7 +2,8 @@
2
2
  Astronomical calculations for target tracking.
3
3
 
4
4
  This module provides time system conversions, orbital mechanics,
5
- Lambert problem solvers, and reference frame transformations.
5
+ Lambert problem solvers, reference frame transformations, and high-precision
6
+ ephemerides for celestial bodies.
6
7
 
7
8
  Examples
8
9
  --------
@@ -18,8 +19,19 @@ Examples
18
19
  >>> r1 = np.array([5000, 10000, 2100])
19
20
  >>> r2 = np.array([-14600, 2500, 7000])
20
21
  >>> sol = lambert_universal(r1, r2, 3600)
22
+
23
+ >>> # Query Sun position with high precision
24
+ >>> from pytcl.astronomical import sun_position
25
+ >>> r_sun, v_sun = sun_position(2451545.0) # J2000.0
21
26
  """
22
27
 
28
+ from pytcl.astronomical.ephemerides import (
29
+ DEEphemeris,
30
+ barycenter_position,
31
+ moon_position,
32
+ planet_position,
33
+ sun_position,
34
+ )
23
35
  from pytcl.astronomical.lambert import (
24
36
  LambertSolution,
25
37
  bi_elliptic_transfer,
@@ -28,8 +40,10 @@ from pytcl.astronomical.lambert import (
28
40
  lambert_universal,
29
41
  minimum_energy_transfer,
30
42
  )
31
- from pytcl.astronomical.orbital_mechanics import ( # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
32
- GM_EARTH,
43
+ from pytcl.astronomical.orbital_mechanics import (
44
+ GM_EARTH, # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
45
+ )
46
+ from pytcl.astronomical.orbital_mechanics import (
33
47
  GM_JUPITER,
34
48
  GM_MARS,
35
49
  GM_MOON,
@@ -62,8 +76,10 @@ from pytcl.astronomical.orbital_mechanics import ( # Constants; Types; Anomaly
62
76
  true_to_mean_anomaly,
63
77
  vis_viva,
64
78
  )
65
- from pytcl.astronomical.reference_frames import ( # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
66
- earth_rotation_angle,
79
+ from pytcl.astronomical.reference_frames import (
80
+ earth_rotation_angle, # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
81
+ )
82
+ from pytcl.astronomical.reference_frames import (
67
83
  ecef_to_eci,
68
84
  eci_to_ecef,
69
85
  ecliptic_to_equatorial,
@@ -83,8 +99,25 @@ from pytcl.astronomical.reference_frames import ( # Time utilities; Precession;
83
99
  sidereal_rotation_matrix,
84
100
  true_obliquity,
85
101
  )
86
- from pytcl.astronomical.time_systems import ( # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
87
- JD_GPS_EPOCH,
102
+ from pytcl.astronomical.relativity import (
103
+ C_LIGHT, # Physical constants; Schwarzschild metric; Time dilation; Shapiro delay; Precession; PN effects; Range corrections
104
+ )
105
+ from pytcl.astronomical.relativity import (
106
+ G_GRAV,
107
+ geodetic_precession,
108
+ gravitational_time_dilation,
109
+ lense_thirring_precession,
110
+ post_newtonian_acceleration,
111
+ proper_time_rate,
112
+ relativistic_range_correction,
113
+ schwarzschild_precession_per_orbit,
114
+ schwarzschild_radius,
115
+ shapiro_delay,
116
+ )
117
+ from pytcl.astronomical.time_systems import (
118
+ JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
119
+ )
120
+ from pytcl.astronomical.time_systems import (
88
121
  JD_J2000,
89
122
  JD_UNIX_EPOCH,
90
123
  MJD_OFFSET,
@@ -218,4 +251,24 @@ __all__ = [
218
251
  # Reference frames - Ecliptic/equatorial
219
252
  "ecliptic_to_equatorial",
220
253
  "equatorial_to_ecliptic",
254
+ # Ephemerides - Classes
255
+ "DEEphemeris",
256
+ # Ephemerides - Functions
257
+ "sun_position",
258
+ "moon_position",
259
+ "planet_position",
260
+ "barycenter_position",
261
+ # Relativity - Constants
262
+ "C_LIGHT",
263
+ "G_GRAV",
264
+ # Relativity - Functions
265
+ "schwarzschild_radius",
266
+ "gravitational_time_dilation",
267
+ "proper_time_rate",
268
+ "shapiro_delay",
269
+ "schwarzschild_precession_per_orbit",
270
+ "post_newtonian_acceleration",
271
+ "geodetic_precession",
272
+ "lense_thirring_precession",
273
+ "relativistic_range_correction",
221
274
  ]