nrl-tracker 0.21.5__tar.gz → 0.22.1__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-0.21.5/nrl_tracker.egg-info → nrl_tracker-0.22.1}/PKG-INFO +2 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/README.md +1 -1
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1/nrl_tracker.egg-info}/PKG-INFO +2 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/SOURCES.txt +4 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pyproject.toml +1 -1
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/__init__.py +1 -1
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/data_association.py +2 -7
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/gating.py +3 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/jpda.py +4 -12
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/kbest.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/__init__.py +60 -7
- nrl_tracker-0.22.1/pytcl/astronomical/ephemerides.py +522 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/lambert.py +4 -14
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/orbital_mechanics.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/reference_frames.py +1 -3
- nrl_tracker-0.22.1/pytcl/astronomical/relativity.py +466 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/atmosphere/__init__.py +2 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/atmosphere/models.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/gaussian_mixture.py +4 -8
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/hierarchical.py +1 -5
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/kmeans.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/__init__.py +4 -21
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/cluster_set.py +4 -19
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/measurement_set.py +3 -15
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/rtree.py +2 -5
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/geodetic.py +3 -15
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/__init__.py +4 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/projections.py +11 -38
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/rotations/rotations.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/array_utils.py +1 -4
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/constants.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/validation.py +6 -17
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/imm.py +4 -13
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/extended.py +1 -4
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/square_root.py +2 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/unscented.py +1 -4
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/smoothers.py +2 -8
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/__init__.py +1 -5
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/__init__.py +1 -5
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/polynomial.py +2 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/clenshaw.py +2 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/egm.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/models.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/spherical_harmonics.py +4 -10
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/tides.py +7 -16
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/__init__.py +3 -14
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/emm.py +3 -12
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/wmm.py +2 -9
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/decompositions.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/geometry/geometry.py +4 -12
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/interpolation/__init__.py +2 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/interpolation/interpolation.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/detection.py +3 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/filters.py +2 -6
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/matched_filter.py +2 -4
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/__init__.py +2 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/elliptic.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/lambert_w.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/distributions.py +12 -36
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/estimators.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/stft.py +3 -9
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/wavelets.py +6 -18
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/__init__.py +14 -10
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/geodesy.py +9 -31
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/great_circle.py +4 -12
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/ins.py +3 -13
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/ins_gnss.py +7 -25
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/navigation/rhumb.py +3 -10
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/track_metrics.py +1 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/coordinates.py +5 -17
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/metrics.py +3 -9
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/tracks.py +3 -11
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/least_squares.py +1 -2
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/maximum_likelihood.py +3 -3
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/dem.py +2 -8
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/loaders.py +5 -13
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/visibility.py +2 -7
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/__init__.py +3 -14
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/hypothesis.py +2 -7
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/mht.py +5 -15
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/multi_target.py +1 -4
- nrl_tracker-0.22.1/tests/test_ephemerides.py +340 -0
- nrl_tracker-0.22.1/tests/test_relativity.py +458 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/CONTRIBUTING.md +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/LICENSE +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/MANIFEST.in +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/dependency_links.txt +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/requires.txt +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/top_level.txt +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/three_dimensional/assignment.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/assignment.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/astronomical/time_systems.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/clustering/dbscan.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/covertree.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/kd_tree.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/track_list.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/containers/vptree.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/spherical.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/jacobians/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/jacobians/jacobians.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/rotations/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/core/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/information_filter.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/linear.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/continuous_time/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/continuous_time/dynamics.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/singer.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/gravity/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/magnetism/igrf.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/combinatorics/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/geometry/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/numerical_integration/quadrature.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/bessel.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/debye.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/error_functions.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/hypergeometric.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/marcum_q.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/fourier.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/misc/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/estimation_metrics.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/physical_values/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/plotting/ellipses.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/scheduling/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/static_estimation/robust.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/terrain/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/trackers/single_target.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/transponders/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/setup.cfg +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/__init__.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/conftest.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_additional_trees.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_assignment_algorithms.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_astronomical.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_clustering.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coordinate_systems.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coverage_boost.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_coverage_boost_2.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_dynamic_models.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_egm.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_emm.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_gaussian_mixtures.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_geophysical.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_great_circle.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_ins.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_ins_gnss.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_kalman_filters.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_mathematical_functions.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_maximum_likelihood.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_mht.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_performance_evaluation.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_phase6_specialized.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_plotting.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_projections.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_rhumb.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_signal_processing.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_smoothers.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_spatial_structures.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_special_functions_phase12.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_static_estimation.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_terrain.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_terrain_loaders.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_tides.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_trackers.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_tracking_containers.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_transforms.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_v030_comprehensive.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/test_v030_features.py +0 -0
- {nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/tests/unit/test_core.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
|
|
5
5
|
Author: Original: David F. Crouse, Naval Research Laboratory
|
|
6
6
|
Maintainer: Python Port Contributors
|
|
@@ -60,7 +60,7 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
|
|
|
60
60
|
|
|
61
61
|
# Tracker Component Library (Python)
|
|
62
62
|
|
|
63
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
64
64
|
[](https://www.python.org/downloads/)
|
|
65
65
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
66
66
|
[](https://github.com/psf/black)
|
|
@@ -1,6 +1,6 @@
|
|
|
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)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
|
|
5
5
|
Author: Original: David F. Crouse, Naval Research Laboratory
|
|
6
6
|
Maintainer: Python Port Contributors
|
|
@@ -60,7 +60,7 @@ Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualizati
|
|
|
60
60
|
|
|
61
61
|
# Tracker Component Library (Python)
|
|
62
62
|
|
|
63
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
64
64
|
[](https://www.python.org/downloads/)
|
|
65
65
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
66
66
|
[](https://github.com/psf/black)
|
|
@@ -19,9 +19,11 @@ pytcl/assignment_algorithms/two_dimensional/__init__.py
|
|
|
19
19
|
pytcl/assignment_algorithms/two_dimensional/assignment.py
|
|
20
20
|
pytcl/assignment_algorithms/two_dimensional/kbest.py
|
|
21
21
|
pytcl/astronomical/__init__.py
|
|
22
|
+
pytcl/astronomical/ephemerides.py
|
|
22
23
|
pytcl/astronomical/lambert.py
|
|
23
24
|
pytcl/astronomical/orbital_mechanics.py
|
|
24
25
|
pytcl/astronomical/reference_frames.py
|
|
26
|
+
pytcl/astronomical/relativity.py
|
|
25
27
|
pytcl/astronomical/time_systems.py
|
|
26
28
|
pytcl/atmosphere/__init__.py
|
|
27
29
|
pytcl/atmosphere/models.py
|
|
@@ -163,6 +165,7 @@ tests/test_coverage_boost_2.py
|
|
|
163
165
|
tests/test_dynamic_models.py
|
|
164
166
|
tests/test_egm.py
|
|
165
167
|
tests/test_emm.py
|
|
168
|
+
tests/test_ephemerides.py
|
|
166
169
|
tests/test_gaussian_mixtures.py
|
|
167
170
|
tests/test_geophysical.py
|
|
168
171
|
tests/test_great_circle.py
|
|
@@ -176,6 +179,7 @@ tests/test_performance_evaluation.py
|
|
|
176
179
|
tests/test_phase6_specialized.py
|
|
177
180
|
tests/test_plotting.py
|
|
178
181
|
tests/test_projections.py
|
|
182
|
+
tests/test_relativity.py
|
|
179
183
|
tests/test_rhumb.py
|
|
180
184
|
tests/test_signal_processing.py
|
|
181
185
|
tests/test_smoothers.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "nrl-tracker"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.22.1"
|
|
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 = [
|
|
@@ -10,13 +10,8 @@ from typing import List, NamedTuple, Optional
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
from numpy.typing import ArrayLike, NDArray
|
|
12
12
|
|
|
13
|
-
from pytcl.assignment_algorithms.gating import
|
|
14
|
-
|
|
15
|
-
mahalanobis_distance,
|
|
16
|
-
)
|
|
17
|
-
from pytcl.assignment_algorithms.two_dimensional import (
|
|
18
|
-
assign2d,
|
|
19
|
-
)
|
|
13
|
+
from pytcl.assignment_algorithms.gating import mahalanobis_batch, mahalanobis_distance
|
|
14
|
+
from pytcl.assignment_algorithms.two_dimensional import assign2d
|
|
20
15
|
|
|
21
16
|
|
|
22
17
|
class AssociationResult(NamedTuple):
|
|
@@ -19,9 +19,9 @@ def _mahalanobis_distance_2d(
|
|
|
19
19
|
S_inv: np.ndarray,
|
|
20
20
|
) -> float:
|
|
21
21
|
"""JIT-compiled Mahalanobis distance for 2D innovations."""
|
|
22
|
-
return innovation[0] * (
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
return innovation[0] * (S_inv[0, 0] * innovation[0] + S_inv[0, 1] * innovation[1]) + innovation[
|
|
23
|
+
1
|
|
24
|
+
] * (S_inv[1, 0] * innovation[0] + S_inv[1, 1] * innovation[1])
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
@njit(cache=True, fastmath=True)
|
|
@@ -94,9 +94,7 @@ def compute_measurement_likelihood(
|
|
|
94
94
|
return 0.0
|
|
95
95
|
|
|
96
96
|
mahal_sq = innovation @ np.linalg.solve(innovation_cov, innovation)
|
|
97
|
-
likelihood = (
|
|
98
|
-
detection_prob * np.exp(-0.5 * mahal_sq) / np.sqrt((2 * np.pi) ** m * det_S)
|
|
99
|
-
)
|
|
97
|
+
likelihood = detection_prob * np.exp(-0.5 * mahal_sq) / np.sqrt((2 * np.pi) ** m * det_S)
|
|
100
98
|
|
|
101
99
|
return likelihood
|
|
102
100
|
|
|
@@ -210,9 +208,7 @@ def jpda_probabilities(
|
|
|
210
208
|
if n_tracks <= 5 and n_meas <= 5:
|
|
211
209
|
beta = _jpda_exact(likelihood_matrix, gated, detection_prob, clutter_density)
|
|
212
210
|
else:
|
|
213
|
-
beta = _jpda_approximate(
|
|
214
|
-
likelihood_matrix, gated, detection_prob, clutter_density
|
|
215
|
-
)
|
|
211
|
+
beta = _jpda_approximate(likelihood_matrix, gated, detection_prob, clutter_density)
|
|
216
212
|
|
|
217
213
|
return beta
|
|
218
214
|
|
|
@@ -258,9 +254,7 @@ def _jpda_exact(
|
|
|
258
254
|
if gated[track_idx, meas_idx] and track_idx not in used_tracks:
|
|
259
255
|
current_assignment.append(track_idx)
|
|
260
256
|
used_tracks.add(track_idx)
|
|
261
|
-
yield from generate_hypotheses(
|
|
262
|
-
meas_idx + 1, current_assignment, used_tracks
|
|
263
|
-
)
|
|
257
|
+
yield from generate_hypotheses(meas_idx + 1, current_assignment, used_tracks)
|
|
264
258
|
used_tracks.remove(track_idx)
|
|
265
259
|
current_assignment.pop()
|
|
266
260
|
|
|
@@ -298,9 +292,7 @@ def _jpda_exact(
|
|
|
298
292
|
hypothesis_probs = [p / total_prob for p in hypothesis_probs]
|
|
299
293
|
|
|
300
294
|
# Compute marginal association probabilities
|
|
301
|
-
for h_idx, (assignment, prob) in enumerate(
|
|
302
|
-
zip(hypothesis_assignments, hypothesis_probs)
|
|
303
|
-
):
|
|
295
|
+
for h_idx, (assignment, prob) in enumerate(zip(hypothesis_assignments, hypothesis_probs)):
|
|
304
296
|
detected_tracks = set()
|
|
305
297
|
for j, track_idx in enumerate(assignment):
|
|
306
298
|
if track_idx >= 0:
|
{nrl_tracker-0.21.5 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/kbest.py
RENAMED
|
@@ -335,9 +335,7 @@ def _partition_solution(
|
|
|
335
335
|
|
|
336
336
|
for i in range(start_idx, n_assigned):
|
|
337
337
|
# Require assignments 0..i-1, forbid assignment i
|
|
338
|
-
new_required = required + [
|
|
339
|
-
(row_ind[j], col_ind[j]) for j in range(start_idx, i)
|
|
340
|
-
]
|
|
338
|
+
new_required = required + [(row_ind[j], col_ind[j]) for j in range(start_idx, i)]
|
|
341
339
|
new_forbidden = forbidden + [(row_ind[i], col_ind[i])]
|
|
342
340
|
|
|
343
341
|
# Solve constrained problem
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Astronomical calculations for target tracking.
|
|
3
3
|
|
|
4
4
|
This module provides time system conversions, orbital mechanics,
|
|
5
|
-
Lambert problem solvers,
|
|
5
|
+
Lambert problem solvers, reference frame transformations, and high-precision
|
|
6
|
+
ephemerides for celestial bodies.
|
|
6
7
|
|
|
7
8
|
Examples
|
|
8
9
|
--------
|
|
@@ -18,8 +19,19 @@ Examples
|
|
|
18
19
|
>>> r1 = np.array([5000, 10000, 2100])
|
|
19
20
|
>>> r2 = np.array([-14600, 2500, 7000])
|
|
20
21
|
>>> sol = lambert_universal(r1, r2, 3600)
|
|
22
|
+
|
|
23
|
+
>>> # Query Sun position with high precision
|
|
24
|
+
>>> from pytcl.astronomical import sun_position
|
|
25
|
+
>>> r_sun, v_sun = sun_position(2451545.0) # J2000.0
|
|
21
26
|
"""
|
|
22
27
|
|
|
28
|
+
from pytcl.astronomical.ephemerides import (
|
|
29
|
+
DEEphemeris,
|
|
30
|
+
barycenter_position,
|
|
31
|
+
moon_position,
|
|
32
|
+
planet_position,
|
|
33
|
+
sun_position,
|
|
34
|
+
)
|
|
23
35
|
from pytcl.astronomical.lambert import (
|
|
24
36
|
LambertSolution,
|
|
25
37
|
bi_elliptic_transfer,
|
|
@@ -28,8 +40,10 @@ from pytcl.astronomical.lambert import (
|
|
|
28
40
|
lambert_universal,
|
|
29
41
|
minimum_energy_transfer,
|
|
30
42
|
)
|
|
31
|
-
from pytcl.astronomical.orbital_mechanics import (
|
|
32
|
-
GM_EARTH,
|
|
43
|
+
from pytcl.astronomical.orbital_mechanics import (
|
|
44
|
+
GM_EARTH, # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
|
|
45
|
+
)
|
|
46
|
+
from pytcl.astronomical.orbital_mechanics import (
|
|
33
47
|
GM_JUPITER,
|
|
34
48
|
GM_MARS,
|
|
35
49
|
GM_MOON,
|
|
@@ -62,8 +76,10 @@ from pytcl.astronomical.orbital_mechanics import ( # Constants; Types; Anomaly
|
|
|
62
76
|
true_to_mean_anomaly,
|
|
63
77
|
vis_viva,
|
|
64
78
|
)
|
|
65
|
-
from pytcl.astronomical.reference_frames import (
|
|
66
|
-
earth_rotation_angle,
|
|
79
|
+
from pytcl.astronomical.reference_frames import (
|
|
80
|
+
earth_rotation_angle, # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
|
|
81
|
+
)
|
|
82
|
+
from pytcl.astronomical.reference_frames import (
|
|
67
83
|
ecef_to_eci,
|
|
68
84
|
eci_to_ecef,
|
|
69
85
|
ecliptic_to_equatorial,
|
|
@@ -83,8 +99,25 @@ from pytcl.astronomical.reference_frames import ( # Time utilities; Precession;
|
|
|
83
99
|
sidereal_rotation_matrix,
|
|
84
100
|
true_obliquity,
|
|
85
101
|
)
|
|
86
|
-
from pytcl.astronomical.
|
|
87
|
-
|
|
102
|
+
from pytcl.astronomical.relativity import (
|
|
103
|
+
C_LIGHT, # Physical constants; Schwarzschild metric; Time dilation; Shapiro delay; Precession; PN effects; Range corrections
|
|
104
|
+
)
|
|
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
|
+
)
|
|
117
|
+
from pytcl.astronomical.time_systems import (
|
|
118
|
+
JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
|
|
119
|
+
)
|
|
120
|
+
from pytcl.astronomical.time_systems import (
|
|
88
121
|
JD_J2000,
|
|
89
122
|
JD_UNIX_EPOCH,
|
|
90
123
|
MJD_OFFSET,
|
|
@@ -218,4 +251,24 @@ __all__ = [
|
|
|
218
251
|
# Reference frames - Ecliptic/equatorial
|
|
219
252
|
"ecliptic_to_equatorial",
|
|
220
253
|
"equatorial_to_ecliptic",
|
|
254
|
+
# Ephemerides - Classes
|
|
255
|
+
"DEEphemeris",
|
|
256
|
+
# Ephemerides - Functions
|
|
257
|
+
"sun_position",
|
|
258
|
+
"moon_position",
|
|
259
|
+
"planet_position",
|
|
260
|
+
"barycenter_position",
|
|
261
|
+
# Relativity - Constants
|
|
262
|
+
"C_LIGHT",
|
|
263
|
+
"G_GRAV",
|
|
264
|
+
# Relativity - Functions
|
|
265
|
+
"schwarzschild_radius",
|
|
266
|
+
"gravitational_time_dilation",
|
|
267
|
+
"proper_time_rate",
|
|
268
|
+
"shapiro_delay",
|
|
269
|
+
"schwarzschild_precession_per_orbit",
|
|
270
|
+
"post_newtonian_acceleration",
|
|
271
|
+
"geodetic_precession",
|
|
272
|
+
"lense_thirring_precession",
|
|
273
|
+
"relativistic_range_correction",
|
|
221
274
|
]
|