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
@@ -32,42 +32,50 @@ Plotly is required for all plotting functions. Install with:
32
32
  """
33
33
 
34
34
  # Coordinate system visualization
35
- from pytcl.plotting.coordinates import plot_coordinate_axes_3d
36
- from pytcl.plotting.coordinates import plot_coordinate_transform
37
- from pytcl.plotting.coordinates import plot_euler_angles
38
- from pytcl.plotting.coordinates import plot_points_spherical
39
- from pytcl.plotting.coordinates import plot_quaternion_interpolation
40
- from pytcl.plotting.coordinates import plot_rotation_comparison
41
- from pytcl.plotting.coordinates import plot_spherical_grid
35
+ from pytcl.plotting.coordinates import (
36
+ plot_coordinate_axes_3d,
37
+ plot_coordinate_transform,
38
+ plot_euler_angles,
39
+ plot_points_spherical,
40
+ plot_quaternion_interpolation,
41
+ plot_rotation_comparison,
42
+ plot_spherical_grid,
43
+ )
42
44
 
43
45
  # Covariance ellipse utilities
44
- from pytcl.plotting.ellipses import confidence_region_radius
45
- from pytcl.plotting.ellipses import covariance_ellipse_points
46
- from pytcl.plotting.ellipses import covariance_ellipsoid_points
47
- from pytcl.plotting.ellipses import ellipse_parameters
48
- from pytcl.plotting.ellipses import plot_covariance_ellipse
49
- from pytcl.plotting.ellipses import plot_covariance_ellipses
50
- from pytcl.plotting.ellipses import plot_covariance_ellipsoid
46
+ from pytcl.plotting.ellipses import (
47
+ confidence_region_radius,
48
+ covariance_ellipse_points,
49
+ covariance_ellipsoid_points,
50
+ ellipse_parameters,
51
+ plot_covariance_ellipse,
52
+ plot_covariance_ellipses,
53
+ plot_covariance_ellipsoid,
54
+ )
51
55
 
52
56
  # Performance metric visualization
53
- from pytcl.plotting.metrics import plot_cardinality_over_time
54
- from pytcl.plotting.metrics import plot_consistency_summary
55
- from pytcl.plotting.metrics import plot_error_histogram
56
- from pytcl.plotting.metrics import plot_monte_carlo_rmse
57
- from pytcl.plotting.metrics import plot_nees_sequence
58
- from pytcl.plotting.metrics import plot_nis_sequence
59
- from pytcl.plotting.metrics import plot_ospa_over_time
60
- from pytcl.plotting.metrics import plot_rmse_over_time
57
+ from pytcl.plotting.metrics import (
58
+ plot_cardinality_over_time,
59
+ plot_consistency_summary,
60
+ plot_error_histogram,
61
+ plot_monte_carlo_rmse,
62
+ plot_nees_sequence,
63
+ plot_nis_sequence,
64
+ plot_ospa_over_time,
65
+ plot_rmse_over_time,
66
+ )
61
67
 
62
68
  # Track and trajectory plotting
63
- from pytcl.plotting.tracks import create_animated_tracking
64
- from pytcl.plotting.tracks import plot_estimation_comparison
65
- from pytcl.plotting.tracks import plot_measurements_2d
66
- from pytcl.plotting.tracks import plot_multi_target_tracks
67
- from pytcl.plotting.tracks import plot_state_time_series
68
- from pytcl.plotting.tracks import plot_tracking_result
69
- from pytcl.plotting.tracks import plot_trajectory_2d
70
- from pytcl.plotting.tracks import plot_trajectory_3d
69
+ from pytcl.plotting.tracks import (
70
+ create_animated_tracking,
71
+ plot_estimation_comparison,
72
+ plot_measurements_2d,
73
+ plot_multi_target_tracks,
74
+ plot_state_time_series,
75
+ plot_tracking_result,
76
+ plot_trajectory_2d,
77
+ plot_trajectory_3d,
78
+ )
71
79
 
72
80
  __all__ = [
73
81
  # Ellipses
@@ -5,9 +5,7 @@ This module provides functions for visualizing coordinate systems,
5
5
  rotations, and transformations in 2D and 3D.
6
6
  """
7
7
 
