nrl-tracker 0.13.2__py3-none-any.whl → 0.21.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 (28) hide show
  1. {nrl_tracker-0.13.2.dist-info → nrl_tracker-0.21.1.dist-info}/METADATA +8 -3
  2. {nrl_tracker-0.13.2.dist-info → nrl_tracker-0.21.1.dist-info}/RECORD +28 -14
  3. pytcl/__init__.py +1 -1
  4. pytcl/assignment_algorithms/__init__.py +27 -1
  5. pytcl/assignment_algorithms/three_dimensional/__init__.py +24 -0
  6. pytcl/assignment_algorithms/three_dimensional/assignment.py +659 -0
  7. pytcl/assignment_algorithms/two_dimensional/__init__.py +14 -1
  8. pytcl/assignment_algorithms/two_dimensional/kbest.py +568 -0
  9. pytcl/containers/__init__.py +34 -1
  10. pytcl/containers/cluster_set.py +784 -0
  11. pytcl/containers/measurement_set.py +461 -0
  12. pytcl/containers/track_list.py +477 -0
  13. pytcl/dynamic_estimation/__init__.py +50 -0
  14. pytcl/dynamic_estimation/information_filter.py +647 -0
  15. pytcl/dynamic_estimation/smoothers.py +668 -0
  16. pytcl/mathematical_functions/numerical_integration/quadrature.py +36 -7
  17. pytcl/mathematical_functions/special_functions/__init__.py +82 -0
  18. pytcl/mathematical_functions/special_functions/bessel.py +260 -0
  19. pytcl/mathematical_functions/special_functions/debye.py +288 -0
  20. pytcl/mathematical_functions/special_functions/hypergeometric.py +420 -0
  21. pytcl/mathematical_functions/special_functions/lambert_w.py +294 -0
  22. pytcl/mathematical_functions/special_functions/marcum_q.py +370 -0
  23. pytcl/navigation/__init__.py +70 -0
  24. pytcl/navigation/great_circle.py +799 -0
  25. pytcl/navigation/rhumb.py +722 -0
  26. {nrl_tracker-0.13.2.dist-info → nrl_tracker-0.21.1.dist-info}/LICENSE +0 -0
  27. {nrl_tracker-0.13.2.dist-info → nrl_tracker-0.21.1.dist-info}/WHEEL +0 -0
  28. {nrl_tracker-0.13.2.dist-info → nrl_tracker-0.21.1.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nrl-tracker
3
- Version: 0.13.2
3
+ Version: 0.21.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
7
- Project-URL: Homepage, https://github.com/nedonatelli/TCL
7
+ Project-URL: Homepage, https://pytcl.readthedocs.io/en
8
+ Project-URL: Documentation, https://pytcl.readthedocs.io/en/latest/docs.html
9
+ Project-URL: Repository, https://github.com/nedonatelli/TCL
8
10
  Project-URL: Bug Tracker, https://github.com/nedonatelli/TCL/issues
9
- Project-URL: Documentation, https://github.com/nedonatelli/TCL#readme
10
11
  Project-URL: Original MATLAB Library, https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary
11
12
  Keywords: tracking,kalman-filter,target-tracking,data-association,estimation,navigation,coordinate-systems,signal-processing
12
13
  Classifier: Development Status :: 3 - Alpha
@@ -59,12 +60,16 @@ Requires-Dist: plotly>=5.15.0; extra == "visualization"
59
60
 
60
61
  # Tracker Component Library (Python)
61
62
 
63
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.21.1-blue.svg)](https://pypi.org/project/nrl-tracker/)
62
64
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
63
65
  [![License: Public Domain](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://en.wikipedia.org/wiki/Public_domain)
64
66
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
67
+ [![Tests](https://img.shields.io/badge/tests-1530%20passing-success.svg)](https://github.com/nedonatelli/TCL)
65
68
 
66
69
  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.
67
70
 
71
+ **800+ functions** | **144 modules** | **1,530 tests** | **15+ algorithm categories**
72
+
68
73
  ## Overview
69
74
 
70
75
  The Tracker Component Library provides building blocks for developing target tracking algorithms, including:
@@ -1,10 +1,13 @@
1
- pytcl/__init__.py,sha256=A0iqbLxyssFtQNJaxa2KHk75aYeMaZvmMcG7ITwtMRA,1894
2
- pytcl/assignment_algorithms/__init__.py,sha256=Un6EytXOx2TNr8wk8w26oV0Hc8RUiTeYMo6XSSCnzkc,1523
1
+ pytcl/__init__.py,sha256=1grcwT7hqkF4MBmoUc9ugi2bhsecHLZuLZr8ALWSgC8,1894
2
+ pytcl/assignment_algorithms/__init__.py,sha256=f9V-TkEVmiKYYyth4PTpDfJvA7yYV_ys6Zix-QwWIYY,2136
3
3
  pytcl/assignment_algorithms/data_association.py,sha256=X6Kww9-J2WLxU1790w7dRvAFdM90RSXHvs7IF26zweQ,11427
4
4
  pytcl/assignment_algorithms/gating.py,sha256=fN_oAOkv7nYYOWE1oPOLrcCn3xEpKdMVlFSbRMAURxY,10815
5
5
  pytcl/assignment_algorithms/jpda.py,sha256=hvZGkSrStuw9iQg7gPuIV7_bOinX3Xix5vLrVLMnEMM,19288
6
- pytcl/assignment_algorithms/two_dimensional/__init__.py,sha256=kdO7IGm_Y37g-R7r145yLyqdc0JCqR4sDafY8mQ3GHk,442
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
7
9
  pytcl/assignment_algorithms/two_dimensional/assignment.py,sha256=IRwbv-82dEbbm3KwjyUjuUWM3wP9s6oUtzX2mZffMjA,11419
10
+ pytcl/assignment_algorithms/two_dimensional/kbest.py,sha256=yiTToLuP7xWxQlQ8E-fpgXg-5iu0nnXcJXStjUB0nOE,17284
8
11
  pytcl/astronomical/__init__.py,sha256=SKELDaDhxpvCo1dMswBQYOQr_Th3ShuzZTzxZMdhE-U,5650
9
12
  pytcl/astronomical/lambert.py,sha256=Lc8FT1JmpI9WSXsG2s5vIRkSoBSV7r5hd3o2bGh2Ojo,15607
10
13
  pytcl/astronomical/orbital_mechanics.py,sha256=8GssRanwTowCl6PJYqmB_SDnNznLUq5gkPa3j6iEo3U,19965
@@ -17,10 +20,13 @@ pytcl/clustering/dbscan.py,sha256=cjBi5b0gcBgFqUtkLm1G0JMJLQYALahyYuoSI4G0zAY,69
17
20
  pytcl/clustering/gaussian_mixture.py,sha256=U5U0Z46tZWdTLNdNNNJenoeviwZRAOvexVFYVLt4QMc,22865
18
21
  pytcl/clustering/hierarchical.py,sha256=PEkIGqAQ33InUGIcCRevv0rko4R1HqIwfejNhHsbnKQ,13794
19
22
  pytcl/clustering/kmeans.py,sha256=fmUIQdQLKCocwmMabdReQ0cKqMNKNFI_DyTCivPmAtw,10842
20
- pytcl/containers/__init__.py,sha256=RV0-7l97cc3iE_pwzt9zWzY-wymiUoIvL8qU1P2XWYU,966
23
+ pytcl/containers/__init__.py,sha256=t8oRtusBrh6G2dEk2PcofmxrpLPQ9nOJwH19GyKnNcc,1699
24
+ pytcl/containers/cluster_set.py,sha256=_lZ39PNHTL7fUEZAwBF2ICK6v0GjZKpeUOg0knEdPzo,22760
21
25
  pytcl/containers/covertree.py,sha256=1JWqXxoUFLxuMnjwj2qf0iz2uPzdujQYdwJW3l5qsOs,13282
22
26
  pytcl/containers/kd_tree.py,sha256=pxRC62RYkqz9zXPz6c1fubmtPPBDLYA5I9AXMAoGanw,16348
27
+ pytcl/containers/measurement_set.py,sha256=Kr29mlJOCyGMYhMnE89f-W72aunlv4p04QAdfCZcm-0,12687
23
28
  pytcl/containers/rtree.py,sha256=gv2EztvPnaAXEa6OoFnOYBY1MfTwjNMYh_BCiIomHJk,15450
29
+ pytcl/containers/track_list.py,sha256=6q9Qgcwm-8H_JqtOCsMssF27av4XaSkhfDl-MWb1ABc,12520
24
30
  pytcl/containers/vptree.py,sha256=6fBNHrezkmj7L2nH0-2bONRN92f5cZAhS-5vaI1JZnA,8814
25
31
  pytcl/coordinate_systems/__init__.py,sha256=jwYhu_-9AvOeP9WLG9PYtyDwfe0GjxNZ9-xCqiLymW4,3909
26
32
  pytcl/coordinate_systems/conversions/__init__.py,sha256=PkNevB78vBw0BkalydJBbQO91AyiMJxKRrgJNt4HsYc,1100
@@ -36,8 +42,10 @@ pytcl/core/__init__.py,sha256=H5JJPS-43DfF1UG7fSgV-VMTcZFBO8GuzDW1lM_1sm4,1152
36
42
  pytcl/core/array_utils.py,sha256=SsgEiAoRCWxAVKq1aa5-nPdOi-2AB6XNObu0IaGClUk,13983
37
43
  pytcl/core/constants.py,sha256=lZVDK5zsSR02_4b2Nqx9KDtZT9QaYhkZ9wuoODbifd4,8693
38
44
  pytcl/core/validation.py,sha256=WRlzMlUihtqc3XZoWOTFK0sBAZVDIwTMGCiWcX5OZVY,13093
39
- pytcl/dynamic_estimation/__init__.py,sha256=ASAfa2wrenjqRIKnvesXwfdwECvA2PODJXWN9yQNhq0,3427
45
+ pytcl/dynamic_estimation/__init__.py,sha256=jA5FF6kHYklY5LMOfZaKcCeiPTpVe8vHIMp3ECDOmsc,4582
40
46
  pytcl/dynamic_estimation/imm.py,sha256=CoOwJJv0DMrNKRkP-OqWbSxZO_-GAgNLaQ4KiBhjvEg,21313
47
+ pytcl/dynamic_estimation/information_filter.py,sha256=x7iQwO_iJT1dCSvDws5LqD3yAtjw9QVGUfMPcXn1IA4,17349
48
+ pytcl/dynamic_estimation/smoothers.py,sha256=qC_g0YG0U4L_7rGBpcZzYcb11A--Hc8tb0fxWXIJdxM,18931
41
49
  pytcl/dynamic_estimation/batch_estimation/__init__.py,sha256=JQ0s76Enov5a7plA4EnUua4t-7etikQrwr5z4WIjUeo,46
42
50
  pytcl/dynamic_estimation/kalman/__init__.py,sha256=yoFLj0n-NRkdZnRVL-BkHBlATk8pfZEVlsY3BhSYgKc,2387
43
51
  pytcl/dynamic_estimation/kalman/extended.py,sha256=_deQTnUGOp_BlhP-FDEY0LOjgUMN32FQn0V12unCM4A,10397
@@ -80,17 +88,21 @@ pytcl/mathematical_functions/geometry/geometry.py,sha256=l63wQnhCtJwVHZOJeONX1qy
80
88
  pytcl/mathematical_functions/interpolation/__init__.py,sha256=HDhP7ZsgUrXFBNJ_eCZEdp5gizWJ-BxvkQSCMnvBg3A,677
81
89
  pytcl/mathematical_functions/interpolation/interpolation.py,sha256=2cXMDgWBjWDGHnK1K_lawFlJL8oPl5AQGf9MNgsESfo,12610
82
90
  pytcl/mathematical_functions/numerical_integration/__init__.py,sha256=iXiHzyV_KIhCv7tXErXlN1_fUEACN6yN3CYDHRA7esw,974
83
- pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=ErxG_HLfM2LjKStguK_2wEhodln63v1FVubetAS5GL0,14748
91
+ pytcl/mathematical_functions/numerical_integration/quadrature.py,sha256=ZRMKs0vbcgFDe1Sr8sjyEOkALLmJU4zKRJjoPEcXrUc,15670
84
92
  pytcl/mathematical_functions/polynomials/__init__.py,sha256=WJWZcoQhnvy5f59-kncMTgD9mCtgwfDgULvDYYHS5ys,43
85
93
  pytcl/mathematical_functions/signal_processing/__init__.py,sha256=_SzzBVtxmSvP8FKeogRdNmFo8FOVDDoexVOqd-lE7do,2325
86
94
  pytcl/mathematical_functions/signal_processing/detection.py,sha256=9F0xdy3hMat1czSWAQYMExn0kY5DBRpyBneAfjjHUVI,30377
87
95
  pytcl/mathematical_functions/signal_processing/filters.py,sha256=8Ojf4h4rfiucBXqUmB1odvHH41Gf3rPwmWCMKb-qzWk,23435
88
96
  pytcl/mathematical_functions/signal_processing/matched_filter.py,sha256=AahJZRZk2IIXzRL7www0n8bc0XoKabaLOe8yYNSjuDY,22893
89
- pytcl/mathematical_functions/special_functions/__init__.py,sha256=fXACpf-y1Jdq7UmVjwETUVhN_mkATT1I4tKbT1FW-C0,2017
90
- pytcl/mathematical_functions/special_functions/bessel.py,sha256=0sVwL1pPqNYiVkjXqacnkHoPBkiomk0D7IDu6-bKtEs,8139
97
+ pytcl/mathematical_functions/special_functions/__init__.py,sha256=qDPGfee1i1NkVi9LXJKnsWXL3CWHkPQINrkwqLqB8YU,3796
98
+ pytcl/mathematical_functions/special_functions/bessel.py,sha256=M0mwLQBaUXEHA8wyKReJ2D66I1v1XR7y-txAipd-WDs,14377
99
+ pytcl/mathematical_functions/special_functions/debye.py,sha256=Nchjwkl1vzSL1L7nQpslb-lvT49LgTfdTIQMeSNn4vQ,6689
91
100
  pytcl/mathematical_functions/special_functions/elliptic.py,sha256=WyzBkrfZufIR5dUmCKGcxp6KNpVDrU89NGLDyRrZOqQ,7418
92
101
  pytcl/mathematical_functions/special_functions/error_functions.py,sha256=a3SS8FYAMRv1KdCmebOZL95yjvVt9gZRF2XOjHvQ9M8,6253
93
102
  pytcl/mathematical_functions/special_functions/gamma_functions.py,sha256=xXN_9SCokH10HjE8PpaPKHYVK_RZRHRAbZgR2mZYIAA,10191
103
+ pytcl/mathematical_functions/special_functions/hypergeometric.py,sha256=gKn_tXboEst7pVDiW15IbKFAANM4XVqKtDc1dmWL-2A,9768
104
+ pytcl/mathematical_functions/special_functions/lambert_w.py,sha256=ivRc4KH5Lwoxb_yijrJEwG0ITa0hhcYF7_gCfVBBNW4,6855
105
+ pytcl/mathematical_functions/special_functions/marcum_q.py,sha256=OZ5QjIB1e_XvRG8A-3dbZ13YXHtdk2EYVEPaqtgVr14,9580
94
106
  pytcl/mathematical_functions/statistics/__init__.py,sha256=dfypStgmnFmOrnWcm-3CEvLinONHraFgx9O66_37bqw,1278
95
107
  pytcl/mathematical_functions/statistics/distributions.py,sha256=icfFIIKCEFzkpFHuYGWL197nm8wvS7UPJlr9kd_uEgw,19373
96
108
  pytcl/mathematical_functions/statistics/estimators.py,sha256=TLnYXSwk5MzBakZrzDBupbOB3ONmJI7q1-oB2xuSVQM,10831
@@ -99,10 +111,12 @@ pytcl/mathematical_functions/transforms/fourier.py,sha256=QH6OaTzw4kN6M-DuSmwB_5
99
111
  pytcl/mathematical_functions/transforms/stft.py,sha256=zQapXl-v69_RDPwMqci83jah17GyAfnr3gx0budv2Cg,18619
100
112
  pytcl/mathematical_functions/transforms/wavelets.py,sha256=dm273Z_t13BlEVSlHTaGE7jR1ocugL7lEkcO499U7bY,21656
101
113
  pytcl/misc/__init__.py,sha256=SCHf_lQVfdl2gwUluHBiIloTF8HRH8EkgYfbNr7zOug,33
102
- pytcl/navigation/__init__.py,sha256=NHlld_i1lTTO6Q18Ozm_yUj--d3kbu_nmL2cJCGlDLY,4027
114
+ pytcl/navigation/__init__.py,sha256=9tUhEgPVugA8nmZ9rvOaAntCd7rDPgW2RBLHqaDAXSc,5864
103
115
  pytcl/navigation/geodesy.py,sha256=M9XXfBTMCRdaWMV2-ViDSTEt94WZnMtxMeJQ1FAgQHY,17227
116
+ pytcl/navigation/great_circle.py,sha256=TtlkWZbzr-HzSt4ultG_h137ZnX0pJZx_87kr3uvpjI,20923
104
117
  pytcl/navigation/ins.py,sha256=V3ZA4z8y5E6PBCd1FhifR5VaCU7DRAn2fb7W0LilByo,31168
105
118
  pytcl/navigation/ins_gnss.py,sha256=euKF5JGgwmVBsw3jBf7_wa2z1BpZeVbSNmBuwzhGS6c,30157
119
+ pytcl/navigation/rhumb.py,sha256=lr1c3iEXfoOSfIyyXSRWv6He5TlaxEHbJy-dhqM1gRw,18224
106
120
  pytcl/performance_evaluation/__init__.py,sha256=tM2pnBfDb2XbnLt4Y5MQ6w6XBwFy_5bf_y0toZmxx88,1859
107
121
  pytcl/performance_evaluation/estimation_metrics.py,sha256=X1ZCpp8m6DV14N2wbMvlRwfORRKga8DgKmG3dROyJqA,12351
108
122
  pytcl/performance_evaluation/track_metrics.py,sha256=Nd3royJkAelZV-Qggl8i72e7WocCxWomgliArvVAEkc,13342
@@ -127,8 +141,8 @@ pytcl/trackers/mht.py,sha256=7mwhMmja3ri2wnx7W1wueDGn2r3ArwAxJDPUJ7IZAkQ,20617
127
141
  pytcl/trackers/multi_target.py,sha256=7ZL8V25TO_rEMtQm2eYkScesDQHC9qXZVHLHyVbxy3M,10529
128
142
  pytcl/trackers/single_target.py,sha256=Yy3FwaNTArMWcaod-0HVeiioNV4xLWxNDn_7ZPVqQYs,6562
129
143
  pytcl/transponders/__init__.py,sha256=5fL4u3lKCYgPLo5uFeuZbtRZkJPABntuKYGUvVgMMEI,41
130
- nrl_tracker-0.13.2.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
131
- nrl_tracker-0.13.2.dist-info/METADATA,sha256=QoDNSjw-OHiQWt4inyMiCxuHJ9r587u1P-1yEnxc6Go,9635
132
- nrl_tracker-0.13.2.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
133
- nrl_tracker-0.13.2.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
134
- nrl_tracker-0.13.2.dist-info/RECORD,,
144
+ nrl_tracker-0.21.1.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
145
+ nrl_tracker-0.21.1.dist-info/METADATA,sha256=Do-PM_-vvQ08w8QWNyvIuRmsAEqzFXe8NSO5BXLTlHg,10005
146
+ nrl_tracker-0.21.1.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
147
+ nrl_tracker-0.21.1.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
148
+ nrl_tracker-0.21.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.13.2"
23
+ __version__ = "0.18.0"
24
24
  __author__ = "Python Port Contributors"
25
25
  __original_author__ = "David F. Crouse, Naval Research Laboratory"
26
26
 
@@ -2,7 +2,9 @@
2
2
  Assignment algorithms for data association in target tracking.
3
3
 
4
4
  This module provides:
5
- - 2D assignment algorithms (Hungarian, Auction, JVC)
5
+ - 2D assignment algorithms (Hungarian, Auction)
6
+ - K-best 2D assignment (Murty's algorithm)
7
+ - 3D assignment algorithms (Lagrangian relaxation, Auction)
6
8
  - Gating methods (ellipsoidal, rectangular)
7
9
  - Data association algorithms (GNN, JPDA)
8
10
  """
@@ -30,12 +32,24 @@ from pytcl.assignment_algorithms.jpda import (
30
32
  jpda_probabilities,
31
33
  jpda_update,
32
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
+ )
33
43
  from pytcl.assignment_algorithms.two_dimensional import (
34
44
  AssignmentResult,
45
+ KBestResult,
35
46
  assign2d,
36
47
  auction,
37
48
  hungarian,
49
+ kbest_assign2d,
38
50
  linear_sum_assignment,
51
+ murty,
52
+ ranked_assignments,
39
53
  )
40
54
 
41
55
  __all__ = [
@@ -45,6 +59,18 @@ __all__ = [
45
59
  "linear_sum_assignment",
46
60
  "assign2d",
47
61
  "AssignmentResult",
62
+ # K-Best 2D Assignment
63
+ "KBestResult",
64
+ "murty",
65
+ "kbest_assign2d",
66
+ "ranked_assignments",
67
+ # 3D Assignment
68
+ "Assignment3DResult",
69
+ "assign3d",
70
+ "assign3d_lagrangian",
71
+ "assign3d_auction",
72
+ "greedy_3d",
73
+ "decompose_to_2d",
48
74
  # Gating
49
75
  "ellipsoidal_gate",
50
76
  "rectangular_gate",
@@ -0,0 +1,24 @@
1
+ """
2
+ Three-dimensional assignment algorithms.
3
+
4
+ This module provides algorithms for solving 3D assignment problems,
5
+ which arise in multi-sensor data fusion and multi-scan tracking.
6
+ """
7
+
8
+ from pytcl.assignment_algorithms.three_dimensional.assignment import (
9
+ Assignment3DResult,
10
+ assign3d,
11
+ assign3d_auction,
12
+ assign3d_lagrangian,
13
+ decompose_to_2d,
14
+ greedy_3d,
15
+ )
16
+
17
+ __all__ = [
18
+ "Assignment3DResult",
19
+ "assign3d",
20
+ "assign3d_lagrangian",
21
+ "assign3d_auction",
22
+ "greedy_3d",
23
+ "decompose_to_2d",
24
+ ]