nrl-tracker 0.22.0__tar.gz → 0.22.2__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 (233) hide show
  1. {nrl_tracker-0.22.0/nrl_tracker.egg-info → nrl_tracker-0.22.2}/PKG-INFO +1 -1
  2. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2/nrl_tracker.egg-info}/PKG-INFO +1 -1
  3. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pyproject.toml +1 -1
  4. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/__init__.py +11 -9
  5. nrl_tracker-0.22.2/pytcl/assignment_algorithms/__init__.py +94 -0
  6. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/data_association.py +3 -7
  7. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/gating.py +2 -4
  8. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/jpda.py +2 -6
  9. nrl_tracker-0.22.2/pytcl/assignment_algorithms/three_dimensional/__init__.py +24 -0
  10. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/three_dimensional/assignment.py +2 -6
  11. nrl_tracker-0.22.2/pytcl/assignment_algorithms/two_dimensional/__init__.py +35 -0
  12. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/two_dimensional/assignment.py +2 -5
  13. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/assignment_algorithms/two_dimensional/kbest.py +6 -8
  14. nrl_tracker-0.22.2/pytcl/astronomical/__init__.py +274 -0
  15. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/ephemerides.py +1 -3
  16. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/lambert.py +1 -2
  17. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/time_systems.py +1 -2
  18. nrl_tracker-0.22.2/pytcl/atmosphere/__init__.py +37 -0
  19. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/atmosphere/models.py +2 -4
  20. nrl_tracker-0.22.2/pytcl/clustering/__init__.py +79 -0
  21. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/clustering/dbscan.py +2 -5
  22. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/clustering/gaussian_mixture.py +2 -6
  23. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/clustering/hierarchical.py +2 -6
  24. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/clustering/kmeans.py +2 -6
  25. nrl_tracker-0.22.2/pytcl/containers/__init__.py +72 -0
  26. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/cluster_set.py +2 -10
  27. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/covertree.py +2 -8
  28. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/kd_tree.py +2 -6
  29. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/measurement_set.py +2 -9
  30. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/rtree.py +2 -6
  31. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/track_list.py +13 -13
  32. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/containers/vptree.py +2 -7
  33. nrl_tracker-0.22.2/pytcl/coordinate_systems/__init__.py +181 -0
  34. nrl_tracker-0.22.2/pytcl/coordinate_systems/conversions/__init__.py +59 -0
  35. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/conversions/geodetic.py +2 -4
  36. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/conversions/spherical.py +2 -4
  37. nrl_tracker-0.22.2/pytcl/coordinate_systems/jacobians/__init__.py +37 -0
  38. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/jacobians/jacobians.py +1 -2
  39. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/projections/__init__.py +21 -23
  40. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/projections/projections.py +1 -3
  41. nrl_tracker-0.22.2/pytcl/coordinate_systems/rotations/__init__.py +56 -0
  42. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/coordinate_systems/rotations/rotations.py +1 -2
  43. nrl_tracker-0.22.2/pytcl/core/__init__.py +53 -0
  44. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/core/array_utils.py +3 -6
  45. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/core/validation.py +2 -7
  46. nrl_tracker-0.22.2/pytcl/dynamic_estimation/__init__.py +207 -0
  47. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/imm.py +3 -7
  48. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/information_filter.py +6 -8
  49. nrl_tracker-0.22.2/pytcl/dynamic_estimation/kalman/__init__.py +111 -0
  50. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/kalman/extended.py +2 -4
  51. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/kalman/linear.py +3 -7
  52. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/kalman/square_root.py +2 -5
  53. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/kalman/unscented.py +3 -8
  54. nrl_tracker-0.22.2/pytcl/dynamic_estimation/particle_filters/__init__.py +38 -0
  55. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
  56. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/smoothers.py +3 -8
  57. nrl_tracker-0.22.2/pytcl/dynamic_models/__init__.py +110 -0
  58. nrl_tracker-0.22.2/pytcl/dynamic_models/continuous_time/__init__.py +40 -0
  59. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/continuous_time/dynamics.py +2 -4
  60. nrl_tracker-0.22.2/pytcl/dynamic_models/discrete_time/__init__.py +37 -0
  61. nrl_tracker-0.22.2/pytcl/dynamic_models/process_noise/__init__.py +37 -0
  62. nrl_tracker-0.22.2/pytcl/gravity/__init__.py +150 -0
  63. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/gravity/clenshaw.py +1 -2
  64. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/gravity/egm.py +3 -8
  65. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/gravity/spherical_harmonics.py +1 -2
  66. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/gravity/tides.py +1 -2
  67. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/magnetism/__init__.py +25 -26
  68. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/magnetism/emm.py +1 -4
  69. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/magnetism/igrf.py +6 -5
  70. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/magnetism/wmm.py +1 -2
  71. nrl_tracker-0.22.2/pytcl/mathematical_functions/__init__.py +208 -0
  72. nrl_tracker-0.22.2/pytcl/mathematical_functions/basic_matrix/__init__.py +66 -0
  73. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/basic_matrix/decompositions.py +2 -5
  74. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +1 -2
  75. nrl_tracker-0.22.2/pytcl/mathematical_functions/combinatorics/__init__.py +49 -0
  76. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -4
  77. nrl_tracker-0.22.2/pytcl/mathematical_functions/geometry/__init__.py +48 -0
  78. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/geometry/geometry.py +3 -6
  79. nrl_tracker-0.22.2/pytcl/mathematical_functions/interpolation/__init__.py +37 -0
  80. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/interpolation/interpolation.py +2 -7
  81. nrl_tracker-0.22.2/pytcl/mathematical_functions/numerical_integration/__init__.py +45 -0
  82. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/numerical_integration/quadrature.py +2 -6
  83. nrl_tracker-0.22.2/pytcl/mathematical_functions/signal_processing/__init__.py +105 -0
  84. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/signal_processing/detection.py +3 -6
  85. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/signal_processing/filters.py +2 -5
  86. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/signal_processing/matched_filter.py +3 -6
  87. nrl_tracker-0.22.2/pytcl/mathematical_functions/special_functions/__init__.py +198 -0
  88. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/bessel.py +1 -2
  89. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/debye.py +2 -4
  90. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/elliptic.py +1 -2
  91. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/error_functions.py +1 -2
  92. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -2
  93. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/hypergeometric.py +1 -2
  94. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/lambert_w.py +1 -2
  95. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/special_functions/marcum_q.py +1 -2
  96. nrl_tracker-0.22.2/pytcl/mathematical_functions/statistics/__init__.py +73 -0
  97. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/statistics/distributions.py +4 -9
  98. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/statistics/estimators.py +1 -2
  99. nrl_tracker-0.22.2/pytcl/mathematical_functions/transforms/__init__.py +120 -0
  100. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/transforms/fourier.py +2 -5
  101. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/transforms/stft.py +2 -5
  102. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/transforms/wavelets.py +2 -7
  103. nrl_tracker-0.22.2/pytcl/navigation/__init__.py +237 -0
  104. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/navigation/geodesy.py +2 -4
  105. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/navigation/great_circle.py +1 -3
  106. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/navigation/ins.py +5 -11
  107. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/navigation/ins_gnss.py +12 -17
  108. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/navigation/rhumb.py +2 -4
  109. nrl_tracker-0.22.2/pytcl/performance_evaluation/__init__.py +82 -0
  110. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/performance_evaluation/estimation_metrics.py +1 -3
  111. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/performance_evaluation/track_metrics.py +1 -3
  112. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/plotting/__init__.py +38 -30
  113. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/plotting/coordinates.py +1 -3
  114. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/plotting/ellipses.py +2 -5
  115. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/plotting/metrics.py +1 -2
  116. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/plotting/tracks.py +1 -4
  117. nrl_tracker-0.22.2/pytcl/static_estimation/__init__.py +103 -0
  118. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/static_estimation/least_squares.py +2 -4
  119. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/static_estimation/maximum_likelihood.py +2 -5
  120. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/static_estimation/robust.py +2 -5
  121. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/terrain/__init__.py +34 -28
  122. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/terrain/dem.py +1 -4
  123. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/terrain/loaders.py +1 -4
  124. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/terrain/visibility.py +1 -2
  125. nrl_tracker-0.22.2/pytcl/trackers/__init__.py +45 -0
  126. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/trackers/hypothesis.py +1 -6
  127. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/trackers/mht.py +9 -13
  128. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/trackers/multi_target.py +3 -8
  129. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/trackers/single_target.py +2 -5
  130. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/conftest.py +1 -3
  131. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_astronomical.py +1 -3
  132. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_coordinate_systems.py +1 -3
  133. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_coverage_boost.py +1 -3
  134. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_coverage_boost_2.py +3 -9
  135. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_egm.py +18 -54
  136. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_emm.py +14 -42
  137. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_ephemerides.py +103 -104
  138. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_gaussian_mixtures.py +1 -2
  139. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_great_circle.py +1 -3
  140. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_ins.py +1 -3
  141. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_ins_gnss.py +3 -9
  142. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_projections.py +1 -3
  143. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_relativity.py +108 -104
  144. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_smoothers.py +4 -12
  145. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_static_estimation.py +3 -9
  146. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_tides.py +4 -12
  147. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_trackers.py +4 -12
  148. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_v030_comprehensive.py +3 -9
  149. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_v030_features.py +1 -3
  150. nrl_tracker-0.22.0/pytcl/assignment_algorithms/__init__.py +0 -84
  151. nrl_tracker-0.22.0/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -22
  152. nrl_tracker-0.22.0/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -31
  153. nrl_tracker-0.22.0/pytcl/astronomical/__init__.py +0 -262
  154. nrl_tracker-0.22.0/pytcl/atmosphere/__init__.py +0 -35
  155. nrl_tracker-0.22.0/pytcl/clustering/__init__.py +0 -71
  156. nrl_tracker-0.22.0/pytcl/containers/__init__.py +0 -75
  157. nrl_tracker-0.22.0/pytcl/coordinate_systems/__init__.py +0 -176
  158. nrl_tracker-0.22.0/pytcl/coordinate_systems/conversions/__init__.py +0 -55
  159. nrl_tracker-0.22.0/pytcl/coordinate_systems/jacobians/__init__.py +0 -35
  160. nrl_tracker-0.22.0/pytcl/coordinate_systems/rotations/__init__.py +0 -54
  161. nrl_tracker-0.22.0/pytcl/core/__init__.py +0 -47
  162. nrl_tracker-0.22.0/pytcl/dynamic_estimation/__init__.py +0 -198
  163. nrl_tracker-0.22.0/pytcl/dynamic_estimation/kalman/__init__.py +0 -103
  164. nrl_tracker-0.22.0/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -36
  165. nrl_tracker-0.22.0/pytcl/dynamic_models/__init__.py +0 -106
  166. nrl_tracker-0.22.0/pytcl/dynamic_models/continuous_time/__init__.py +0 -40
  167. nrl_tracker-0.22.0/pytcl/dynamic_models/discrete_time/__init__.py +0 -35
  168. nrl_tracker-0.22.0/pytcl/dynamic_models/process_noise/__init__.py +0 -35
  169. nrl_tracker-0.22.0/pytcl/gravity/__init__.py +0 -140
  170. nrl_tracker-0.22.0/pytcl/mathematical_functions/__init__.py +0 -190
  171. nrl_tracker-0.22.0/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -72
  172. nrl_tracker-0.22.0/pytcl/mathematical_functions/combinatorics/__init__.py +0 -53
  173. nrl_tracker-0.22.0/pytcl/mathematical_functions/geometry/__init__.py +0 -48
  174. nrl_tracker-0.22.0/pytcl/mathematical_functions/interpolation/__init__.py +0 -35
  175. nrl_tracker-0.22.0/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -51
  176. nrl_tracker-0.22.0/pytcl/mathematical_functions/signal_processing/__init__.py +0 -117
  177. nrl_tracker-0.22.0/pytcl/mathematical_functions/special_functions/__init__.py +0 -196
  178. nrl_tracker-0.22.0/pytcl/mathematical_functions/statistics/__init__.py +0 -69
  179. nrl_tracker-0.22.0/pytcl/mathematical_functions/transforms/__init__.py +0 -114
  180. nrl_tracker-0.22.0/pytcl/navigation/__init__.py +0 -227
  181. nrl_tracker-0.22.0/pytcl/performance_evaluation/__init__.py +0 -78
  182. nrl_tracker-0.22.0/pytcl/static_estimation/__init__.py +0 -99
  183. nrl_tracker-0.22.0/pytcl/trackers/__init__.py +0 -48
  184. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/CONTRIBUTING.md +0 -0
  185. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/LICENSE +0 -0
  186. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/MANIFEST.in +0 -0
  187. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/README.md +0 -0
  188. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/nrl_tracker.egg-info/SOURCES.txt +0 -0
  189. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/nrl_tracker.egg-info/dependency_links.txt +0 -0
  190. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/nrl_tracker.egg-info/requires.txt +0 -0
  191. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/nrl_tracker.egg-info/top_level.txt +0 -0
  192. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/orbital_mechanics.py +0 -0
  193. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/reference_frames.py +0 -0
  194. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/astronomical/relativity.py +0 -0
  195. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/core/constants.py +0 -0
  196. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
  197. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
  198. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
  199. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
  200. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
  201. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
  202. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/process_noise/polynomial.py +0 -0
  203. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/dynamic_models/process_noise/singer.py +0 -0
  204. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/gravity/models.py +0 -0
  205. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
  206. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
  207. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/misc/__init__.py +0 -0
  208. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/physical_values/__init__.py +0 -0
  209. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/scheduling/__init__.py +0 -0
  210. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/pytcl/transponders/__init__.py +0 -0
  211. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/setup.cfg +0 -0
  212. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/__init__.py +0 -0
  213. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_additional_trees.py +0 -0
  214. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_assignment_algorithms.py +0 -0
  215. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_clustering.py +0 -0
  216. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_dynamic_models.py +0 -0
  217. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_geophysical.py +0 -0
  218. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_kalman_filters.py +0 -0
  219. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_mathematical_functions.py +0 -0
  220. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_maximum_likelihood.py +0 -0
  221. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_mht.py +0 -0
  222. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_performance_evaluation.py +0 -0
  223. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_phase6_specialized.py +0 -0
  224. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_plotting.py +0 -0
  225. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_rhumb.py +0 -0
  226. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_signal_processing.py +0 -0
  227. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_spatial_structures.py +0 -0
  228. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_special_functions_phase12.py +0 -0
  229. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_terrain.py +0 -0
  230. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_terrain_loaders.py +0 -0
  231. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_tracking_containers.py +0 -0
  232. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/tests/test_transforms.py +0 -0
  233. {nrl_tracker-0.22.0 → nrl_tracker-0.22.2}/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.22.0
