nrl-tracker 0.22.0__py3-none-any.whl → 0.22.2__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.2.dist-info}/METADATA +1 -1
  2. nrl_tracker-0.22.2.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.2.dist-info}/LICENSE +0 -0
  131. {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.2.dist-info}/WHEEL +0 -0
  132. {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.2.dist-info}/top_level.txt +0 -0
@@ -25,114 +25,126 @@ Examples
25
25
  >>> r_sun, v_sun = sun_position(2451545.0) # J2000.0
26
26
  """
27
27
 
28
- from pytcl.astronomical.ephemerides import DEEphemeris
29
- from pytcl.astronomical.ephemerides import barycenter_position
30
- from pytcl.astronomical.ephemerides import moon_position
31
- from pytcl.astronomical.ephemerides import planet_position
32
- from pytcl.astronomical.ephemerides import sun_position
33
- from pytcl.astronomical.lambert import LambertSolution
34
- from pytcl.astronomical.lambert import bi_elliptic_transfer
35
- from pytcl.astronomical.lambert import hohmann_transfer
36
- from pytcl.astronomical.lambert import lambert_izzo
37
- from pytcl.astronomical.lambert import lambert_universal
38
- from pytcl.astronomical.lambert import minimum_energy_transfer
28
+ from pytcl.astronomical.ephemerides import (
29
+ DEEphemeris,
30
+ barycenter_position,
31
+ moon_position,
32
+ planet_position,
33
+ sun_position,
34
+ )
35
+ from pytcl.astronomical.lambert import (
36
+ LambertSolution,
37
+ bi_elliptic_transfer,
38
+ hohmann_transfer,
39
+ lambert_izzo,
40
+ lambert_universal,
41
+ minimum_energy_transfer,
42
+ )
39
43
  from pytcl.astronomical.orbital_mechanics import (
40
44
  GM_EARTH, # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
41
45
  )
42
- from pytcl.astronomical.orbital_mechanics import GM_JUPITER
43
- from pytcl.astronomical.orbital_mechanics import GM_MARS
44
- from pytcl.astronomical.orbital_mechanics import GM_MOON
45
- from pytcl.astronomical.orbital_mechanics import GM_SUN
46
- from pytcl.astronomical.orbital_mechanics import OrbitalElements
47
- from pytcl.astronomical.orbital_mechanics import StateVector
48
- from pytcl.astronomical.orbital_mechanics import apoapsis_radius
49
- from pytcl.astronomical.orbital_mechanics import circular_velocity
50
- from pytcl.astronomical.orbital_mechanics import eccentric_to_mean_anomaly
51
- from pytcl.astronomical.orbital_mechanics import eccentric_to_true_anomaly
52
- from pytcl.astronomical.orbital_mechanics import escape_velocity
53
- from pytcl.astronomical.orbital_mechanics import flight_path_angle
54
- from pytcl.astronomical.orbital_mechanics import hyperbolic_to_true_anomaly
55
- from pytcl.astronomical.orbital_mechanics import kepler_propagate
56
- from pytcl.astronomical.orbital_mechanics import kepler_propagate_state
57
- from pytcl.astronomical.orbital_mechanics import mean_motion
58
- from pytcl.astronomical.orbital_mechanics import mean_to_eccentric_anomaly
59
- from pytcl.astronomical.orbital_mechanics import mean_to_hyperbolic_anomaly
60
- from pytcl.astronomical.orbital_mechanics import mean_to_true_anomaly
61
- from pytcl.astronomical.orbital_mechanics import orbit_radius
62
- from pytcl.astronomical.orbital_mechanics import orbital_elements_to_state
63
- from pytcl.astronomical.orbital_mechanics import orbital_period
64
- from pytcl.astronomical.orbital_mechanics import periapsis_radius
65
- from pytcl.astronomical.orbital_mechanics import specific_angular_momentum
66
- from pytcl.astronomical.orbital_mechanics import specific_orbital_energy
67
- from pytcl.astronomical.orbital_mechanics import state_to_orbital_elements
68
- from pytcl.astronomical.orbital_mechanics import time_since_periapsis
69
- from pytcl.astronomical.orbital_mechanics import true_to_eccentric_anomaly
70
- from pytcl.astronomical.orbital_mechanics import true_to_hyperbolic_anomaly
71
- from pytcl.astronomical.orbital_mechanics import true_to_mean_anomaly
72
- from pytcl.astronomical.orbital_mechanics import vis_viva
46
+ from pytcl.astronomical.orbital_mechanics import (
47
+ GM_JUPITER,
48
+ GM_MARS,
49
+ GM_MOON,
50
+ GM_SUN,
51
+ OrbitalElements,
52
+ StateVector,
53
+ apoapsis_radius,
54
+ circular_velocity,
55
+ eccentric_to_mean_anomaly,
56
+ eccentric_to_true_anomaly,
57
+ escape_velocity,
58
+ flight_path_angle,
59
+ hyperbolic_to_true_anomaly,
60
+ kepler_propagate,
61
+ kepler_propagate_state,
62
+ mean_motion,
63
+ mean_to_eccentric_anomaly,
64
+ mean_to_hyperbolic_anomaly,
65
+ mean_to_true_anomaly,
66
+ orbit_radius,
67
+ orbital_elements_to_state,
68
+ orbital_period,
69
+ periapsis_radius,
70
+ specific_angular_momentum,
71
+ specific_orbital_energy,
72
+ state_to_orbital_elements,
73
+ time_since_periapsis,
74
+ true_to_eccentric_anomaly,
75
+ true_to_hyperbolic_anomaly,
76
+ true_to_mean_anomaly,
77
+ vis_viva,
78
+ )
73
79
  from pytcl.astronomical.reference_frames import (
74
80
  earth_rotation_angle, # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
75
81
  )
76
- from pytcl.astronomical.reference_frames import ecef_to_eci
77
- from pytcl.astronomical.reference_frames import eci_to_ecef
78
- from pytcl.astronomical.reference_frames import ecliptic_to_equatorial
79
- from pytcl.astronomical.reference_frames import equation_of_equinoxes
80
- from pytcl.astronomical.reference_frames import equatorial_to_ecliptic
81
- from pytcl.astronomical.reference_frames import gast_iau82
82
- from pytcl.astronomical.reference_frames import gcrf_to_itrf
83
- from pytcl.astronomical.reference_frames import gmst_iau82
84
- from pytcl.astronomical.reference_frames import itrf_to_gcrf
85
- from pytcl.astronomical.reference_frames import julian_centuries_j2000
86
- from pytcl.astronomical.reference_frames import mean_obliquity_iau80
87
- from pytcl.astronomical.reference_frames import nutation_angles_iau80
88
- from pytcl.astronomical.reference_frames import nutation_matrix
89
- from pytcl.astronomical.reference_frames import polar_motion_matrix
90
- from pytcl.astronomical.reference_frames import precession_angles_iau76
91
- from pytcl.astronomical.reference_frames import precession_matrix_iau76
92
- from pytcl.astronomical.reference_frames import sidereal_rotation_matrix
93
- from pytcl.astronomical.reference_frames import true_obliquity
82
+ from pytcl.astronomical.reference_frames import (
83
+ ecef_to_eci,
84
+ eci_to_ecef,
85
+ ecliptic_to_equatorial,
86
+ equation_of_equinoxes,
87
+ equatorial_to_ecliptic,
88
+ gast_iau82,
89
+ gcrf_to_itrf,
90
+ gmst_iau82,
91
+ itrf_to_gcrf,
92
+ julian_centuries_j2000,
93
+ mean_obliquity_iau80,
94
+ nutation_angles_iau80,
95
+ nutation_matrix,
96
+ polar_motion_matrix,
97
+ precession_angles_iau76,
98
+ precession_matrix_iau76,
99
+ sidereal_rotation_matrix,
100
+ true_obliquity,
101
+ )
94
102
  from pytcl.astronomical.relativity import (
95
103
  C_LIGHT, # Physical constants; Schwarzschild metric; Time dilation; Shapiro delay; Precession; PN effects; Range corrections
96
104
  )
97
- from pytcl.astronomical.relativity import G_GRAV
98
- from pytcl.astronomical.relativity import geodetic_precession
99
- from pytcl.astronomical.relativity import gravitational_time_dilation
100
- from pytcl.astronomical.relativity import lense_thirring_precession
101
- from pytcl.astronomical.relativity import post_newtonian_acceleration
102
- from pytcl.astronomical.relativity import proper_time_rate
103
- from pytcl.astronomical.relativity import relativistic_range_correction
104
- from pytcl.astronomical.relativity import schwarzschild_precession_per_orbit
105
- from pytcl.astronomical.relativity import schwarzschild_radius
106
- from pytcl.astronomical.relativity import shapiro_delay
105
+ from pytcl.astronomical.relativity import (
106
+ G_GRAV,
107
+ geodetic_precession,
108
+ gravitational_time_dilation,
109
+ lense_thirring_precession,
110
+ post_newtonian_acceleration,
111
+ proper_time_rate,
112
+ relativistic_range_correction,
113
+ schwarzschild_precession_per_orbit,
114
+ schwarzschild_radius,
115
+ shapiro_delay,
116
+ )
107
117
  from pytcl.astronomical.time_systems import (
108
118
  JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
109
119
  )
110
- from pytcl.astronomical.time_systems import JD_J2000
111
- from pytcl.astronomical.time_systems import JD_UNIX_EPOCH
112
- from pytcl.astronomical.time_systems import MJD_OFFSET
113
- from pytcl.astronomical.time_systems import TT_TAI_OFFSET
114
- from pytcl.astronomical.time_systems import LeapSecondTable
115
- from pytcl.astronomical.time_systems import cal_to_jd
116
- from pytcl.astronomical.time_systems import gast
117
- from pytcl.astronomical.time_systems import get_leap_seconds
118
- from pytcl.astronomical.time_systems import gmst
119
- from pytcl.astronomical.time_systems import gps_to_tai
120
- from pytcl.astronomical.time_systems import gps_to_utc
121
- from pytcl.astronomical.time_systems import gps_week_seconds
122
- from pytcl.astronomical.time_systems import gps_week_to_utc
123
- from pytcl.astronomical.time_systems import jd_to_cal
124
- from pytcl.astronomical.time_systems import jd_to_mjd
125
- from pytcl.astronomical.time_systems import jd_to_unix
126
- from pytcl.astronomical.time_systems import mjd_to_jd
127
- from pytcl.astronomical.time_systems import tai_to_gps
128
- from pytcl.astronomical.time_systems import tai_to_tt
129
- from pytcl.astronomical.time_systems import tai_to_utc
130
- from pytcl.astronomical.time_systems import tt_to_tai
131
- from pytcl.astronomical.time_systems import tt_to_utc
132
- from pytcl.astronomical.time_systems import unix_to_jd
133
- from pytcl.astronomical.time_systems import utc_to_gps
134
- from pytcl.astronomical.time_systems import utc_to_tai
135
- from pytcl.astronomical.time_systems import utc_to_tt
120
+ from pytcl.astronomical.time_systems import (
121
+ JD_J2000,
122
+ JD_UNIX_EPOCH,
123
+ MJD_OFFSET,
124
+ TT_TAI_OFFSET,
125
+ LeapSecondTable,
126
+ cal_to_jd,
127
+ gast,
128
+ get_leap_seconds,
129
+ gmst,
130
+ gps_to_tai,
131
+ gps_to_utc,
132
+ gps_week_seconds,
133
+ gps_week_to_utc,
134
+ jd_to_cal,
135
+ jd_to_mjd,
136
+ jd_to_unix,
137
+ mjd_to_jd,
138
+ tai_to_gps,
139
+ tai_to_tt,
140
+ tai_to_utc,
141
+ tt_to_tai,
142
+ tt_to_utc,
143
+ unix_to_jd,
144
+ utc_to_gps,
145
+ utc_to_tai,
146
+ utc_to_tt,
147
+ )
136
148
 
137
149
  __all__ = [
138
150
  # Time systems - Julian dates
@@ -49,9 +49,7 @@ References
49
49
 
50
50
  """
