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
@@ -5,17 +5,19 @@ This module provides process noise covariance matrices (Q) for various
5
5
  motion models used in target tracking applications.
6
6
  """
7
7
 
8
- from pytcl.dynamic_models.process_noise.coordinated_turn import q_coord_turn_2d
9
- from pytcl.dynamic_models.process_noise.coordinated_turn import q_coord_turn_3d
10
- from pytcl.dynamic_models.process_noise.coordinated_turn import q_coord_turn_polar
11
- from pytcl.dynamic_models.process_noise.polynomial import q_constant_acceleration
12
- from pytcl.dynamic_models.process_noise.polynomial import q_constant_velocity
13
- from pytcl.dynamic_models.process_noise.polynomial import q_continuous_white_noise
14
- from pytcl.dynamic_models.process_noise.polynomial import q_discrete_white_noise
15
- from pytcl.dynamic_models.process_noise.polynomial import q_poly_kal
16
- from pytcl.dynamic_models.process_noise.singer import q_singer
17
- from pytcl.dynamic_models.process_noise.singer import q_singer_2d
18
- from pytcl.dynamic_models.process_noise.singer import q_singer_3d
8
+ from pytcl.dynamic_models.process_noise.coordinated_turn import (
9
+ q_coord_turn_2d,
10
+ q_coord_turn_3d,
11
+ q_coord_turn_polar,
12
+ )
13
+ from pytcl.dynamic_models.process_noise.polynomial import (
14
+ q_constant_acceleration,
15
+ q_constant_velocity,
16
+ q_continuous_white_noise,
17
+ q_discrete_white_noise,
18
+ q_poly_kal,
19
+ )
20
+ from pytcl.dynamic_models.process_noise.singer import q_singer, q_singer_2d, q_singer_3d
19
21
 
20
22
  __all__ = [
21
23
  # Polynomial models
pytcl/gravity/__init__.py CHANGED
@@ -19,61 +19,71 @@ Examples
19
19
  >>> print(f"Gravity magnitude: {result.magnitude:.4f} m/s^2")
20
20
  """
21
21
 