3
+ Version: 0.22.2
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 0.22.0
3
+ Version: 0.22.2
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "nrl-tracker"
7
- version = "0.22.0"
7
+ version = "0.22.2"
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.22.0"
23
+ __version__ = "0.22.2"
24
24
  __author__ = "Python Port Contributors"
25
25
  __original_author__ = "David F. Crouse, Naval Research Laboratory"
26
26
 
@@ -30,14 +30,16 @@ __original_author__ = "David F. Crouse, Naval Research Laboratory"
30
30
  # Specialized domains (Phase 6)
31
31
  # Assignment algorithms (Phase 5)
32
32
  # Core utilities
33
- from pytcl import assignment_algorithms
34
- from pytcl import astronomical
35
- from pytcl import atmosphere
36
- from pytcl import core
37
- from pytcl import navigation
38
- from pytcl import performance_evaluation
39
- from pytcl import plotting
40
- from pytcl import trackers
33
+ from pytcl import (
34
+ assignment_algorithms,
35
+ astronomical,
36
+ atmosphere,
37
+ core,
38
+ navigation,
39
+ performance_evaluation,
40
+ plotting,
41
+ trackers,
42
+ )
41
43
 
42
44
 
43
45
  # Version tuple for programmatic access
@@ -0,0 +1,94 @@
1
+ """
2
+ Assignment algorithms for data association in target tracking.
3
+
4
+ This module provides:
5
+ - 2D assignment algorithms (Hungarian, Auction)
6
+ - K-best 2D assignment (Murty's algorithm)
7
+ - 3D assignment algorithms (Lagrangian relaxation, Auction)
8
+ - Gating methods (ellipsoidal, rectangular)
9
+ - Data association algorithms (GNN, JPDA)
10
+ """
11
+
12
+ from pytcl.assignment_algorithms.data_association import (
13
+ AssociationResult,
14
+ compute_association_cost,
15
+ gated_gnn_association,
16
+ gnn_association,
17
+ nearest_neighbor,
18
+ )
19
+ from pytcl.assignment_algorithms.gating import (
20
+ chi2_gate_threshold,
21
+ compute_gate_volume,
22
+ ellipsoidal_gate,
23
+ gate_measurements,
24
+ mahalanobis_distance,
25
+ rectangular_gate,
26
+ )
27
+ from pytcl.assignment_algorithms.jpda import (
28
+ JPDAResult,
29
+ JPDAUpdate,
30
+ compute_likelihood_matrix,
31
+ jpda,
32
+ jpda_probabilities,
33
+ jpda_update,
34
+ )
35
+ from pytcl.assignment_algorithms.three_dimensional import (
36
+ Assignment3DResult,
37
+ assign3d,
38
+ assign3d_auction,
39
+ assign3d_lagrangian,
40
+ decompose_to_2d,
41
+ greedy_3d,
42
+ )
43
+ from pytcl.assignment_algorithms.two_dimensional import (
44
+ AssignmentResult,
45
+ KBestResult,
46
+ assign2d,
47
+ auction,
48
+ hungarian,
49
+ kbest_assign2d,
50
+ linear_sum_assignment,
51
+ murty,
52
+ ranked_assignments,
53
+ )
54
+
55
+ __all__ = [
56
+ # 2D Assignment
57
+ "hungarian",
58
+ "auction",
59
+ "linear_sum_assignment",
60
+ "assign2d",
61
+ "AssignmentResult",
62
+ # K-Best 2D Assignment
63
+ "KBestResult",
64
+ "murty",
65
+ "kbest_assign2d",
66
+ "ranked_assignments",
67
+ # 3D Assignment
68
+ "Assignment3DResult",
69
+ "assign3d",
70
+ "assign3d_lagrangian",
71
+ "assign3d_auction",
72
+ "greedy_3d",
73
+ "decompose_to_2d",
74
+ # Gating
75
+ "ellipsoidal_gate",
76
+ "rectangular_gate",
77
+ "gate_measurements",
78
+ "mahalanobis_distance",
79
+ "chi2_gate_threshold",
80
+ "compute_gate_volume",
81
+ # Data Association
82
+ "gnn_association",
83
+ "nearest_neighbor",
84
+ "compute_association_cost",
85
+ "gated_gnn_association",
86
+ "AssociationResult",
87
+ # JPDA
88
+ "JPDAResult",
89
+ "JPDAUpdate",
90
+ "jpda",
91
+ "jpda_update",
92
+ "jpda_probabilities",
93
+ "compute_likelihood_matrix",
94
+ ]
@@ -5,16 +5,12 @@ This module provides algorithms for associating measurements to tracks,
5
5
  including Global Nearest Neighbor (GNN) and related methods.