51
51
 
52
- from typing import Literal
53
- from typing import Optional
54
- from typing import Tuple
52
+ from typing import Literal, Optional, Tuple
55
53
 
56
54
  import numpy as np
57
55
 
@@ -15,8 +15,7 @@ References
15
15
  orbital boundary-value problem," Celestial Mechanics, 1990.
16
16
  """
17
17
 
18
- from typing import NamedTuple
19
- from typing import Tuple
18
+ from typing import NamedTuple, Tuple
20
19
 
21
20
  import numpy as np
22
21
  from numpy.typing import NDArray
@@ -11,8 +11,7 @@ This module provides conversions between various time systems:
11
11
  - Sidereal time (GMST, GAST)
12
12
  """
13
13
 
14
- from typing import List
15
- from typing import Tuple
14
+ from typing import List, Tuple
16
15
 
17
16
  import numpy as np
18
17
 
@@ -6,17 +6,19 @@ temperature, pressure, density, and other properties at various altitudes.
6
6
  """
7
7
 
8
8
  from pytcl.atmosphere.models import G0 # Constants
9
- from pytcl.atmosphere.models import GAMMA
10
- from pytcl.atmosphere.models import P0
11
- from pytcl.atmosphere.models import RHO0
12
- from pytcl.atmosphere.models import T0
13
- from pytcl.atmosphere.models import AtmosphereState
14
- from pytcl.atmosphere.models import R
15
- from pytcl.atmosphere.models import altitude_from_pressure
16
- from pytcl.atmosphere.models import isa_atmosphere
17
- from pytcl.atmosphere.models import mach_number
18
- from pytcl.atmosphere.models import true_airspeed_from_mach
19
- from pytcl.atmosphere.models import us_standard_atmosphere_1976
9
+ from pytcl.atmosphere.models import (
10
+ GAMMA,
11
+ P0,
12
+ RHO0,
13
+ T0,
14
+ AtmosphereState,
15
+ R,
16
+ altitude_from_pressure,
17
+ isa_atmosphere,
18
+ mach_number,
19
+ true_airspeed_from_mach,
20
+ us_standard_atmosphere_1976,
21
+ )
20
22
 
21
23
  __all__ = [
22
24
  "AtmosphereState",
@@ -5,12 +5,10 @@ This module provides standard atmosphere models used for computing
5
5
  temperature, pressure, and density at various altitudes.
6
6
  """
