nrl-tracker 1.7.0__py3-none-any.whl → 1.7.3__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 (76) hide show
  1. {nrl_tracker-1.7.0.dist-info → nrl_tracker-1.7.3.dist-info}/METADATA +43 -3
  2. {nrl_tracker-1.7.0.dist-info → nrl_tracker-1.7.3.dist-info}/RECORD +76 -76
  3. pytcl/__init__.py +2 -2
  4. pytcl/assignment_algorithms/__init__.py +15 -15
  5. pytcl/assignment_algorithms/gating.py +10 -10
  6. pytcl/assignment_algorithms/jpda.py +40 -40
  7. pytcl/assignment_algorithms/nd_assignment.py +5 -4
  8. pytcl/assignment_algorithms/network_flow.py +18 -8
  9. pytcl/assignment_algorithms/three_dimensional/assignment.py +3 -3
  10. pytcl/astronomical/__init__.py +9 -9
  11. pytcl/astronomical/ephemerides.py +14 -11
  12. pytcl/astronomical/reference_frames.py +8 -4
  13. pytcl/astronomical/relativity.py +6 -5
  14. pytcl/astronomical/special_orbits.py +9 -13
  15. pytcl/atmosphere/__init__.py +6 -6
  16. pytcl/atmosphere/nrlmsise00.py +153 -152
  17. pytcl/clustering/dbscan.py +2 -2
  18. pytcl/clustering/gaussian_mixture.py +3 -3
  19. pytcl/clustering/hierarchical.py +15 -15
  20. pytcl/clustering/kmeans.py +4 -4
  21. pytcl/containers/base.py +3 -3
  22. pytcl/containers/cluster_set.py +12 -2
  23. pytcl/containers/covertree.py +5 -3
  24. pytcl/containers/rtree.py +1 -1
  25. pytcl/containers/vptree.py +4 -2
  26. pytcl/coordinate_systems/conversions/geodetic.py +31 -7
  27. pytcl/coordinate_systems/jacobians/jacobians.py +2 -2
  28. pytcl/coordinate_systems/projections/__init__.py +1 -1
  29. pytcl/coordinate_systems/projections/projections.py +2 -2
  30. pytcl/coordinate_systems/rotations/rotations.py +10 -6
  31. pytcl/core/validation.py +3 -3
  32. pytcl/dynamic_estimation/__init__.py +16 -16
  33. pytcl/dynamic_estimation/gaussian_sum_filter.py +20 -38
  34. pytcl/dynamic_estimation/imm.py +14 -14
  35. pytcl/dynamic_estimation/kalman/__init__.py +1 -1
  36. pytcl/dynamic_estimation/kalman/constrained.py +35 -23
  37. pytcl/dynamic_estimation/kalman/extended.py +8 -8
  38. pytcl/dynamic_estimation/kalman/h_infinity.py +2 -2
  39. pytcl/dynamic_estimation/kalman/square_root.py +8 -2
  40. pytcl/dynamic_estimation/kalman/sr_ukf.py +3 -3
  41. pytcl/dynamic_estimation/kalman/ud_filter.py +11 -5
  42. pytcl/dynamic_estimation/kalman/unscented.py +8 -6
  43. pytcl/dynamic_estimation/particle_filters/bootstrap.py +15 -15
  44. pytcl/dynamic_estimation/rbpf.py +36 -40
  45. pytcl/gravity/spherical_harmonics.py +3 -3
  46. pytcl/gravity/tides.py +6 -6
  47. pytcl/logging_config.py +3 -3
  48. pytcl/magnetism/emm.py +10 -3
  49. pytcl/magnetism/wmm.py +4 -4
  50. pytcl/mathematical_functions/combinatorics/combinatorics.py +5 -5
  51. pytcl/mathematical_functions/geometry/geometry.py +5 -5
  52. pytcl/mathematical_functions/numerical_integration/quadrature.py +6 -6
  53. pytcl/mathematical_functions/signal_processing/detection.py +24 -24
  54. pytcl/mathematical_functions/signal_processing/filters.py +14 -14
  55. pytcl/mathematical_functions/signal_processing/matched_filter.py +12 -12
  56. pytcl/mathematical_functions/special_functions/bessel.py +15 -3
  57. pytcl/mathematical_functions/special_functions/debye.py +5 -1
  58. pytcl/mathematical_functions/special_functions/error_functions.py +3 -1
  59. pytcl/mathematical_functions/special_functions/gamma_functions.py +4 -4
  60. pytcl/mathematical_functions/special_functions/hypergeometric.py +6 -4
  61. pytcl/mathematical_functions/transforms/fourier.py +8 -8
  62. pytcl/mathematical_functions/transforms/stft.py +12 -12
  63. pytcl/mathematical_functions/transforms/wavelets.py +9 -9
  64. pytcl/navigation/geodesy.py +3 -3
  65. pytcl/navigation/great_circle.py +5 -5
  66. pytcl/plotting/coordinates.py +7 -7
  67. pytcl/plotting/tracks.py +2 -2
  68. pytcl/static_estimation/maximum_likelihood.py +16 -14
  69. pytcl/static_estimation/robust.py +5 -5
  70. pytcl/terrain/loaders.py +5 -5
  71. pytcl/trackers/hypothesis.py +1 -1
  72. pytcl/trackers/mht.py +9 -9
  73. pytcl/trackers/multi_target.py +1 -1
  74. {nrl_tracker-1.7.0.dist-info → nrl_tracker-1.7.3.dist-info}/LICENSE +0 -0
  75. {nrl_tracker-1.7.0.dist-info → nrl_tracker-1.7.3.dist-info}/WHEEL +0 -0
  76. {nrl_tracker-1.7.0.dist-info → nrl_tracker-1.7.3.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 1.7.0
3
+ Version: 1.7.3
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
@@ -63,12 +63,13 @@ Requires-Dist: plotly>=5.15.0; extra == "visualization"
63
63
 
64
64
  # Tracker Component Library (Python)
65
65
 
66
- [![PyPI version](https://img.shields.io/badge/pypi-v1.7.0-blue.svg)](https://pypi.org/project/nrl-tracker/)
66
+ [![PyPI version](https://img.shields.io/badge/pypi-v1.7.2-blue.svg)](https://pypi.org/project/nrl-tracker/)
67
67
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
68
68
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
69
69
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
70
70
  [![Tests](https://img.shields.io/badge/tests-1988%20passing-success.svg)](https://github.com/nedonatelli/TCL)
71
71
  [![MATLAB Parity](https://img.shields.io/badge/MATLAB%20Parity-100%25-brightgreen.svg)](docs/gap_analysis.rst)
72
+ [![Type Checking](https://img.shields.io/badge/mypy--strict-passing-brightgreen.svg)](mypy.ini)
72
73
 
73
74
  A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
74
75
 
@@ -208,7 +209,46 @@ pytcl/
208
209
 
209
210
  - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
210
211
  - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
211
- - [Examples](examples/)
212
+ - [Examples](examples/) - 29 validated example scripts
213
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
214
+
215
+ ## Examples & Tutorials
216
+
217
+ The library includes 39 runnable code examples demonstrating all major features:
218
+
219
+ ### Examples (29 files in `/examples/`)
220
+
221
+ Comprehensive demonstrations of library functionality:
222
+ - **Tracking & Estimation**: Kalman filters, particle filters, smoothers
223
+ - **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
224
+ - **Coordinates**: Frame conversions, transformations, geodetic calculations
225
+ - **Dynamics**: State models, motion models, dynamic systems
226
+ - **Filtering**: Uncertainty visualization, multi-target tracking
227
+ - **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
228
+ - **Navigation**: INS/GNSS integration, geophysical modeling
229
+ - **Signal Processing**: Detection, filtering, transforms
230
+ - **Terrain & Atmosphere**: Elevation models, atmospheric properties
231
+
232
+ **Status**: ✅ All 29 examples validated and passing (100% execution success)
233
+
234
+ ### Tutorials (10 modules in `/docs/tutorials/`)
235
+
236
+ Interactive learning modules with visualizations:
237
+ - Assignment algorithms and 3D assignment problems
238
+ - Atmospheric and geophysical models
239
+ - Dynamical systems and reference frames
240
+ - Filtering and smoothing techniques
241
+ - Sensor fusion and advanced filtering
242
+ - Special functions and mathematical tools
243
+
244
+ **Status**: ✅ All 10 tutorials validated and passing (100% execution success)
245
+
246
+ ## Documentation
247
+
248
+ - [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
249
+ - [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
250
+ - [Examples](examples/) - 29 validated example scripts
251
+ - [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
212
252
 
213
253
  ## Comparison with Original MATLAB Library
214
254
 
@@ -1,77 +1,77 @@
1
- pytcl/__init__.py,sha256=MzvSIKPmRaoieVDhHJbYHqNeZpQbRSj8sVclDiW8wbY,1893
2
- pytcl/logging_config.py,sha256=j7Zrkal5LwUIos-_Dm3cGKUR-jMkFdSZZikJTtzTeoE,8883
3
- pytcl/assignment_algorithms/__init__.py,sha256=XI5qIP4CWqf3SyVA2RIXcJC5pp6_BKd60GZAduDheg8,2976
1
+ pytcl/__init__.py,sha256=s_y3eu2pkBOeSMnuW-8pK_WWDTmGHnGx7hl-PJ5R3q8,1917
2
+ pytcl/logging_config.py,sha256=UJaYufQgNuIjpsOMTPo3ewz1XCHPk8a08jTHyP7uoI4,8956
3
+ pytcl/assignment_algorithms/__init__.py,sha256=kUWhmyLhZcs5GiUQA5_v7KA3qETGsvqV6wU8r7paO-k,2976
4
4
  pytcl/assignment_algorithms/data_association.py,sha256=tsRxWJZk9aAPmE99BKXGouEpFfZrjPjb4HXvgxFUHhU,11405
5
- pytcl/assignment_algorithms/gating.py,sha256=fN_oAOkv7nYYOWE1oPOLrcCn3xEpKdMVlFSbRMAURxY,10815
6
- pytcl/assignment_algorithms/jpda.py,sha256=Hv55j3J9qVwzlUfWdXdSasodTyB1ZKdgEpo5dBh95O8,19582
7
- pytcl/assignment_algorithms/nd_assignment.py,sha256=dqsvV1tSIlpVlVzhxCD_KOQBwYn63zgXEPpXxr3hLO0,11328
8
- pytcl/assignment_algorithms/network_flow.py,sha256=nfghUOk1c1i0j43nYsKQwLfPwrYuuhJ4nOVvuWunoRw,10162
5
+ pytcl/assignment_algorithms/gating.py,sha256=AXWn-F_EOGI6qrBc4PN5eFM-ZZGu1WOMi5b5ZsxValU,10910
6
+ pytcl/assignment_algorithms/jpda.py,sha256=8-HoO2VygxJ8FFSCCOIOfbhMAn87jU7PqVvd7lQ3GEY,19797
7
+ pytcl/assignment_algorithms/nd_assignment.py,sha256=RBRoXoJnUY0lB9Vb_dwvQtwh6oI31KfeDqpaNrTNXzk,11344
8
+ pytcl/assignment_algorithms/network_flow.py,sha256=tmNOHdrRfo30T8UXZ0A_icDdVDgQCShdbXEt9HY0p1w,10325
9
9
  pytcl/assignment_algorithms/three_dimensional/__init__.py,sha256=1Q40OUlUQoo7YKEucwdrSNo3D4A0Zibvkr8z4TpueBg,526
10
- pytcl/assignment_algorithms/three_dimensional/assignment.py,sha256=9BJhwlYu3JJ0kZ9sRyKKfpdvQdL4WYYHCtLbvaWycBw,19212
10
+ pytcl/assignment_algorithms/three_dimensional/assignment.py,sha256=OGcjg3Yr1tYriWYBJ5k6jiRMpOHDISK8FJDY0nTQxxw,19244
11
11
  pytcl/assignment_algorithms/two_dimensional/__init__.py,sha256=4Evsn__9hTfI2i8m8Ngl-Zy0Fa2OydKmDKlZlH6jaao,778
12
12
  pytcl/assignment_algorithms/two_dimensional/assignment.py,sha256=eh87MBb-uiUSI1MXj4HrreRKB6Z8rxAyDkNQ8-u4SbM,11848
13
13
  pytcl/assignment_algorithms/two_dimensional/kbest.py,sha256=yiTToLuP7xWxQlQ8E-fpgXg-5iu0nnXcJXStjUB0nOE,17284
14
- pytcl/astronomical/__init__.py,sha256=12uVzUd9lRSb_o47pdJa0xUuYvI0Ipnrw2Y2-nJbgvY,9737
15
- pytcl/astronomical/ephemerides.py,sha256=x2500S0rF1D2h0dMR_2BnZaChbBZTooHLdrevttxlAc,16471
14
+ pytcl/astronomical/__init__.py,sha256=v0nUgEy5ReHXzpNb1JdwWXv4AtcFksotEOccQnOyVfI,9667
15
+ pytcl/astronomical/ephemerides.py,sha256=nQSbcipQ_IhPv1R-Q0-iPlfTCb4x2KdfVjwc0c_YeeE,16705
16
16
  pytcl/astronomical/lambert.py,sha256=Lc8FT1JmpI9WSXsG2s5vIRkSoBSV7r5hd3o2bGh2Ojo,15607
17
17
  pytcl/astronomical/orbital_mechanics.py,sha256=8GssRanwTowCl6PJYqmB_SDnNznLUq5gkPa3j6iEo3U,19965
18
- pytcl/astronomical/reference_frames.py,sha256=oZkU3i_6dy6UUsx0iVyBkevO24Mexk-dvcBkDTx28aI,35509
19
- pytcl/astronomical/relativity.py,sha256=YPsXLD-VRh-nqs1laC-wKpRO00fflm4GkyLhojPydbo,15441
18
+ pytcl/astronomical/reference_frames.py,sha256=MBqprzBpEvdq3ngRL-_pp-Vnj7AqbuXhjUfGQ98znfc,35616
19
+ pytcl/astronomical/relativity.py,sha256=deuzBIINS4HimCwNU0_mzlHiB2nJ3AW8PnqtpzTw5_I,15534
20
20
  pytcl/astronomical/sgp4.py,sha256=iNZrqMRUzR-LFeZiluzlNmkwxeYbIyF2F1cygyeEZVE,21546
21
- pytcl/astronomical/special_orbits.py,sha256=WccNjezmjPkL1f-Wn1ugHZTm37RrdRWIJAG3P-v8lao,12745
21
+ pytcl/astronomical/special_orbits.py,sha256=N54c_wAD7XKk_diDOw2QjUSkmYECMyWQDq2P6EeEBEI,12745
22
22
  pytcl/astronomical/time_systems.py,sha256=Jg0Zaq60hc4Ts1aQtb5bK4KSZhz-uQse8gYC89Y0-TA,15243
23
23
  pytcl/astronomical/tle.py,sha256=t3e2-0f3Wiz77q-pC2jfpohkrDfoYOEHacpNgWMNLAk,14638
24
- pytcl/atmosphere/__init__.py,sha256=uotCJzu_5W1XlIfQmRAVdx368HG9TU7-kZQrNCPi4u0,1685
24
+ pytcl/atmosphere/__init__.py,sha256=Joa6PBEfKun0Moii6BOzyVYG8AOFyvucKdVuY62ArQc,1685
25
25
  pytcl/atmosphere/ionosphere.py,sha256=1qC3hY-27pD0XcLBjU735deKYmmi6qnj2fDG1zNbTqg,14681
26
26
  pytcl/atmosphere/models.py,sha256=pMLv8D7qoFqLZrlbTHLJJULOdDdhPskJ1m7KVKLV63E,9584
27
- pytcl/atmosphere/nrlmsise00.py,sha256=PYMb6negGr6IFk2-CFoq6KpvcSpPAHYXr8Q154JrA1U,26966
27
+ pytcl/atmosphere/nrlmsise00.py,sha256=jcmAC00G3X0CzfK4eWkvq2tPxHXzMqC8GBHNbFZRq4w,25868
28
28
  pytcl/clustering/__init__.py,sha256=bYdhC_XJEt6KUUni9bIPxaddXNEGmIJQvGkA14rK4J8,1697
29
- pytcl/clustering/dbscan.py,sha256=PS6QlOwHFerbZNEb3zcNhN4oNQpgOOw5y0WskQzyKIo,7364
30
- pytcl/clustering/gaussian_mixture.py,sha256=U5U0Z46tZWdTLNdNNNJenoeviwZRAOvexVFYVLt4QMc,22865
31
- pytcl/clustering/hierarchical.py,sha256=Hw9BFCn5df_ATpJX63R3B31MHz27ztCw9ihMDIlI688,14202
32
- pytcl/clustering/kmeans.py,sha256=250FQyDol5S_Y4TznNn9cEuE96UDp7wvEkPZJ1DLul8,10697
29
+ pytcl/clustering/dbscan.py,sha256=WgzYz_f5nDh0T1RPClX9b3xSvFPmLxY6QaI2NCtxJg4,7389
30
+ pytcl/clustering/gaussian_mixture.py,sha256=UAI2_WG2RASA0N2PIZ0EZgqYZ3yly7oJBSJWSJnm_bE,22904
31
+ pytcl/clustering/hierarchical.py,sha256=K7z6bZR4QSDMva9kaqEOjdktl8unMK1wyCJm3cFN8pQ,14292
32
+ pytcl/clustering/kmeans.py,sha256=GNvgaGP53LKr4-fh-UajxbjCi0jWCCLJba23EGcQq4I,10712
33
33
  pytcl/containers/__init__.py,sha256=jZAZb0VUft5gjQghfg2S9PD-LsA5xgtXkc0mAS_Gnmk,2428
34
- pytcl/containers/base.py,sha256=h3h5mJfSn8yTy1waFZRUxJQ9eHQ5npbimadFbFZuuV4,5520
35
- pytcl/containers/cluster_set.py,sha256=y36D5TNzvCN6xjg6taP2SD_MC-O5iLq9ncBlHsQ5IBs,22723
36
- pytcl/containers/covertree.py,sha256=ePIqH1-0CxSFqCwmQ_G6MXPlXs4xH0gsmoZXF8QxhDk,13271
34
+ pytcl/containers/base.py,sha256=UL-RXobVlZCZ5H3Xdo_TzcJQANNsIVQeynKHhLGxRVE,5545
35
+ pytcl/containers/cluster_set.py,sha256=uhfOIpXlYoI1U75TWcLMHjezVavnIZhVEGQHKCDmKo4,22774
36
+ pytcl/containers/covertree.py,sha256=SKiosZnJ9bvAaANDKQSbDUqL2BnIno-1D8TbOWDM3m0,13337
37
37
  pytcl/containers/kd_tree.py,sha256=9CKHAzid0DZ879hut8M4dyW_976pIWNLX3uWzELPIu4,18563
38
38
  pytcl/containers/measurement_set.py,sha256=87AbdoZIUspn1yJsiMpyQ5LoEVcerUnXefXGGPtFTJg,12654
39
- pytcl/containers/rtree.py,sha256=Ss1ks6xlLnNeRlKpHoWxMcgQTPhVwjT5agMeq5DaH5A,21844
39
+ pytcl/containers/rtree.py,sha256=SGlnEG6q670qxO9P_jDT7yocjYmdal8f22SvEXdvw9E,21857
40
40
  pytcl/containers/track_list.py,sha256=6q9Qgcwm-8H_JqtOCsMssF27av4XaSkhfDl-MWb1ABc,12520
41
- pytcl/containers/vptree.py,sha256=4tUq0ktafusU1PILZkQxi27CZryKlsHtFbym-vZYQWk,8747
41
+ pytcl/containers/vptree.py,sha256=eFBX2-sm_lgqON18uM4MEk4I4_sRgoPla29cTJFy_Xo,8800
42
42
  pytcl/coordinate_systems/__init__.py,sha256=jwYhu_-9AvOeP9WLG9PYtyDwfe0GjxNZ9-xCqiLymW4,3909
43
43
  pytcl/coordinate_systems/conversions/__init__.py,sha256=PkNevB78vBw0BkalydJBbQO91AyiMJxKRrgJNt4HsYc,1100
44
- pytcl/coordinate_systems/conversions/geodetic.py,sha256=Ieacxtco_wQkXeHjI6gMc_B3_gIoaNq440w4WgLbTIY,23172
44
+ pytcl/coordinate_systems/conversions/geodetic.py,sha256=rRRf4MWBkGj3VTN1WRW3lrlw4Yf9a4HH3UCgNOGjbJ0,23460
45
45
  pytcl/coordinate_systems/conversions/spherical.py,sha256=q7k9l5mJbVzVdNj9Gcq4ibFxax8z_mVpJfITRBzx630,10812
46
46
  pytcl/coordinate_systems/jacobians/__init__.py,sha256=CRGB8GzvGT_sr4Ynm51S7gSX8grqt1pO1Pq1MWmHPTs,890
47
- pytcl/coordinate_systems/jacobians/jacobians.py,sha256=1KufIoktm9mXLO34X9KjysdMpu7itGwfssRyAdkTTN8,11703
48
- pytcl/coordinate_systems/projections/__init__.py,sha256=eWNtezPO62IUWxv7jymenIXsWS1MC66Q12u5KRUnqNE,2503
49
- pytcl/coordinate_systems/projections/projections.py,sha256=yODS7n1gA4jsCJcU8EaeclHrbUBsZI9O2M_XJs2HOXs,33169
47
+ pytcl/coordinate_systems/jacobians/jacobians.py,sha256=0gpbelZPN4HDtvS1ymc3RIhOfxCVTKpRc-jDJXdM6pQ,11747
48
+ pytcl/coordinate_systems/projections/__init__.py,sha256=TmBiffO5cmazAhsfPIVBaaqnravVSO3JxjGb0MXkucc,2404
49
+ pytcl/coordinate_systems/projections/projections.py,sha256=y_kwcu_zp0HHiKR-wp3v3AvRcY61bleDi1SxwbrnWB0,33179
50
50
  pytcl/coordinate_systems/rotations/__init__.py,sha256=nqAz4iJd2hEOX_r7Tz4cE524sShyxdbtcQ5m56RrDLg,1047
51
- pytcl/coordinate_systems/rotations/rotations.py,sha256=FAYHkShQcpOlWJjtvLfNvtCx-a56pr-cbpo0QjC5W9U,18227
51
+ pytcl/coordinate_systems/rotations/rotations.py,sha256=2KK6Lgpfmjac3qfOMvHku_BcwGOgkRC13BZbSCUvfwQ,18314
52
52
  pytcl/core/__init__.py,sha256=3GFQX_Q9f7fhmWlA6OQiS6OpM7HWhyT9iQhB8Mhi_kk,1580
53
53
  pytcl/core/array_utils.py,sha256=SsgEiAoRCWxAVKq1aa5-nPdOi-2AB6XNObu0IaGClUk,13983
54
54
  pytcl/core/constants.py,sha256=lZVDK5zsSR02_4b2Nqx9KDtZT9QaYhkZ9wuoODbifd4,8693
55
- pytcl/core/validation.py,sha256=nUmG8UmUk85dQ4CxJRipACb8zjsrAJPiyK8ADZN_KvU,23426
56
- pytcl/dynamic_estimation/__init__.py,sha256=JUirqRsnswY8Ge6MVZOuqLseOI5JGRwA6H8RRdgTV4U,5191
57
- pytcl/dynamic_estimation/gaussian_sum_filter.py,sha256=z9DiKtafQriDXnmkXhT4QHmpEArzTZ6psiFi5tU5DGM,13654
58
- pytcl/dynamic_estimation/imm.py,sha256=IbKmouUiyzaYJbhWty63r3n_xV8thD-wd0qgZP1SxOI,22067
55
+ pytcl/core/validation.py,sha256=9Pjn2wOYmGLJDSA8eS2aGTCGO16o5l2xioOHamNXuIg,23441
56
+ pytcl/dynamic_estimation/__init__.py,sha256=zxmkZIXVfHPv5AHYpQV5nwsI0PA3m-Vw7W0gkJE7j98,5191
57
+ pytcl/dynamic_estimation/gaussian_sum_filter.py,sha256=rxUy_WapTL_pkGimD01DqYE7fElLS_DljnX2yg95Uts,13620
58
+ pytcl/dynamic_estimation/imm.py,sha256=RLSFPTMDsudxSf9Mh6Q5qD852tq9lRoCTvFCGphezhs,22152
59
59
  pytcl/dynamic_estimation/information_filter.py,sha256=x7iQwO_iJT1dCSvDws5LqD3yAtjw9QVGUfMPcXn1IA4,17349
60
- pytcl/dynamic_estimation/rbpf.py,sha256=jerIkfIvOLWtlFnHyS5KxI5X4RpAVTdWENaIIXg3WTU,17595
60
+ pytcl/dynamic_estimation/rbpf.py,sha256=CaKSD2TC1sxICnHuN1W2v2S7P-Kxi4lxdy4KRq2We3w,17898
61
61
  pytcl/dynamic_estimation/smoothers.py,sha256=x2j-nR--EI5JNZvMywPeDHcrfW8b5PYK0DCU4Rmig_g,18914
62
62
  pytcl/dynamic_estimation/batch_estimation/__init__.py,sha256=JQ0s76Enov5a7plA4EnUua4t-7etikQrwr5z4WIjUeo,46
63
- pytcl/dynamic_estimation/kalman/__init__.py,sha256=rmMP6gLgfFdge5S6LSLhFZe2MeAk9FFtDQrQdzHjvtM,3163
64
- pytcl/dynamic_estimation/kalman/constrained.py,sha256=cZpqMrCkp6fB3al16_zw7kv4P6Th6a9mUin1322oYMk,10652
65
- pytcl/dynamic_estimation/kalman/extended.py,sha256=51uhCqkZmErCx6MBfMq8eIQW8bD7n34zCe4v4dxNiMQ,10384
66
- pytcl/dynamic_estimation/kalman/h_infinity.py,sha256=RRqv-kMkDeyeke_gHs_XDmUid97JNC4y3SxaO5q6ctA,16512
63
+ pytcl/dynamic_estimation/kalman/__init__.py,sha256=lR-OacfZ5mqnAboEbOel5w_WS_Gmz-1q0l4meKfQsGs,3163
64
+ pytcl/dynamic_estimation/kalman/constrained.py,sha256=Zidzz6_9OvwUyQppEltdmYTMvEeqRKFRkVMwx1TASuw,10960
65
+ pytcl/dynamic_estimation/kalman/extended.py,sha256=fxi2-oq8qxnxZqPmjB8-Am03z6_F_R90wwFcOIEk_dg,10459
66
+ pytcl/dynamic_estimation/kalman/h_infinity.py,sha256=rtbYiryJbxzko-CIdNJSHuWXU2wI9T52YGBYq3o92sE,16563
67
67
  pytcl/dynamic_estimation/kalman/linear.py,sha256=1Zgg9gZya0Vxs9im7sPUqLj0Luo463vS-RSa6GCReFI,12248
68
- pytcl/dynamic_estimation/kalman/square_root.py,sha256=N7-lDml7Nw5HM5b5D11WOwG7rY1JlVoyis0ho-vk0H4,13345
69
- pytcl/dynamic_estimation/kalman/sr_ukf.py,sha256=LeRGBSDpvSP9CyTZjEroz2Z2uueb6YpmzYricba0PDk,8640
70
- pytcl/dynamic_estimation/kalman/ud_filter.py,sha256=fzSdcVO_P8-E2oXc32n79Rn56GI2VUmOoMDYBHw7keM,10077
71
- pytcl/dynamic_estimation/kalman/unscented.py,sha256=RDK6USkko9lj1K4-WYydh3_8GMZNng_PJVjfc-c_OwM,15427
68
+ pytcl/dynamic_estimation/kalman/square_root.py,sha256=pDEDstYIQht5e7ahD6x13UfSVIUWMe4jRR4z6j687vw,13457
69
+ pytcl/dynamic_estimation/kalman/sr_ukf.py,sha256=xlKRML6QOHD99P-urIeBZsBDc_DY1_U73W3eDkiqRRY,8737
70
+ pytcl/dynamic_estimation/kalman/ud_filter.py,sha256=j56gw-piKJaMtoHWRkr2MiBjOC9tGSguIgFregOMJOs,10269
71
+ pytcl/dynamic_estimation/kalman/unscented.py,sha256=G3Ks6fa_Z-MxUdOEiiHqQ1wYJzOgfuipiP32at6Mv8o,15505
72
72
  pytcl/dynamic_estimation/measurement_update/__init__.py,sha256=8rlyJwVpxf0fZj-AFo1hlewvryZRhUzcy3F8uMe6I8c,48
73
73
  pytcl/dynamic_estimation/particle_filters/__init__.py,sha256=-DRF5rVF2749suLlArmkTvVkqeMcV_mIx0eLeTj6wNU,906
74
- pytcl/dynamic_estimation/particle_filters/bootstrap.py,sha256=FcF4W_NM5ZqJnw5fq4rq6fLY9X1r4uFJOiAX9a-NGG8,13371
74
+ pytcl/dynamic_estimation/particle_filters/bootstrap.py,sha256=6KSLZROxfrldExpDL1GaGhd75IXO5KA8iC-kmhuUBkg,13531
75
75
  pytcl/dynamic_models/__init__.py,sha256=Cd8MyyYuB8gMnepkPA-HSwTaKFPThnqoKOhdjVOsXWg,2783
76
76
  pytcl/dynamic_models/continuous_time/__init__.py,sha256=dAkfEddLkfMvDalK9v2GRBvaZV1KgqYpFBLOnoiFClw,1023
77
77
  pytcl/dynamic_models/continuous_time/dynamics.py,sha256=CDwqn-66eUwXA5xfIjaG6A4EDBqtOyQ3aWarJr9QH4g,12858
@@ -87,50 +87,50 @@ pytcl/gravity/__init__.py,sha256=5xNdQSrrkt7-1-JPOYqR38CqvNJ7qKlPyMK36DGm6-I,369
87
87
  pytcl/gravity/clenshaw.py,sha256=1BdxzU8IfGGd68H_U35soIJkiOHphY35e9mLElhPTOg,15364
88
88
  pytcl/gravity/egm.py,sha256=47I8nyXNhXUKPkufXahs4JGsBcqhM-9z2xGz0X4JPmU,18422
89
89
  pytcl/gravity/models.py,sha256=rdY3Do4M1eRFO74gu3xy-bBn7tox3zM49wYbfnsIQWw,11159
90
- pytcl/gravity/spherical_harmonics.py,sha256=IpBh0LW4BQMzJck9Li6yveGlvYigCuXaoApRWDPsWtc,16498
91
- pytcl/gravity/tides.py,sha256=hef_BGewFGD7dJwg0t09Z6tfWLco_avATLuu66rnTpI,27733
90
+ pytcl/gravity/spherical_harmonics.py,sha256=FV_cFp0lx6uGw-dxNFRpehaAn28QImX9z7PFdyRbEJI,16549
91
+ pytcl/gravity/tides.py,sha256=nu9_L12aBd2EpmTMh3UulmYCUxQ9wC4kOpdSIn7f0Z8,27785
92
92
  pytcl/magnetism/__init__.py,sha256=pBASOzCPHNnYqUH_XDEblhGtjz50vY9uW2KS25A0zQQ,2701
93
- pytcl/magnetism/emm.py,sha256=5Jwl99wvdKYtx1-3LBB7x-w5KT-fqLiRg7uBW0Ai_Gw,22292
93
+ pytcl/magnetism/emm.py,sha256=iIdxSL0uGGIf8nfA-c_SmHvg9_J7HwRA2-qbQIUW6IE,22380
94
94
  pytcl/magnetism/igrf.py,sha256=3g0PsH8IdbwQQS28OR5XWD-g-QxvfUva7jOkKToxndQ,13384
95
- pytcl/magnetism/wmm.py,sha256=q7AJrpOrn1EBbWNjltPxhGEwg3P44ay1pc4dI5OIyUY,23444
95
+ pytcl/magnetism/wmm.py,sha256=7YsxnBmxeH5WnTTZ3VE91gr55Qq-OvVmBRAMbqlhGVg,23479
96
96
  pytcl/mathematical_functions/__init__.py,sha256=zeJ1ffRRl83k2NHn3HTn-fgtFoWNPq6LCALc3xRo4Do,3767
97
97
  pytcl/mathematical_functions/basic_matrix/__init__.py,sha256=kZv3kMAEHBdVxhbyMxTyM0s-4XJP1tK6po82UsIE4tc,1318
98
98
  pytcl/mathematical_functions/basic_matrix/decompositions.py,sha256=PWJsFDiXM2T78RHdxBJZPFnl8kFbNZQpHrbpw0mhE00,12268
99
99
  pytcl/mathematical_functions/basic_matrix/special_matrices.py,sha256=kOozwP2CHAj4qyO7Z9ct6GwDMkmHkk1bQa0e9G98FgA,13499
100
100
  pytcl/mathematical_functions/combinatorics/__init__.py,sha256=byuHI0WkxOkQF8egrfjEr-awB2visWDXlGMnDux5IBg,1043
101
- pytcl/mathematical_functions/combinatorics/combinatorics.py,sha256=3EgkWdBqQ9e6JU34bec9EeCEmB-46tUSXXTAJrckSO4,12314
101
+ pytcl/mathematical_functions/combinatorics/combinatorics.py,sha256=LzVxY3E5_pnpVl9XlcRdQjWhSSY8Fa1JUVYA6J25fro,12354
102
102
  pytcl/mathematical_functions/continuous_optimization/__init__.py,sha256=lck60eeCUOsRpEzPHBY3kiLKwNz_fhmYoUGP3lTmTwk,55
103
103
  pytcl/mathematical_functions/geometry/__init__.py,sha256=DhCmux9-6zxYRzlhQ9du18kvUL-leiiZwdd3Cmb5WX0,1092
104
- pytcl/mathematical_functions/geometry/geometry.py,sha256=l63wQnhCtJwVHZOJeONX1qyJ5Sedji8etgxwJCFtH8Y,16403
104
+ pytcl/mathematical_functions/geometry/geometry.py,sha256=iLKqTlLEGm8IScEDHEWOBQz5xfj-fflzIOzZaJ8fPtE,16522
105
105
  pytcl/mathematical_functions/interpolation/__init__.py,sha256=lK4Rs0Ds_fzf9q0n6id5epdN0U8V7yD87dS-w1hvN8I,741
106
106
  pytcl/mathematical_functions/interpolation/interpolation.py,sha256=2cXMDgWBjWDGHnK1K_lawFlJL8oPl5AQGf9MNgsESfo,12610
107
107
  pytcl/mathematical_functions/numerical_integration/__init__.py,sha256=iXiHzyV_KIhCv7tXErXlN1_fUEACN6yN3CYDHRA7esw,974
108
- pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=ZRMKs0vbcgFDe1Sr8sjyEOkALLmJU4zKRJjoPEcXrUc,15670
108
+ pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=3MwNCjdMfopgtJjXWxn-q9VyawI1IArkNBXqa_kRMj4,15716
109
109
  pytcl/mathematical_functions/polynomials/__init__.py,sha256=WJWZcoQhnvy5f59-kncMTgD9mCtgwfDgULvDYYHS5ys,43
110
110
  pytcl/mathematical_functions/signal_processing/__init__.py,sha256=_SzzBVtxmSvP8FKeogRdNmFo8FOVDDoexVOqd-lE7do,2325
111
- pytcl/mathematical_functions/signal_processing/detection.py,sha256=9F0xdy3hMat1czSWAQYMExn0kY5DBRpyBneAfjjHUVI,30377
112
- pytcl/mathematical_functions/signal_processing/filters.py,sha256=8Ojf4h4rfiucBXqUmB1odvHH41Gf3rPwmWCMKb-qzWk,23435
113
- pytcl/mathematical_functions/signal_processing/matched_filter.py,sha256=AahJZRZk2IIXzRL7www0n8bc0XoKabaLOe8yYNSjuDY,22893
111
+ pytcl/mathematical_functions/signal_processing/detection.py,sha256=1Uok0p82t2zB7BWZB6GEkUCwuoM3WB8SRykTrVRdsIo,30612
112
+ pytcl/mathematical_functions/signal_processing/filters.py,sha256=xiB8VSFqTFkBCAom0yIWw7pK3Zjm6l-VZ_DAtwJMxFA,23676
113
+ pytcl/mathematical_functions/signal_processing/matched_filter.py,sha256=El7XcUbunmXA7s-btXX_R4fgNx8d6QNa86GJETg4zAQ,23134
114
114
  pytcl/mathematical_functions/special_functions/__init__.py,sha256=AJBCKj32daQxdahUQckW0bWowzOoapxni2eZnVXERdg,3859
115
- pytcl/mathematical_functions/special_functions/bessel.py,sha256=M0mwLQBaUXEHA8wyKReJ2D66I1v1XR7y-txAipd-WDs,14377
116
- pytcl/mathematical_functions/special_functions/debye.py,sha256=5u-2KIQniwoVlqGSQguYhO7RcFQXtvY0aetiDiMYtQ0,9576
115
+ pytcl/mathematical_functions/special_functions/bessel.py,sha256=Xe62y2vrDwdJy3fR4U8_e8TAgisXIWJ94J7wu_xk0kI,14603
116
+ pytcl/mathematical_functions/special_functions/debye.py,sha256=eH7Y5qq5j-AMKKx7y8uMS_l_pb6z9_3SG6Igvnc1Fdg,9626
117
117
  pytcl/mathematical_functions/special_functions/elliptic.py,sha256=WyzBkrfZufIR5dUmCKGcxp6KNpVDrU89NGLDyRrZOqQ,7418
118
- pytcl/mathematical_functions/special_functions/error_functions.py,sha256=a3SS8FYAMRv1KdCmebOZL95yjvVt9gZRF2XOjHvQ9M8,6253
119
- pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=xXN_9SCokH10HjE8PpaPKHYVK_RZRHRAbZgR2mZYIAA,10191
120
- pytcl/mathematical_functions/special_functions/hypergeometric.py,sha256=5C4dXv3XxjyeGGVH-0i22NSLbAqkcPTR3kZ2J_GTles,11364
118
+ pytcl/mathematical_functions/special_functions/error_functions.py,sha256=24-XRcAW-KF6ixEU5V7iB7brD8UVPPQ0b4Zz8gscRdw,6321
119
+ pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=XB7NHVgKzOEVKpUScqvG3L220bvwIRuUnm_ayO7lJRk,10243
120
+ pytcl/mathematical_functions/special_functions/hypergeometric.py,sha256=mCBf5NPl0mOkwvIwAUp-sbXshin5HyGsdqEeGbYt3wQ,11428
121
121
  pytcl/mathematical_functions/special_functions/lambert_w.py,sha256=ivRc4KH5Lwoxb_yijrJEwG0ITa0hhcYF7_gCfVBBNW4,6855
122
122
  pytcl/mathematical_functions/special_functions/marcum_q.py,sha256=OZ5QjIB1e_XvRG8A-3dbZ13YXHtdk2EYVEPaqtgVr14,9580
123
123
  pytcl/mathematical_functions/statistics/__init__.py,sha256=dfypStgmnFmOrnWcm-3CEvLinONHraFgx9O66_37bqw,1278
124
124
  pytcl/mathematical_functions/statistics/distributions.py,sha256=icfFIIKCEFzkpFHuYGWL197nm8wvS7UPJlr9kd_uEgw,19373
125
125
  pytcl/mathematical_functions/statistics/estimators.py,sha256=TLnYXSwk5MzBakZrzDBupbOB3ONmJI7q1-oB2xuSVQM,10831
126
126
  pytcl/mathematical_functions/transforms/__init__.py,sha256=SPXSKHjqR6B_8pvgtbtOnEiCpU-u0JF2s7hAlhb0BbI,2343
127
- pytcl/mathematical_functions/transforms/fourier.py,sha256=QH6OaTzw4kN6M-DuSmwB_5b-wu_4yP5I2CUmNEyLORM,20737
128
- pytcl/mathematical_functions/transforms/stft.py,sha256=zQapXl-v69_RDPwMqci83jah17GyAfnr3gx0budv2Cg,18619
129
- pytcl/mathematical_functions/transforms/wavelets.py,sha256=dm273Z_t13BlEVSlHTaGE7jR1ocugL7lEkcO499U7bY,21656
127
+ pytcl/mathematical_functions/transforms/fourier.py,sha256=yD1CcH7sdPlrOmBgL7JoMiPNgN8ee7bTwvblgRRf7l4,20823
128
+ pytcl/mathematical_functions/transforms/stft.py,sha256=olDzNH02Nta5GoeEdsdX1tTVKODr6OxLEYt_h3ZtMgA,18878
129
+ pytcl/mathematical_functions/transforms/wavelets.py,sha256=g7ra-uk-HnQmJRCj1VvJuuz8t8FW55kCENUkx0vPrP4,21807
130
130
  pytcl/misc/__init__.py,sha256=SCHf_lQVfdl2gwUluHBiIloTF8HRH8EkgYfbNr7zOug,33
131
131
  pytcl/navigation/__init__.py,sha256=k1_x_FnnPrIzGeNu7zejPtPubIhweBgCfwqlZJEMw0I,6042
132
- pytcl/navigation/geodesy.py,sha256=KXRQqOrJGbxWQ4yrZI9jfMDvaoUx_4RL8mTWUHhBJX0,19694
133
- pytcl/navigation/great_circle.py,sha256=y5YHBie21j1a1ac7OziEgg_jgUT1FpltgkTA5AGFGsk,23251
132
+ pytcl/navigation/geodesy.py,sha256=zrpFhPFLr3N1byeE1pxXh-SmPixjuuoGK3_izEnAAdw,19719
133
+ pytcl/navigation/great_circle.py,sha256=u8iqMV6RNsAyzATzjJU11QFGA2pGEaiFJRakQwxTTs0,23326
134
134
  pytcl/navigation/ins.py,sha256=OIi8_RjrgEYl0MFpJEFMjIlpgX8DYGTEhdLEvqG-ABU,31151
135
135
  pytcl/navigation/ins_gnss.py,sha256=euKF5JGgwmVBsw3jBf7_wa2z1BpZeVbSNmBuwzhGS6c,30157
136
136
  pytcl/navigation/rhumb.py,sha256=lr1c3iEXfoOSfIyyXSRWv6He5TlaxEHbJy-dhqM1gRw,18224
@@ -139,27 +139,27 @@ pytcl/performance_evaluation/estimation_metrics.py,sha256=X1ZCpp8m6DV14N2wbMvlRw
139
139
  pytcl/performance_evaluation/track_metrics.py,sha256=Nd3royJkAelZV-Qggl8i72e7WocCxWomgliArvVAEkc,13342
140
140
  pytcl/physical_values/__init__.py,sha256=SGbg6b0d4dWebE3baW4OlJshL00grG5E4wABw6jxl20,44
141
141
  pytcl/plotting/__init__.py,sha256=YtYnKYHL5lN6EaT_bwwR3h89NW0HSMToIWHhHBxcidY,3126
142
- pytcl/plotting/coordinates.py,sha256=h39H855Qjqtcly62m09demaOFpfMs_8EF_nXhoLBSBs,17198
142
+ pytcl/plotting/coordinates.py,sha256=lTNBwlq_4hnQx_w6RIX6X35Ke3YMFvqV_huJrcFCvNs,17362
143
143
  pytcl/plotting/ellipses.py,sha256=bcns6dfNK4bwA_QBshscYhbAz_5wegwyqjDzzoUdWsQ,12465
144
144
  pytcl/plotting/metrics.py,sha256=zbJr5P2kQg7-rGpGHsN7rC02S0JLOpPUZeoscQem7uQ,18148
145
- pytcl/plotting/tracks.py,sha256=cqZG71ZHM-wDSzjH4I4kCESORIiZjmGesQtADmAi4gc,23034
145
+ pytcl/plotting/tracks.py,sha256=3V_78oPEGi7lsTNk-lhYRffXWNHH0-Lj2oNw2HIKRJQ,23054
146
146
  pytcl/scheduling/__init__.py,sha256=jTqMSKcsCrWU_Fh6WaT6BW5WatNHyyEYjFbsv6X18Oc,39
147
147
  pytcl/static_estimation/__init__.py,sha256=sSEhqq35jq_MpRLnBtWjKXwGZ9dqIw71iwji-TNwXmc,2222
148
148
  pytcl/static_estimation/least_squares.py,sha256=8ouOyRGC7K-W8fynZMWlc2-KAFojvTbuzcqi5uS_sVA,13432
149
- pytcl/static_estimation/maximum_likelihood.py,sha256=P6BKMcuzzDu_Qc6mX9KLI-zPWFX_NabbA6AKYjkNBcY,21581
150
- pytcl/static_estimation/robust.py,sha256=egBLKWmo6d9PzP6LDh0J7ee4j6hYZh8kAb9TR5uC2so,18527
149
+ pytcl/static_estimation/maximum_likelihood.py,sha256=nt1WShfZ0PlT_eA4gu2WcLiz9zZO9r90m_1PhWqDDgY,21821
150
+ pytcl/static_estimation/robust.py,sha256=mpDUcc3-8F42SVGxXMv20huzekoGWattAa4px9tAZNM,18623
151
151
  pytcl/terrain/__init__.py,sha256=e7plNQI5Y_jpZ24r82AgqdX0ChmmyYoeT7HReclnGXc,3228
152
152
  pytcl/terrain/dem.py,sha256=rg2o0h0ZDrfxvtYhnE2A5tdzRnCmqcihu4w1uNJdH3Y,20814
153
- pytcl/terrain/loaders.py,sha256=KBs1vdYUYW-0ETIujRv4-WxO-bExZk-FvPLY5l6gyTc,27028
153
+ pytcl/terrain/loaders.py,sha256=FGRnyzKh03LrpXICocbIK3MhTW7o9nsVvsm3iuIUqK4,27066
154
154
  pytcl/terrain/visibility.py,sha256=nIJr9AVk7C8GCpJV4UDvUjhmAieycWD8BLepAMUBMIQ,22739
155
155
  pytcl/trackers/__init__.py,sha256=Gw79xlSIUzdPV8bN1slNWUlGxE3d-NsVmbMygkYVV20,1151
156
- pytcl/trackers/hypothesis.py,sha256=RApWfji-f0-a68KnAJela0BvPdIlOY_FV_cYJFmVUoE,17353
157
- pytcl/trackers/mht.py,sha256=7mwhMmja3ri2wnx7W1wueDGn2r3ArwAxJDPUJ7IZAkQ,20617
158
- pytcl/trackers/multi_target.py,sha256=hvt89ERhMwpcHcIJeKHnkQSKdE3_LoRiX-gbaGoo300,10516
156
+ pytcl/trackers/hypothesis.py,sha256=ubK-q89cYayahSHIw5sVYD1fpRUEB0XvC6rQnI1WACA,17361
157
+ pytcl/trackers/mht.py,sha256=osEOXMaCeTt1eVn_E08dLRhEvBroVmf8b81zO5Zp1lU,20720
158
+ pytcl/trackers/multi_target.py,sha256=RDITa0xnbgtVYAMj5XXp4lljo5lZ2zAAc02KZlOjxbQ,10526
159
159
  pytcl/trackers/single_target.py,sha256=Yy3FwaNTArMWcaod-0HVeiioNV4xLWxNDn_7ZPVqQYs,6562
160
160
  pytcl/transponders/__init__.py,sha256=5fL4u3lKCYgPLo5uFeuZbtRZkJPABntuKYGUvVgMMEI,41
161
- nrl_tracker-1.7.0.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
162
- nrl_tracker-1.7.0.dist-info/METADATA,sha256=Tifq_bsT8RjJE-_Ty5DDFPUomTamE68K7v6uIDs28iA,10664
163
- nrl_tracker-1.7.0.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
164
- nrl_tracker-1.7.0.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
165
- nrl_tracker-1.7.0.dist-info/RECORD,,
161
+ nrl_tracker-1.7.3.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
162
+ nrl_tracker-1.7.3.dist-info/METADATA,sha256=2b_C6p-mb6WUbVQf8Hm2CPi6jpJtzWKc09bkPsUZw3c,12452
163
+ nrl_tracker-1.7.3.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
164
+ nrl_tracker-1.7.3.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
165
+ nrl_tracker-1.7.3.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__ = "1.6.0"
23
+ __version__ = "1.7.3"
24
24
  __author__ = "Python Port Contributors"
25
25
  __original_author__ = "David F. Crouse, Naval Research Laboratory"
26
26
 
@@ -44,7 +44,7 @@ from pytcl import (
44
44
 
45
45
  # Version tuple for programmatic access
46
46
  # Handle dev/alpha/beta/rc suffixes by extracting only numeric parts
47
- def _parse_version(version_str):
47
+ def _parse_version(version_str: str) -> tuple[int, ...]:
48
48
  """Parse version string into tuple of integers."""
49
49
  import re
50
50
 
@@ -32,6 +32,21 @@ from pytcl.assignment_algorithms.jpda import (
32
32
  jpda_probabilities,
33
33
  jpda_update,
34
34
  )
35
+ from pytcl.assignment_algorithms.nd_assignment import (
36
+ AssignmentNDResult,
37
+ auction_assignment_nd,
38
+ detect_dimension_conflicts,
39
+ greedy_assignment_nd,
40
+ relaxation_assignment_nd,
41
+ validate_cost_tensor,
42
+ )
43
+ from pytcl.assignment_algorithms.network_flow import (
44
+ FlowStatus,
45
+ MinCostFlowResult,
46
+ assignment_to_flow_network,
47
+ min_cost_assignment_via_flow,
48
+ min_cost_flow_successive_shortest_paths,
49
+ )
35
50
  from pytcl.assignment_algorithms.three_dimensional import (
36
51
  Assignment3DResult,
37
52
  assign3d,
@@ -51,21 +66,6 @@ from pytcl.assignment_algorithms.two_dimensional import (
51
66
  murty,
52
67
  ranked_assignments,
53
68
  )
54
- from pytcl.assignment_algorithms.nd_assignment import (
55
- AssignmentNDResult,
56
- auction_assignment_nd,
57
- detect_dimension_conflicts,
58
- greedy_assignment_nd,
59
- relaxation_assignment_nd,
60
- validate_cost_tensor,
61
- )
62
- from pytcl.assignment_algorithms.network_flow import (
63
- FlowStatus,
64
- MinCostFlowResult,
65
- assignment_to_flow_network,
66
- min_cost_assignment_via_flow,
67
- min_cost_flow_successive_shortest_paths,
68
- )
69
69
 
70
70
  __all__ = [
71
71
  # 2D Assignment
@@ -5,7 +5,7 @@ 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, Tuple
8
+ from typing import Any, List, Tuple
9
9
 
10
10
  import numpy as np
11
11
  from numba import njit
@@ -15,8 +15,8 @@ from scipy.stats import chi2
15
15
 
16
16
  @njit(cache=True, fastmath=True)
17
17
  def _mahalanobis_distance_2d(
18
- innovation: np.ndarray,
19
- S_inv: np.ndarray,
18
+ innovation: np.ndarray[Any, Any],
19
+ S_inv: np.ndarray[Any, Any],
20
20
  ) -> float:
21
21
  """JIT-compiled Mahalanobis distance for 2D innovations."""
22
22
  return innovation[0] * (
@@ -26,8 +26,8 @@ def _mahalanobis_distance_2d(
26
26
 
27
27
  @njit(cache=True, fastmath=True)
28
28
  def _mahalanobis_distance_3d(
29
- innovation: np.ndarray,
30
- S_inv: np.ndarray,
29
+ innovation: np.ndarray[Any, Any],
30
+ S_inv: np.ndarray[Any, Any],
31
31
  ) -> float:
32
32
  """JIT-compiled Mahalanobis distance for 3D innovations."""
33
33
  result = 0.0
@@ -39,8 +39,8 @@ def _mahalanobis_distance_3d(
39
39
 
40
40
  @njit(cache=True, fastmath=True)
41
41
  def _mahalanobis_distance_general(
42
- innovation: np.ndarray,
43
- S_inv: np.ndarray,
42
+ innovation: np.ndarray[Any, Any],
43
+ S_inv: np.ndarray[Any, Any],
44
44
  ) -> float:
45
45
  """JIT-compiled Mahalanobis distance for general dimension."""
46
46
  n = len(innovation)
@@ -341,9 +341,9 @@ def compute_gate_volume(
341
341
 
342
342
  @njit(cache=True, fastmath=True, parallel=False)
343
343
  def mahalanobis_batch(
344
- innovations: np.ndarray,
345
- S_inv: np.ndarray,
346
- output: np.ndarray,
344
+ innovations: np.ndarray[Any, Any],
345
+ S_inv: np.ndarray[Any, Any],
346
+ output: np.ndarray[Any, Any],
347
347
  ) -> None:
348
348
  """
349
349
  Compute Mahalanobis distances for a batch of innovations.