nrl-tracker 0.21.5__py3-none-any.whl → 0.22.0__py3-none-any.whl

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 (138) hide show
  1. {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.0.dist-info}/METADATA +2 -2
  2. nrl_tracker-0.22.0.dist-info/RECORD +150 -0
  3. pytcl/__init__.py +9 -11
  4. pytcl/assignment_algorithms/__init__.py +32 -42
  5. pytcl/assignment_algorithms/data_association.py +9 -10
  6. pytcl/assignment_algorithms/gating.py +7 -5
  7. pytcl/assignment_algorithms/jpda.py +10 -14
  8. pytcl/assignment_algorithms/three_dimensional/__init__.py +6 -8
  9. pytcl/assignment_algorithms/three_dimensional/assignment.py +6 -2
  10. pytcl/assignment_algorithms/two_dimensional/__init__.py +9 -13
  11. pytcl/assignment_algorithms/two_dimensional/assignment.py +5 -2
  12. pytcl/assignment_algorithms/two_dimensional/kbest.py +9 -9
  13. pytcl/astronomical/__init__.py +130 -89
  14. pytcl/astronomical/ephemerides.py +524 -0
  15. pytcl/astronomical/lambert.py +6 -15
  16. pytcl/astronomical/orbital_mechanics.py +1 -3
  17. pytcl/astronomical/reference_frames.py +1 -3
  18. pytcl/astronomical/relativity.py +466 -0
  19. pytcl/astronomical/time_systems.py +2 -1
  20. pytcl/atmosphere/__init__.py +12 -14
  21. pytcl/atmosphere/models.py +5 -5
  22. pytcl/clustering/__init__.py +28 -36
  23. pytcl/clustering/dbscan.py +5 -2
  24. pytcl/clustering/gaussian_mixture.py +10 -10
  25. pytcl/clustering/hierarchical.py +7 -7
  26. pytcl/clustering/kmeans.py +7 -5
  27. pytcl/containers/__init__.py +29 -43
  28. pytcl/containers/cluster_set.py +13 -20
  29. pytcl/containers/covertree.py +8 -2
  30. pytcl/containers/kd_tree.py +6 -2
  31. pytcl/containers/measurement_set.py +11 -16
  32. pytcl/containers/rtree.py +8 -7
  33. pytcl/containers/track_list.py +13 -13
  34. pytcl/containers/vptree.py +7 -2
  35. pytcl/coordinate_systems/__init__.py +69 -74
  36. pytcl/coordinate_systems/conversions/__init__.py +20 -24
  37. pytcl/coordinate_systems/conversions/geodetic.py +7 -17
  38. pytcl/coordinate_systems/conversions/spherical.py +4 -2
  39. pytcl/coordinate_systems/jacobians/__init__.py +10 -12
  40. pytcl/coordinate_systems/jacobians/jacobians.py +2 -1
  41. pytcl/coordinate_systems/projections/__init__.py +27 -23
  42. pytcl/coordinate_systems/projections/projections.py +14 -39
  43. pytcl/coordinate_systems/rotations/__init__.py +20 -22
  44. pytcl/coordinate_systems/rotations/rotations.py +3 -4
  45. pytcl/core/__init__.py +16 -22
  46. pytcl/core/array_utils.py +7 -7
  47. pytcl/core/constants.py +1 -3
  48. pytcl/core/validation.py +13 -19
  49. pytcl/dynamic_estimation/__init__.py +77 -86
  50. pytcl/dynamic_estimation/imm.py +10 -15
  51. pytcl/dynamic_estimation/information_filter.py +8 -6
  52. pytcl/dynamic_estimation/kalman/__init__.py +40 -48
  53. pytcl/dynamic_estimation/kalman/extended.py +4 -5
  54. pytcl/dynamic_estimation/kalman/linear.py +7 -3
  55. pytcl/dynamic_estimation/kalman/square_root.py +7 -8
  56. pytcl/dynamic_estimation/kalman/unscented.py +8 -6
  57. pytcl/dynamic_estimation/particle_filters/__init__.py +12 -14
  58. pytcl/dynamic_estimation/particle_filters/bootstrap.py +8 -8
  59. pytcl/dynamic_estimation/smoothers.py +9 -10
  60. pytcl/dynamic_models/__init__.py +37 -41
  61. pytcl/dynamic_models/continuous_time/__init__.py +11 -11
  62. pytcl/dynamic_models/continuous_time/dynamics.py +4 -2
  63. pytcl/dynamic_models/discrete_time/__init__.py +11 -17
  64. pytcl/dynamic_models/process_noise/__init__.py +11 -17
  65. pytcl/dynamic_models/process_noise/polynomial.py +2 -6
  66. pytcl/gravity/__init__.py +55 -65
  67. pytcl/gravity/clenshaw.py +4 -7
  68. pytcl/gravity/egm.py +9 -6
  69. pytcl/gravity/models.py +1 -3
  70. pytcl/gravity/spherical_harmonics.py +6 -11
  71. pytcl/gravity/tides.py +9 -17
  72. pytcl/magnetism/__init__.py +26 -36
  73. pytcl/magnetism/emm.py +7 -13
  74. pytcl/magnetism/igrf.py +5 -6
  75. pytcl/magnetism/wmm.py +4 -10
  76. pytcl/mathematical_functions/__init__.py +69 -87
  77. pytcl/mathematical_functions/basic_matrix/__init__.py +25 -19
  78. pytcl/mathematical_functions/basic_matrix/decompositions.py +6 -5
  79. pytcl/mathematical_functions/basic_matrix/special_matrices.py +2 -1
  80. pytcl/mathematical_functions/combinatorics/__init__.py +18 -14
  81. pytcl/mathematical_functions/combinatorics/combinatorics.py +5 -4
  82. pytcl/mathematical_functions/geometry/__init__.py +15 -15
  83. pytcl/mathematical_functions/geometry/geometry.py +10 -15
  84. pytcl/mathematical_functions/interpolation/__init__.py +11 -13
  85. pytcl/mathematical_functions/interpolation/interpolation.py +8 -5
  86. pytcl/mathematical_functions/numerical_integration/__init__.py +16 -10
  87. pytcl/mathematical_functions/numerical_integration/quadrature.py +6 -2
  88. pytcl/mathematical_functions/signal_processing/__init__.py +42 -30
  89. pytcl/mathematical_functions/signal_processing/detection.py +9 -9
  90. pytcl/mathematical_functions/signal_processing/filters.py +7 -8
  91. pytcl/mathematical_functions/signal_processing/matched_filter.py +8 -7
  92. pytcl/mathematical_functions/special_functions/__init__.py +75 -77
  93. pytcl/mathematical_functions/special_functions/bessel.py +2 -1
  94. pytcl/mathematical_functions/special_functions/debye.py +4 -2
  95. pytcl/mathematical_functions/special_functions/elliptic.py +3 -4
  96. pytcl/mathematical_functions/special_functions/error_functions.py +2 -1
  97. pytcl/mathematical_functions/special_functions/gamma_functions.py +3 -4
  98. pytcl/mathematical_functions/special_functions/hypergeometric.py +2 -1
  99. pytcl/mathematical_functions/special_functions/lambert_w.py +3 -4
  100. pytcl/mathematical_functions/special_functions/marcum_q.py +2 -1
  101. pytcl/mathematical_functions/statistics/__init__.py +27 -31
  102. pytcl/mathematical_functions/statistics/distributions.py +21 -40
  103. pytcl/mathematical_functions/statistics/estimators.py +3 -4
  104. pytcl/mathematical_functions/transforms/__init__.py +45 -51
  105. pytcl/mathematical_functions/transforms/fourier.py +5 -2
  106. pytcl/mathematical_functions/transforms/stft.py +8 -11
  107. pytcl/mathematical_functions/transforms/wavelets.py +13 -20
  108. pytcl/navigation/__init__.py +96 -102
  109. pytcl/navigation/geodesy.py +13 -33
  110. pytcl/navigation/great_circle.py +7 -13
  111. pytcl/navigation/ins.py +12 -16
  112. pytcl/navigation/ins_gnss.py +24 -37
  113. pytcl/navigation/rhumb.py +7 -12
  114. pytcl/performance_evaluation/__init__.py +21 -25
  115. pytcl/performance_evaluation/estimation_metrics.py +3 -1
  116. pytcl/performance_evaluation/track_metrics.py +4 -4
  117. pytcl/plotting/__init__.py +30 -38
  118. pytcl/plotting/coordinates.py +8 -18
  119. pytcl/plotting/ellipses.py +5 -2
  120. pytcl/plotting/metrics.py +5 -10
  121. pytcl/plotting/tracks.py +7 -12
  122. pytcl/static_estimation/__init__.py +37 -41
  123. pytcl/static_estimation/least_squares.py +5 -4
  124. pytcl/static_estimation/maximum_likelihood.py +8 -5
  125. pytcl/static_estimation/robust.py +5 -2
  126. pytcl/terrain/__init__.py +28 -34
  127. pytcl/terrain/dem.py +6 -9
  128. pytcl/terrain/loaders.py +9 -14
  129. pytcl/terrain/visibility.py +4 -8
  130. pytcl/trackers/__init__.py +17 -25
  131. pytcl/trackers/hypothesis.py +8 -8
  132. pytcl/trackers/mht.py +18 -24
  133. pytcl/trackers/multi_target.py +8 -6
  134. pytcl/trackers/single_target.py +5 -2
  135. nrl_tracker-0.21.5.dist-info/RECORD +0 -148
  136. {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.0.dist-info}/LICENSE +0 -0
  137. {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.0.dist-info}/WHEEL +0 -0
  138. {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.0.dist-info}/top_level.txt +0 -0