7
7
 
8
- from typing import NamedTuple
9
- from typing import Tuple
8
+ from typing import NamedTuple, Tuple
10
9
 
11
10
  import numpy as np
12
- from numpy.typing import ArrayLike
13
- from numpy.typing import NDArray
11
+ from numpy.typing import ArrayLike, NDArray
14
12
 
15
13
 
16
14
  class AtmosphereState(NamedTuple):
@@ -6,34 +6,42 @@ commonly used in multi-target tracking for hypothesis management and
6
6
  track clustering.
7
7
  """
8
8
 
9
- from pytcl.clustering.dbscan import DBSCANResult
10
- from pytcl.clustering.dbscan import compute_neighbors
11
- from pytcl.clustering.dbscan import dbscan
12
- from pytcl.clustering.dbscan import dbscan_predict
13
- from pytcl.clustering.gaussian_mixture import GaussianComponent
14
- from pytcl.clustering.gaussian_mixture import GaussianMixture
15
- from pytcl.clustering.gaussian_mixture import MergeResult
16
- from pytcl.clustering.gaussian_mixture import ReductionResult
17
- from pytcl.clustering.gaussian_mixture import merge_gaussians
18
- from pytcl.clustering.gaussian_mixture import moment_match
19
- from pytcl.clustering.gaussian_mixture import prune_mixture
20
- from pytcl.clustering.gaussian_mixture import reduce_mixture_runnalls
21
- from pytcl.clustering.gaussian_mixture import reduce_mixture_west
22
- from pytcl.clustering.gaussian_mixture import runnalls_merge_cost
23
- from pytcl.clustering.gaussian_mixture import west_merge_cost
24
- from pytcl.clustering.hierarchical import DendrogramNode
25
- from pytcl.clustering.hierarchical import HierarchicalResult
26
- from pytcl.clustering.hierarchical import LinkageType
27
- from pytcl.clustering.hierarchical import agglomerative_clustering
28
- from pytcl.clustering.hierarchical import compute_distance_matrix
29
- from pytcl.clustering.hierarchical import cut_dendrogram
30
- from pytcl.clustering.hierarchical import fcluster
31
- from pytcl.clustering.kmeans import KMeansResult
32
- from pytcl.clustering.kmeans import assign_clusters
33
- from pytcl.clustering.kmeans import kmeans
34
- from pytcl.clustering.kmeans import kmeans_elbow
35
- from pytcl.clustering.kmeans import kmeans_plusplus_init
36
- from pytcl.clustering.kmeans import update_centers
9
+ from pytcl.clustering.dbscan import (
10
+ DBSCANResult,
11
+ compute_neighbors,
12
+ dbscan,
13
+ dbscan_predict,
14
+ )
15
+ from pytcl.clustering.gaussian_mixture import (
16
+ GaussianComponent,
17
+ GaussianMixture,
18
+ MergeResult,
19
+ ReductionResult,
20
+ merge_gaussians,
21
+ moment_match,
22
+ prune_mixture,
23
+ reduce_mixture_runnalls,
24
+ reduce_mixture_west,
25
+ runnalls_merge_cost,
26
+ west_merge_cost,
27
+ )
28
+ from pytcl.clustering.hierarchical import (
29
+ DendrogramNode,
30
+ HierarchicalResult,
31
+ LinkageType,
32
+ agglomerative_clustering,
33
+ compute_distance_matrix,
34
+ cut_dendrogram,
35
+ fcluster,
36
+ )
37
+ from pytcl.clustering.kmeans import (
38
+ KMeansResult,
39
+ assign_clusters,
40
+ kmeans,
41
+ kmeans_elbow,
42
+ kmeans_plusplus_init,
43
+ update_centers,
44
+ )
37
45
 
38
46
  __all__ = [
39
47
  # Gaussian mixture
@@ -12,14 +12,11 @@ References
12
12
  with Noise," KDD 1996.
13
13
  """
