nrl-tracker 0.21.5__py3-none-any.whl → 0.22.1__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.
- {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.1.dist-info}/METADATA +2 -2
- {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.1.dist-info}/RECORD +84 -82
- pytcl/__init__.py +1 -1
- pytcl/assignment_algorithms/data_association.py +2 -7
- pytcl/assignment_algorithms/gating.py +3 -3
- pytcl/assignment_algorithms/jpda.py +4 -12
- pytcl/assignment_algorithms/two_dimensional/kbest.py +1 -3
- pytcl/astronomical/__init__.py +60 -7
- pytcl/astronomical/ephemerides.py +522 -0
- pytcl/astronomical/lambert.py +4 -14
- pytcl/astronomical/orbital_mechanics.py +1 -3
- pytcl/astronomical/reference_frames.py +1 -3
- pytcl/astronomical/relativity.py +466 -0
- pytcl/atmosphere/__init__.py +2 -2
- pytcl/atmosphere/models.py +1 -3
- pytcl/clustering/gaussian_mixture.py +4 -8
- pytcl/clustering/hierarchical.py +1 -5
- pytcl/clustering/kmeans.py +1 -3
- pytcl/containers/__init__.py +4 -21
- pytcl/containers/cluster_set.py +4 -19
- pytcl/containers/measurement_set.py +3 -15
- pytcl/containers/rtree.py +2 -5
- pytcl/coordinate_systems/conversions/geodetic.py +3 -15
- pytcl/coordinate_systems/projections/__init__.py +4 -2
- pytcl/coordinate_systems/projections/projections.py +11 -38
- pytcl/coordinate_systems/rotations/rotations.py +1 -3
- pytcl/core/array_utils.py +1 -4
- pytcl/core/constants.py +1 -3
- pytcl/core/validation.py +6 -17
- pytcl/dynamic_estimation/imm.py +4 -13
- pytcl/dynamic_estimation/kalman/extended.py +1 -4
- pytcl/dynamic_estimation/kalman/square_root.py +2 -6
- pytcl/dynamic_estimation/kalman/unscented.py +1 -4
- pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
- pytcl/dynamic_estimation/smoothers.py +2 -8
- pytcl/dynamic_models/discrete_time/__init__.py +1 -5
- pytcl/dynamic_models/process_noise/__init__.py +1 -5
- pytcl/dynamic_models/process_noise/polynomial.py +2 -6
- pytcl/gravity/clenshaw.py +2 -6
- pytcl/gravity/egm.py +1 -3
- pytcl/gravity/models.py +1 -3
- pytcl/gravity/spherical_harmonics.py +4 -10
- pytcl/gravity/tides.py +7 -16
- pytcl/magnetism/__init__.py +3 -14
- pytcl/magnetism/emm.py +3 -12
- pytcl/magnetism/wmm.py +2 -9
- pytcl/mathematical_functions/basic_matrix/decompositions.py +1 -3
- pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -3
- pytcl/mathematical_functions/geometry/geometry.py +4 -12
- pytcl/mathematical_functions/interpolation/__init__.py +2 -2
- pytcl/mathematical_functions/interpolation/interpolation.py +1 -3
- pytcl/mathematical_functions/signal_processing/detection.py +3 -6
- pytcl/mathematical_functions/signal_processing/filters.py +2 -6
- pytcl/mathematical_functions/signal_processing/matched_filter.py +2 -4
- pytcl/mathematical_functions/special_functions/__init__.py +2 -2
- pytcl/mathematical_functions/special_functions/elliptic.py +1 -3
- pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -3
- pytcl/mathematical_functions/special_functions/lambert_w.py +1 -3
- pytcl/mathematical_functions/statistics/distributions.py +12 -36
- pytcl/mathematical_functions/statistics/estimators.py +1 -3
- pytcl/mathematical_functions/transforms/stft.py +3 -9
- pytcl/mathematical_functions/transforms/wavelets.py +6 -18
- pytcl/navigation/__init__.py +14 -10
- pytcl/navigation/geodesy.py +9 -31
- pytcl/navigation/great_circle.py +4 -12
- pytcl/navigation/ins.py +3 -13
- pytcl/navigation/ins_gnss.py +7 -25
- pytcl/navigation/rhumb.py +3 -10
- pytcl/performance_evaluation/track_metrics.py +1 -3
- pytcl/plotting/coordinates.py +5 -17
- pytcl/plotting/metrics.py +3 -9
- pytcl/plotting/tracks.py +3 -11
- pytcl/static_estimation/least_squares.py +1 -2
- pytcl/static_estimation/maximum_likelihood.py +3 -3
- pytcl/terrain/dem.py +2 -8
- pytcl/terrain/loaders.py +5 -13
- pytcl/terrain/visibility.py +2 -7
- pytcl/trackers/__init__.py +3 -14
- pytcl/trackers/hypothesis.py +2 -7
- pytcl/trackers/mht.py +5 -15
- pytcl/trackers/multi_target.py +1 -4
- {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.1.dist-info}/LICENSE +0 -0
- {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.1.dist-info}/WHEEL +0 -0
- {nrl_tracker-0.21.5.dist-info → nrl_tracker-0.22.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 0.
|
|
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: plotly>=5.15.0; extra == "visualization"
|
|
|
60
60
|
|
|
61
61
|
# Tracker Component Library (Python)
|
|
62
62
|
|
|
63
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
64
64
|
[](https://www.python.org/downloads/)
|
|
65
65
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
66
66
|
[](https://github.com/psf/black)
|
|
@@ -1,148 +1,150 @@
|
|
|
1
|
-
pytcl/__init__.py,sha256=
|
|
1
|
+
pytcl/__init__.py,sha256=pMvIZSoR3GxNdW8Fxmfpf-WB5CbuxJe3HCBW6U7fNRc,1894
|
|
2
2
|
pytcl/assignment_algorithms/__init__.py,sha256=f9V-TkEVmiKYYyth4PTpDfJvA7yYV_ys6Zix-QwWIYY,2136
|
|
3
|
-
pytcl/assignment_algorithms/data_association.py,sha256=
|
|
4
|
-
pytcl/assignment_algorithms/gating.py,sha256=
|
|
5
|
-
pytcl/assignment_algorithms/jpda.py,sha256
|
|
3
|
+
pytcl/assignment_algorithms/data_association.py,sha256=tsRxWJZk9aAPmE99BKXGouEpFfZrjPjb4HXvgxFUHhU,11405
|
|
4
|
+
pytcl/assignment_algorithms/gating.py,sha256=wm4NO7hR7YPgaovX6eiJ2kHmXORHIpFqYGC0sTis_DU,10815
|
|
5
|
+
pytcl/assignment_algorithms/jpda.py,sha256=-hQNxCGYE5SmhVw0JAX81SFqB0ljO3RYdutmpkV00m4,19492
|
|
6
6
|
pytcl/assignment_algorithms/three_dimensional/__init__.py,sha256=1Q40OUlUQoo7YKEucwdrSNo3D4A0Zibvkr8z4TpueBg,526
|
|
7
7
|
pytcl/assignment_algorithms/three_dimensional/assignment.py,sha256=9BJhwlYu3JJ0kZ9sRyKKfpdvQdL4WYYHCtLbvaWycBw,19212
|
|
8
8
|
pytcl/assignment_algorithms/two_dimensional/__init__.py,sha256=4Evsn__9hTfI2i8m8Ngl-Zy0Fa2OydKmDKlZlH6jaao,778
|
|
9
9
|
pytcl/assignment_algorithms/two_dimensional/assignment.py,sha256=eh87MBb-uiUSI1MXj4HrreRKB6Z8rxAyDkNQ8-u4SbM,11848
|
|
10
|
-
pytcl/assignment_algorithms/two_dimensional/kbest.py,sha256=
|
|
11
|
-
pytcl/astronomical/__init__.py,sha256=
|
|
12
|
-
pytcl/astronomical/
|
|
13
|
-
pytcl/astronomical/
|
|
14
|
-
pytcl/astronomical/
|
|
10
|
+
pytcl/assignment_algorithms/two_dimensional/kbest.py,sha256=iDtLbKr0eh6Gd5wuyKrjBm2Qr3DeH2OOxtzf9eSR76E,17262
|
|
11
|
+
pytcl/astronomical/__init__.py,sha256=Dtf6hqXyKyFL5VP-sqI7m2QGK6l-rqRGxVIhgDuYHOg,7182
|
|
12
|
+
pytcl/astronomical/ephemerides.py,sha256=RU5Mk3tj10LoL1eOY3XiGsKwuPzHJdypORf3jU6eMZk,16397
|
|
13
|
+
pytcl/astronomical/lambert.py,sha256=iMxqG7cFdfcN5AOI-9FF6t1Qgj_443_c0BwAwlaPqm8,15493
|
|
14
|
+
pytcl/astronomical/orbital_mechanics.py,sha256=f3Vqn2bWzxbMQO60SlHXf3515j3LSA2fd_MHZE5z5h0,19951
|
|
15
|
+
pytcl/astronomical/reference_frames.py,sha256=R_bdfXYYoeNjgYU1deIynB0IBjpy4xc9Tlq8Q4W9FKc,15783
|
|
16
|
+
pytcl/astronomical/relativity.py,sha256=cqMR0oZJXNXYiEwnC8QrABkAAcu4c8MLoX74iNpZwfM,15418
|
|
15
17
|
pytcl/astronomical/time_systems.py,sha256=Jg0Zaq60hc4Ts1aQtb5bK4KSZhz-uQse8gYC89Y0-TA,15243
|
|
16
|
-
pytcl/atmosphere/__init__.py,sha256=
|
|
17
|
-
pytcl/atmosphere/models.py,sha256=
|
|
18
|
+
pytcl/atmosphere/__init__.py,sha256=TTVz4hAM48Xd3jr6GKrR2GAABpx2z0aWvtzb9uIQiHk,737
|
|
19
|
+
pytcl/atmosphere/models.py,sha256=hOfUjM4jNLLfkzd_9J_utR04tkwyBT8KsyjVMrVQJ6k,9570
|
|
18
20
|
pytcl/clustering/__init__.py,sha256=bYdhC_XJEt6KUUni9bIPxaddXNEGmIJQvGkA14rK4J8,1697
|
|
19
21
|
pytcl/clustering/dbscan.py,sha256=PS6QlOwHFerbZNEb3zcNhN4oNQpgOOw5y0WskQzyKIo,7364
|
|
20
|
-
pytcl/clustering/gaussian_mixture.py,sha256=
|
|
21
|
-
pytcl/clustering/hierarchical.py,sha256
|
|
22
|
-
pytcl/clustering/kmeans.py,sha256=
|
|
23
|
-
pytcl/containers/__init__.py,sha256
|
|
24
|
-
pytcl/containers/cluster_set.py,sha256=
|
|
22
|
+
pytcl/clustering/gaussian_mixture.py,sha256=5ucepT-vNcs1cOimykOWGkhO1Q-UgfRbUJ19H585Qa0,22813
|
|
23
|
+
pytcl/clustering/hierarchical.py,sha256=-ZEEDSJ4RBMyXOgHD7CZJmIHS8DbS80pagoko9asBIo,14156
|
|
24
|
+
pytcl/clustering/kmeans.py,sha256=84n4v04m7PiRehdj3n0mPisou1eM6Z9-p8ztbDTyoWQ,10683
|
|
25
|
+
pytcl/containers/__init__.py,sha256=-hnqSMKlMugj2RRssx3p_48HWnfqLSrF6BCChsinCOg,1627
|
|
26
|
+
pytcl/containers/cluster_set.py,sha256=t-n5Fn7KnIMyeIA_xmYS-LisKvzG0e1SCyVLZIuKnIY,22657
|
|
25
27
|
pytcl/containers/covertree.py,sha256=1JWqXxoUFLxuMnjwj2qf0iz2uPzdujQYdwJW3l5qsOs,13282
|
|
26
28
|
pytcl/containers/kd_tree.py,sha256=pxRC62RYkqz9zXPz6c1fubmtPPBDLYA5I9AXMAoGanw,16348
|
|
27
|
-
pytcl/containers/measurement_set.py,sha256=
|
|
28
|
-
pytcl/containers/rtree.py,sha256=
|
|
29
|
+
pytcl/containers/measurement_set.py,sha256=EqijbnQZzF3fwNT9An7KVXJTvT4m_kjQDnQeEkxlLwM,12618
|
|
30
|
+
pytcl/containers/rtree.py,sha256=5jPy8NxZnmmpTgyRScwwj4L7U5Vq4NfChKotdzVcW6w,15400
|
|
29
31
|
pytcl/containers/track_list.py,sha256=6q9Qgcwm-8H_JqtOCsMssF27av4XaSkhfDl-MWb1ABc,12520
|
|
30
32
|
pytcl/containers/vptree.py,sha256=6fBNHrezkmj7L2nH0-2bONRN92f5cZAhS-5vaI1JZnA,8814
|
|
31
33
|
pytcl/coordinate_systems/__init__.py,sha256=jwYhu_-9AvOeP9WLG9PYtyDwfe0GjxNZ9-xCqiLymW4,3909
|
|
32
34
|
pytcl/coordinate_systems/conversions/__init__.py,sha256=PkNevB78vBw0BkalydJBbQO91AyiMJxKRrgJNt4HsYc,1100
|
|
33
|
-
pytcl/coordinate_systems/conversions/geodetic.py,sha256=
|
|
35
|
+
pytcl/coordinate_systems/conversions/geodetic.py,sha256=HrSacirnucwrviDjX5KuqxyFlFqgnGpFWFux2XBhdBM,15635
|
|
34
36
|
pytcl/coordinate_systems/conversions/spherical.py,sha256=q7k9l5mJbVzVdNj9Gcq4ibFxax8z_mVpJfITRBzx630,10812
|
|
35
37
|
pytcl/coordinate_systems/jacobians/__init__.py,sha256=CRGB8GzvGT_sr4Ynm51S7gSX8grqt1pO1Pq1MWmHPTs,890
|
|
36
38
|
pytcl/coordinate_systems/jacobians/jacobians.py,sha256=1KufIoktm9mXLO34X9KjysdMpu7itGwfssRyAdkTTN8,11703
|
|
37
|
-
pytcl/coordinate_systems/projections/__init__.py,sha256
|
|
38
|
-
pytcl/coordinate_systems/projections/projections.py,sha256=
|
|
39
|
+
pytcl/coordinate_systems/projections/__init__.py,sha256=eWNtezPO62IUWxv7jymenIXsWS1MC66Q12u5KRUnqNE,2503
|
|
40
|
+
pytcl/coordinate_systems/projections/projections.py,sha256=cqYd0zb_6DZFQfGQ8IAzBoAhKpbkxw_1MLt5JiT8TEI,32877
|
|
39
41
|
pytcl/coordinate_systems/rotations/__init__.py,sha256=nqAz4iJd2hEOX_r7Tz4cE524sShyxdbtcQ5m56RrDLg,1047
|
|
40
|
-
pytcl/coordinate_systems/rotations/rotations.py,sha256=
|
|
42
|
+
pytcl/coordinate_systems/rotations/rotations.py,sha256=i5OtHxCLwq9k4gBIMb_n8HWq5EfMyyq3znlTenKjus0,18213
|
|
41
43
|
pytcl/core/__init__.py,sha256=H5JJPS-43DfF1UG7fSgV-VMTcZFBO8GuzDW1lM_1sm4,1152
|
|
42
|
-
pytcl/core/array_utils.py,sha256=
|
|
43
|
-
pytcl/core/constants.py,sha256=
|
|
44
|
-
pytcl/core/validation.py,sha256=
|
|
44
|
+
pytcl/core/array_utils.py,sha256=kLZII_6Yk2C4Gin6i_PFiklkJ_P_OyHDhVG7EN2iTLg,13971
|
|
45
|
+
pytcl/core/constants.py,sha256=v--FHNYH441t2tfZeNpPbTxZDqiyql6ehA9Z3iTsnxw,8687
|
|
46
|
+
pytcl/core/validation.py,sha256=9O7rs8bZP9gFT98AD8S-chPcx5uZOh7b_KTBeDGNzFg,12931
|
|
45
47
|
pytcl/dynamic_estimation/__init__.py,sha256=jA5FF6kHYklY5LMOfZaKcCeiPTpVe8vHIMp3ECDOmsc,4582
|
|
46
|
-
pytcl/dynamic_estimation/imm.py,sha256=
|
|
48
|
+
pytcl/dynamic_estimation/imm.py,sha256=6Skq7HOABQ9XCTM8lEHLqBp_OqDm7srl_hVuYCp4ZPw,22009
|
|
47
49
|
pytcl/dynamic_estimation/information_filter.py,sha256=x7iQwO_iJT1dCSvDws5LqD3yAtjw9QVGUfMPcXn1IA4,17349
|
|
48
|
-
pytcl/dynamic_estimation/smoothers.py,sha256=
|
|
50
|
+
pytcl/dynamic_estimation/smoothers.py,sha256=NlQ3aCLRGZE5O_pJn0at6xyK1TNf8-KlSYYZhSrnWIw,18900
|
|
49
51
|
pytcl/dynamic_estimation/batch_estimation/__init__.py,sha256=JQ0s76Enov5a7plA4EnUua4t-7etikQrwr5z4WIjUeo,46
|
|
50
52
|
pytcl/dynamic_estimation/kalman/__init__.py,sha256=yoFLj0n-NRkdZnRVL-BkHBlATk8pfZEVlsY3BhSYgKc,2387
|
|
51
|
-
pytcl/dynamic_estimation/kalman/extended.py,sha256=
|
|
53
|
+
pytcl/dynamic_estimation/kalman/extended.py,sha256=51uhCqkZmErCx6MBfMq8eIQW8bD7n34zCe4v4dxNiMQ,10384
|
|
52
54
|
pytcl/dynamic_estimation/kalman/linear.py,sha256=1Zgg9gZya0Vxs9im7sPUqLj0Luo463vS-RSa6GCReFI,12248
|
|
53
|
-
pytcl/dynamic_estimation/kalman/square_root.py,sha256=
|
|
54
|
-
pytcl/dynamic_estimation/kalman/unscented.py,sha256=
|
|
55
|
+
pytcl/dynamic_estimation/kalman/square_root.py,sha256=jUsyfX9JGRUWiSZMt1JfSiIbnM37FB5kID0yMNnDJ_k,26871
|
|
56
|
+
pytcl/dynamic_estimation/kalman/unscented.py,sha256=RDK6USkko9lj1K4-WYydh3_8GMZNng_PJVjfc-c_OwM,15427
|
|
55
57
|
pytcl/dynamic_estimation/measurement_update/__init__.py,sha256=8rlyJwVpxf0fZj-AFo1hlewvryZRhUzcy3F8uMe6I8c,48
|
|
56
58
|
pytcl/dynamic_estimation/particle_filters/__init__.py,sha256=-DRF5rVF2749suLlArmkTvVkqeMcV_mIx0eLeTj6wNU,906
|
|
57
|
-
pytcl/dynamic_estimation/particle_filters/bootstrap.py,sha256=
|
|
59
|
+
pytcl/dynamic_estimation/particle_filters/bootstrap.py,sha256=QdqQME3ye5qCjoyJEbGfzI9r80GT_NLSj1pldZnmziw,13343
|
|
58
60
|
pytcl/dynamic_models/__init__.py,sha256=Cd8MyyYuB8gMnepkPA-HSwTaKFPThnqoKOhdjVOsXWg,2783
|
|
59
61
|
pytcl/dynamic_models/continuous_time/__init__.py,sha256=dAkfEddLkfMvDalK9v2GRBvaZV1KgqYpFBLOnoiFClw,1023
|
|
60
62
|
pytcl/dynamic_models/continuous_time/dynamics.py,sha256=CDwqn-66eUwXA5xfIjaG6A4EDBqtOyQ3aWarJr9QH4g,12858
|
|
61
|
-
pytcl/dynamic_models/discrete_time/__init__.py,sha256=
|
|
63
|
+
pytcl/dynamic_models/discrete_time/__init__.py,sha256=1cdYeVIe-kgogiHzeCv1eYMctSimh8t1nIE6Z1N4im4,949
|
|
62
64
|
pytcl/dynamic_models/discrete_time/coordinated_turn.py,sha256=jrSGCKiAdXaFIJBLzRyAv0xxxpOHOBnAtDHyu7VYsm8,7206
|
|
63
65
|
pytcl/dynamic_models/discrete_time/polynomial.py,sha256=zv5V-AbuaXlIj36n-YkOEyC74jV2vczxpCW09P0kmi0,5529
|
|
64
66
|
pytcl/dynamic_models/discrete_time/singer.py,sha256=wZS3Nad-YyPZp8Mle8Sf5GgW0-t4TxMRcnbc42HtQnA,3861
|
|
65
|
-
pytcl/dynamic_models/process_noise/__init__.py,sha256=
|
|
67
|
+
pytcl/dynamic_models/process_noise/__init__.py,sha256=ZRYgV40qmBkPwU3yTbIMvxorr4nVz0_FEP2oCeVjXoM,933
|
|
66
68
|
pytcl/dynamic_models/process_noise/coordinated_turn.py,sha256=w7bHUImLPL5m3KYenfNgAnHPCRtAyYESbsFc6lQKXRg,4768
|
|
67
|
-
pytcl/dynamic_models/process_noise/polynomial.py,sha256=
|
|
69
|
+
pytcl/dynamic_models/process_noise/polynomial.py,sha256=Rb7LITSZ1kbOnd0Q8TWRdUR_4sl9RCqfcsf0OawJl9U,7574
|
|
68
70
|
pytcl/dynamic_models/process_noise/singer.py,sha256=lsJDT6xOvcS_qQKFtgHX0L7Ukpy4D7HgvPT8Q3I0ibU,3901
|
|
69
71
|
pytcl/gravity/__init__.py,sha256=5xNdQSrrkt7-1-JPOYqR38CqvNJ7qKlPyMK36DGm6-I,3693
|
|
70
|
-
pytcl/gravity/clenshaw.py,sha256=
|
|
71
|
-
pytcl/gravity/egm.py,sha256=
|
|
72
|
-
pytcl/gravity/models.py,sha256=
|
|
73
|
-
pytcl/gravity/spherical_harmonics.py,sha256=
|
|
74
|
-
pytcl/gravity/tides.py,sha256=
|
|
75
|
-
pytcl/magnetism/__init__.py,sha256=
|
|
76
|
-
pytcl/magnetism/emm.py,sha256=
|
|
72
|
+
pytcl/gravity/clenshaw.py,sha256=k201ZPG-sOgCnLFP3Phe-N45V9bUYgiAOUyxyJSrGQA,15320
|
|
73
|
+
pytcl/gravity/egm.py,sha256=uFRXsDAv_emZRs5dizbNTnyeW1cKiPag6iwISrbW57k,18061
|
|
74
|
+
pytcl/gravity/models.py,sha256=Vws1dZPt0lqXnF12Y1PZ-YUd3onXMHI8TLxSJrapxxw,11145
|
|
75
|
+
pytcl/gravity/spherical_harmonics.py,sha256=Q7I1w3gAcDM7rhdBO_4dG0Pnx9hiUQF-n65nsqWw5Ds,14588
|
|
76
|
+
pytcl/gravity/tides.py,sha256=RpDM5hyKe7S3sjwgxQpnVK4bYIL38Rsgo9EslZMuHSU,27663
|
|
77
|
+
pytcl/magnetism/__init__.py,sha256=hE2BvberFSmimYuuwCYJ0g7ByxJAdj844vZJNkEotws,2502
|
|
78
|
+
pytcl/magnetism/emm.py,sha256=NHTuHLwuMOp3Tw0RoizTa-F00WCZxT2BGYseTCisfFc,22130
|
|
77
79
|
pytcl/magnetism/igrf.py,sha256=3g0PsH8IdbwQQS28OR5XWD-g-QxvfUva7jOkKToxndQ,13384
|
|
78
|
-
pytcl/magnetism/wmm.py,sha256=
|
|
80
|
+
pytcl/magnetism/wmm.py,sha256=6LgYkis-PaNVmgRQvYyCkK-VZT_yzs4hSdCHymRLndM,15851
|
|
79
81
|
pytcl/mathematical_functions/__init__.py,sha256=zeJ1ffRRl83k2NHn3HTn-fgtFoWNPq6LCALc3xRo4Do,3767
|
|
80
82
|
pytcl/mathematical_functions/basic_matrix/__init__.py,sha256=kZv3kMAEHBdVxhbyMxTyM0s-4XJP1tK6po82UsIE4tc,1318
|
|
81
|
-
pytcl/mathematical_functions/basic_matrix/decompositions.py,sha256=
|
|
83
|
+
pytcl/mathematical_functions/basic_matrix/decompositions.py,sha256=GB8l54uOFEZ1uNvARFrSu6ISvE1c7HueBCy6wk8rBTU,12238
|
|
82
84
|
pytcl/mathematical_functions/basic_matrix/special_matrices.py,sha256=kOozwP2CHAj4qyO7Z9ct6GwDMkmHkk1bQa0e9G98FgA,13499
|
|
83
85
|
pytcl/mathematical_functions/combinatorics/__init__.py,sha256=byuHI0WkxOkQF8egrfjEr-awB2visWDXlGMnDux5IBg,1043
|
|
84
|
-
pytcl/mathematical_functions/combinatorics/combinatorics.py,sha256=
|
|
86
|
+
pytcl/mathematical_functions/combinatorics/combinatorics.py,sha256=U4wd_eNKpZNHNp4-wJLGtQCgaogoUJrrXyJ6gBnD0ls,12300
|
|
85
87
|
pytcl/mathematical_functions/continuous_optimization/__init__.py,sha256=lck60eeCUOsRpEzPHBY3kiLKwNz_fhmYoUGP3lTmTwk,55
|
|
86
88
|
pytcl/mathematical_functions/geometry/__init__.py,sha256=DhCmux9-6zxYRzlhQ9du18kvUL-leiiZwdd3Cmb5WX0,1092
|
|
87
|
-
pytcl/mathematical_functions/geometry/geometry.py,sha256=
|
|
88
|
-
pytcl/mathematical_functions/interpolation/__init__.py,sha256=
|
|
89
|
-
pytcl/mathematical_functions/interpolation/interpolation.py,sha256=
|
|
89
|
+
pytcl/mathematical_functions/geometry/geometry.py,sha256=niwXZyXQCA8Z4nhlEERvmR0wkEmr9LNIhYwW_rDbil8,16327
|
|
90
|
+
pytcl/mathematical_functions/interpolation/__init__.py,sha256=lK4Rs0Ds_fzf9q0n6id5epdN0U8V7yD87dS-w1hvN8I,741
|
|
91
|
+
pytcl/mathematical_functions/interpolation/interpolation.py,sha256=el_kw87Q7qngHomg8ZHBPOuFFN8k3paBV6AanSHd_V4,12596
|
|
90
92
|
pytcl/mathematical_functions/numerical_integration/__init__.py,sha256=iXiHzyV_KIhCv7tXErXlN1_fUEACN6yN3CYDHRA7esw,974
|
|
91
93
|
pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=ZRMKs0vbcgFDe1Sr8sjyEOkALLmJU4zKRJjoPEcXrUc,15670
|
|
92
94
|
pytcl/mathematical_functions/polynomials/__init__.py,sha256=WJWZcoQhnvy5f59-kncMTgD9mCtgwfDgULvDYYHS5ys,43
|
|
93
95
|
pytcl/mathematical_functions/signal_processing/__init__.py,sha256=_SzzBVtxmSvP8FKeogRdNmFo8FOVDDoexVOqd-lE7do,2325
|
|
94
|
-
pytcl/mathematical_functions/signal_processing/detection.py,sha256=
|
|
95
|
-
pytcl/mathematical_functions/signal_processing/filters.py,sha256=
|
|
96
|
-
pytcl/mathematical_functions/signal_processing/matched_filter.py,sha256=
|
|
97
|
-
pytcl/mathematical_functions/special_functions/__init__.py,sha256=
|
|
96
|
+
pytcl/mathematical_functions/signal_processing/detection.py,sha256=RvnSl1-VM6lX7jmVaV40hH1zdS2Hh3Zvm0FsSLHDpic,30305
|
|
97
|
+
pytcl/mathematical_functions/signal_processing/filters.py,sha256=ellpwrdKHp3wuKDQeRa8htE6rzq2Kwc0RVPuXTJj5rM,23375
|
|
98
|
+
pytcl/mathematical_functions/signal_processing/matched_filter.py,sha256=bwWXKizv4ok-C6D7gMR9GGCj9CakqVdRS7di_kHwLmk,22837
|
|
99
|
+
pytcl/mathematical_functions/special_functions/__init__.py,sha256=AJBCKj32daQxdahUQckW0bWowzOoapxni2eZnVXERdg,3859
|
|
98
100
|
pytcl/mathematical_functions/special_functions/bessel.py,sha256=M0mwLQBaUXEHA8wyKReJ2D66I1v1XR7y-txAipd-WDs,14377
|
|
99
101
|
pytcl/mathematical_functions/special_functions/debye.py,sha256=Nchjwkl1vzSL1L7nQpslb-lvT49LgTfdTIQMeSNn4vQ,6689
|
|
100
|
-
pytcl/mathematical_functions/special_functions/elliptic.py,sha256=
|
|
102
|
+
pytcl/mathematical_functions/special_functions/elliptic.py,sha256=vRMIcvOOywH8xd2zPTeo3cJ3ckOEimFGWRr5gV-0L_o,7412
|
|
101
103
|
pytcl/mathematical_functions/special_functions/error_functions.py,sha256=a3SS8FYAMRv1KdCmebOZL95yjvVt9gZRF2XOjHvQ9M8,6253
|
|
102
|
-
pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=
|
|
104
|
+
pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=vbXaZTsVZDpbAM6aVbLab6Cq0QHjuDeawWxKuXcv38w,10177
|
|
103
105
|
pytcl/mathematical_functions/special_functions/hypergeometric.py,sha256=gKn_tXboEst7pVDiW15IbKFAANM4XVqKtDc1dmWL-2A,9768
|
|
104
|
-
pytcl/mathematical_functions/special_functions/lambert_w.py,sha256=
|
|
106
|
+
pytcl/mathematical_functions/special_functions/lambert_w.py,sha256=FToYtwoI14H7kuO-it8a8jJbpMDjuTWcL3Ff3Eg5OxI,6825
|
|
105
107
|
pytcl/mathematical_functions/special_functions/marcum_q.py,sha256=OZ5QjIB1e_XvRG8A-3dbZ13YXHtdk2EYVEPaqtgVr14,9580
|
|
106
108
|
pytcl/mathematical_functions/statistics/__init__.py,sha256=dfypStgmnFmOrnWcm-3CEvLinONHraFgx9O66_37bqw,1278
|
|
107
|
-
pytcl/mathematical_functions/statistics/distributions.py,sha256=
|
|
108
|
-
pytcl/mathematical_functions/statistics/estimators.py,sha256=
|
|
109
|
+
pytcl/mathematical_functions/statistics/distributions.py,sha256=djSEnCZtUmfi9JIVo5gGdPtUF6JiBYBlgfbm3nOVB7k,19205
|
|
110
|
+
pytcl/mathematical_functions/statistics/estimators.py,sha256=73wt5uUuE4gfpEzqpAk4yHeqWZCQpg9pFqj0Dutey7M,10817
|
|
109
111
|
pytcl/mathematical_functions/transforms/__init__.py,sha256=SPXSKHjqR6B_8pvgtbtOnEiCpU-u0JF2s7hAlhb0BbI,2343
|
|
110
112
|
pytcl/mathematical_functions/transforms/fourier.py,sha256=QH6OaTzw4kN6M-DuSmwB_5b-wu_4yP5I2CUmNEyLORM,20737
|
|
111
|
-
pytcl/mathematical_functions/transforms/stft.py,sha256=
|
|
112
|
-
pytcl/mathematical_functions/transforms/wavelets.py,sha256=
|
|
113
|
+
pytcl/mathematical_functions/transforms/stft.py,sha256=NoCPEsQPBDf2it-uH-FKFeMV9pnqhVNFjGHTVj0bv4s,18577
|
|
114
|
+
pytcl/mathematical_functions/transforms/wavelets.py,sha256=rL7AiWLNoHreCbCL0v0oy_M_RbqUjys7KgS5jCLCSZ0,21524
|
|
113
115
|
pytcl/misc/__init__.py,sha256=SCHf_lQVfdl2gwUluHBiIloTF8HRH8EkgYfbNr7zOug,33
|
|
114
|
-
pytcl/navigation/__init__.py,sha256=
|
|
115
|
-
pytcl/navigation/geodesy.py,sha256=
|
|
116
|
-
pytcl/navigation/great_circle.py,sha256=
|
|
117
|
-
pytcl/navigation/ins.py,sha256=
|
|
118
|
-
pytcl/navigation/ins_gnss.py,sha256=
|
|
119
|
-
pytcl/navigation/rhumb.py,sha256=
|
|
116
|
+
pytcl/navigation/__init__.py,sha256=k1_x_FnnPrIzGeNu7zejPtPubIhweBgCfwqlZJEMw0I,6042
|
|
117
|
+
pytcl/navigation/geodesy.py,sha256=1zSzWJUwjRjj8cUzbaXze9nr_nSqm-NQmXiCoN8dwQ4,16961
|
|
118
|
+
pytcl/navigation/great_circle.py,sha256=ZJ3anzmkmO-qvCTjq3gJlVnAnDK-CSEibShrlVyTJMc,20859
|
|
119
|
+
pytcl/navigation/ins.py,sha256=ZavoBknLiWXCTWrlTyaGmkJgaggkSxUanwwACPzrrTg,31097
|
|
120
|
+
pytcl/navigation/ins_gnss.py,sha256=t0LzQ3G80aqyRdESA8RF6Dv3blae0zF_ZUyw-uT15hw,29963
|
|
121
|
+
pytcl/navigation/rhumb.py,sha256=AJ9WfIh2OKw1ppZHAvRyfI6nkBrs3hQrYj6A1Cj7ZPg,18150
|
|
120
122
|
pytcl/performance_evaluation/__init__.py,sha256=tM2pnBfDb2XbnLt4Y5MQ6w6XBwFy_5bf_y0toZmxx88,1859
|
|
121
123
|
pytcl/performance_evaluation/estimation_metrics.py,sha256=X1ZCpp8m6DV14N2wbMvlRwfORRKga8DgKmG3dROyJqA,12351
|
|
122
|
-
pytcl/performance_evaluation/track_metrics.py,sha256=
|
|
124
|
+
pytcl/performance_evaluation/track_metrics.py,sha256=UuGapygdhHP22xkp-ep7k6icJgL3g0yazP5VIpe1e_8,13328
|
|
123
125
|
pytcl/physical_values/__init__.py,sha256=SGbg6b0d4dWebE3baW4OlJshL00grG5E4wABw6jxl20,44
|
|
124
126
|
pytcl/plotting/__init__.py,sha256=YtYnKYHL5lN6EaT_bwwR3h89NW0HSMToIWHhHBxcidY,3126
|
|
125
|
-
pytcl/plotting/coordinates.py,sha256=
|
|
127
|
+
pytcl/plotting/coordinates.py,sha256=KFMUEkrTk5yJ6ZVH7gLaWD9-YQHoGdHzJnO8jgJVYxE,17002
|
|
126
128
|
pytcl/plotting/ellipses.py,sha256=bcns6dfNK4bwA_QBshscYhbAz_5wegwyqjDzzoUdWsQ,12465
|
|
127
|
-
pytcl/plotting/metrics.py,sha256=
|
|
128
|
-
pytcl/plotting/tracks.py,sha256=
|
|
129
|
+
pytcl/plotting/metrics.py,sha256=B-PTVPuZ2Rl8EtV53he8O1iYw6nWuw_gQ-qUUIX4V5Y,18050
|
|
130
|
+
pytcl/plotting/tracks.py,sha256=FsDpaWPsD5FCed6zUy_Kzhln4DEyfr7Kle_BfeDOrl8,22894
|
|
129
131
|
pytcl/scheduling/__init__.py,sha256=jTqMSKcsCrWU_Fh6WaT6BW5WatNHyyEYjFbsv6X18Oc,39
|
|
130
132
|
pytcl/static_estimation/__init__.py,sha256=sSEhqq35jq_MpRLnBtWjKXwGZ9dqIw71iwji-TNwXmc,2222
|
|
131
|
-
pytcl/static_estimation/least_squares.py,sha256=
|
|
132
|
-
pytcl/static_estimation/maximum_likelihood.py,sha256=
|
|
133
|
+
pytcl/static_estimation/least_squares.py,sha256=tZ10srMCvCWw1RwjJD6xtLxiN5XP7LIjOiBwJRf5v8M,13420
|
|
134
|
+
pytcl/static_estimation/maximum_likelihood.py,sha256=Y5kmef55FDIAEVY-Gc2eO7PUipcJGLhtGNEALTEtyh8,21581
|
|
133
135
|
pytcl/static_estimation/robust.py,sha256=egBLKWmo6d9PzP6LDh0J7ee4j6hYZh8kAb9TR5uC2so,18527
|
|
134
136
|
pytcl/terrain/__init__.py,sha256=e7plNQI5Y_jpZ24r82AgqdX0ChmmyYoeT7HReclnGXc,3228
|
|
135
|
-
pytcl/terrain/dem.py,sha256=
|
|
136
|
-
pytcl/terrain/loaders.py,sha256=
|
|
137
|
-
pytcl/terrain/visibility.py,sha256=
|
|
138
|
-
pytcl/trackers/__init__.py,sha256=
|
|
139
|
-
pytcl/trackers/hypothesis.py,sha256=
|
|
140
|
-
pytcl/trackers/mht.py,sha256=
|
|
141
|
-
pytcl/trackers/multi_target.py,sha256=
|
|
137
|
+
pytcl/terrain/dem.py,sha256=1cOmjhKTr0isYXOw2O12YbjVq2MN0lns9-Sdza_lep4,20726
|
|
138
|
+
pytcl/terrain/loaders.py,sha256=1vbzd1F709QH3okjNhkaP9Hg0TUAUulwbgV-twONA5E,26946
|
|
139
|
+
pytcl/terrain/visibility.py,sha256=Ko5r7JnliIwraVKQLxBCALhdiejtXXVyC0iBILGvLH0,22701
|
|
140
|
+
pytcl/trackers/__init__.py,sha256=Gw79xlSIUzdPV8bN1slNWUlGxE3d-NsVmbMygkYVV20,1151
|
|
141
|
+
pytcl/trackers/hypothesis.py,sha256=Q50LcD63rGDv4RwEpbamw4Y2nOXBsZTlVCCkV34ZU4I,17287
|
|
142
|
+
pytcl/trackers/mht.py,sha256=kMomduNVkKbXoBEQmuLkX0xOMb8U52z2o1ezOmzqEpU,20489
|
|
143
|
+
pytcl/trackers/multi_target.py,sha256=hvt89ERhMwpcHcIJeKHnkQSKdE3_LoRiX-gbaGoo300,10516
|
|
142
144
|
pytcl/trackers/single_target.py,sha256=Yy3FwaNTArMWcaod-0HVeiioNV4xLWxNDn_7ZPVqQYs,6562
|
|
143
145
|
pytcl/transponders/__init__.py,sha256=5fL4u3lKCYgPLo5uFeuZbtRZkJPABntuKYGUvVgMMEI,41
|
|
144
|
-
nrl_tracker-0.
|
|
145
|
-
nrl_tracker-0.
|
|
146
|
-
nrl_tracker-0.
|
|
147
|
-
nrl_tracker-0.
|
|
148
|
-
nrl_tracker-0.
|
|
146
|
+
nrl_tracker-0.22.1.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
|
|
147
|
+
nrl_tracker-0.22.1.dist-info/METADATA,sha256=4UimB2u7UoSjr0iALLcGEOWOYSVKgVX-QCJFDCDg1nc,10005
|
|
148
|
+
nrl_tracker-0.22.1.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
|
|
149
|
+
nrl_tracker-0.22.1.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
|
|
150
|
+
nrl_tracker-0.22.1.dist-info/RECORD,,
|
pytcl/__init__.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
24
|
-
|
|
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
|
pytcl/astronomical/__init__.py
CHANGED
|
@@ -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,
|
|
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 (
|
|
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 (
|
|
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.
|
|
87
|
-
|
|
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
|
]
|