6
6
  """
7
7
 
8
- from typing import List
9
- from typing import NamedTuple
10
- from typing import Optional
8
+ from typing import List, NamedTuple, Optional
11
9
 
12
10
  import numpy as np
13
- from numpy.typing import ArrayLike
14
- from numpy.typing import NDArray
11
+ from numpy.typing import ArrayLike, NDArray
15
12
 
16
- from pytcl.assignment_algorithms.gating import mahalanobis_batch
17
- from pytcl.assignment_algorithms.gating import mahalanobis_distance
13
+ from pytcl.assignment_algorithms.gating import mahalanobis_batch, mahalanobis_distance
18
14
  from pytcl.assignment_algorithms.two_dimensional import assign2d
19
15
 
20
16
 
@@ -5,13 +5,11 @@ 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
9
- from typing import Tuple
8
+ from typing import List, Tuple
10
9
 
11
10
  import numpy as np
12
11
  from numba import njit
13
- from numpy.typing import ArrayLike
14
- from numpy.typing import NDArray
12
+ from numpy.typing import ArrayLike, NDArray
15
13
  from scipy.stats import chi2
16
14
 
17
15
 
@@ -9,15 +9,11 @@ This is more sophisticated than GNN which makes hard assignment decisions,
9
9
  as JPDA can handle measurement origin uncertainty in cluttered environments.
10
10
  """