22
- from pytcl.gravity.clenshaw import clenshaw_gravity
23
- from pytcl.gravity.clenshaw import clenshaw_potential
24
- from pytcl.gravity.clenshaw import clenshaw_sum_order
25
- from pytcl.gravity.clenshaw import clenshaw_sum_order_derivative
26
- from pytcl.gravity.egm import EGMCoefficients
27
- from pytcl.gravity.egm import GeoidResult
28
- from pytcl.gravity.egm import GravityDisturbance
29
- from pytcl.gravity.egm import create_test_coefficients
30
- from pytcl.gravity.egm import deflection_of_vertical
31
- from pytcl.gravity.egm import geoid_height
32
- from pytcl.gravity.egm import geoid_heights
33
- from pytcl.gravity.egm import get_data_dir
34
- from pytcl.gravity.egm import gravity_anomaly
35
- from pytcl.gravity.egm import gravity_disturbance
36
- from pytcl.gravity.egm import load_egm_coefficients
37
- from pytcl.gravity.models import GRS80
38
- from pytcl.gravity.models import WGS84
39
- from pytcl.gravity.models import GravityConstants
40
- from pytcl.gravity.models import GravityResult
41
- from pytcl.gravity.models import bouguer_anomaly
42
- from pytcl.gravity.models import free_air_anomaly
43
- from pytcl.gravity.models import geoid_height_j2
44
- from pytcl.gravity.models import gravitational_potential
45
- from pytcl.gravity.models import gravity_j2
46
- from pytcl.gravity.models import gravity_wgs84
47
- from pytcl.gravity.models import normal_gravity
48
- from pytcl.gravity.models import normal_gravity_somigliana
49
- from pytcl.gravity.spherical_harmonics import associated_legendre
50
- from pytcl.gravity.spherical_harmonics import associated_legendre_derivative
51
- from pytcl.gravity.spherical_harmonics import associated_legendre_scaled
52
- from pytcl.gravity.spherical_harmonics import gravity_acceleration
53
- from pytcl.gravity.spherical_harmonics import legendre_scaling_factors
54
- from pytcl.gravity.spherical_harmonics import spherical_harmonic_sum
55
- from pytcl.gravity.tides import GRAVIMETRIC_FACTOR
56
- from pytcl.gravity.tides import LOVE_H2
57
- from pytcl.gravity.tides import LOVE_H3
58
- from pytcl.gravity.tides import LOVE_K2
59
- from pytcl.gravity.tides import LOVE_K3
60
- from pytcl.gravity.tides import SHIDA_L2
61
- from pytcl.gravity.tides import SHIDA_L3
62
- from pytcl.gravity.tides import TIDAL_CONSTITUENTS
63
- from pytcl.gravity.tides import OceanTideLoading
64
- from pytcl.gravity.tides import TidalDisplacement
65
- from pytcl.gravity.tides import TidalGravity
66
- from pytcl.gravity.tides import atmospheric_pressure_loading
67
- from pytcl.gravity.tides import fundamental_arguments
68
- from pytcl.gravity.tides import julian_centuries_j2000
69
- from pytcl.gravity.tides import moon_position_approximate
70
- from pytcl.gravity.tides import ocean_tide_loading_displacement
71
- from pytcl.gravity.tides import pole_tide_displacement
72
- from pytcl.gravity.tides import solid_earth_tide_displacement
73
- from pytcl.gravity.tides import solid_earth_tide_gravity
74
- from pytcl.gravity.tides import sun_position_approximate
75
- from pytcl.gravity.tides import tidal_gravity_correction
76
- from pytcl.gravity.tides import total_tidal_displacement
22
+ from pytcl.gravity.clenshaw import (
23
+ clenshaw_gravity,
24
+ clenshaw_potential,
25
+ clenshaw_sum_order,
26
+ clenshaw_sum_order_derivative,
27
+ )
28
+ from pytcl.gravity.egm import (
29
+ EGMCoefficients,
30
+ GeoidResult,
31
+ GravityDisturbance,
32
+ create_test_coefficients,
33
+ deflection_of_vertical,
34
+ geoid_height,
35
+ geoid_heights,
36
+ get_data_dir,
37
+ gravity_anomaly,
38
+ gravity_disturbance,
39
+ load_egm_coefficients,
40
+ )
41
+ from pytcl.gravity.models import (
42
+ GRS80,
43
+ WGS84,
44
+ GravityConstants,
45
+ GravityResult,
46
+ bouguer_anomaly,
47
+ free_air_anomaly,
48
+ geoid_height_j2,
49
+ gravitational_potential,
50
+ gravity_j2,
51
+ gravity_wgs84,
52
+ normal_gravity,
53
+ normal_gravity_somigliana,
54
+ )
55
+ from pytcl.gravity.spherical_harmonics import (
56
+ associated_legendre,
57
+ associated_legendre_derivative,
58
+ associated_legendre_scaled,
59
+ gravity_acceleration,
60
+ legendre_scaling_factors,
61
+ spherical_harmonic_sum,
62
+ )
63
+ from pytcl.gravity.tides import (
64
+ GRAVIMETRIC_FACTOR,
65
+ LOVE_H2,
66
+ LOVE_H3,
67
+ LOVE_K2,
68
+ LOVE_K3,
69
+ SHIDA_L2,
70
+ SHIDA_L3,
71
+ TIDAL_CONSTITUENTS,
72
+ OceanTideLoading,
73
+ TidalDisplacement,
74
+ TidalGravity,
75
+ atmospheric_pressure_loading,
76
+ fundamental_arguments,
77
+ julian_centuries_j2000,
78
+ moon_position_approximate,
79
+ ocean_tide_loading_displacement,
80
+ pole_tide_displacement,
81
+ solid_earth_tide_displacement,
82
+ solid_earth_tide_gravity,
83
+ sun_position_approximate,
84
+ tidal_gravity_correction,
85
+ total_tidal_displacement,
86
+ )
77
87
 