14
14
 
15
- from typing import List
16
- from typing import NamedTuple
17
- from typing import Set
15
+ from typing import List, NamedTuple, Set
18
16
 
19
17
  import numpy as np
20
18
  from numba import njit
21
- from numpy.typing import ArrayLike
22
- from numpy.typing import NDArray
19
+ from numpy.typing import ArrayLike, NDArray
23
20
 
24
21
 
25
22
  class DBSCANResult(NamedTuple):
@@ -13,14 +13,10 @@ References
13
13
  Journal of the Royal Statistical Society, Series B, vol. 55, no. 2, 1993.
14
14
  """
15
15
 
16
- from typing import List
17
- from typing import NamedTuple
18
- from typing import Optional
19
- from typing import Tuple
16
+ from typing import List, NamedTuple, Optional, Tuple
20
17
 
21
18
  import numpy as np
22
- from numpy.typing import ArrayLike
23
- from numpy.typing import NDArray
19
+ from numpy.typing import ArrayLike, NDArray
24
20
 
25
21
 
26
22
  class GaussianComponent(NamedTuple):
@@ -12,15 +12,11 @@ References
12
12
  """
13
13
 
14
14
  from enum import Enum
15
- from typing import List
16
- from typing import Literal
17
- from typing import NamedTuple
18
- from typing import Optional
15
+ from typing import List, Literal, NamedTuple, Optional
19
16
 