11
11
 
12
- from typing import List
13
- from typing import NamedTuple
14
- from typing import Optional
15
- from typing import Tuple
12
+ from typing import List, NamedTuple, Optional, Tuple
16
13
 
17
14
  import numpy as np
18
15
  from numba import njit
19
- from numpy.typing import ArrayLike
20
- from numpy.typing import NDArray
16
+ from numpy.typing import ArrayLike, NDArray
21
17
  from scipy.stats import chi2
22
18
 
23
19
  from pytcl.assignment_algorithms.gating import mahalanobis_distance
@@ -0,0 +1,24 @@
1
+ """
2
+ Three-dimensional assignment algorithms.
3
+
4
+ This module provides algorithms for solving 3D assignment problems,
5
+ which arise in multi-sensor data fusion and multi-scan tracking.
6
+ """
7
+
8
+ from pytcl.assignment_algorithms.three_dimensional.assignment import (
9
+ Assignment3DResult,
10
+ assign3d,
11
+ assign3d_auction,
12
+ assign3d_lagrangian,
13
+ decompose_to_2d,
14
+ greedy_3d,
15
+ )
16
+
17
+ __all__ = [
18
+ "Assignment3DResult",
19
+ "assign3d",
20
+ "assign3d_lagrangian",
21
+ "assign3d_auction",
22
+ "greedy_3d",
23
+ "decompose_to_2d",
24
+ ]
@@ -11,14 +11,10 @@ cost subject to the constraint that each index appears in at most one
11
11
  selected tuple.