78
88
  __all__ = [
79
89
  # Spherical harmonics
pytcl/gravity/clenshaw.py CHANGED
@@ -19,8 +19,7 @@ References
19
19
  Journal of Geodesy 82.4-5 (2008): 223-229.
20
20
  """
21
21
 
22
- from typing import Optional
23
- from typing import Tuple
22
+ from typing import Optional, Tuple
24
23
 
25
24
  import numpy as np
26
25
  from numpy.typing import NDArray
pytcl/gravity/egm.py CHANGED
@@ -24,18 +24,13 @@ References
24
24
  import os
25
25
  from functools import lru_cache
26
26
  from pathlib import Path
27
- from typing import Dict
28
- from typing import NamedTuple
29
- from typing import Optional
30
- from typing import Tuple
27
+ from typing import Dict, NamedTuple, Optional, Tuple
31
28
 
32
29
  import numpy as np
33
30
  from numpy.typing import NDArray
34
31
 
35
- from .clenshaw import clenshaw_gravity
36
- from .clenshaw import clenshaw_potential
37
- from .models import WGS84
38
- from .models import normal_gravity_somigliana
32
+ from .clenshaw import clenshaw_gravity, clenshaw_potential
33
+ from .models import WGS84, normal_gravity_somigliana
39
34
 
40
35
 
41
36
  class EGMCoefficients(NamedTuple):
@@ -11,8 +11,7 @@ References
11
11
  .. [2] O. Montenbruck and E. Gill, "Satellite Orbits," Springer, 2000.
12
12
  """
13
13
 
14
- from typing import Optional
15
- from typing import Tuple
14
+ from typing import Optional, Tuple
16
15
 
17
16
  import numpy as np
18
17
  from numpy.typing import NDArray
pytcl/gravity/tides.py CHANGED
@@ -20,8 +20,7 @@ References
20
20
  displacements," JGR, 102, B9, 20469-20477, 1997.
21
21
  """
22
22
 
23
- from typing import NamedTuple
24
- from typing import Tuple
23
+ from typing import NamedTuple, Tuple
25
24
 
26
25
  import numpy as np
27
26
  from numpy.typing import NDArray
@@ -25,34 +25,33 @@ Examples
25
25
  >>> coef = create_emm_test_coefficients(n_max=36)
26
26
  """
27
27
 
28
- from pytcl.magnetism.emm import EMM_PARAMETERS
29
- from pytcl.magnetism.emm import HighResCoefficients
28
+ from pytcl.magnetism.emm import EMM_PARAMETERS, HighResCoefficients
30
29
  from pytcl.magnetism.emm import create_test_coefficients as create_emm_test_coefficients
31
- from pytcl.magnetism.emm import emm
32
- from pytcl.magnetism.emm import emm_declination
33
- from pytcl.magnetism.emm import emm_inclination
34
- from pytcl.magnetism.emm import emm_intensity
30
+ from pytcl.magnetism.emm import emm, emm_declination, emm_inclination, emm_intensity
35
31
  from pytcl.magnetism.emm import get_data_dir as get_emm_data_dir
36
- from pytcl.magnetism.emm import load_emm_coefficients
37
- from pytcl.magnetism.emm import wmmhr
38
- from pytcl.magnetism.igrf import IGRF13
39
- from pytcl.magnetism.igrf import IGRFModel
40
- from pytcl.magnetism.igrf import create_igrf13_coefficients
41
- from pytcl.magnetism.igrf import dipole_axis
42
- from pytcl.magnetism.igrf import dipole_moment
43
- from pytcl.magnetism.igrf import igrf
44
- from pytcl.magnetism.igrf import igrf_declination
45
- from pytcl.magnetism.igrf import igrf_inclination
46
- from pytcl.magnetism.igrf import magnetic_north_pole
47
- from pytcl.magnetism.wmm import WMM2020
48
- from pytcl.magnetism.wmm import MagneticCoefficients
49
- from pytcl.magnetism.wmm import MagneticResult
50
- from pytcl.magnetism.wmm import create_wmm2020_coefficients
51
- from pytcl.magnetism.wmm import magnetic_declination
52
- from pytcl.magnetism.wmm import magnetic_field_intensity
53
- from pytcl.magnetism.wmm import magnetic_field_spherical
54
- from pytcl.magnetism.wmm import magnetic_inclination
55
- from pytcl.magnetism.wmm import wmm
32
+ from pytcl.magnetism.emm import load_emm_coefficients, wmmhr
33
+ from pytcl.magnetism.igrf import (
34
+ IGRF13,
35
+ IGRFModel,
36
+ create_igrf13_coefficients,
37
+ dipole_axis,
38
+ dipole_moment,
39
+ igrf,
40
+ igrf_declination,
41
+ igrf_inclination,
42
+ magnetic_north_pole,
43
+ )
44
+ from pytcl.magnetism.wmm import (
45
+ WMM2020,
46
+ MagneticCoefficients,
47
+ MagneticResult,
48
+ create_wmm2020_coefficients,
49
+ magnetic_declination,
50
+ magnetic_field_intensity,
51
+ magnetic_field_spherical,
52
+ magnetic_inclination,
53
+ wmm,
54
+ )
56
55
 
57
56
  __all__ = [
58
57
  # Types and constants
pytcl/magnetism/emm.py CHANGED
@@ -24,10 +24,7 @@ References
24
24
  import os
25
25
  from functools import lru_cache
26
26
  from pathlib import Path
27
- from typing import Dict
28
- from typing import NamedTuple
29
- from typing import Optional
30
- from typing import Tuple
27
+ from typing import Dict, NamedTuple, Optional, Tuple
31
28
 
32
29
  import numpy as np
33
30
  from numpy.typing import NDArray
pytcl/magnetism/igrf.py CHANGED
@@ -12,14 +12,15 @@ References
12
12
  .. [2] https://www.ngdc.noaa.gov/IAGA/vmod/igrf.html
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
18
 
20
- from pytcl.magnetism.wmm import MagneticCoefficients
21
- from pytcl.magnetism.wmm import MagneticResult
22
- from pytcl.magnetism.wmm import magnetic_field_spherical
19
+ from pytcl.magnetism.wmm import (
20
+ MagneticCoefficients,
21
+ MagneticResult,
22
+ magnetic_field_spherical,
23
+ )
23
24
 
24
25
 
25
26
  class IGRFModel(NamedTuple):
pytcl/magnetism/wmm.py CHANGED
@@ -12,8 +12,7 @@ References
12
12
  .. [2] https://www.ngdc.noaa.gov/geomag/WMM/
13
13
  """
14
14
 
15
- from typing import NamedTuple
16
- from typing import Tuple
15
+ from typing import NamedTuple, Tuple
17
16
 
18
17
  import numpy as np
19
18
  from numpy.typing import NDArray
@@ -15,96 +15,114 @@ This module contains a wide variety of mathematical functions including:
15
15
  """
16
16
 
17
17
  # Import submodules for easy access
18
- from pytcl.mathematical_functions import basic_matrix
19
- from pytcl.mathematical_functions import combinatorics
20
- from pytcl.mathematical_functions import geometry
21
- from pytcl.mathematical_functions import interpolation
22
- from pytcl.mathematical_functions import numerical_integration
23
- from pytcl.mathematical_functions import signal_processing
24
- from pytcl.mathematical_functions import special_functions
25
- from pytcl.mathematical_functions import statistics
26
- from pytcl.mathematical_functions import transforms
18
+ from pytcl.mathematical_functions import (
19
+ basic_matrix,
20
+ combinatorics,
21
+ geometry,
22
+ interpolation,
23
+ numerical_integration,
24
+ signal_processing,
25
+ special_functions,
26
+ statistics,
27
+ transforms,
28
+ )
27
29
 
28
30
  # Basic matrix operations
29
- from pytcl.mathematical_functions.basic_matrix import block_diag
30
- from pytcl.mathematical_functions.basic_matrix import chol_semi_def
31
- from pytcl.mathematical_functions.basic_matrix import kron
32
- from pytcl.mathematical_functions.basic_matrix import matrix_sqrt
33
- from pytcl.mathematical_functions.basic_matrix import null_space
34
- from pytcl.mathematical_functions.basic_matrix import pinv_truncated
35
- from pytcl.mathematical_functions.basic_matrix import range_space
36
- from pytcl.mathematical_functions.basic_matrix import tria
37
- from pytcl.mathematical_functions.basic_matrix import tria_sqrt
38
- from pytcl.mathematical_functions.basic_matrix import unvec
39
- from pytcl.mathematical_functions.basic_matrix import vec
31
+ from pytcl.mathematical_functions.basic_matrix import (
32
+ block_diag,
33
+ chol_semi_def,
34
+ kron,
35
+ matrix_sqrt,
36
+ null_space,
37
+ pinv_truncated,
38
+ range_space,
39
+ tria,
40
+ tria_sqrt,
41
+ unvec,
42
+ vec,
43
+ )
40
44
 
41
45
  # Combinatorics
42
- from pytcl.mathematical_functions.combinatorics import combinations
43
- from pytcl.mathematical_functions.combinatorics import factorial
44
- from pytcl.mathematical_functions.combinatorics import n_choose_k
45
- from pytcl.mathematical_functions.combinatorics import permutation_rank
46
- from pytcl.mathematical_functions.combinatorics import permutation_unrank
47
- from pytcl.mathematical_functions.combinatorics import permutations
46
+ from pytcl.mathematical_functions.combinatorics import (
47
+ combinations,
48
+ factorial,
49
+ n_choose_k,
50
+ permutation_rank,
51
+ permutation_unrank,
52
+ permutations,
53
+ )
48
54
 
49
55
  # Geometry
50
- from pytcl.mathematical_functions.geometry import bounding_box
51
- from pytcl.mathematical_functions.geometry import convex_hull
52
- from pytcl.mathematical_functions.geometry import line_intersection
53
- from pytcl.mathematical_functions.geometry import point_in_polygon
54
- from pytcl.mathematical_functions.geometry import polygon_area
56
+ from pytcl.mathematical_functions.geometry import (
57
+ bounding_box,
58
+ convex_hull,
59
+ line_intersection,
60
+ point_in_polygon,
61
+ polygon_area,
62
+ )
55
63
 
56
64
  # Interpolation
57
- from pytcl.mathematical_functions.interpolation import cubic_spline
58
- from pytcl.mathematical_functions.interpolation import interp1d
59
- from pytcl.mathematical_functions.interpolation import interp2d
60
- from pytcl.mathematical_functions.interpolation import linear_interp
61
- from pytcl.mathematical_functions.interpolation import rbf_interpolate
65
+ from pytcl.mathematical_functions.interpolation import (
66
+ cubic_spline,
67
+ interp1d,
68
+ interp2d,
69
+ linear_interp,
70
+ rbf_interpolate,
71
+ )
62
72
 
63
73
  # Numerical integration
64
- from pytcl.mathematical_functions.numerical_integration import gauss_hermite
65
- from pytcl.mathematical_functions.numerical_integration import gauss_legendre
66
- from pytcl.mathematical_functions.numerical_integration import quad
67
- from pytcl.mathematical_functions.numerical_integration import spherical_cubature
68
74
  from pytcl.mathematical_functions.numerical_integration import (
75
+ gauss_hermite,
76
+ gauss_legendre,
77
+ quad,
78
+ spherical_cubature,
69
79
  unscented_transform_points,
70
80
  )
71
81
 
72
82
  # Signal processing
73
- from pytcl.mathematical_functions.signal_processing import butter_design
74
- from pytcl.mathematical_functions.signal_processing import cfar_ca
75
- from pytcl.mathematical_functions.signal_processing import matched_filter
83
+ from pytcl.mathematical_functions.signal_processing import (
84
+ butter_design,
85
+ cfar_ca,
86
+ matched_filter,
87
+ )
76
88
 
77
89
  # Special functions
78
- from pytcl.mathematical_functions.special_functions import besseli
79
- from pytcl.mathematical_functions.special_functions import besselj
80
- from pytcl.mathematical_functions.special_functions import besselk
81
- from pytcl.mathematical_functions.special_functions import bessely
82
- from pytcl.mathematical_functions.special_functions import beta
83
- from pytcl.mathematical_functions.special_functions import betaln
84
- from pytcl.mathematical_functions.special_functions import erf
85
- from pytcl.mathematical_functions.special_functions import erfc
86
- from pytcl.mathematical_functions.special_functions import erfinv
87
- from pytcl.mathematical_functions.special_functions import gamma
88
- from pytcl.mathematical_functions.special_functions import gammaln
90
+ from pytcl.mathematical_functions.special_functions import (
91
+ besseli,
92
+ besselj,
93
+ besselk,
94
+ bessely,
95
+ beta,
96
+ betaln,
97
+ erf,
98
+ erfc,
99
+ erfinv,
100
+ gamma,
101
+ gammaln,
102
+ )
89
103
 
90
104
  # Statistics
91
- from pytcl.mathematical_functions.statistics import ChiSquared
92
- from pytcl.mathematical_functions.statistics import Gaussian
93
- from pytcl.mathematical_functions.statistics import MultivariateGaussian
94
- from pytcl.mathematical_functions.statistics import Uniform
95
- from pytcl.mathematical_functions.statistics import mad
96
- from pytcl.mathematical_functions.statistics import nees
97
- from pytcl.mathematical_functions.statistics import nis
98
- from pytcl.mathematical_functions.statistics import weighted_cov
99
- from pytcl.mathematical_functions.statistics import weighted_mean
105
+ from pytcl.mathematical_functions.statistics import (
106
+ ChiSquared,
107
+ Gaussian,
108
+ MultivariateGaussian,
109
+ Uniform,
110
+ mad,
111
+ nees,
112
+ nis,
113
+ weighted_cov,
114
+ weighted_mean,
115
+ )
100
116
 
101
117
  # Transforms
102
- from pytcl.mathematical_functions.transforms import cwt
103
- from pytcl.mathematical_functions.transforms import fft
104
- from pytcl.mathematical_functions.transforms import ifft
105
- from pytcl.mathematical_functions.transforms import power_spectrum
106
- from pytcl.mathematical_functions.transforms import spectrogram
107
- from pytcl.mathematical_functions.transforms import stft
118
+ from pytcl.mathematical_functions.transforms import (
119
+ cwt,
120
+ fft,
121
+ ifft,
122
+ power_spectrum,
123
+ spectrogram,
124
+ stft,
125
+ )
108
126
 
109
127
  __all__ = [
110
128
  # Submodules
@@ -9,38 +9,32 @@ This module provides:
9
9
 
10
10
  from pytcl.mathematical_functions.basic_matrix.decompositions import ( # noqa: E501
11
11
  chol_semi_def,
12
+ matrix_sqrt,
13
+ null_space,
14
+ pinv_truncated,
15
+ range_space,
16
+ rank_revealing_qr,
17
+ tria,
18
+ tria_sqrt,
12
19
  )
13
- from pytcl.mathematical_functions.basic_matrix.decompositions import matrix_sqrt
14
- from pytcl.mathematical_functions.basic_matrix.decompositions import null_space
15
- from pytcl.mathematical_functions.basic_matrix.decompositions import pinv_truncated
16
- from pytcl.mathematical_functions.basic_matrix.decompositions import range_space
17
- from pytcl.mathematical_functions.basic_matrix.decompositions import rank_revealing_qr
18
- from pytcl.mathematical_functions.basic_matrix.decompositions import tria
19
- from pytcl.mathematical_functions.basic_matrix.decompositions import tria_sqrt
20
20
  from pytcl.mathematical_functions.basic_matrix.special_matrices import ( # noqa: E501
21
21
  block_diag,
22
- )
23
- from pytcl.mathematical_functions.basic_matrix.special_matrices import circulant
24
- from pytcl.mathematical_functions.basic_matrix.special_matrices import (
22
+ circulant,
25
23
  commutation_matrix,
26
- )
27
- from pytcl.mathematical_functions.basic_matrix.special_matrices import companion
28
- from pytcl.mathematical_functions.basic_matrix.special_matrices import dft_matrix
29
- from pytcl.mathematical_functions.basic_matrix.special_matrices import (
24
+ companion,
25
+ dft_matrix,
30
26
  duplication_matrix,
31
- )
32
- from pytcl.mathematical_functions.basic_matrix.special_matrices import (
33
27
  elimination_matrix,
28
+ hadamard,
29
+ hankel,
30
+ hilbert,
31
+ invhilbert,
32
+ kron,
33
+ toeplitz,
34
+ unvec,
35
+ vandermonde,
36
+ vec,
34
37
  )
35
- from pytcl.mathematical_functions.basic_matrix.special_matrices import hadamard
36
- from pytcl.mathematical_functions.basic_matrix.special_matrices import hankel
37
- from pytcl.mathematical_functions.basic_matrix.special_matrices import hilbert
38
- from pytcl.mathematical_functions.basic_matrix.special_matrices import invhilbert
39
- from pytcl.mathematical_functions.basic_matrix.special_matrices import kron
40
- from pytcl.mathematical_functions.basic_matrix.special_matrices import toeplitz
41
- from pytcl.mathematical_functions.basic_matrix.special_matrices import unvec
42
- from pytcl.mathematical_functions.basic_matrix.special_matrices import vandermonde
43
- from pytcl.mathematical_functions.basic_matrix.special_matrices import vec
44
38
 
45
39
  __all__ = [
46
40
  # Decompositions
@@ -5,14 +5,11 @@ This module provides matrix decomposition functions that wrap numpy/scipy
5
5
  with consistent APIs matching the MATLAB TrackerComponentLibrary conventions.
6
6
  """
7
7
 
8
- from typing import Literal
9
- from typing import Optional
10
- from typing import Tuple
8
+ from typing import Literal, Optional, Tuple
11
9
 
12
10
  import numpy as np
13
11
  import scipy.linalg as la
14
- from numpy.typing import ArrayLike
15
- from numpy.typing import NDArray
12
+ from numpy.typing import ArrayLike, NDArray
16
13
 
17
14
 
18
15
  def chol_semi_def(
@@ -8,8 +8,7 @@ used in numerical algorithms and signal processing.
8
8
  from typing import Optional
9
9
 
10
10
  import numpy as np
11
- from numpy.typing import ArrayLike
12
- from numpy.typing import NDArray
11
+ from numpy.typing import ArrayLike, NDArray
13
12
 
14
13
 
15
14
  def vandermonde(
@@ -10,27 +10,23 @@ This module provides:
10
10
 
11
11
  from pytcl.mathematical_functions.combinatorics.combinatorics import ( # noqa: E501
12
12
  bell_number,
13
- )
14
- from pytcl.mathematical_functions.combinatorics.combinatorics import catalan_number
15
- from pytcl.mathematical_functions.combinatorics.combinatorics import combinations
16
- from pytcl.mathematical_functions.combinatorics.combinatorics import (
13
+ catalan_number,
14
+ combinations,
17
15
  combinations_with_replacement,
18
- )
19
- from pytcl.mathematical_functions.combinatorics.combinatorics import derangements_count
20
- from pytcl.mathematical_functions.combinatorics.combinatorics import factorial
21
- from pytcl.mathematical_functions.combinatorics.combinatorics import (
16
+ derangements_count,
17
+ factorial,
22
18
  multinomial_coefficient,
19
+ n_choose_k,
20
+ n_permute_k,
21
+ next_permutation,
22
+ partition_count,
23
+ partitions,
24
+ permutation_rank,
25
+ permutation_unrank,
26
+ permutations,
27
+ stirling_second,
28
+ subfactorial,
23
29
  )
24
- from pytcl.mathematical_functions.combinatorics.combinatorics import n_choose_k
25
- from pytcl.mathematical_functions.combinatorics.combinatorics import n_permute_k
26
- from pytcl.mathematical_functions.combinatorics.combinatorics import next_permutation
27
- from pytcl.mathematical_functions.combinatorics.combinatorics import partition_count
28
- from pytcl.mathematical_functions.combinatorics.combinatorics import partitions
29
- from pytcl.mathematical_functions.combinatorics.combinatorics import permutation_rank
30
- from pytcl.mathematical_functions.combinatorics.combinatorics import permutation_unrank
31
- from pytcl.mathematical_functions.combinatorics.combinatorics import permutations
32
- from pytcl.mathematical_functions.combinatorics.combinatorics import stirling_second
33
- from pytcl.mathematical_functions.combinatorics.combinatorics import subfactorial
34
30
 
35
31
  __all__ = [
36
32
  "factorial",
@@ -7,10 +7,7 @@ related operations commonly used in assignment problems and data association.
7
7
 
8
8
  import itertools
9
9
  from functools import lru_cache
10
- from typing import Iterator
11
- from typing import List
12
- from typing import Optional
13
- from typing import Tuple
10
+ from typing import Iterator, List, Optional, Tuple
14
11
 
15
12
  from numpy.typing import ArrayLike
16
13