nrl-tracker 1.6.0__tar.gz → 1.7.4__tar.gz
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.
- {nrl_tracker-1.6.0/nrl_tracker.egg-info → nrl_tracker-1.7.4}/PKG-INFO +54 -11
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/README.md +53 -10
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4/nrl_tracker.egg-info}/PKG-INFO +54 -11
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/SOURCES.txt +16 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pyproject.toml +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/__init__.py +4 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/__init__.py +28 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/gating.py +10 -10
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/jpda.py +40 -40
- nrl_tracker-1.7.4/pytcl/assignment_algorithms/nd_assignment.py +379 -0
- nrl_tracker-1.7.4/pytcl/assignment_algorithms/network_flow.py +371 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/three_dimensional/assignment.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/__init__.py +38 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/ephemerides.py +14 -11
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/reference_frames.py +110 -4
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/relativity.py +6 -5
- nrl_tracker-1.7.4/pytcl/astronomical/special_orbits.py +532 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/atmosphere/__init__.py +11 -0
- nrl_tracker-1.7.4/pytcl/atmosphere/nrlmsise00.py +809 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/clustering/dbscan.py +2 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/clustering/gaussian_mixture.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/clustering/hierarchical.py +15 -15
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/clustering/kmeans.py +4 -4
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/base.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/cluster_set.py +12 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/covertree.py +5 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/rtree.py +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/vptree.py +4 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/geodetic.py +272 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/jacobians/jacobians.py +2 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/projections/__init__.py +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/projections/projections.py +2 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/rotations/rotations.py +10 -6
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/core/validation.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/__init__.py +26 -0
- nrl_tracker-1.7.4/pytcl/dynamic_estimation/gaussian_sum_filter.py +434 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/imm.py +14 -14
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/__init__.py +12 -0
- nrl_tracker-1.7.4/pytcl/dynamic_estimation/kalman/constrained.py +382 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/extended.py +8 -8
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/h_infinity.py +2 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/square_root.py +8 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/sr_ukf.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/ud_filter.py +11 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/unscented.py +8 -6
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +15 -15
- nrl_tracker-1.7.4/pytcl/dynamic_estimation/rbpf.py +589 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/spherical_harmonics.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/tides.py +6 -6
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/logging_config.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/magnetism/emm.py +10 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/magnetism/wmm.py +4 -4
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/combinatorics/combinatorics.py +5 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/geometry/geometry.py +5 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/numerical_integration/quadrature.py +6 -6
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/detection.py +24 -24
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/filters.py +14 -14
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/matched_filter.py +12 -12
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/bessel.py +15 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/debye.py +5 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/error_functions.py +3 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/gamma_functions.py +4 -4
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/hypergeometric.py +6 -4
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/fourier.py +8 -8
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/stft.py +12 -12
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/wavelets.py +9 -9
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/geodesy.py +3 -3
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/great_circle.py +5 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/plotting/coordinates.py +7 -7
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/plotting/tracks.py +2 -2
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/static_estimation/maximum_likelihood.py +16 -14
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/static_estimation/robust.py +5 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/terrain/loaders.py +5 -5
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/trackers/hypothesis.py +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/trackers/mht.py +9 -9
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/trackers/multi_target.py +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_assignment_algorithms.py +1 -1
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_astronomical.py +25 -0
- nrl_tracker-1.7.4/tests/test_constrained_ekf.py +744 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_coordinate_systems.py +118 -0
- nrl_tracker-1.7.4/tests/test_gaussian_sum_filter.py +504 -0
- nrl_tracker-1.7.4/tests/test_jpda.py +236 -0
- nrl_tracker-1.7.4/tests/test_nd_assignment.py +337 -0
- nrl_tracker-1.7.4/tests/test_network_flow.py +228 -0
- nrl_tracker-1.7.4/tests/test_nrlmsise00.py +732 -0
- nrl_tracker-1.7.4/tests/test_rbpf.py +630 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_sgp4.py +3 -2
- nrl_tracker-1.6.0/tests/test_special_functions_phase12.py → nrl_tracker-1.7.4/tests/test_special_functions.py +2 -2
- nrl_tracker-1.7.4/tests/test_special_orbits.py +357 -0
- nrl_tracker-1.6.0/tests/test_v030_comprehensive.py +0 -866
- nrl_tracker-1.6.0/tests/test_v030_features.py +0 -447
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/CONTRIBUTING.md +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/LICENSE +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/MANIFEST.in +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/dependency_links.txt +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/requires.txt +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/nrl_tracker.egg-info/top_level.txt +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/data_association.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/assignment.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/assignment_algorithms/two_dimensional/kbest.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/lambert.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/orbital_mechanics.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/sgp4.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/time_systems.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/astronomical/tle.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/atmosphere/ionosphere.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/atmosphere/models.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/clustering/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/kd_tree.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/measurement_set.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/containers/track_list.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/conversions/spherical.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/jacobians/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/coordinate_systems/rotations/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/core/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/core/array_utils.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/core/constants.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/information_filter.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/kalman/linear.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_estimation/smoothers.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/continuous_time/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/continuous_time/dynamics.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/polynomial.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/dynamic_models/process_noise/singer.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/clenshaw.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/egm.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/gravity/models.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/magnetism/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/magnetism/igrf.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/decompositions.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/combinatorics/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/geometry/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/interpolation/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/interpolation/interpolation.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/signal_processing/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/elliptic.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/lambert_w.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/special_functions/marcum_q.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/distributions.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/statistics/estimators.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/mathematical_functions/transforms/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/misc/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/ins.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/ins_gnss.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/navigation/rhumb.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/estimation_metrics.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/performance_evaluation/track_metrics.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/physical_values/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/plotting/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/plotting/ellipses.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/plotting/metrics.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/scheduling/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/static_estimation/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/static_estimation/least_squares.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/terrain/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/terrain/dem.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/terrain/visibility.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/trackers/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/trackers/single_target.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/pytcl/transponders/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/setup.cfg +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/__init__.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/conftest.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_additional_trees.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_clustering.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_coverage_boost.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_coverage_boost_2.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_dynamic_models.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_egm.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_emm.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_ephemerides.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_gaussian_mixtures.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_geophysical.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_great_circle.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_h_infinity.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_ins.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_ins_gnss.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_kalman_filters.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_mathematical_functions.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_maximum_likelihood.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_mht.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_performance_evaluation.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_phase6_specialized.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_plotting.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_projections.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_relativity.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_rhumb.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_signal_processing.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_smoothers.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_spatial_containers_parametrized.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_spatial_structures.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_static_estimation.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_terrain.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_terrain_loaders.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_tides.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_tod_mod.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_trackers.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_tracking_containers.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_transforms.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/test_validation.py +0 -0
- {nrl_tracker-1.6.0 → nrl_tracker-1.7.4}/tests/unit/test_core.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.4
|
|
4
4
|
Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
|
|
5
5
|
Author: Original: David F. Crouse, Naval Research Laboratory
|
|
6
6
|
Maintainer: Python Port Contributors
|
|
@@ -63,16 +63,17 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
|
|
|
63
63
|
|
|
64
64
|
# Tracker Component Library (Python)
|
|
65
65
|
|
|
66
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
67
67
|
[](https://www.python.org/downloads/)
|
|
68
68
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
69
69
|
[](https://github.com/psf/black)
|
|
70
|
-
[](https://github.com/nedonatelli/TCL)
|
|
71
|
+
[](docs/gap_analysis.rst)
|
|
72
|
+
[](mypy.ini)
|
|
72
73
|
|
|
73
74
|
A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
|
|
74
75
|
|
|
75
|
-
**1,070+ functions** | **
|
|
76
|
+
**1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
|
|
76
77
|
|
|
77
78
|
## Overview
|
|
78
79
|
|
|
@@ -80,12 +81,15 @@ The Tracker Component Library provides building blocks for developing target tra
|
|
|
80
81
|
|
|
81
82
|
- **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
|
|
82
83
|
- **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
|
|
83
|
-
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, and batch estimation
|
|
84
|
-
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms,
|
|
84
|
+
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
|
|
85
|
+
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
|
|
86
|
+
- **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
|
|
85
87
|
- **Mathematical Functions**: Special functions, statistics, numerical integration, and more
|
|
86
|
-
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing,
|
|
87
|
-
- **
|
|
88
|
-
- **
|
|
88
|
+
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
|
|
89
|
+
- **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
|
|
90
|
+
- **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
|
|
91
|
+
- **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
|
|
92
|
+
- **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
|
|
89
93
|
|
|
90
94
|
## Installation
|
|
91
95
|
|
|
@@ -205,7 +209,46 @@ pytcl/
|
|
|
205
209
|
|
|
206
210
|
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
207
211
|
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
208
|
-
- [Examples](examples/)
|
|
212
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
213
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
214
|
+
|
|
215
|
+
## Examples & Tutorials
|
|
216
|
+
|
|
217
|
+
The library includes 39 runnable code examples demonstrating all major features:
|
|
218
|
+
|
|
219
|
+
### Examples (29 files in `/examples/`)
|
|
220
|
+
|
|
221
|
+
Comprehensive demonstrations of library functionality:
|
|
222
|
+
- **Tracking & Estimation**: Kalman filters, particle filters, smoothers
|
|
223
|
+
- **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
|
|
224
|
+
- **Coordinates**: Frame conversions, transformations, geodetic calculations
|
|
225
|
+
- **Dynamics**: State models, motion models, dynamic systems
|
|
226
|
+
- **Filtering**: Uncertainty visualization, multi-target tracking
|
|
227
|
+
- **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
|
|
228
|
+
- **Navigation**: INS/GNSS integration, geophysical modeling
|
|
229
|
+
- **Signal Processing**: Detection, filtering, transforms
|
|
230
|
+
- **Terrain & Atmosphere**: Elevation models, atmospheric properties
|
|
231
|
+
|
|
232
|
+
**Status**: ✅ All 29 examples validated and passing (100% execution success)
|
|
233
|
+
|
|
234
|
+
### Tutorials (10 modules in `/docs/tutorials/`)
|
|
235
|
+
|
|
236
|
+
Interactive learning modules with visualizations:
|
|
237
|
+
- Assignment algorithms and 3D assignment problems
|
|
238
|
+
- Atmospheric and geophysical models
|
|
239
|
+
- Dynamical systems and reference frames
|
|
240
|
+
- Filtering and smoothing techniques
|
|
241
|
+
- Sensor fusion and advanced filtering
|
|
242
|
+
- Special functions and mathematical tools
|
|
243
|
+
|
|
244
|
+
**Status**: ✅ All 10 tutorials validated and passing (100% execution success)
|
|
245
|
+
|
|
246
|
+
## Documentation
|
|
247
|
+
|
|
248
|
+
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
249
|
+
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
250
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
251
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
209
252
|
|
|
210
253
|
## Comparison with Original MATLAB Library
|
|
211
254
|
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# Tracker Component Library (Python)
|
|
2
2
|
|
|
3
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
4
4
|
[](https://www.python.org/downloads/)
|
|
5
5
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
6
6
|
[](https://github.com/psf/black)
|
|
7
|
-
[](https://github.com/nedonatelli/TCL)
|
|
8
|
+
[](docs/gap_analysis.rst)
|
|
9
|
+
[](mypy.ini)
|
|
9
10
|
|
|
10
11
|
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.
|
|
11
12
|
|
|
12
|
-
**1,070+ functions** | **
|
|
13
|
+
**1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
|
|
13
14
|
|
|
14
15
|
## Overview
|
|
15
16
|
|
|
@@ -17,12 +18,15 @@ The Tracker Component Library provides building blocks for developing target tra
|
|
|
17
18
|
|
|
18
19
|
- **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
|
|
19
20
|
- **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
|
|
20
|
-
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, and batch estimation
|
|
21
|
-
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms,
|
|
21
|
+
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
|
|
22
|
+
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
|
|
23
|
+
- **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
|
|
22
24
|
- **Mathematical Functions**: Special functions, statistics, numerical integration, and more
|
|
23
|
-
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing,
|
|
24
|
-
- **
|
|
25
|
-
- **
|
|
25
|
+
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
|
|
26
|
+
- **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
|
|
27
|
+
- **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
|
|
28
|
+
- **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
|
|
29
|
+
- **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
|
|
26
30
|
|
|
27
31
|
## Installation
|
|
28
32
|
|
|
@@ -142,7 +146,46 @@ pytcl/
|
|
|
142
146
|
|
|
143
147
|
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
144
148
|
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
145
|
-
- [Examples](examples/)
|
|
149
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
150
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
151
|
+
|
|
152
|
+
## Examples & Tutorials
|
|
153
|
+
|
|
154
|
+
The library includes 39 runnable code examples demonstrating all major features:
|
|
155
|
+
|
|
156
|
+
### Examples (29 files in `/examples/`)
|
|
157
|
+
|
|
158
|
+
Comprehensive demonstrations of library functionality:
|
|
159
|
+
- **Tracking & Estimation**: Kalman filters, particle filters, smoothers
|
|
160
|
+
- **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
|
|
161
|
+
- **Coordinates**: Frame conversions, transformations, geodetic calculations
|
|
162
|
+
- **Dynamics**: State models, motion models, dynamic systems
|
|
163
|
+
- **Filtering**: Uncertainty visualization, multi-target tracking
|
|
164
|
+
- **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
|
|
165
|
+
- **Navigation**: INS/GNSS integration, geophysical modeling
|
|
166
|
+
- **Signal Processing**: Detection, filtering, transforms
|
|
167
|
+
- **Terrain & Atmosphere**: Elevation models, atmospheric properties
|
|
168
|
+
|
|
169
|
+
**Status**: ✅ All 29 examples validated and passing (100% execution success)
|
|
170
|
+
|
|
171
|
+
### Tutorials (10 modules in `/docs/tutorials/`)
|
|
172
|
+
|
|
173
|
+
Interactive learning modules with visualizations:
|
|
174
|
+
- Assignment algorithms and 3D assignment problems
|
|
175
|
+
- Atmospheric and geophysical models
|
|
176
|
+
- Dynamical systems and reference frames
|
|
177
|
+
- Filtering and smoothing techniques
|
|
178
|
+
- Sensor fusion and advanced filtering
|
|
179
|
+
- Special functions and mathematical tools
|
|
180
|
+
|
|
181
|
+
**Status**: ✅ All 10 tutorials validated and passing (100% execution success)
|
|
182
|
+
|
|
183
|
+
## Documentation
|
|
184
|
+
|
|
185
|
+
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
186
|
+
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
187
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
188
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
146
189
|
|
|
147
190
|
## Comparison with Original MATLAB Library
|
|
148
191
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.4
|
|
4
4
|
Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
|
|
5
5
|
Author: Original: David F. Crouse, Naval Research Laboratory
|
|
6
6
|
Maintainer: Python Port Contributors
|
|
@@ -63,16 +63,17 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
|
|
|
63
63
|
|
|
64
64
|
# Tracker Component Library (Python)
|
|
65
65
|
|
|
66
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
67
67
|
[](https://www.python.org/downloads/)
|
|
68
68
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
69
69
|
[](https://github.com/psf/black)
|
|
70
|
-
[](https://github.com/nedonatelli/TCL)
|
|
71
|
+
[](docs/gap_analysis.rst)
|
|
72
|
+
[](mypy.ini)
|
|
72
73
|
|
|
73
74
|
A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
|
|
74
75
|
|
|
75
|
-
**1,070+ functions** | **
|
|
76
|
+
**1,070+ functions** | **153 modules** | **1,988 tests** | **100% MATLAB parity**
|
|
76
77
|
|
|
77
78
|
## Overview
|
|
78
79
|
|
|
@@ -80,12 +81,15 @@ The Tracker Component Library provides building blocks for developing target tra
|
|
|
80
81
|
|
|
81
82
|
- **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
|
|
82
83
|
- **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
|
|
83
|
-
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, and batch estimation
|
|
84
|
-
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms,
|
|
84
|
+
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, smoothers, and batch estimation
|
|
85
|
+
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms, 3D/ND assignment, k-best assignments
|
|
86
|
+
- **Data Association**: Global Nearest Neighbor, JPDA, MHT for multi-target tracking
|
|
85
87
|
- **Mathematical Functions**: Special functions, statistics, numerical integration, and more
|
|
86
|
-
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing,
|
|
87
|
-
- **
|
|
88
|
-
- **
|
|
88
|
+
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, special orbits (parabolic/hyperbolic), ephemerides, relativistic corrections
|
|
89
|
+
- **Reference Frames**: GCRF, ITRF, TEME, TOD, MOD with full transformation chains
|
|
90
|
+
- **Navigation**: Geodetic calculations, INS mechanization, GNSS utilities, INS/GNSS integration
|
|
91
|
+
- **Geophysical Models**: Gravity (WGS84, EGM96/2008), magnetism (WMM, IGRF), atmosphere, tides, terrain
|
|
92
|
+
- **Signal Processing**: Digital filters, matched filtering, CFAR detection, transforms (FFT, STFT, wavelets)
|
|
89
93
|
|
|
90
94
|
## Installation
|
|
91
95
|
|
|
@@ -205,7 +209,46 @@ pytcl/
|
|
|
205
209
|
|
|
206
210
|
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
207
211
|
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
208
|
-
- [Examples](examples/)
|
|
212
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
213
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
214
|
+
|
|
215
|
+
## Examples & Tutorials
|
|
216
|
+
|
|
217
|
+
The library includes 39 runnable code examples demonstrating all major features:
|
|
218
|
+
|
|
219
|
+
### Examples (29 files in `/examples/`)
|
|
220
|
+
|
|
221
|
+
Comprehensive demonstrations of library functionality:
|
|
222
|
+
- **Tracking & Estimation**: Kalman filters, particle filters, smoothers
|
|
223
|
+
- **Assignment**: Hungarian algorithm, k-best assignments, 3D assignment
|
|
224
|
+
- **Coordinates**: Frame conversions, transformations, geodetic calculations
|
|
225
|
+
- **Dynamics**: State models, motion models, dynamic systems
|
|
226
|
+
- **Filtering**: Uncertainty visualization, multi-target tracking
|
|
227
|
+
- **Astronomy**: Ephemerides, orbital mechanics, relativistic corrections
|
|
228
|
+
- **Navigation**: INS/GNSS integration, geophysical modeling
|
|
229
|
+
- **Signal Processing**: Detection, filtering, transforms
|
|
230
|
+
- **Terrain & Atmosphere**: Elevation models, atmospheric properties
|
|
231
|
+
|
|
232
|
+
**Status**: ✅ All 29 examples validated and passing (100% execution success)
|
|
233
|
+
|
|
234
|
+
### Tutorials (10 modules in `/docs/tutorials/`)
|
|
235
|
+
|
|
236
|
+
Interactive learning modules with visualizations:
|
|
237
|
+
- Assignment algorithms and 3D assignment problems
|
|
238
|
+
- Atmospheric and geophysical models
|
|
239
|
+
- Dynamical systems and reference frames
|
|
240
|
+
- Filtering and smoothing techniques
|
|
241
|
+
- Sensor fusion and advanced filtering
|
|
242
|
+
- Special functions and mathematical tools
|
|
243
|
+
|
|
244
|
+
**Status**: ✅ All 10 tutorials validated and passing (100% execution success)
|
|
245
|
+
|
|
246
|
+
## Documentation
|
|
247
|
+
|
|
248
|
+
- [API Reference](https://pytcl.readthedocs.io/en/latest/api/)
|
|
249
|
+
- [User Guides](https://pytcl.readthedocs.io/en/latest/user_guide/)
|
|
250
|
+
- [Examples](examples/) - 29 validated example scripts
|
|
251
|
+
- [Tutorials](docs/tutorials/) - 10 interactive tutorial modules
|
|
209
252
|
|
|
210
253
|
## Comparison with Original MATLAB Library
|
|
211
254
|
|
|
@@ -14,6 +14,8 @@ pytcl/assignment_algorithms/__init__.py
|
|
|
14
14
|
pytcl/assignment_algorithms/data_association.py
|
|
15
15
|
pytcl/assignment_algorithms/gating.py
|
|
16
16
|
pytcl/assignment_algorithms/jpda.py
|
|
17
|
+
pytcl/assignment_algorithms/nd_assignment.py
|
|
18
|
+
pytcl/assignment_algorithms/network_flow.py
|
|
17
19
|
pytcl/assignment_algorithms/three_dimensional/__init__.py
|
|
18
20
|
pytcl/assignment_algorithms/three_dimensional/assignment.py
|
|
19
21
|
pytcl/assignment_algorithms/two_dimensional/__init__.py
|
|
@@ -26,11 +28,13 @@ pytcl/astronomical/orbital_mechanics.py
|
|
|
26
28
|
pytcl/astronomical/reference_frames.py
|
|
27
29
|
pytcl/astronomical/relativity.py
|
|
28
30
|
pytcl/astronomical/sgp4.py
|
|
31
|
+
pytcl/astronomical/special_orbits.py
|
|
29
32
|
pytcl/astronomical/time_systems.py
|
|
30
33
|
pytcl/astronomical/tle.py
|
|
31
34
|
pytcl/atmosphere/__init__.py
|
|
32
35
|
pytcl/atmosphere/ionosphere.py
|
|
33
36
|
pytcl/atmosphere/models.py
|
|
37
|
+
pytcl/atmosphere/nrlmsise00.py
|
|
34
38
|
pytcl/clustering/__init__.py
|
|
35
39
|
pytcl/clustering/dbscan.py
|
|
36
40
|
pytcl/clustering/gaussian_mixture.py
|
|
@@ -60,11 +64,14 @@ pytcl/core/array_utils.py
|
|
|
60
64
|
pytcl/core/constants.py
|
|
61
65
|
pytcl/core/validation.py
|
|
62
66
|
pytcl/dynamic_estimation/__init__.py
|
|
67
|
+
pytcl/dynamic_estimation/gaussian_sum_filter.py
|
|
63
68
|
pytcl/dynamic_estimation/imm.py
|
|
64
69
|
pytcl/dynamic_estimation/information_filter.py
|
|
70
|
+
pytcl/dynamic_estimation/rbpf.py
|
|
65
71
|
pytcl/dynamic_estimation/smoothers.py
|
|
66
72
|
pytcl/dynamic_estimation/batch_estimation/__init__.py
|
|
67
73
|
pytcl/dynamic_estimation/kalman/__init__.py
|
|
74
|
+
pytcl/dynamic_estimation/kalman/constrained.py
|
|
68
75
|
pytcl/dynamic_estimation/kalman/extended.py
|
|
69
76
|
pytcl/dynamic_estimation/kalman/h_infinity.py
|
|
70
77
|
pytcl/dynamic_estimation/kalman/linear.py
|
|
@@ -167,6 +174,7 @@ tests/test_additional_trees.py
|
|
|
167
174
|
tests/test_assignment_algorithms.py
|
|
168
175
|
tests/test_astronomical.py
|
|
169
176
|
tests/test_clustering.py
|
|
177
|
+
tests/test_constrained_ekf.py
|
|
170
178
|
tests/test_coordinate_systems.py
|
|
171
179
|
tests/test_coverage_boost.py
|
|
172
180
|
tests/test_coverage_boost_2.py
|
|
@@ -175,19 +183,25 @@ tests/test_egm.py
|
|
|
175
183
|
tests/test_emm.py
|
|
176
184
|
tests/test_ephemerides.py
|
|
177
185
|
tests/test_gaussian_mixtures.py
|
|
186
|
+
tests/test_gaussian_sum_filter.py
|
|
178
187
|
tests/test_geophysical.py
|
|
179
188
|
tests/test_great_circle.py
|
|
180
189
|
tests/test_h_infinity.py
|
|
181
190
|
tests/test_ins.py
|
|
182
191
|
tests/test_ins_gnss.py
|
|
192
|
+
tests/test_jpda.py
|
|
183
193
|
tests/test_kalman_filters.py
|
|
184
194
|
tests/test_mathematical_functions.py
|
|
185
195
|
tests/test_maximum_likelihood.py
|
|
186
196
|
tests/test_mht.py
|
|
197
|
+
tests/test_nd_assignment.py
|
|
198
|
+
tests/test_network_flow.py
|
|
199
|
+
tests/test_nrlmsise00.py
|
|
187
200
|
tests/test_performance_evaluation.py
|
|
188
201
|
tests/test_phase6_specialized.py
|
|
189
202
|
tests/test_plotting.py
|
|
190
203
|
tests/test_projections.py
|
|
204
|
+
tests/test_rbpf.py
|
|
191
205
|
tests/test_relativity.py
|
|
192
206
|
tests/test_rhumb.py
|
|
193
207
|
tests/test_sgp4.py
|
|
@@ -195,7 +209,8 @@ tests/test_signal_processing.py
|
|
|
195
209
|
tests/test_smoothers.py
|
|
196
210
|
tests/test_spatial_containers_parametrized.py
|
|
197
211
|
tests/test_spatial_structures.py
|
|
198
|
-
tests/
|
|
212
|
+
tests/test_special_functions.py
|
|
213
|
+
tests/test_special_orbits.py
|
|
199
214
|
tests/test_static_estimation.py
|
|
200
215
|
tests/test_terrain.py
|
|
201
216
|
tests/test_terrain_loaders.py
|
|
@@ -204,7 +219,5 @@ tests/test_tod_mod.py
|
|
|
204
219
|
tests/test_trackers.py
|
|
205
220
|
tests/test_tracking_containers.py
|
|
206
221
|
tests/test_transforms.py
|
|
207
|
-
tests/test_v030_comprehensive.py
|
|
208
|
-
tests/test_v030_features.py
|
|
209
222
|
tests/test_validation.py
|
|
210
223
|
tests/unit/test_core.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "nrl-tracker"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.7.4"
|
|
8
8
|
description = "Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -6,7 +6,8 @@ systems, dynamic models, estimation algorithms, and mathematical functions.
|
|
|
6
6
|
|
|
7
7
|
This is a Python port of the U.S. Naval Research Laboratory's Tracker Component
|
|
8
8
|
Library originally written in MATLAB.
|
|
9
|
-
|
|
9
|
+
**Current Version:** 1.7.4 (January 4, 2026)
|
|
10
|
+
**Status:** Production-ready, 2,057 tests passing, 76% line coverage
|
|
10
11
|
Examples
|
|
11
12
|
--------
|
|
12
13
|
>>> import pytcl as pytcl
|
|
@@ -20,7 +21,7 @@ References
|
|
|
20
21
|
no. 5, pp. 18-27, May 2017.
|
|
21
22
|
"""
|
|
22
23
|
|
|
23
|
-
__version__ = "1.
|
|
24
|
+
__version__ = "1.7.3"
|
|
24
25
|
__author__ = "Python Port Contributors"
|
|
25
26
|
__original_author__ = "David F. Crouse, Naval Research Laboratory"
|
|
26
27
|
|
|
@@ -44,7 +45,7 @@ from pytcl import (
|
|
|
44
45
|
|
|
45
46
|
# Version tuple for programmatic access
|
|
46
47
|
# Handle dev/alpha/beta/rc suffixes by extracting only numeric parts
|
|
47
|
-
def _parse_version(version_str):
|
|
48
|
+
def _parse_version(version_str: str) -> tuple[int, ...]:
|
|
48
49
|
"""Parse version string into tuple of integers."""
|
|
49
50
|
import re
|
|
50
51
|
|
|
@@ -32,6 +32,21 @@ from pytcl.assignment_algorithms.jpda import (
|
|
|
32
32
|
jpda_probabilities,
|
|
33
33
|
jpda_update,
|
|
34
34
|
)
|
|
35
|
+
from pytcl.assignment_algorithms.nd_assignment import (
|
|
36
|
+
AssignmentNDResult,
|
|
37
|
+
auction_assignment_nd,
|
|
38
|
+
detect_dimension_conflicts,
|
|
39
|
+
greedy_assignment_nd,
|
|
40
|
+
relaxation_assignment_nd,
|
|
41
|
+
validate_cost_tensor,
|
|
42
|
+
)
|
|
43
|
+
from pytcl.assignment_algorithms.network_flow import (
|
|
44
|
+
FlowStatus,
|
|
45
|
+
MinCostFlowResult,
|
|
46
|
+
assignment_to_flow_network,
|
|
47
|
+
min_cost_assignment_via_flow,
|
|
48
|
+
min_cost_flow_successive_shortest_paths,
|
|
49
|
+
)
|
|
35
50
|
from pytcl.assignment_algorithms.three_dimensional import (
|
|
36
51
|
Assignment3DResult,
|
|
37
52
|
assign3d,
|
|
@@ -91,4 +106,17 @@ __all__ = [
|
|
|
91
106
|
"jpda_update",
|
|
92
107
|
"jpda_probabilities",
|
|
93
108
|
"compute_likelihood_matrix",
|
|
109
|
+
# N-Dimensional Assignment (4D+)
|
|
110
|
+
"AssignmentNDResult",
|
|
111
|
+
"validate_cost_tensor",
|
|
112
|
+
"greedy_assignment_nd",
|
|
113
|
+
"relaxation_assignment_nd",
|
|
114
|
+
"auction_assignment_nd",
|
|
115
|
+
"detect_dimension_conflicts",
|
|
116
|
+
# Network Flow-Based Assignment
|
|
117
|
+
"FlowStatus",
|
|
118
|
+
"MinCostFlowResult",
|
|
119
|
+
"assignment_to_flow_network",
|
|
120
|
+
"min_cost_flow_successive_shortest_paths",
|
|
121
|
+
"min_cost_assignment_via_flow",
|
|
94
122
|
]
|
|
@@ -5,7 +5,7 @@ This module provides gating methods to determine which measurements
|
|
|
5
5
|
fall within a validation region around predicted track states.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import List, Tuple
|
|
8
|
+
from typing import Any, List, Tuple
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
from numba import njit
|
|
@@ -15,8 +15,8 @@ from scipy.stats import chi2
|
|
|
15
15
|
|
|
16
16
|
@njit(cache=True, fastmath=True)
|
|
17
17
|
def _mahalanobis_distance_2d(
|
|
18
|
-
innovation: np.ndarray,
|
|
19
|
-
S_inv: np.ndarray,
|
|
18
|
+
innovation: np.ndarray[Any, Any],
|
|
19
|
+
S_inv: np.ndarray[Any, Any],
|
|
20
20
|
) -> float:
|
|
21
21
|
"""JIT-compiled Mahalanobis distance for 2D innovations."""
|
|
22
22
|
return innovation[0] * (
|
|
@@ -26,8 +26,8 @@ def _mahalanobis_distance_2d(
|
|
|
26
26
|
|
|
27
27
|
@njit(cache=True, fastmath=True)
|
|
28
28
|
def _mahalanobis_distance_3d(
|
|
29
|
-
innovation: np.ndarray,
|
|
30
|
-
S_inv: np.ndarray,
|
|
29
|
+
innovation: np.ndarray[Any, Any],
|
|
30
|
+
S_inv: np.ndarray[Any, Any],
|
|
31
31
|
) -> float:
|
|
32
32
|
"""JIT-compiled Mahalanobis distance for 3D innovations."""
|
|
33
33
|
result = 0.0
|
|
@@ -39,8 +39,8 @@ def _mahalanobis_distance_3d(
|
|
|
39
39
|
|
|
40
40
|
@njit(cache=True, fastmath=True)
|
|
41
41
|
def _mahalanobis_distance_general(
|
|
42
|
-
innovation: np.ndarray,
|
|
43
|
-
S_inv: np.ndarray,
|
|
42
|
+
innovation: np.ndarray[Any, Any],
|
|
43
|
+
S_inv: np.ndarray[Any, Any],
|
|
44
44
|
) -> float:
|
|
45
45
|
"""JIT-compiled Mahalanobis distance for general dimension."""
|
|
46
46
|
n = len(innovation)
|
|
@@ -341,9 +341,9 @@ def compute_gate_volume(
|
|
|
341
341
|
|
|
342
342
|
@njit(cache=True, fastmath=True, parallel=False)
|
|
343
343
|
def mahalanobis_batch(
|
|
344
|
-
innovations: np.ndarray,
|
|
345
|
-
S_inv: np.ndarray,
|
|
346
|
-
output: np.ndarray,
|
|
344
|
+
innovations: np.ndarray[Any, Any],
|
|
345
|
+
S_inv: np.ndarray[Any, Any],
|
|
346
|
+
output: np.ndarray[Any, Any],
|
|
347
347
|
) -> None:
|
|
348
348
|
"""
|
|
349
349
|
Compute Mahalanobis distances for a batch of innovations.
|