12
12
  """
13
13
 
14
- from typing import List
15
- from typing import NamedTuple
16
- from typing import Optional
17
- from typing import Tuple
14
+ from typing import List, NamedTuple, Optional, Tuple
18
15
 
19
16
  import numpy as np
20
- from numpy.typing import ArrayLike
21
- from numpy.typing import NDArray
17
+ from numpy.typing import ArrayLike, NDArray
22
18
  from scipy.optimize import linear_sum_assignment as scipy_lsa
23
19
 
24
20
 
@@ -0,0 +1,35 @@
1
+ """
2
+ Two-dimensional assignment algorithms.
3
+
4
+ This module provides optimal and suboptimal algorithms for solving
5
+ the 2D assignment problem (bipartite matching), as well as k-best
6
+ assignment algorithms for Multiple Hypothesis Tracking.
7
+ """
8
+
9
+ from pytcl.assignment_algorithms.two_dimensional.assignment import (
10
+ AssignmentResult,
11
+ assign2d,
12
+ auction,
13
+ hungarian,
14
+ linear_sum_assignment,
15
+ )
16
+ from pytcl.assignment_algorithms.two_dimensional.kbest import (
17
+ KBestResult,
18
+ kbest_assign2d,
19
+ murty,
20
+ ranked_assignments,
21
+ )
22
+
23
+ __all__ = [
24
+ # 2D Assignment
25
+ "hungarian",
26
+ "auction",
27
+ "linear_sum_assignment",
28
+ "assign2d",
29
+ "AssignmentResult",
30
+ # K-Best Assignment
31
+ "KBestResult",
32
+ "murty",
33
+ "kbest_assign2d",
34
+ "ranked_assignments",
35
+ ]
@@ -5,13 +5,10 @@ This module provides algorithms for solving the 2D assignment (bipartite matchin
5
5
  problem, which is fundamental to data association in target tracking.
6
6
  """