20
17
  import numpy as np
21
18
  from numba import njit
22
- from numpy.typing import ArrayLike
23
- from numpy.typing import NDArray
19
+ from numpy.typing import ArrayLike, NDArray
24
20
 
25
21
 
26
22
  class LinkageType(Enum):
@@ -10,14 +10,10 @@ References
10
10
  Careful Seeding," SODA 2007.
11
11
  """
12
12
 
13
- from typing import Literal
14
- from typing import NamedTuple
15
- from typing import Optional
16
- from typing import Union
13
+ from typing import Literal, NamedTuple, Optional, Union
17
14
 
18
15
  import numpy as np
19
- from numpy.typing import ArrayLike
20
- from numpy.typing import NDArray
16
+ from numpy.typing import ArrayLike, NDArray
21
17
  from scipy.spatial.distance import cdist
22
18
 
23
19
 
@@ -5,35 +5,32 @@ This module provides spatial data structures for efficient
5
5
  nearest neighbor queries, spatial indexing, and tracking containers.
6
6
  """
7
7
 
8
- from pytcl.containers.cluster_set import ClusterSet
9
- from pytcl.containers.cluster_set import ClusterStats
10
- from pytcl.containers.cluster_set import TrackCluster
11
- from pytcl.containers.cluster_set import cluster_tracks_dbscan
12
- from pytcl.containers.cluster_set import cluster_tracks_kmeans
13
- from pytcl.containers.cluster_set import compute_cluster_centroid
14
- from pytcl.containers.covertree import CoverTree
15
- from pytcl.containers.covertree import CoverTreeNode
16
- from pytcl.containers.covertree import CoverTreeResult
17
- from pytcl.containers.kd_tree import BallTree
18
- from pytcl.containers.kd_tree import KDNode
19
- from pytcl.containers.kd_tree import KDTree
20
- from pytcl.containers.kd_tree import NearestNeighborResult
21
- from pytcl.containers.measurement_set import Measurement
22
- from pytcl.containers.measurement_set import MeasurementQuery
23
- from pytcl.containers.measurement_set import MeasurementSet
24
- from pytcl.containers.rtree import BoundingBox
25
- from pytcl.containers.rtree import RTree
26
- from pytcl.containers.rtree import RTreeNode
27
- from pytcl.containers.rtree import RTreeResult
28
- from pytcl.containers.rtree import box_from_point
29
- from pytcl.containers.rtree import box_from_points
30
- from pytcl.containers.rtree import merge_boxes
31
- from pytcl.containers.track_list import TrackList
32
- from pytcl.containers.track_list import TrackListStats
33
- from pytcl.containers.track_list import TrackQuery
34
- from pytcl.containers.vptree import VPNode
35
- from pytcl.containers.vptree import VPTree
36
- from pytcl.containers.vptree import VPTreeResult
8
+ from pytcl.containers.cluster_set import (
9
+ ClusterSet,
10
+ ClusterStats,
11
+ TrackCluster,
12
+ cluster_tracks_dbscan,
13
+ cluster_tracks_kmeans,
14
+ compute_cluster_centroid,
15
+ )
16
+ from pytcl.containers.covertree import CoverTree, CoverTreeNode, CoverTreeResult
17
+ from pytcl.containers.kd_tree import BallTree, KDNode, KDTree, NearestNeighborResult
18
+ from pytcl.containers.measurement_set import (
19
+ Measurement,
20
+ MeasurementQuery,
21
+ MeasurementSet,
22
+ )
23
+ from pytcl.containers.rtree import (
24
+ BoundingBox,
25
+ RTree,
26
+ RTreeNode,
27
+ RTreeResult,
28
+ box_from_point,
29
+ box_from_points,
30
+ merge_boxes,
31
+ )
32
+ from pytcl.containers.track_list import TrackList, TrackListStats, TrackQuery
33
+ from pytcl.containers.vptree import VPNode, VPTree, VPTreeResult
37
34
 