8
- from typing import List
9
- from typing import Optional
10
- from typing import Tuple
8
+ from typing import List, Optional, Tuple
11
9
 
12
10
  import numpy as np
13
11
  from numpy.typing import ArrayLike
@@ -5,13 +5,10 @@ This module provides functions for visualizing uncertainty as ellipses
5
5
  in 2D and 3D spaces, commonly used in tracking and estimation applications.
6
6
  """
7
7
 
8
- from typing import List
9
- from typing import Optional
10
- from typing import Tuple
8
+ from typing import List, 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
 
16
13
  try:
17
14
  import plotly.graph_objects as go
pytcl/plotting/metrics.py CHANGED
@@ -5,8 +5,7 @@ This module provides functions for visualizing tracking and estimation
5
5
  performance metrics such as RMSE, NEES, NIS, and OSPA.
6
6
  """
7
7
 
8
- from typing import List
9
- from typing import Optional
8
+ from typing import List, Optional
10
9
 
11
10
  import numpy as np
12
11
  from numpy.typing import ArrayLike
pytcl/plotting/tracks.py CHANGED
@@ -5,10 +5,7 @@ This module provides functions for visualizing trajectories, tracks,
5
5
  measurements, and estimation results in 2D and 3D.
6
6
  """
7
7
 
8
- from typing import Any
9
- from typing import Dict
10
- from typing import List
11
- from typing import Optional
8
+ from typing import Any, Dict, List, Optional
12
9
 
13
10
  import numpy as np
14
11
  from numpy.typing import ArrayLike
@@ -5,46 +5,50 @@ This module provides methods for static (batch) estimation including
5
5
  least squares variants and robust estimation techniques.
6
6
  """
7
7
 
8
- from pytcl.static_estimation.least_squares import LSResult
9
- from pytcl.static_estimation.least_squares import TLSResult
10
- from pytcl.static_estimation.least_squares import WLSResult
11
- from pytcl.static_estimation.least_squares import generalized_least_squares
12
- from pytcl.static_estimation.least_squares import ordinary_least_squares
13
- from pytcl.static_estimation.least_squares import recursive_least_squares
14
- from pytcl.static_estimation.least_squares import ridge_regression
15
- from pytcl.static_estimation.least_squares import total_least_squares
16
- from pytcl.static_estimation.least_squares import weighted_least_squares
17
- from pytcl.static_estimation.maximum_likelihood import CRBResult
18
- from pytcl.static_estimation.maximum_likelihood import MLResult
19
- from pytcl.static_estimation.maximum_likelihood import aic
20
- from pytcl.static_estimation.maximum_likelihood import aicc
21
- from pytcl.static_estimation.maximum_likelihood import bic
22
- from pytcl.static_estimation.maximum_likelihood import cramer_rao_bound
23
- from pytcl.static_estimation.maximum_likelihood import cramer_rao_bound_biased
24
- from pytcl.static_estimation.maximum_likelihood import efficiency
8
+ from pytcl.static_estimation.least_squares import (
9
+ LSResult,
10
+ TLSResult,
11
+ WLSResult,
12
+ generalized_least_squares,
13
+ ordinary_least_squares,
14
+ recursive_least_squares,
15
+ ridge_regression,
16
+ total_least_squares,
17
+ weighted_least_squares,
18
+ )
25
19
  from pytcl.static_estimation.maximum_likelihood import (
20
+ CRBResult,
21
+ MLResult,
22
+ aic,
23
+ aicc,
24
+ bic,
25
+ cramer_rao_bound,
26
+ cramer_rao_bound_biased,
27
+ efficiency,
26
28
  fisher_information_exponential_family,
29
+ fisher_information_gaussian,
30
+ fisher_information_numerical,
31
+ mle_gaussian,
32
+ mle_newton_raphson,
33
+ mle_scoring,
34
+ observed_fisher_information,
35
+ )
36
+ from pytcl.static_estimation.robust import (
37
+ RANSACResult,
38
+ RobustResult,
39
+ cauchy_weight,
40
+ huber_regression,
41
+ huber_rho,
42
+ huber_weight,
43
+ irls,
44
+ mad,
45
+ ransac,
46
+ ransac_n_trials,
47
+ tau_scale,
48
+ tukey_regression,
49
+ tukey_rho,
50
+ tukey_weight,
27
51
  )