7
7
 
8
- from typing import NamedTuple
9
- from typing import Optional
10
- from typing import Tuple
8
+ from typing import NamedTuple, Optional, Tuple
11
9
 
12
10
  import numpy as np
13
- from numpy.typing import ArrayLike
14
- from numpy.typing import NDArray
11
+ from numpy.typing import ArrayLike, NDArray
15
12
  from scipy.optimize import linear_sum_assignment as scipy_lsa
16
13
 
17
14
 
@@ -6,18 +6,16 @@ This module provides algorithms for finding the k best solutions to the
6
6
  Multiple Hypothesis Tracking (MHT).
7
7
  """
8
8
 
9
- from typing import List
10
- from typing import NamedTuple
11
- from typing import Optional
12
- from typing import Tuple
9
+ from typing import List, NamedTuple, Optional, Tuple
13
10
 
14
11
  import numpy as np
15
- from numpy.typing import ArrayLike
16
- from numpy.typing import NDArray
12
+ from numpy.typing import ArrayLike, NDArray
17
13
  from scipy.optimize import linear_sum_assignment as scipy_lsa
18
14
 
19
- from pytcl.assignment_algorithms.two_dimensional.assignment import AssignmentResult
20
- from pytcl.assignment_algorithms.two_dimensional.assignment import assign2d
15
+ from pytcl.assignment_algorithms.two_dimensional.assignment import (
16
+ AssignmentResult,
17
+ assign2d,
18
+ )
21
19
 
22
20
 
23
21
  class KBestResult(NamedTuple):
@@ -0,0 +1,274 @@
1
+ """
2
+ Astronomical calculations for target tracking.
3
+
4
+ This module provides time system conversions, orbital mechanics,
5
+ Lambert problem solvers, reference frame transformations, and high-precision
6
+ ephemerides for celestial bodies.
7
+
8
+ Examples
9
+ --------
10
+ >>> from pytcl.astronomical import kepler_propagate, OrbitalElements
11
+ >>> import numpy as np
12
+
13
+ >>> # Propagate an orbit forward in time
14
+ >>> elements = OrbitalElements(a=7000, e=0.01, i=0.5, raan=0, omega=0, nu=0)
15
+ >>> new_elements = kepler_propagate(elements, 3600) # 1 hour
16
+
17
+ >>> # Solve Lambert's problem
18
+ >>> from pytcl.astronomical import lambert_universal
19
+ >>> r1 = np.array([5000, 10000, 2100])
20
+ >>> r2 = np.array([-14600, 2500, 7000])
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
26
+ """
27
+
28
+ from pytcl.astronomical.ephemerides import (
29
+ DEEphemeris,
30
+ barycenter_position,
31
+ moon_position,
32
+ planet_position,
33
+ sun_position,
34
+ )
35
+ from pytcl.astronomical.lambert import (
36
+ LambertSolution,
37
+ bi_elliptic_transfer,
38
+ hohmann_transfer,
39
+ lambert_izzo,
40
+ lambert_universal,
41
+ minimum_energy_transfer,
42
+ )
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 (
47
+ GM_JUPITER,
48
+ GM_MARS,
49
+ GM_MOON,
50
+ GM_SUN,
51
+ OrbitalElements,
52
+ StateVector,
53
+ apoapsis_radius,
54
+ circular_velocity,
55
+ eccentric_to_mean_anomaly,
56
+ eccentric_to_true_anomaly,
57
+ escape_velocity,
58
+ flight_path_angle,
59
+ hyperbolic_to_true_anomaly,
60
+ kepler_propagate,
61
+ kepler_propagate_state,
62
+ mean_motion,
63
+ mean_to_eccentric_anomaly,
64
+ mean_to_hyperbolic_anomaly,
65
+ mean_to_true_anomaly,
66
+ orbit_radius,
67
+ orbital_elements_to_state,
68
+ orbital_period,
69
+ periapsis_radius,
70
+ specific_angular_momentum,
71
+ specific_orbital_energy,
72
+ state_to_orbital_elements,
73
+ time_since_periapsis,
74
+ true_to_eccentric_anomaly,
75
+ true_to_hyperbolic_anomaly,
76
+ true_to_mean_anomaly,
77
+ vis_viva,
78
+ )
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 (
83
+ ecef_to_eci,
84
+ eci_to_ecef,
85
+ ecliptic_to_equatorial,
86
+ equation_of_equinoxes,
87
+ equatorial_to_ecliptic,
88
+ gast_iau82,
89
+ gcrf_to_itrf,
90
+ gmst_iau82,
91
+ itrf_to_gcrf,
92
+ julian_centuries_j2000,
93
+ mean_obliquity_iau80,
94
+ nutation_angles_iau80,
95
+ nutation_matrix,
96
+ polar_motion_matrix,
97
+ precession_angles_iau76,
98
+ precession_matrix_iau76,
99
+ sidereal_rotation_matrix,
100
+ true_obliquity,
101
+ )
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 (
121
+ JD_J2000,
122
+ JD_UNIX_EPOCH,
123
+ MJD_OFFSET,
124
+ TT_TAI_OFFSET,
125
+ LeapSecondTable,
126
+ cal_to_jd,
127
+ gast,
128
+ get_leap_seconds,
129
+ gmst,
130
+ gps_to_tai,
131
+ gps_to_utc,
132
+ gps_week_seconds,
133
+ gps_week_to_utc,
134
+ jd_to_cal,
135
+ jd_to_mjd,
136
+ jd_to_unix,
137
+ mjd_to_jd,
138
+ tai_to_gps,
139
+ tai_to_tt,
140
+ tai_to_utc,
141
+ tt_to_tai,
142
+ tt_to_utc,
143
+ unix_to_jd,
144
+ utc_to_gps,
145
+ utc_to_tai,
146
+ utc_to_tt,
147
+ )
148
+
149
+ __all__ = [
150
+ # Time systems - Julian dates
151
+ "cal_to_jd",
152
+ "jd_to_cal",
153
+ "mjd_to_jd",
154
+ "jd_to_mjd",
155
+ # Time systems - Time scales
156
+ "utc_to_tai",
157
+ "tai_to_utc",
158
+ "tai_to_tt",
159
+ "tt_to_tai",
160
+ "utc_to_tt",
161
+ "tt_to_utc",
162
+ "tai_to_gps",
163
+ "gps_to_tai",
164
+ "utc_to_gps",
165
+ "gps_to_utc",
166
+ # Time systems - Unix time
167
+ "unix_to_jd",
168
+ "jd_to_unix",
169
+ # Time systems - GPS week
170
+ "gps_week_seconds",
171
+ "gps_week_to_utc",
172
+ # Time systems - Sidereal time
173
+ "gmst",
174
+ "gast",
175
+ # Time systems - Leap seconds
176
+ "get_leap_seconds",
177
+ "LeapSecondTable",
178
+ # Time systems - Constants
179
+ "JD_J2000",
180
+ "JD_UNIX_EPOCH",
181
+ "JD_GPS_EPOCH",
182
+ "MJD_OFFSET",
183
+ "TT_TAI_OFFSET",
184
+ # Orbital mechanics - Constants
185
+ "GM_SUN",
186
+ "GM_EARTH",
187
+ "GM_MOON",
188
+ "GM_MARS",
189
+ "GM_JUPITER",
190
+ # Orbital mechanics - Types
191
+ "OrbitalElements",
192
+ "StateVector",
193
+ # Orbital mechanics - Anomaly conversions
194
+ "mean_to_eccentric_anomaly",
195
+ "mean_to_hyperbolic_anomaly",
196
+ "eccentric_to_true_anomaly",
197
+ "true_to_eccentric_anomaly",
198
+ "hyperbolic_to_true_anomaly",
199
+ "true_to_hyperbolic_anomaly",
200
+ "eccentric_to_mean_anomaly",
201
+ "mean_to_true_anomaly",
202
+ "true_to_mean_anomaly",
203
+ # Orbital mechanics - Element conversions
204
+ "orbital_elements_to_state",
205
+ "state_to_orbital_elements",
206
+ # Orbital mechanics - Propagation
207
+ "kepler_propagate",
208
+ "kepler_propagate_state",
209
+ # Orbital mechanics - Orbital quantities
210
+ "orbital_period",
211
+ "mean_motion",
212
+ "vis_viva",
213
+ "specific_angular_momentum",
214
+ "specific_orbital_energy",
215
+ "flight_path_angle",
216
+ "periapsis_radius",
217
+ "apoapsis_radius",
218
+ "time_since_periapsis",
219
+ "orbit_radius",
220
+ "escape_velocity",
221
+ "circular_velocity",
222
+ # Lambert problem
223
+ "LambertSolution",
224
+ "lambert_universal",
225
+ "lambert_izzo",
226
+ "minimum_energy_transfer",
227
+ "hohmann_transfer",
228
+ "bi_elliptic_transfer",
229
+ # Reference frames - Precession
230
+ "julian_centuries_j2000",
231
+ "precession_angles_iau76",
232
+ "precession_matrix_iau76",
233
+ # Reference frames - Nutation
234
+ "nutation_angles_iau80",
235
+ "nutation_matrix",
236
+ "mean_obliquity_iau80",
237
+ "true_obliquity",
238
+ # Reference frames - Earth rotation
239
+ "earth_rotation_angle",
240
+ "gmst_iau82",
241
+ "gast_iau82",
242
+ "sidereal_rotation_matrix",
243
+ "equation_of_equinoxes",
244
+ # Reference frames - Polar motion
245
+ "polar_motion_matrix",
246
+ # Reference frames - Full transformations
247
+ "gcrf_to_itrf",
248
+ "itrf_to_gcrf",
249
+ "eci_to_ecef",
250
+ "ecef_to_eci",
251
+ # Reference frames - Ecliptic/equatorial
252
+ "ecliptic_to_equatorial",
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",
274
+ ]
@@ -49,9 +49,7 @@ References
49
49
 
50
50
  """
