nrl-tracker 0.22.0__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.
Files changed (132) hide show
  1. {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/METADATA +1 -1
  2. nrl_tracker-0.22.1.dist-info/RECORD +150 -0
  3. pytcl/__init__.py +11 -9
  4. pytcl/assignment_algorithms/__init__.py +42 -32
  5. pytcl/assignment_algorithms/data_association.py +3 -7
  6. pytcl/assignment_algorithms/gating.py +2 -4
  7. pytcl/assignment_algorithms/jpda.py +2 -6
  8. pytcl/assignment_algorithms/three_dimensional/__init__.py +8 -6
  9. pytcl/assignment_algorithms/three_dimensional/assignment.py +2 -6
  10. pytcl/assignment_algorithms/two_dimensional/__init__.py +13 -9
  11. pytcl/assignment_algorithms/two_dimensional/assignment.py +2 -5
  12. pytcl/assignment_algorithms/two_dimensional/kbest.py +6 -8
  13. pytcl/astronomical/__init__.py +108 -96
  14. pytcl/astronomical/ephemerides.py +1 -3
  15. pytcl/astronomical/lambert.py +1 -2
  16. pytcl/astronomical/time_systems.py +1 -2
  17. pytcl/atmosphere/__init__.py +13 -11
  18. pytcl/atmosphere/models.py +2 -4
  19. pytcl/clustering/__init__.py +36 -28
  20. pytcl/clustering/dbscan.py +2 -5
  21. pytcl/clustering/gaussian_mixture.py +2 -6
  22. pytcl/clustering/hierarchical.py +2 -6
  23. pytcl/clustering/kmeans.py +2 -6
  24. pytcl/containers/__init__.py +26 -29
  25. pytcl/containers/cluster_set.py +2 -10
  26. pytcl/containers/covertree.py +2 -8
  27. pytcl/containers/kd_tree.py +2 -6
  28. pytcl/containers/measurement_set.py +2 -9
  29. pytcl/containers/rtree.py +2 -6
  30. pytcl/containers/track_list.py +13 -13
  31. pytcl/containers/vptree.py +2 -7
  32. pytcl/coordinate_systems/__init__.py +74 -69
  33. pytcl/coordinate_systems/conversions/__init__.py +24 -20
  34. pytcl/coordinate_systems/conversions/geodetic.py +2 -4
  35. pytcl/coordinate_systems/conversions/spherical.py +2 -4
  36. pytcl/coordinate_systems/jacobians/__init__.py +12 -10
  37. pytcl/coordinate_systems/jacobians/jacobians.py +1 -2
  38. pytcl/coordinate_systems/projections/__init__.py +21 -23
  39. pytcl/coordinate_systems/projections/projections.py +1 -3
  40. pytcl/coordinate_systems/rotations/__init__.py +22 -20
  41. pytcl/coordinate_systems/rotations/rotations.py +1 -2
  42. pytcl/core/__init__.py +22 -16
  43. pytcl/core/array_utils.py +3 -6
  44. pytcl/core/validation.py +2 -7
  45. pytcl/dynamic_estimation/__init__.py +86 -77
  46. pytcl/dynamic_estimation/imm.py +3 -7
  47. pytcl/dynamic_estimation/information_filter.py +6 -8
  48. pytcl/dynamic_estimation/kalman/__init__.py +48 -40
  49. pytcl/dynamic_estimation/kalman/extended.py +2 -4
  50. pytcl/dynamic_estimation/kalman/linear.py +3 -7
  51. pytcl/dynamic_estimation/kalman/square_root.py +2 -5
  52. pytcl/dynamic_estimation/kalman/unscented.py +3 -8
  53. pytcl/dynamic_estimation/particle_filters/__init__.py +14 -12
  54. pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
  55. pytcl/dynamic_estimation/smoothers.py +3 -8
  56. pytcl/dynamic_models/__init__.py +41 -37
  57. pytcl/dynamic_models/continuous_time/__init__.py +11 -11
  58. pytcl/dynamic_models/continuous_time/dynamics.py +2 -4
  59. pytcl/dynamic_models/discrete_time/__init__.py +13 -11
  60. pytcl/dynamic_models/process_noise/__init__.py +13 -11
  61. pytcl/gravity/__init__.py +65 -55
  62. pytcl/gravity/clenshaw.py +1 -2
  63. pytcl/gravity/egm.py +3 -8
  64. pytcl/gravity/spherical_harmonics.py +1 -2
  65. pytcl/gravity/tides.py +1 -2
  66. pytcl/magnetism/__init__.py +25 -26
  67. pytcl/magnetism/emm.py +1 -4
  68. pytcl/magnetism/igrf.py +6 -5
  69. pytcl/magnetism/wmm.py +1 -2
  70. pytcl/mathematical_functions/__init__.py +87 -69
  71. pytcl/mathematical_functions/basic_matrix/__init__.py +19 -25
  72. pytcl/mathematical_functions/basic_matrix/decompositions.py +2 -5
  73. pytcl/mathematical_functions/basic_matrix/special_matrices.py +1 -2
  74. pytcl/mathematical_functions/combinatorics/__init__.py +14 -18
  75. pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -4
  76. pytcl/mathematical_functions/geometry/__init__.py +15 -15
  77. pytcl/mathematical_functions/geometry/geometry.py +3 -6
  78. pytcl/mathematical_functions/interpolation/__init__.py +12 -10
  79. pytcl/mathematical_functions/interpolation/interpolation.py +2 -7
  80. pytcl/mathematical_functions/numerical_integration/__init__.py +10 -16
  81. pytcl/mathematical_functions/numerical_integration/quadrature.py +2 -6
  82. pytcl/mathematical_functions/signal_processing/__init__.py +30 -42
  83. pytcl/mathematical_functions/signal_processing/detection.py +3 -6
  84. pytcl/mathematical_functions/signal_processing/filters.py +2 -5
  85. pytcl/mathematical_functions/signal_processing/matched_filter.py +3 -6
  86. pytcl/mathematical_functions/special_functions/__init__.py +76 -74
  87. pytcl/mathematical_functions/special_functions/bessel.py +1 -2
  88. pytcl/mathematical_functions/special_functions/debye.py +2 -4
  89. pytcl/mathematical_functions/special_functions/elliptic.py +1 -2
  90. pytcl/mathematical_functions/special_functions/error_functions.py +1 -2
  91. pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -2
  92. pytcl/mathematical_functions/special_functions/hypergeometric.py +1 -2
  93. pytcl/mathematical_functions/special_functions/lambert_w.py +1 -2
  94. pytcl/mathematical_functions/special_functions/marcum_q.py +1 -2
  95. pytcl/mathematical_functions/statistics/__init__.py +31 -27
  96. pytcl/mathematical_functions/statistics/distributions.py +4 -9
  97. pytcl/mathematical_functions/statistics/estimators.py +1 -2
  98. pytcl/mathematical_functions/transforms/__init__.py +51 -45
  99. pytcl/mathematical_functions/transforms/fourier.py +2 -5
  100. pytcl/mathematical_functions/transforms/stft.py +2 -5
  101. pytcl/mathematical_functions/transforms/wavelets.py +2 -7
  102. pytcl/navigation/__init__.py +99 -89
  103. pytcl/navigation/geodesy.py +2 -4
  104. pytcl/navigation/great_circle.py +1 -3
  105. pytcl/navigation/ins.py +5 -11
  106. pytcl/navigation/ins_gnss.py +12 -17
  107. pytcl/navigation/rhumb.py +2 -4
  108. pytcl/performance_evaluation/__init__.py +25 -21
  109. pytcl/performance_evaluation/estimation_metrics.py +1 -3
  110. pytcl/performance_evaluation/track_metrics.py +1 -3
  111. pytcl/plotting/__init__.py +38 -30
  112. pytcl/plotting/coordinates.py +1 -3
  113. pytcl/plotting/ellipses.py +2 -5
  114. pytcl/plotting/metrics.py +1 -2
  115. pytcl/plotting/tracks.py +1 -4
  116. pytcl/static_estimation/__init__.py +41 -37
  117. pytcl/static_estimation/least_squares.py +2 -4
  118. pytcl/static_estimation/maximum_likelihood.py +2 -5
  119. pytcl/static_estimation/robust.py +2 -5
  120. pytcl/terrain/__init__.py +34 -28
  121. pytcl/terrain/dem.py +1 -4
  122. pytcl/terrain/loaders.py +1 -4
  123. pytcl/terrain/visibility.py +1 -2
  124. pytcl/trackers/__init__.py +14 -17
  125. pytcl/trackers/hypothesis.py +1 -6
  126. pytcl/trackers/mht.py +9 -13
  127. pytcl/trackers/multi_target.py +3 -8
  128. pytcl/trackers/single_target.py +2 -5
  129. nrl_tracker-0.22.0.dist-info/RECORD +0 -150
  130. {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/LICENSE +0 -0
  131. {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/WHEEL +0 -0
  132. {nrl_tracker-0.22.0.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.22.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
@@ -0,0 +1,150 @@
1
+ pytcl/__init__.py,sha256=pMvIZSoR3GxNdW8Fxmfpf-WB5CbuxJe3HCBW6U7fNRc,1894
2
+ pytcl/assignment_algorithms/__init__.py,sha256=f9V-TkEVmiKYYyth4PTpDfJvA7yYV_ys6Zix-QwWIYY,2136
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
+ pytcl/assignment_algorithms/three_dimensional/__init__.py,sha256=1Q40OUlUQoo7YKEucwdrSNo3D4A0Zibvkr8z4TpueBg,526
7
+ pytcl/assignment_algorithms/three_dimensional/assignment.py,sha256=9BJhwlYu3JJ0kZ9sRyKKfpdvQdL4WYYHCtLbvaWycBw,19212
8
+ pytcl/assignment_algorithms/two_dimensional/__init__.py,sha256=4Evsn__9hTfI2i8m8Ngl-Zy0Fa2OydKmDKlZlH6jaao,778
9
+ pytcl/assignment_algorithms/two_dimensional/assignment.py,sha256=eh87MBb-uiUSI1MXj4HrreRKB6Z8rxAyDkNQ8-u4SbM,11848
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
17
+ pytcl/astronomical/time_systems.py,sha256=Jg0Zaq60hc4Ts1aQtb5bK4KSZhz-uQse8gYC89Y0-TA,15243
18
+ pytcl/atmosphere/__init__.py,sha256=TTVz4hAM48Xd3jr6GKrR2GAABpx2z0aWvtzb9uIQiHk,737
19
+ pytcl/atmosphere/models.py,sha256=hOfUjM4jNLLfkzd_9J_utR04tkwyBT8KsyjVMrVQJ6k,9570
20
+ pytcl/clustering/__init__.py,sha256=bYdhC_XJEt6KUUni9bIPxaddXNEGmIJQvGkA14rK4J8,1697
21
+ pytcl/clustering/dbscan.py,sha256=PS6QlOwHFerbZNEb3zcNhN4oNQpgOOw5y0WskQzyKIo,7364
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
27
+ pytcl/containers/covertree.py,sha256=1JWqXxoUFLxuMnjwj2qf0iz2uPzdujQYdwJW3l5qsOs,13282
28
+ pytcl/containers/kd_tree.py,sha256=pxRC62RYkqz9zXPz6c1fubmtPPBDLYA5I9AXMAoGanw,16348
29
+ pytcl/containers/measurement_set.py,sha256=EqijbnQZzF3fwNT9An7KVXJTvT4m_kjQDnQeEkxlLwM,12618
30
+ pytcl/containers/rtree.py,sha256=5jPy8NxZnmmpTgyRScwwj4L7U5Vq4NfChKotdzVcW6w,15400
31
+ pytcl/containers/track_list.py,sha256=6q9Qgcwm-8H_JqtOCsMssF27av4XaSkhfDl-MWb1ABc,12520
32
+ pytcl/containers/vptree.py,sha256=6fBNHrezkmj7L2nH0-2bONRN92f5cZAhS-5vaI1JZnA,8814
33
+ pytcl/coordinate_systems/__init__.py,sha256=jwYhu_-9AvOeP9WLG9PYtyDwfe0GjxNZ9-xCqiLymW4,3909
34
+ pytcl/coordinate_systems/conversions/__init__.py,sha256=PkNevB78vBw0BkalydJBbQO91AyiMJxKRrgJNt4HsYc,1100
35
+ pytcl/coordinate_systems/conversions/geodetic.py,sha256=HrSacirnucwrviDjX5KuqxyFlFqgnGpFWFux2XBhdBM,15635
36
+ pytcl/coordinate_systems/conversions/spherical.py,sha256=q7k9l5mJbVzVdNj9Gcq4ibFxax8z_mVpJfITRBzx630,10812
37
+ pytcl/coordinate_systems/jacobians/__init__.py,sha256=CRGB8GzvGT_sr4Ynm51S7gSX8grqt1pO1Pq1MWmHPTs,890
38
+ pytcl/coordinate_systems/jacobians/jacobians.py,sha256=1KufIoktm9mXLO34X9KjysdMpu7itGwfssRyAdkTTN8,11703
39
+ pytcl/coordinate_systems/projections/__init__.py,sha256=eWNtezPO62IUWxv7jymenIXsWS1MC66Q12u5KRUnqNE,2503
40
+ pytcl/coordinate_systems/projections/projections.py,sha256=cqYd0zb_6DZFQfGQ8IAzBoAhKpbkxw_1MLt5JiT8TEI,32877
41
+ pytcl/coordinate_systems/rotations/__init__.py,sha256=nqAz4iJd2hEOX_r7Tz4cE524sShyxdbtcQ5m56RrDLg,1047
42
+ pytcl/coordinate_systems/rotations/rotations.py,sha256=i5OtHxCLwq9k4gBIMb_n8HWq5EfMyyq3znlTenKjus0,18213
43
+ pytcl/core/__init__.py,sha256=H5JJPS-43DfF1UG7fSgV-VMTcZFBO8GuzDW1lM_1sm4,1152
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
47
+ pytcl/dynamic_estimation/__init__.py,sha256=jA5FF6kHYklY5LMOfZaKcCeiPTpVe8vHIMp3ECDOmsc,4582
48
+ pytcl/dynamic_estimation/imm.py,sha256=6Skq7HOABQ9XCTM8lEHLqBp_OqDm7srl_hVuYCp4ZPw,22009
49
+ pytcl/dynamic_estimation/information_filter.py,sha256=x7iQwO_iJT1dCSvDws5LqD3yAtjw9QVGUfMPcXn1IA4,17349
50
+ pytcl/dynamic_estimation/smoothers.py,sha256=NlQ3aCLRGZE5O_pJn0at6xyK1TNf8-KlSYYZhSrnWIw,18900
51
+ pytcl/dynamic_estimation/batch_estimation/__init__.py,sha256=JQ0s76Enov5a7plA4EnUua4t-7etikQrwr5z4WIjUeo,46
52
+ pytcl/dynamic_estimation/kalman/__init__.py,sha256=yoFLj0n-NRkdZnRVL-BkHBlATk8pfZEVlsY3BhSYgKc,2387
53
+ pytcl/dynamic_estimation/kalman/extended.py,sha256=51uhCqkZmErCx6MBfMq8eIQW8bD7n34zCe4v4dxNiMQ,10384
54
+ pytcl/dynamic_estimation/kalman/linear.py,sha256=1Zgg9gZya0Vxs9im7sPUqLj0Luo463vS-RSa6GCReFI,12248
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
57
+ pytcl/dynamic_estimation/measurement_update/__init__.py,sha256=8rlyJwVpxf0fZj-AFo1hlewvryZRhUzcy3F8uMe6I8c,48
58
+ pytcl/dynamic_estimation/particle_filters/__init__.py,sha256=-DRF5rVF2749suLlArmkTvVkqeMcV_mIx0eLeTj6wNU,906
59
+ pytcl/dynamic_estimation/particle_filters/bootstrap.py,sha256=QdqQME3ye5qCjoyJEbGfzI9r80GT_NLSj1pldZnmziw,13343
60
+ pytcl/dynamic_models/__init__.py,sha256=Cd8MyyYuB8gMnepkPA-HSwTaKFPThnqoKOhdjVOsXWg,2783
61
+ pytcl/dynamic_models/continuous_time/__init__.py,sha256=dAkfEddLkfMvDalK9v2GRBvaZV1KgqYpFBLOnoiFClw,1023
62
+ pytcl/dynamic_models/continuous_time/dynamics.py,sha256=CDwqn-66eUwXA5xfIjaG6A4EDBqtOyQ3aWarJr9QH4g,12858
63
+ pytcl/dynamic_models/discrete_time/__init__.py,sha256=1cdYeVIe-kgogiHzeCv1eYMctSimh8t1nIE6Z1N4im4,949
64
+ pytcl/dynamic_models/discrete_time/coordinated_turn.py,sha256=jrSGCKiAdXaFIJBLzRyAv0xxxpOHOBnAtDHyu7VYsm8,7206
65
+ pytcl/dynamic_models/discrete_time/polynomial.py,sha256=zv5V-AbuaXlIj36n-YkOEyC74jV2vczxpCW09P0kmi0,5529
66
+ pytcl/dynamic_models/discrete_time/singer.py,sha256=wZS3Nad-YyPZp8Mle8Sf5GgW0-t4TxMRcnbc42HtQnA,3861
67
+ pytcl/dynamic_models/process_noise/__init__.py,sha256=ZRYgV40qmBkPwU3yTbIMvxorr4nVz0_FEP2oCeVjXoM,933
68
+ pytcl/dynamic_models/process_noise/coordinated_turn.py,sha256=w7bHUImLPL5m3KYenfNgAnHPCRtAyYESbsFc6lQKXRg,4768
69
+ pytcl/dynamic_models/process_noise/polynomial.py,sha256=Rb7LITSZ1kbOnd0Q8TWRdUR_4sl9RCqfcsf0OawJl9U,7574
70
+ pytcl/dynamic_models/process_noise/singer.py,sha256=lsJDT6xOvcS_qQKFtgHX0L7Ukpy4D7HgvPT8Q3I0ibU,3901
71
+ pytcl/gravity/__init__.py,sha256=5xNdQSrrkt7-1-JPOYqR38CqvNJ7qKlPyMK36DGm6-I,3693
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
79
+ pytcl/magnetism/igrf.py,sha256=3g0PsH8IdbwQQS28OR5XWD-g-QxvfUva7jOkKToxndQ,13384
80
+ pytcl/magnetism/wmm.py,sha256=6LgYkis-PaNVmgRQvYyCkK-VZT_yzs4hSdCHymRLndM,15851
81
+ pytcl/mathematical_functions/__init__.py,sha256=zeJ1ffRRl83k2NHn3HTn-fgtFoWNPq6LCALc3xRo4Do,3767
82
+ pytcl/mathematical_functions/basic_matrix/__init__.py,sha256=kZv3kMAEHBdVxhbyMxTyM0s-4XJP1tK6po82UsIE4tc,1318
83
+ pytcl/mathematical_functions/basic_matrix/decompositions.py,sha256=GB8l54uOFEZ1uNvARFrSu6ISvE1c7HueBCy6wk8rBTU,12238
84
+ pytcl/mathematical_functions/basic_matrix/special_matrices.py,sha256=kOozwP2CHAj4qyO7Z9ct6GwDMkmHkk1bQa0e9G98FgA,13499
85
+ pytcl/mathematical_functions/combinatorics/__init__.py,sha256=byuHI0WkxOkQF8egrfjEr-awB2visWDXlGMnDux5IBg,1043
86
+ pytcl/mathematical_functions/combinatorics/combinatorics.py,sha256=U4wd_eNKpZNHNp4-wJLGtQCgaogoUJrrXyJ6gBnD0ls,12300
87
+ pytcl/mathematical_functions/continuous_optimization/__init__.py,sha256=lck60eeCUOsRpEzPHBY3kiLKwNz_fhmYoUGP3lTmTwk,55
88
+ pytcl/mathematical_functions/geometry/__init__.py,sha256=DhCmux9-6zxYRzlhQ9du18kvUL-leiiZwdd3Cmb5WX0,1092
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
92
+ pytcl/mathematical_functions/numerical_integration/__init__.py,sha256=iXiHzyV_KIhCv7tXErXlN1_fUEACN6yN3CYDHRA7esw,974
93
+ pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=ZRMKs0vbcgFDe1Sr8sjyEOkALLmJU4zKRJjoPEcXrUc,15670
94
+ pytcl/mathematical_functions/polynomials/__init__.py,sha256=WJWZcoQhnvy5f59-kncMTgD9mCtgwfDgULvDYYHS5ys,43
95
+ pytcl/mathematical_functions/signal_processing/__init__.py,sha256=_SzzBVtxmSvP8FKeogRdNmFo8FOVDDoexVOqd-lE7do,2325
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
100
+ pytcl/mathematical_functions/special_functions/bessel.py,sha256=M0mwLQBaUXEHA8wyKReJ2D66I1v1XR7y-txAipd-WDs,14377
101
+ pytcl/mathematical_functions/special_functions/debye.py,sha256=Nchjwkl1vzSL1L7nQpslb-lvT49LgTfdTIQMeSNn4vQ,6689
102
+ pytcl/mathematical_functions/special_functions/elliptic.py,sha256=vRMIcvOOywH8xd2zPTeo3cJ3ckOEimFGWRr5gV-0L_o,7412
103
+ pytcl/mathematical_functions/special_functions/error_functions.py,sha256=a3SS8FYAMRv1KdCmebOZL95yjvVt9gZRF2XOjHvQ9M8,6253
104
+ pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=vbXaZTsVZDpbAM6aVbLab6Cq0QHjuDeawWxKuXcv38w,10177
105
+ pytcl/mathematical_functions/special_functions/hypergeometric.py,sha256=gKn_tXboEst7pVDiW15IbKFAANM4XVqKtDc1dmWL-2A,9768
106
+ pytcl/mathematical_functions/special_functions/lambert_w.py,sha256=FToYtwoI14H7kuO-it8a8jJbpMDjuTWcL3Ff3Eg5OxI,6825
107
+ pytcl/mathematical_functions/special_functions/marcum_q.py,sha256=OZ5QjIB1e_XvRG8A-3dbZ13YXHtdk2EYVEPaqtgVr14,9580
108
+ pytcl/mathematical_functions/statistics/__init__.py,sha256=dfypStgmnFmOrnWcm-3CEvLinONHraFgx9O66_37bqw,1278
109
+ pytcl/mathematical_functions/statistics/distributions.py,sha256=djSEnCZtUmfi9JIVo5gGdPtUF6JiBYBlgfbm3nOVB7k,19205
110
+ pytcl/mathematical_functions/statistics/estimators.py,sha256=73wt5uUuE4gfpEzqpAk4yHeqWZCQpg9pFqj0Dutey7M,10817
111
+ pytcl/mathematical_functions/transforms/__init__.py,sha256=SPXSKHjqR6B_8pvgtbtOnEiCpU-u0JF2s7hAlhb0BbI,2343
112
+ pytcl/mathematical_functions/transforms/fourier.py,sha256=QH6OaTzw4kN6M-DuSmwB_5b-wu_4yP5I2CUmNEyLORM,20737
113
+ pytcl/mathematical_functions/transforms/stft.py,sha256=NoCPEsQPBDf2it-uH-FKFeMV9pnqhVNFjGHTVj0bv4s,18577
114
+ pytcl/mathematical_functions/transforms/wavelets.py,sha256=rL7AiWLNoHreCbCL0v0oy_M_RbqUjys7KgS5jCLCSZ0,21524
115
+ pytcl/misc/__init__.py,sha256=SCHf_lQVfdl2gwUluHBiIloTF8HRH8EkgYfbNr7zOug,33
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
122
+ pytcl/performance_evaluation/__init__.py,sha256=tM2pnBfDb2XbnLt4Y5MQ6w6XBwFy_5bf_y0toZmxx88,1859
123
+ pytcl/performance_evaluation/estimation_metrics.py,sha256=X1ZCpp8m6DV14N2wbMvlRwfORRKga8DgKmG3dROyJqA,12351
124
+ pytcl/performance_evaluation/track_metrics.py,sha256=UuGapygdhHP22xkp-ep7k6icJgL3g0yazP5VIpe1e_8,13328
125
+ pytcl/physical_values/__init__.py,sha256=SGbg6b0d4dWebE3baW4OlJshL00grG5E4wABw6jxl20,44
126
+ pytcl/plotting/__init__.py,sha256=YtYnKYHL5lN6EaT_bwwR3h89NW0HSMToIWHhHBxcidY,3126
127
+ pytcl/plotting/coordinates.py,sha256=KFMUEkrTk5yJ6ZVH7gLaWD9-YQHoGdHzJnO8jgJVYxE,17002
128
+ pytcl/plotting/ellipses.py,sha256=bcns6dfNK4bwA_QBshscYhbAz_5wegwyqjDzzoUdWsQ,12465
129
+ pytcl/plotting/metrics.py,sha256=B-PTVPuZ2Rl8EtV53he8O1iYw6nWuw_gQ-qUUIX4V5Y,18050
130
+ pytcl/plotting/tracks.py,sha256=FsDpaWPsD5FCed6zUy_Kzhln4DEyfr7Kle_BfeDOrl8,22894
131
+ pytcl/scheduling/__init__.py,sha256=jTqMSKcsCrWU_Fh6WaT6BW5WatNHyyEYjFbsv6X18Oc,39
132
+ pytcl/static_estimation/__init__.py,sha256=sSEhqq35jq_MpRLnBtWjKXwGZ9dqIw71iwji-TNwXmc,2222
133
+ pytcl/static_estimation/least_squares.py,sha256=tZ10srMCvCWw1RwjJD6xtLxiN5XP7LIjOiBwJRf5v8M,13420
134
+ pytcl/static_estimation/maximum_likelihood.py,sha256=Y5kmef55FDIAEVY-Gc2eO7PUipcJGLhtGNEALTEtyh8,21581
135
+ pytcl/static_estimation/robust.py,sha256=egBLKWmo6d9PzP6LDh0J7ee4j6hYZh8kAb9TR5uC2so,18527
136
+ pytcl/terrain/__init__.py,sha256=e7plNQI5Y_jpZ24r82AgqdX0ChmmyYoeT7HReclnGXc,3228
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
144
+ pytcl/trackers/single_target.py,sha256=Yy3FwaNTArMWcaod-0HVeiioNV4xLWxNDn_7ZPVqQYs,6562
145
+ pytcl/transponders/__init__.py,sha256=5fL4u3lKCYgPLo5uFeuZbtRZkJPABntuKYGUvVgMMEI,41
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
@@ -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.1"
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
@@ -9,38 +9,48 @@ This module provides:
9
9
  - Data association algorithms (GNN, JPDA)
10
10
  """
11
11
 
12
- from pytcl.assignment_algorithms.data_association import AssociationResult
13
- from pytcl.assignment_algorithms.data_association import compute_association_cost
14
- from pytcl.assignment_algorithms.data_association import gated_gnn_association
15
- from pytcl.assignment_algorithms.data_association import gnn_association
16
- from pytcl.assignment_algorithms.data_association import nearest_neighbor
17
- from pytcl.assignment_algorithms.gating import chi2_gate_threshold
18
- from pytcl.assignment_algorithms.gating import compute_gate_volume
19
- from pytcl.assignment_algorithms.gating import ellipsoidal_gate
20
- from pytcl.assignment_algorithms.gating import gate_measurements
21
- from pytcl.assignment_algorithms.gating import mahalanobis_distance
22
- from pytcl.assignment_algorithms.gating import rectangular_gate
23
- from pytcl.assignment_algorithms.jpda import JPDAResult
24
- from pytcl.assignment_algorithms.jpda import JPDAUpdate
25
- from pytcl.assignment_algorithms.jpda import compute_likelihood_matrix
26
- from pytcl.assignment_algorithms.jpda import jpda
27
- from pytcl.assignment_algorithms.jpda import jpda_probabilities
28
- from pytcl.assignment_algorithms.jpda import jpda_update
29
- from pytcl.assignment_algorithms.three_dimensional import Assignment3DResult
30
- from pytcl.assignment_algorithms.three_dimensional import assign3d
31
- from pytcl.assignment_algorithms.three_dimensional import assign3d_auction
32
- from pytcl.assignment_algorithms.three_dimensional import assign3d_lagrangian
33
- from pytcl.assignment_algorithms.three_dimensional import decompose_to_2d
34
- from pytcl.assignment_algorithms.three_dimensional import greedy_3d
35
- from pytcl.assignment_algorithms.two_dimensional import AssignmentResult
36
- from pytcl.assignment_algorithms.two_dimensional import KBestResult
37
- from pytcl.assignment_algorithms.two_dimensional import assign2d
38
- from pytcl.assignment_algorithms.two_dimensional import auction
39
- from pytcl.assignment_algorithms.two_dimensional import hungarian
40
- from pytcl.assignment_algorithms.two_dimensional import kbest_assign2d
41
- from pytcl.assignment_algorithms.two_dimensional import linear_sum_assignment
42
- from pytcl.assignment_algorithms.two_dimensional import murty
43
- from pytcl.assignment_algorithms.two_dimensional import ranked_assignments
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
+ )
44
54
 
45
55
  __all__ = [
46
56
  # 2D Assignment
@@ -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
@@ -5,12 +5,14 @@ This module provides algorithms for solving 3D assignment problems,
5
5
  which arise in multi-sensor data fusion and multi-scan tracking.
6
6
  """
7
7
 
8
- from pytcl.assignment_algorithms.three_dimensional.assignment import Assignment3DResult
9
- from pytcl.assignment_algorithms.three_dimensional.assignment import assign3d
10
- from pytcl.assignment_algorithms.three_dimensional.assignment import assign3d_auction
11
- from pytcl.assignment_algorithms.three_dimensional.assignment import assign3d_lagrangian
12
- from pytcl.assignment_algorithms.three_dimensional.assignment import decompose_to_2d
13
- from pytcl.assignment_algorithms.three_dimensional.assignment import greedy_3d
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
+ )
14
16
 
15
17
  __all__ = [
16
18
  "Assignment3DResult",
@@ -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
 
@@ -6,15 +6,19 @@ the 2D assignment problem (bipartite matching), as well as k-best
6
6
  assignment algorithms for Multiple Hypothesis Tracking.
7
7
  """
8
8
 
9
- from pytcl.assignment_algorithms.two_dimensional.assignment import AssignmentResult
10
- from pytcl.assignment_algorithms.two_dimensional.assignment import assign2d
11
- from pytcl.assignment_algorithms.two_dimensional.assignment import auction
12
- from pytcl.assignment_algorithms.two_dimensional.assignment import hungarian
13
- from pytcl.assignment_algorithms.two_dimensional.assignment import linear_sum_assignment
14
- from pytcl.assignment_algorithms.two_dimensional.kbest import KBestResult
15
- from pytcl.assignment_algorithms.two_dimensional.kbest import kbest_assign2d
16
- from pytcl.assignment_algorithms.two_dimensional.kbest import murty
17
- from pytcl.assignment_algorithms.two_dimensional.kbest import ranked_assignments
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
+ )
18
22
 
19
23
  __all__ = [
20
24
  # 2D Assignment
@@ -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):