38
35
  __all__ = [
39
36
  # K-D Tree
@@ -7,18 +7,10 @@ that move together (formations, convoys, etc.).
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from typing import Dict
11
- from typing import Iterable
12
- from typing import Iterator
13
- from typing import List
14
- from typing import NamedTuple
15
- from typing import Optional
16
- from typing import Tuple
17
- from typing import Union
10
+ from typing import Dict, Iterable, Iterator, List, NamedTuple, Optional, Tuple, Union
18
11
 
19
12
  import numpy as np
20
- from numpy.typing import ArrayLike
21
- from numpy.typing import NDArray
13
+ from numpy.typing import ArrayLike, NDArray
22
14
 
23
15
  from pytcl.clustering.dbscan import dbscan
24
16
  from pytcl.clustering.kmeans import kmeans
@@ -11,16 +11,10 @@ References
11
11
  neighbor," ICML 2006.
12
12
  """
13
13
 
14
- from typing import Callable
15
- from typing import List
16
- from typing import NamedTuple
17
- from typing import Optional
18
- from typing import Set
19
- from typing import Tuple
14
+ from typing import Callable, List, NamedTuple, Optional, Set, Tuple
20
15
 
21
16
  import numpy as np
22
- from numpy.typing import ArrayLike
23
- from numpy.typing import NDArray
17
+ from numpy.typing import ArrayLike, NDArray
24
18
 
25
19
 
26
20
  class CoverTreeResult(NamedTuple):
@@ -13,14 +13,10 @@ References
13
13
  Finding Best Matches in Logarithmic Expected Time," ACM TOMS, 1977.
14
14
  """
15
15
 
16
- from typing import List
17
- from typing import NamedTuple
18
- from typing import Optional
19
- from typing import Tuple
16
+ from typing import List, NamedTuple, Optional, Tuple
20
17
 
21
18
  import numpy as np
22
- from numpy.typing import ArrayLike
23
- from numpy.typing import NDArray
19
+ from numpy.typing import ArrayLike, NDArray
24
20
 
25
21
 
26
22
  class KDNode:
@@ -7,17 +7,10 @@ with spatial query support.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from typing import Iterable
11
- from typing import Iterator
12
- from typing import List
13
- from typing import NamedTuple
14
- from typing import Optional
15
- from typing import Tuple
16
- from typing import Union
10
+ from typing import Iterable, Iterator, List, NamedTuple, Optional, Tuple, Union
17
11
 
18
12
  import numpy as np
19
- from numpy.typing import ArrayLike
20
- from numpy.typing import NDArray
13
+ from numpy.typing import ArrayLike, NDArray
21
14
 
22
15
  from pytcl.containers.kd_tree import KDTree
23
16
 
pytcl/containers/rtree.py CHANGED
@@ -13,14 +13,10 @@ References
13
13
  Method for Points and Rectangles," ACM SIGMOD, 1990.
14
14
  """
15
15
 
16
- from typing import List
17
- from typing import NamedTuple
18
- from typing import Optional
19
- from typing import Tuple
16
+ from typing import List, NamedTuple, Optional, Tuple
20
17
 
21
18
  import numpy as np
22
- from numpy.typing import ArrayLike
23
- from numpy.typing import NDArray
19
+ from numpy.typing import ArrayLike, NDArray
24
20
 
25
21
 
26
22
  class BoundingBox(NamedTuple):
@@ -7,22 +7,22 @@ with filtering, querying, and batch operations.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from typing import TYPE_CHECKING
11
- from typing import Callable
12
- from typing import Iterable
13
- from typing import Iterator
14
- from typing import List
15
- from typing import NamedTuple
16
- from typing import Optional
17
- from typing import Tuple
18
- from typing import Union
10
+ from typing import (
11
+ TYPE_CHECKING,
12
+ Callable,
13
+ Iterable,
14
+ Iterator,
15
+ List,
16
+ NamedTuple,
17
+ Optional,
18
+ Tuple,
19
+ Union,
20
+ )
19
21
 
20
22
  import numpy as np
21
- from numpy.typing import ArrayLike
22
- from numpy.typing import NDArray
23
+ from numpy.typing import ArrayLike, NDArray
23
24
 
24
- from pytcl.trackers.multi_target import Track
25
- from pytcl.trackers.multi_target import TrackStatus
25
+ from pytcl.trackers.multi_target import Track, TrackStatus
26
26
 
27
27
  if TYPE_CHECKING:
28
28
  from pytcl.trackers.multi_target import MultiTargetTracker