51
51
 
52
- from typing import Literal
53
- from typing import Optional
54
- from typing import Tuple
52
+ from typing import Literal, Optional, Tuple
55
53
 
56
54
  import numpy as np
57
55
 
@@ -15,8 +15,7 @@ References
15
15
  orbital boundary-value problem," Celestial Mechanics, 1990.
16
16
  """
17
17
 
18
- from typing import NamedTuple
19
- from typing import Tuple
18
+ from typing import NamedTuple, Tuple
20
19
 
21
20
  import numpy as np
22
21
  from numpy.typing import NDArray
@@ -11,8 +11,7 @@ This module provides conversions between various time systems:
11
11
  - Sidereal time (GMST, GAST)
12
12
  """
13
13
 
14
- from typing import List
15
- from typing import Tuple
14
+ from typing import List, Tuple
16
15
 
17
16
  import numpy as np
18
17
 
@@ -0,0 +1,37 @@
1
+ """
2
+ Atmospheric models for tracking applications.
3
+
4
+ This module provides standard atmosphere models used for computing
5
+ temperature, pressure, density, and other properties at various altitudes.
6
+ """
7
+
8
+ from pytcl.atmosphere.models import G0 # Constants
9
+ from pytcl.atmosphere.models import (
10
+ GAMMA,
11
+ P0,
12
+ RHO0,
13
+ T0,
14
+ AtmosphereState,
15
+ R,
16
+ altitude_from_pressure,
17
+ isa_atmosphere,
18
+ mach_number,
19
+ true_airspeed_from_mach,
20
+ us_standard_atmosphere_1976,
21
+ )
22
+
23
+ __all__ = [
24
+ "AtmosphereState",
25
+ "us_standard_atmosphere_1976",
26
+ "isa_atmosphere",
27
+ "altitude_from_pressure",
28
+ "mach_number",
29
+ "true_airspeed_from_mach",
30
+ # Constants
31
+ "T0",
32
+ "P0",
33
+ "RHO0",
34
+ "G0",
35
+ "R",
36
+ "GAMMA",
37
+ ]