@@ -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,100 +19,120 @@ 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
 
23
- from pytcl.astronomical.lambert import (
24
- LambertSolution,
25
- bi_elliptic_transfer,
26
- hohmann_transfer,
27
- lambert_izzo,
28
- lambert_universal,
29
- minimum_energy_transfer,
28
+ from pytcl.astronomical.ephemerides import DEEphemeris
29
+ from pytcl.astronomical.ephemerides import barycenter_position
30
+ from pytcl.astronomical.ephemerides import moon_position
31
+ from pytcl.astronomical.ephemerides import planet_position
32
+ from pytcl.astronomical.ephemerides import sun_position
33
+ from pytcl.astronomical.lambert import LambertSolution
34
+ from pytcl.astronomical.lambert import bi_elliptic_transfer
35
+ from pytcl.astronomical.lambert import hohmann_transfer
36
+ from pytcl.astronomical.lambert import lambert_izzo
37
+ from pytcl.astronomical.lambert import lambert_universal
38
+ from pytcl.astronomical.lambert import minimum_energy_transfer
39
+ from pytcl.astronomical.orbital_mechanics import (
40
+ GM_EARTH, # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
30
41
  )
31
- from pytcl.astronomical.orbital_mechanics import ( # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
32
- GM_EARTH,
33
- GM_JUPITER,
34
- GM_MARS,
35
- GM_MOON,
36
- GM_SUN,
37
- OrbitalElements,
38
- StateVector,
39
- apoapsis_radius,
40
- circular_velocity,
41
- eccentric_to_mean_anomaly,
42
- eccentric_to_true_anomaly,
43
- escape_velocity,
44
- flight_path_angle,
45
- hyperbolic_to_true_anomaly,
46
- kepler_propagate,
47
- kepler_propagate_state,
48
- mean_motion,
49
- mean_to_eccentric_anomaly,
50
- mean_to_hyperbolic_anomaly,
51
- mean_to_true_anomaly,
52
- orbit_radius,
53
- orbital_elements_to_state,
54
- orbital_period,
55
- periapsis_radius,
56
- specific_angular_momentum,
57
- specific_orbital_energy,
58
- state_to_orbital_elements,
59
- time_since_periapsis,
60
- true_to_eccentric_anomaly,
61
- true_to_hyperbolic_anomaly,
62
- true_to_mean_anomaly,
63
- vis_viva,
42
+ from pytcl.astronomical.orbital_mechanics import GM_JUPITER
43
+ from pytcl.astronomical.orbital_mechanics import GM_MARS
44
+ from pytcl.astronomical.orbital_mechanics import GM_MOON
45
+ from pytcl.astronomical.orbital_mechanics import GM_SUN
46
+ from pytcl.astronomical.orbital_mechanics import OrbitalElements
47
+ from pytcl.astronomical.orbital_mechanics import StateVector
48
+ from pytcl.astronomical.orbital_mechanics import apoapsis_radius
49
+ from pytcl.astronomical.orbital_mechanics import circular_velocity
50
+ from pytcl.astronomical.orbital_mechanics import eccentric_to_mean_anomaly
51
+ from pytcl.astronomical.orbital_mechanics import eccentric_to_true_anomaly
52
+ from pytcl.astronomical.orbital_mechanics import escape_velocity
53
+ from pytcl.astronomical.orbital_mechanics import flight_path_angle
54
+ from pytcl.astronomical.orbital_mechanics import hyperbolic_to_true_anomaly
55
+ from pytcl.astronomical.orbital_mechanics import kepler_propagate
56
+ from pytcl.astronomical.orbital_mechanics import kepler_propagate_state
57
+ from pytcl.astronomical.orbital_mechanics import mean_motion
58
+ from pytcl.astronomical.orbital_mechanics import mean_to_eccentric_anomaly
59
+ from pytcl.astronomical.orbital_mechanics import mean_to_hyperbolic_anomaly
60
+ from pytcl.astronomical.orbital_mechanics import mean_to_true_anomaly
61
+ from pytcl.astronomical.orbital_mechanics import orbit_radius
62
+ from pytcl.astronomical.orbital_mechanics import orbital_elements_to_state
63
+ from pytcl.astronomical.orbital_mechanics import orbital_period
64
+ from pytcl.astronomical.orbital_mechanics import periapsis_radius
65
+ from pytcl.astronomical.orbital_mechanics import specific_angular_momentum
66
+ from pytcl.astronomical.orbital_mechanics import specific_orbital_energy
67
+ from pytcl.astronomical.orbital_mechanics import state_to_orbital_elements
68
+ from pytcl.astronomical.orbital_mechanics import time_since_periapsis
69
+ from pytcl.astronomical.orbital_mechanics import true_to_eccentric_anomaly
70
+ from pytcl.astronomical.orbital_mechanics import true_to_hyperbolic_anomaly
71
+ from pytcl.astronomical.orbital_mechanics import true_to_mean_anomaly
72
+ from pytcl.astronomical.orbital_mechanics import vis_viva
73
+ from pytcl.astronomical.reference_frames import (
74
+ earth_rotation_angle, # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
64
75
  )
65
- from pytcl.astronomical.reference_frames import ( # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
66
- earth_rotation_angle,
67
- ecef_to_eci,
68
- eci_to_ecef,
69
- ecliptic_to_equatorial,
70
- equation_of_equinoxes,
71
- equatorial_to_ecliptic,
72
- gast_iau82,
73
- gcrf_to_itrf,
74
- gmst_iau82,
75
- itrf_to_gcrf,
76
- julian_centuries_j2000,
77
- mean_obliquity_iau80,
78
- nutation_angles_iau80,
79
- nutation_matrix,
80
- polar_motion_matrix,
81
- precession_angles_iau76,
82
- precession_matrix_iau76,
83
- sidereal_rotation_matrix,
84
- true_obliquity,
76
+ from pytcl.astronomical.reference_frames import ecef_to_eci
77
+ from pytcl.astronomical.reference_frames import eci_to_ecef
78
+ from pytcl.astronomical.reference_frames import ecliptic_to_equatorial
79
+ from pytcl.astronomical.reference_frames import equation_of_equinoxes
80
+ from pytcl.astronomical.reference_frames import equatorial_to_ecliptic
81
+ from pytcl.astronomical.reference_frames import gast_iau82
82
+ from pytcl.astronomical.reference_frames import gcrf_to_itrf
83
+ from pytcl.astronomical.reference_frames import gmst_iau82
84
+ from pytcl.astronomical.reference_frames import itrf_to_gcrf
85
+ from pytcl.astronomical.reference_frames import julian_centuries_j2000
86
+ from pytcl.astronomical.reference_frames import mean_obliquity_iau80
87
+ from pytcl.astronomical.reference_frames import nutation_angles_iau80
88
+ from pytcl.astronomical.reference_frames import nutation_matrix
89
+ from pytcl.astronomical.reference_frames import polar_motion_matrix
90
+ from pytcl.astronomical.reference_frames import precession_angles_iau76
91
+ from pytcl.astronomical.reference_frames import precession_matrix_iau76
92
+ from pytcl.astronomical.reference_frames import sidereal_rotation_matrix
93
+ from pytcl.astronomical.reference_frames import true_obliquity
94
+ from pytcl.astronomical.relativity import (
95
+ C_LIGHT, # Physical constants; Schwarzschild metric; Time dilation; Shapiro delay; Precession; PN effects; Range corrections
85
96
  )
86
- from pytcl.astronomical.time_systems import ( # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
87
- JD_GPS_EPOCH,
88
- JD_J2000,
89
- JD_UNIX_EPOCH,
90
- MJD_OFFSET,
91
- TT_TAI_OFFSET,
92
- LeapSecondTable,
93
- cal_to_jd,
94
- gast,
95
- get_leap_seconds,
96
- gmst,
97
- gps_to_tai,
98
- gps_to_utc,
99
- gps_week_seconds,
100
- gps_week_to_utc,
101
- jd_to_cal,
102
- jd_to_mjd,
103
- jd_to_unix,
104
- mjd_to_jd,
105
- tai_to_gps,
106
- tai_to_tt,
107
- tai_to_utc,
108
- tt_to_tai,
109
- tt_to_utc,
110
- unix_to_jd,
111
- utc_to_gps,
112
- utc_to_tai,
113
- utc_to_tt,
97
+ from pytcl.astronomical.relativity import G_GRAV
98
+ from pytcl.astronomical.relativity import geodetic_precession
99
+ from pytcl.astronomical.relativity import gravitational_time_dilation
100
+ from pytcl.astronomical.relativity import lense_thirring_precession
101
+ from pytcl.astronomical.relativity import post_newtonian_acceleration
102
+ from pytcl.astronomical.relativity import proper_time_rate
103
+ from pytcl.astronomical.relativity import relativistic_range_correction
104
+ from pytcl.astronomical.relativity import schwarzschild_precession_per_orbit
105
+ from pytcl.astronomical.relativity import schwarzschild_radius
106
+ from pytcl.astronomical.relativity import shapiro_delay
107
+ from pytcl.astronomical.time_systems import (
108
+ JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
114
109
  )
110
+ from pytcl.astronomical.time_systems import JD_J2000
111
+ from pytcl.astronomical.time_systems import JD_UNIX_EPOCH
112
+ from pytcl.astronomical.time_systems import MJD_OFFSET
113
+ from pytcl.astronomical.time_systems import TT_TAI_OFFSET
114
+ from pytcl.astronomical.time_systems import LeapSecondTable
115
+ from pytcl.astronomical.time_systems import cal_to_jd
116
+ from pytcl.astronomical.time_systems import gast
117
+ from pytcl.astronomical.time_systems import get_leap_seconds
118
+ from pytcl.astronomical.time_systems import gmst
119
+ from pytcl.astronomical.time_systems import gps_to_tai
120
+ from pytcl.astronomical.time_systems import gps_to_utc
121
+ from pytcl.astronomical.time_systems import gps_week_seconds
122
+ from pytcl.astronomical.time_systems import gps_week_to_utc
123
+ from pytcl.astronomical.time_systems import jd_to_cal
124
+ from pytcl.astronomical.time_systems import jd_to_mjd
125
+ from pytcl.astronomical.time_systems import jd_to_unix
126
+ from pytcl.astronomical.time_systems import mjd_to_jd
127
+ from pytcl.astronomical.time_systems import tai_to_gps
128
+ from pytcl.astronomical.time_systems import tai_to_tt
129
+ from pytcl.astronomical.time_systems import tai_to_utc
130
+ from pytcl.astronomical.time_systems import tt_to_tai
131
+ from pytcl.astronomical.time_systems import tt_to_utc
132
+ from pytcl.astronomical.time_systems import unix_to_jd
133
+ from pytcl.astronomical.time_systems import utc_to_gps
134
+ from pytcl.astronomical.time_systems import utc_to_tai
135
+ from pytcl.astronomical.time_systems import utc_to_tt
115
136
 
116
137
  __all__ = [
117
138
  # Time systems - Julian dates
@@ -218,4 +239,24 @@ __all__ = [
218
239
  # Reference frames - Ecliptic/equatorial
219
240
  "ecliptic_to_equatorial",
220
241
  "equatorial_to_ecliptic",
242
+ # Ephemerides - Classes
243
+ "DEEphemeris",
244
+ # Ephemerides - Functions
245
+ "sun_position",
246
+ "moon_position",
247
+ "planet_position",
248
+ "barycenter_position",
249
+ # Relativity - Constants
250
+ "C_LIGHT",
251
+ "G_GRAV",
252
+ # Relativity - Functions
253
+ "schwarzschild_radius",
254
+ "gravitational_time_dilation",
255
+ "proper_time_rate",
256
+ "shapiro_delay",
257
+ "schwarzschild_precession_per_orbit",
258
+ "post_newtonian_acceleration",
259
+ "geodetic_precession",
260
+ "lense_thirring_precession",
261
+ "relativistic_range_correction",
221
262
  ]