28
- from pytcl.static_estimation.maximum_likelihood import fisher_information_gaussian
29
- from pytcl.static_estimation.maximum_likelihood import fisher_information_numerical
30
- from pytcl.static_estimation.maximum_likelihood import mle_gaussian
31
- from pytcl.static_estimation.maximum_likelihood import mle_newton_raphson
32
- from pytcl.static_estimation.maximum_likelihood import mle_scoring
33
- from pytcl.static_estimation.maximum_likelihood import observed_fisher_information
34
- from pytcl.static_estimation.robust import RANSACResult
35
- from pytcl.static_estimation.robust import RobustResult
36
- from pytcl.static_estimation.robust import cauchy_weight
37
- from pytcl.static_estimation.robust import huber_regression
38
- from pytcl.static_estimation.robust import huber_rho
39
- from pytcl.static_estimation.robust import huber_weight
40
- from pytcl.static_estimation.robust import irls
41
- from pytcl.static_estimation.robust import mad
42
- from pytcl.static_estimation.robust import ransac
43
- from pytcl.static_estimation.robust import ransac_n_trials
44
- from pytcl.static_estimation.robust import tau_scale
45
- from pytcl.static_estimation.robust import tukey_regression
46
- from pytcl.static_estimation.robust import tukey_rho
47
- from pytcl.static_estimation.robust import tukey_weight
48
52
 
49
53
  __all__ = [
50
54
  # Least squares results
@@ -12,12 +12,10 @@ References
12
12
  Johns Hopkins University Press, 2013.
13
13
  """
14
14
 
15
- from typing import NamedTuple
16
- from typing import Optional
15
+ from typing import NamedTuple, Optional
17
16
 
18
17
  import numpy as np
19
- from numpy.typing import ArrayLike
20
- from numpy.typing import NDArray
18
+ from numpy.typing import ArrayLike, NDArray
21
19
 
22
20
 
23
21
  class LSResult(NamedTuple):
@@ -12,13 +12,10 @@ References
12
12
  Wiley, 2001.
13
13
  """
14
14
 
15
- from typing import Callable
16
- from typing import NamedTuple
17
- from typing import Optional
15
+ from typing import Callable, NamedTuple, Optional
18
16
 
19
17
  import numpy as np
20
- from numpy.typing import ArrayLike
21
- from numpy.typing import NDArray
18
+ from numpy.typing import ArrayLike, NDArray
22
19
 
23
20
 
24
21
  class MLResult(NamedTuple):
@@ -12,13 +12,10 @@ References
12
12
  Cartography," Communications of the ACM, 1981.
13
13
  """
14
14
 
15
- from typing import Callable
16
- from typing import NamedTuple
17
- from typing import Optional
15
+ from typing import Callable, NamedTuple, Optional
18
16
 
19
17
  import numpy as np
20
- from numpy.typing import ArrayLike
21
- from numpy.typing import NDArray
18
+ from numpy.typing import ArrayLike, NDArray
22
19
 
23
20
 
24
21
  class RobustResult(NamedTuple):
pytcl/terrain/__init__.py CHANGED
@@ -52,38 +52,44 @@ Examples
52
52
  """
53
53
 
54
54
  # DEM interface
55
- from pytcl.terrain.dem import DEMGrid
56
- from pytcl.terrain.dem import DEMMetadata
57
- from pytcl.terrain.dem import DEMPoint
58
- from pytcl.terrain.dem import TerrainGradient
59
- from pytcl.terrain.dem import create_flat_dem
60
- from pytcl.terrain.dem import create_synthetic_terrain
61
- from pytcl.terrain.dem import get_elevation_profile
62
- from pytcl.terrain.dem import interpolate_dem
63
- from pytcl.terrain.dem import merge_dems
55
+ from pytcl.terrain.dem import (
56
+ DEMGrid,
57
+ DEMMetadata,
58
+ DEMPoint,
59
+ TerrainGradient,
60
+ create_flat_dem,
61
+ create_synthetic_terrain,
62
+ get_elevation_profile,
63
+ interpolate_dem,
64
+ merge_dems,
65
+ )
64
66
 
65
67
  # Data loaders
66
- from pytcl.terrain.loaders import EARTH2014_PARAMETERS
67
- from pytcl.terrain.loaders import GEBCO_PARAMETERS
68
- from pytcl.terrain.loaders import Earth2014Metadata
69
- from pytcl.terrain.loaders import GEBCOMetadata
70
- from pytcl.terrain.loaders import create_test_earth2014_dem
71
- from pytcl.terrain.loaders import create_test_gebco_dem
72
- from pytcl.terrain.loaders import get_data_dir
73
- from pytcl.terrain.loaders import get_earth2014_metadata
74
- from pytcl.terrain.loaders import get_gebco_metadata
75
- from pytcl.terrain.loaders import load_earth2014
76
- from pytcl.terrain.loaders import load_gebco
68
+ from pytcl.terrain.loaders import (
69
+ EARTH2014_PARAMETERS,
70
+ GEBCO_PARAMETERS,
71
+ Earth2014Metadata,
72
+ GEBCOMetadata,
73
+ create_test_earth2014_dem,
74
+ create_test_gebco_dem,
75
+ get_data_dir,
76
+ get_earth2014_metadata,
77
+ get_gebco_metadata,
78
+ load_earth2014,
79
+ load_gebco,
80
+ )
77
81
 
78
82
  # Visibility functions
79
- from pytcl.terrain.visibility import HorizonPoint
80
- from pytcl.terrain.visibility import LOSResult
81
- from pytcl.terrain.visibility import ViewshedResult
82
- from pytcl.terrain.visibility import compute_horizon
83
- from pytcl.terrain.visibility import line_of_sight
84
- from pytcl.terrain.visibility import radar_coverage_map
85
- from pytcl.terrain.visibility import terrain_masking_angle
86
- from pytcl.terrain.visibility import viewshed
83
+ from pytcl.terrain.visibility import (
84
+ HorizonPoint,
85
+ LOSResult,
86
+ ViewshedResult,
87
+ compute_horizon,
88
+ line_of_sight,
89
+ radar_coverage_map,
90
+ terrain_masking_angle,
91
+ viewshed,
92
+ )
87
93
 
88
94
  __all__ = [
89
95
  # DEM data structures
pytcl/terrain/dem.py CHANGED
@@ -25,10 +25,7 @@ References
25
25
  198.3 (2014): 1544-1555.
26
26
  """
27
27
 
28
- from typing import List
29
- from typing import NamedTuple
30
- from typing import Optional
31
- from typing import Tuple
28
+ from typing import List, NamedTuple, Optional, Tuple
32
29
 
33
30
  import numpy as np
34
31
  from numpy.typing import NDArray
pytcl/terrain/loaders.py CHANGED
@@ -21,10 +21,7 @@ References
21
21
  import os
22
22
  from functools import lru_cache
23
23
  from pathlib import Path
24
- from typing import Dict
25
- from typing import NamedTuple
26
- from typing import Optional
27
- from typing import Tuple
24
+ from typing import Dict, NamedTuple, Optional, Tuple
28
25
 
29
26
  import numpy as np
30
27
  from numpy.typing import NDArray
@@ -23,8 +23,7 @@ References
23
23
  on terrains: a survey." Environment and Planning B 30.5 (2003): 709-728.
24
24
  """
25
25
 
26
- from typing import List
27
- from typing import NamedTuple
26
+ from typing import List, NamedTuple
28
27
 
29
28
  import numpy as np
30
29
  from numpy.typing import NDArray
@@ -5,23 +5,20 @@ This module provides complete tracker implementations that combine
5
5
  filtering, data association, and track management.
6
6
  """
7
7
 
8
- from pytcl.trackers.hypothesis import Hypothesis
9
- from pytcl.trackers.hypothesis import HypothesisAssignment
10
- from pytcl.trackers.hypothesis import HypothesisTree
11
- from pytcl.trackers.hypothesis import MHTTrack
12
- from pytcl.trackers.hypothesis import MHTTrackStatus
13
- from pytcl.trackers.hypothesis import compute_association_likelihood
14
- from pytcl.trackers.hypothesis import generate_joint_associations
15
- from pytcl.trackers.hypothesis import n_scan_prune
16
- from pytcl.trackers.hypothesis import prune_hypotheses_by_probability
17
- from pytcl.trackers.mht import MHTConfig
18
- from pytcl.trackers.mht import MHTResult
19
- from pytcl.trackers.mht import MHTTracker
20
- from pytcl.trackers.multi_target import MultiTargetTracker
21
- from pytcl.trackers.multi_target import Track
22
- from pytcl.trackers.multi_target import TrackStatus
23
- from pytcl.trackers.single_target import SingleTargetTracker
24
- from pytcl.trackers.single_target import TrackState
8
+ from pytcl.trackers.hypothesis import (
9
+ Hypothesis,
10
+ HypothesisAssignment,
11
+ HypothesisTree,
12
+ MHTTrack,
13
+ MHTTrackStatus,
14
+ compute_association_likelihood,
15
+ generate_joint_associations,
16
+ n_scan_prune,
17
+ prune_hypotheses_by_probability,
18
+ )
19
+ from pytcl.trackers.mht import MHTConfig, MHTResult, MHTTracker
20
+ from pytcl.trackers.multi_target import MultiTargetTracker, Track, TrackStatus
21
+ from pytcl.trackers.single_target import SingleTargetTracker, TrackState
25
22
 
26
23
  __all__ = [
27
24
  # Single target
@@ -13,12 +13,7 @@ References
13
13
  """
14
14
 
15
15
  from enum import Enum
16
- from typing import Dict
17
- from typing import List
18
- from typing import NamedTuple
19
- from typing import Optional
20
- from typing import Set
21
- from typing import Tuple
16
+ from typing import Dict, List, NamedTuple, Optional, Set, Tuple
22
17
 
23
18
  import numpy as np
24
19
  from numpy.typing import NDArray
pytcl/trackers/mht.py CHANGED
@@ -15,24 +15,20 @@ References
15
15
  IEEE Trans. Automatic Control, 1979.
16
16
  """
17
17
 
18
- from typing import Callable
19
- from typing import Dict
20
- from typing import List
21
- from typing import NamedTuple
22
- from typing import Optional
23
- from typing import Set
18
+ from typing import Callable, Dict, List, NamedTuple, Optional, Set
24
19
 
25
20
  import numpy as np
26
- from numpy.typing import ArrayLike
27
- from numpy.typing import NDArray
21
+ from numpy.typing import ArrayLike, NDArray
28
22
  from scipy.stats import chi2
29
23
 
30
24
  from pytcl.assignment_algorithms.gating import mahalanobis_distance
31
- from pytcl.trackers.hypothesis import Hypothesis
32
- from pytcl.trackers.hypothesis import HypothesisTree
33
- from pytcl.trackers.hypothesis import MHTTrack
34
- from pytcl.trackers.hypothesis import MHTTrackStatus
35
- from pytcl.trackers.hypothesis import generate_joint_associations
25
+ from pytcl.trackers.hypothesis import (
26
+ Hypothesis,
27
+ HypothesisTree,
28
+ MHTTrack,
29
+ MHTTrackStatus,
30
+ generate_joint_associations,
31
+ )
36
32
 
37
33
 
38
34
  class MHTConfig(NamedTuple):
@@ -6,17 +6,12 @@ and Kalman filtering with track management (initiation, maintenance, deletion).
6
6
  """
7
7
 
8
8
  from enum import Enum
9
- from typing import Callable
10
- from typing import List
11
- from typing import NamedTuple
12
- from typing import Optional
9
+ from typing import Callable, List, NamedTuple, Optional
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
 
18
- from pytcl.assignment_algorithms import chi2_gate_threshold
19
- from pytcl.assignment_algorithms import gnn_association
14
+ from pytcl.assignment_algorithms import chi2_gate_threshold, gnn_association
20
15
 
21
16
 
22
17
  class TrackStatus(Enum):
@@ -4,13 +4,10 @@ Single-target tracker implementation.
4
4
  This module provides a simple single-target tracker using Kalman filtering.
5
5
  """
6
6
 
7
- from typing import Callable
8
- from typing import NamedTuple
9
- from typing import Optional
7
+ from typing import Callable, NamedTuple, Optional
10
8
 
11
9
  import numpy as np
12
- from numpy.typing import ArrayLike
13
- from numpy.typing import NDArray
10
+ from numpy.typing import ArrayLike, NDArray
14
11
 
15
12
 
16
13
  class TrackState(NamedTuple):