nrl-tracker 0.22.0__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.22.0/nrl_tracker.egg-info → nrl_tracker-0.22.1}/PKG-INFO +1 -1
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1/nrl_tracker.egg-info}/PKG-INFO +1 -1
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pyproject.toml +1 -1
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/__init__.py +11 -9
- nrl_tracker-0.22.1/pytcl/assignment_algorithms/__init__.py +94 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/data_association.py +3 -7
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/gating.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/jpda.py +2 -6
- nrl_tracker-0.22.1/pytcl/assignment_algorithms/three_dimensional/__init__.py +24 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/three_dimensional/assignment.py +2 -6
- nrl_tracker-0.22.1/pytcl/assignment_algorithms/two_dimensional/__init__.py +35 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/assignment.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/kbest.py +6 -8
- nrl_tracker-0.22.1/pytcl/astronomical/__init__.py +274 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/ephemerides.py +1 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/lambert.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/time_systems.py +1 -2
- nrl_tracker-0.22.1/pytcl/atmosphere/__init__.py +37 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/atmosphere/models.py +2 -4
- nrl_tracker-0.22.1/pytcl/clustering/__init__.py +79 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/clustering/dbscan.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/clustering/gaussian_mixture.py +2 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/clustering/hierarchical.py +2 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/clustering/kmeans.py +2 -6
- nrl_tracker-0.22.1/pytcl/containers/__init__.py +72 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/cluster_set.py +2 -10
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/covertree.py +2 -8
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/kd_tree.py +2 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/measurement_set.py +2 -9
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/rtree.py +2 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/track_list.py +13 -13
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/containers/vptree.py +2 -7
- nrl_tracker-0.22.1/pytcl/coordinate_systems/__init__.py +181 -0
- nrl_tracker-0.22.1/pytcl/coordinate_systems/conversions/__init__.py +59 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/geodetic.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/conversions/spherical.py +2 -4
- nrl_tracker-0.22.1/pytcl/coordinate_systems/jacobians/__init__.py +37 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/jacobians/jacobians.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/__init__.py +21 -23
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/projections/projections.py +1 -3
- nrl_tracker-0.22.1/pytcl/coordinate_systems/rotations/__init__.py +56 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/coordinate_systems/rotations/rotations.py +1 -2
- nrl_tracker-0.22.1/pytcl/core/__init__.py +53 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/core/array_utils.py +3 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/core/validation.py +2 -7
- nrl_tracker-0.22.1/pytcl/dynamic_estimation/__init__.py +207 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/imm.py +3 -7
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/information_filter.py +6 -8
- nrl_tracker-0.22.1/pytcl/dynamic_estimation/kalman/__init__.py +111 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/extended.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/linear.py +3 -7
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/square_root.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/kalman/unscented.py +3 -8
- nrl_tracker-0.22.1/pytcl/dynamic_estimation/particle_filters/__init__.py +38 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/smoothers.py +3 -8
- nrl_tracker-0.22.1/pytcl/dynamic_models/__init__.py +110 -0
- nrl_tracker-0.22.1/pytcl/dynamic_models/continuous_time/__init__.py +40 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/continuous_time/dynamics.py +2 -4
- nrl_tracker-0.22.1/pytcl/dynamic_models/discrete_time/__init__.py +37 -0
- nrl_tracker-0.22.1/pytcl/dynamic_models/process_noise/__init__.py +37 -0
- nrl_tracker-0.22.1/pytcl/gravity/__init__.py +150 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/gravity/clenshaw.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/gravity/egm.py +3 -8
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/gravity/spherical_harmonics.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/gravity/tides.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/magnetism/__init__.py +25 -26
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/magnetism/emm.py +1 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/magnetism/igrf.py +6 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/magnetism/wmm.py +1 -2
- nrl_tracker-0.22.1/pytcl/mathematical_functions/__init__.py +208 -0
- nrl_tracker-0.22.1/pytcl/mathematical_functions/basic_matrix/__init__.py +66 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/decompositions.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +1 -2
- nrl_tracker-0.22.1/pytcl/mathematical_functions/combinatorics/__init__.py +49 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -4
- nrl_tracker-0.22.1/pytcl/mathematical_functions/geometry/__init__.py +48 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/geometry/geometry.py +3 -6
- nrl_tracker-0.22.1/pytcl/mathematical_functions/interpolation/__init__.py +37 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/interpolation/interpolation.py +2 -7
- nrl_tracker-0.22.1/pytcl/mathematical_functions/numerical_integration/__init__.py +45 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/numerical_integration/quadrature.py +2 -6
- nrl_tracker-0.22.1/pytcl/mathematical_functions/signal_processing/__init__.py +105 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/detection.py +3 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/filters.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/signal_processing/matched_filter.py +3 -6
- nrl_tracker-0.22.1/pytcl/mathematical_functions/special_functions/__init__.py +198 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/bessel.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/debye.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/elliptic.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/error_functions.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/hypergeometric.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/lambert_w.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/special_functions/marcum_q.py +1 -2
- nrl_tracker-0.22.1/pytcl/mathematical_functions/statistics/__init__.py +73 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/distributions.py +4 -9
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/statistics/estimators.py +1 -2
- nrl_tracker-0.22.1/pytcl/mathematical_functions/transforms/__init__.py +120 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/fourier.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/stft.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/transforms/wavelets.py +2 -7
- nrl_tracker-0.22.1/pytcl/navigation/__init__.py +237 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/navigation/geodesy.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/navigation/great_circle.py +1 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/navigation/ins.py +5 -11
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/navigation/ins_gnss.py +12 -17
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/navigation/rhumb.py +2 -4
- nrl_tracker-0.22.1/pytcl/performance_evaluation/__init__.py +82 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/estimation_metrics.py +1 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/performance_evaluation/track_metrics.py +1 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/plotting/__init__.py +38 -30
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/plotting/coordinates.py +1 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/plotting/ellipses.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/plotting/metrics.py +1 -2
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/plotting/tracks.py +1 -4
- nrl_tracker-0.22.1/pytcl/static_estimation/__init__.py +103 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/static_estimation/least_squares.py +2 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/static_estimation/maximum_likelihood.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/static_estimation/robust.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/terrain/__init__.py +34 -28
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/terrain/dem.py +1 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/terrain/loaders.py +1 -4
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/terrain/visibility.py +1 -2
- nrl_tracker-0.22.1/pytcl/trackers/__init__.py +45 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/trackers/hypothesis.py +1 -6
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/trackers/mht.py +9 -13
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/trackers/multi_target.py +3 -8
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/trackers/single_target.py +2 -5
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_relativity.py +13 -8
- nrl_tracker-0.22.0/pytcl/assignment_algorithms/__init__.py +0 -84
- nrl_tracker-0.22.0/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -22
- nrl_tracker-0.22.0/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -31
- nrl_tracker-0.22.0/pytcl/astronomical/__init__.py +0 -262
- nrl_tracker-0.22.0/pytcl/atmosphere/__init__.py +0 -35
- nrl_tracker-0.22.0/pytcl/clustering/__init__.py +0 -71
- nrl_tracker-0.22.0/pytcl/containers/__init__.py +0 -75
- nrl_tracker-0.22.0/pytcl/coordinate_systems/__init__.py +0 -176
- nrl_tracker-0.22.0/pytcl/coordinate_systems/conversions/__init__.py +0 -55
- nrl_tracker-0.22.0/pytcl/coordinate_systems/jacobians/__init__.py +0 -35
- nrl_tracker-0.22.0/pytcl/coordinate_systems/rotations/__init__.py +0 -54
- nrl_tracker-0.22.0/pytcl/core/__init__.py +0 -47
- nrl_tracker-0.22.0/pytcl/dynamic_estimation/__init__.py +0 -198
- nrl_tracker-0.22.0/pytcl/dynamic_estimation/kalman/__init__.py +0 -103
- nrl_tracker-0.22.0/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -36
- nrl_tracker-0.22.0/pytcl/dynamic_models/__init__.py +0 -106
- nrl_tracker-0.22.0/pytcl/dynamic_models/continuous_time/__init__.py +0 -40
- nrl_tracker-0.22.0/pytcl/dynamic_models/discrete_time/__init__.py +0 -35
- nrl_tracker-0.22.0/pytcl/dynamic_models/process_noise/__init__.py +0 -35
- nrl_tracker-0.22.0/pytcl/gravity/__init__.py +0 -140
- nrl_tracker-0.22.0/pytcl/mathematical_functions/__init__.py +0 -190
- nrl_tracker-0.22.0/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -72
- nrl_tracker-0.22.0/pytcl/mathematical_functions/combinatorics/__init__.py +0 -53
- nrl_tracker-0.22.0/pytcl/mathematical_functions/geometry/__init__.py +0 -48
- nrl_tracker-0.22.0/pytcl/mathematical_functions/interpolation/__init__.py +0 -35
- nrl_tracker-0.22.0/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -51
- nrl_tracker-0.22.0/pytcl/mathematical_functions/signal_processing/__init__.py +0 -117
- nrl_tracker-0.22.0/pytcl/mathematical_functions/special_functions/__init__.py +0 -196
- nrl_tracker-0.22.0/pytcl/mathematical_functions/statistics/__init__.py +0 -69
- nrl_tracker-0.22.0/pytcl/mathematical_functions/transforms/__init__.py +0 -114
- nrl_tracker-0.22.0/pytcl/navigation/__init__.py +0 -227
- nrl_tracker-0.22.0/pytcl/performance_evaluation/__init__.py +0 -78
- nrl_tracker-0.22.0/pytcl/static_estimation/__init__.py +0 -99
- nrl_tracker-0.22.0/pytcl/trackers/__init__.py +0 -48
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/CONTRIBUTING.md +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/LICENSE +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/MANIFEST.in +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/README.md +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/SOURCES.txt +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/dependency_links.txt +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/requires.txt +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/nrl_tracker.egg-info/top_level.txt +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/orbital_mechanics.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/reference_frames.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/astronomical/relativity.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/core/constants.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/polynomial.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/dynamic_models/process_noise/singer.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/gravity/models.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/misc/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/physical_values/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/scheduling/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/transponders/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/setup.cfg +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/__init__.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/conftest.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_additional_trees.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_assignment_algorithms.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_astronomical.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_clustering.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_coordinate_systems.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_coverage_boost.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_coverage_boost_2.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_dynamic_models.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_egm.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_emm.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_ephemerides.py +3 -3
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_gaussian_mixtures.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_geophysical.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_great_circle.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_ins.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_ins_gnss.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_kalman_filters.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_mathematical_functions.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_maximum_likelihood.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_mht.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_performance_evaluation.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_phase6_specialized.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_plotting.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_projections.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_rhumb.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_signal_processing.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_smoothers.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_spatial_structures.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_special_functions_phase12.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_static_estimation.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_terrain.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_terrain_loaders.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_tides.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_trackers.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_tracking_containers.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_transforms.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_v030_comprehensive.py +0 -0
- {nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/tests/test_v030_features.py +0 -0
- {nrl_tracker-0.22.0 → 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.22.
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 0.22.
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "nrl-tracker"
|
|
7
|
-
version = "0.22.
|
|
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 = [
|
|
@@ -20,7 +20,7 @@ References
|
|
|
20
20
|
no. 5, pp. 18-27, May 2017.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
__version__ = "0.22.
|
|
23
|
+
__version__ = "0.22.1"
|
|
24
24
|
__author__ = "Python Port Contributors"
|
|
25
25
|
__original_author__ = "David F. Crouse, Naval Research Laboratory"
|
|
26
26
|
|
|
@@ -30,14 +30,16 @@ __original_author__ = "David F. Crouse, Naval Research Laboratory"
|
|
|
30
30
|
# Specialized domains (Phase 6)
|
|
31
31
|
# Assignment algorithms (Phase 5)
|
|
32
32
|
# Core utilities
|
|
33
|
-
from pytcl import
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
from pytcl import (
|
|
34
|
+
assignment_algorithms,
|
|
35
|
+
astronomical,
|
|
36
|
+
atmosphere,
|
|
37
|
+
core,
|
|
38
|
+
navigation,
|
|
39
|
+
performance_evaluation,
|
|
40
|
+
plotting,
|
|
41
|
+
trackers,
|
|
42
|
+
)
|
|
41
43
|
|
|
42
44
|
|
|
43
45
|
# Version tuple for programmatic access
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Assignment algorithms for data association in target tracking.
|
|
3
|
+
|
|
4
|
+
This module provides:
|
|
5
|
+
- 2D assignment algorithms (Hungarian, Auction)
|
|
6
|
+
- K-best 2D assignment (Murty's algorithm)
|
|
7
|
+
- 3D assignment algorithms (Lagrangian relaxation, Auction)
|
|
8
|
+
- Gating methods (ellipsoidal, rectangular)
|
|
9
|
+
- Data association algorithms (GNN, JPDA)
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from pytcl.assignment_algorithms.data_association import (
|
|
13
|
+
AssociationResult,
|
|
14
|
+
compute_association_cost,
|
|
15
|
+
gated_gnn_association,
|
|
16
|
+
gnn_association,
|
|
17
|
+
nearest_neighbor,
|
|
18
|
+
)
|
|
19
|
+
from pytcl.assignment_algorithms.gating import (
|
|
20
|
+
chi2_gate_threshold,
|
|
21
|
+
compute_gate_volume,
|
|
22
|
+
ellipsoidal_gate,
|
|
23
|
+
gate_measurements,
|
|
24
|
+
mahalanobis_distance,
|
|
25
|
+
rectangular_gate,
|
|
26
|
+
)
|
|
27
|
+
from pytcl.assignment_algorithms.jpda import (
|
|
28
|
+
JPDAResult,
|
|
29
|
+
JPDAUpdate,
|
|
30
|
+
compute_likelihood_matrix,
|
|
31
|
+
jpda,
|
|
32
|
+
jpda_probabilities,
|
|
33
|
+
jpda_update,
|
|
34
|
+
)
|
|
35
|
+
from pytcl.assignment_algorithms.three_dimensional import (
|
|
36
|
+
Assignment3DResult,
|
|
37
|
+
assign3d,
|
|
38
|
+
assign3d_auction,
|
|
39
|
+
assign3d_lagrangian,
|
|
40
|
+
decompose_to_2d,
|
|
41
|
+
greedy_3d,
|
|
42
|
+
)
|
|
43
|
+
from pytcl.assignment_algorithms.two_dimensional import (
|
|
44
|
+
AssignmentResult,
|
|
45
|
+
KBestResult,
|
|
46
|
+
assign2d,
|
|
47
|
+
auction,
|
|
48
|
+
hungarian,
|
|
49
|
+
kbest_assign2d,
|
|
50
|
+
linear_sum_assignment,
|
|
51
|
+
murty,
|
|
52
|
+
ranked_assignments,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
__all__ = [
|
|
56
|
+
# 2D Assignment
|
|
57
|
+
"hungarian",
|
|
58
|
+
"auction",
|
|
59
|
+
"linear_sum_assignment",
|
|
60
|
+
"assign2d",
|
|
61
|
+
"AssignmentResult",
|
|
62
|
+
# K-Best 2D Assignment
|
|
63
|
+
"KBestResult",
|
|
64
|
+
"murty",
|
|
65
|
+
"kbest_assign2d",
|
|
66
|
+
"ranked_assignments",
|
|
67
|
+
# 3D Assignment
|
|
68
|
+
"Assignment3DResult",
|
|
69
|
+
"assign3d",
|
|
70
|
+
"assign3d_lagrangian",
|
|
71
|
+
"assign3d_auction",
|
|
72
|
+
"greedy_3d",
|
|
73
|
+
"decompose_to_2d",
|
|
74
|
+
# Gating
|
|
75
|
+
"ellipsoidal_gate",
|
|
76
|
+
"rectangular_gate",
|
|
77
|
+
"gate_measurements",
|
|
78
|
+
"mahalanobis_distance",
|
|
79
|
+
"chi2_gate_threshold",
|
|
80
|
+
"compute_gate_volume",
|
|
81
|
+
# Data Association
|
|
82
|
+
"gnn_association",
|
|
83
|
+
"nearest_neighbor",
|
|
84
|
+
"compute_association_cost",
|
|
85
|
+
"gated_gnn_association",
|
|
86
|
+
"AssociationResult",
|
|
87
|
+
# JPDA
|
|
88
|
+
"JPDAResult",
|
|
89
|
+
"JPDAUpdate",
|
|
90
|
+
"jpda",
|
|
91
|
+
"jpda_update",
|
|
92
|
+
"jpda_probabilities",
|
|
93
|
+
"compute_likelihood_matrix",
|
|
94
|
+
]
|
|
@@ -5,16 +5,12 @@ This module provides algorithms for associating measurements to tracks,
|
|
|
5
5
|
including Global Nearest Neighbor (GNN) and related methods.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import List
|
|
9
|
-
from typing import NamedTuple
|
|
10
|
-
from typing import Optional
|
|
8
|
+
from typing import List, NamedTuple, Optional
|
|
11
9
|
|
|
12
10
|
import numpy as np
|
|
13
|
-
from numpy.typing import ArrayLike
|
|
14
|
-
from numpy.typing import NDArray
|
|
11
|
+
from numpy.typing import ArrayLike, NDArray
|
|
15
12
|
|
|
16
|
-
from pytcl.assignment_algorithms.gating import mahalanobis_batch
|
|
17
|
-
from pytcl.assignment_algorithms.gating import mahalanobis_distance
|
|
13
|
+
from pytcl.assignment_algorithms.gating import mahalanobis_batch, mahalanobis_distance
|
|
18
14
|
from pytcl.assignment_algorithms.two_dimensional import assign2d
|
|
19
15
|
|
|
20
16
|
|
|
@@ -5,13 +5,11 @@ 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
|
|
9
|
-
from typing import Tuple
|
|
8
|
+
from typing import List, Tuple
|
|
10
9
|
|
|
11
10
|
import numpy as np
|
|
12
11
|
from numba import njit
|
|
13
|
-
from numpy.typing import ArrayLike
|
|
14
|
-
from numpy.typing import NDArray
|
|
12
|
+
from numpy.typing import ArrayLike, NDArray
|
|
15
13
|
from scipy.stats import chi2
|
|
16
14
|
|
|
17
15
|
|
|
@@ -9,15 +9,11 @@ This is more sophisticated than GNN which makes hard assignment decisions,
|
|
|
9
9
|
as JPDA can handle measurement origin uncertainty in cluttered environments.
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
-
from typing import List
|
|
13
|
-
from typing import NamedTuple
|
|
14
|
-
from typing import Optional
|
|
15
|
-
from typing import Tuple
|
|
12
|
+
from typing import List, NamedTuple, Optional, Tuple
|
|
16
13
|
|
|
17
14
|
import numpy as np
|
|
18
15
|
from numba import njit
|
|
19
|
-
from numpy.typing import ArrayLike
|
|
20
|
-
from numpy.typing import NDArray
|
|
16
|
+
from numpy.typing import ArrayLike, NDArray
|
|
21
17
|
from scipy.stats import chi2
|
|
22
18
|
|
|
23
19
|
from pytcl.assignment_algorithms.gating import mahalanobis_distance
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Three-dimensional assignment algorithms.
|
|
3
|
+
|
|
4
|
+
This module provides algorithms for solving 3D assignment problems,
|
|
5
|
+
which arise in multi-sensor data fusion and multi-scan tracking.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pytcl.assignment_algorithms.three_dimensional.assignment import (
|
|
9
|
+
Assignment3DResult,
|
|
10
|
+
assign3d,
|
|
11
|
+
assign3d_auction,
|
|
12
|
+
assign3d_lagrangian,
|
|
13
|
+
decompose_to_2d,
|
|
14
|
+
greedy_3d,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"Assignment3DResult",
|
|
19
|
+
"assign3d",
|
|
20
|
+
"assign3d_lagrangian",
|
|
21
|
+
"assign3d_auction",
|
|
22
|
+
"greedy_3d",
|
|
23
|
+
"decompose_to_2d",
|
|
24
|
+
]
|
|
@@ -11,14 +11,10 @@ cost subject to the constraint that each index appears in at most one
|
|
|
11
11
|
selected tuple.
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
from typing import List
|
|
15
|
-
from typing import NamedTuple
|
|
16
|
-
from typing import Optional
|
|
17
|
-
from typing import Tuple
|
|
14
|
+
from typing import List, NamedTuple, Optional, Tuple
|
|
18
15
|
|
|
19
16
|
import numpy as np
|
|
20
|
-
from numpy.typing import ArrayLike
|
|
21
|
-
from numpy.typing import NDArray
|
|
17
|
+
from numpy.typing import ArrayLike, NDArray
|
|
22
18
|
from scipy.optimize import linear_sum_assignment as scipy_lsa
|
|
23
19
|
|
|
24
20
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Two-dimensional assignment algorithms.
|
|
3
|
+
|
|
4
|
+
This module provides optimal and suboptimal algorithms for solving
|
|
5
|
+
the 2D assignment problem (bipartite matching), as well as k-best
|
|
6
|
+
assignment algorithms for Multiple Hypothesis Tracking.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from pytcl.assignment_algorithms.two_dimensional.assignment import (
|
|
10
|
+
AssignmentResult,
|
|
11
|
+
assign2d,
|
|
12
|
+
auction,
|
|
13
|
+
hungarian,
|
|
14
|
+
linear_sum_assignment,
|
|
15
|
+
)
|
|
16
|
+
from pytcl.assignment_algorithms.two_dimensional.kbest import (
|
|
17
|
+
KBestResult,
|
|
18
|
+
kbest_assign2d,
|
|
19
|
+
murty,
|
|
20
|
+
ranked_assignments,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
# 2D Assignment
|
|
25
|
+
"hungarian",
|
|
26
|
+
"auction",
|
|
27
|
+
"linear_sum_assignment",
|
|
28
|
+
"assign2d",
|
|
29
|
+
"AssignmentResult",
|
|
30
|
+
# K-Best Assignment
|
|
31
|
+
"KBestResult",
|
|
32
|
+
"murty",
|
|
33
|
+
"kbest_assign2d",
|
|
34
|
+
"ranked_assignments",
|
|
35
|
+
]
|
{nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/assignment.py
RENAMED
|
@@ -5,13 +5,10 @@ This module provides algorithms for solving the 2D assignment (bipartite matchin
|
|
|
5
5
|
problem, which is fundamental to data association in target tracking.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import NamedTuple
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing import Tuple
|
|
8
|
+
from typing import NamedTuple, Optional, Tuple
|
|
11
9
|
|
|
12
10
|
import numpy as np
|
|
13
|
-
from numpy.typing import ArrayLike
|
|
14
|
-
from numpy.typing import NDArray
|
|
11
|
+
from numpy.typing import ArrayLike, NDArray
|
|
15
12
|
from scipy.optimize import linear_sum_assignment as scipy_lsa
|
|
16
13
|
|
|
17
14
|
|
{nrl_tracker-0.22.0 → nrl_tracker-0.22.1}/pytcl/assignment_algorithms/two_dimensional/kbest.py
RENAMED
|
@@ -6,18 +6,16 @@ This module provides algorithms for finding the k best solutions to the
|
|
|
6
6
|
Multiple Hypothesis Tracking (MHT).
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from typing import List
|
|
10
|
-
from typing import NamedTuple
|
|
11
|
-
from typing import Optional
|
|
12
|
-
from typing import Tuple
|
|
9
|
+
from typing import List, NamedTuple, Optional, Tuple
|
|
13
10
|
|
|
14
11
|
import numpy as np
|
|
15
|
-
from numpy.typing import ArrayLike
|
|
16
|
-
from numpy.typing import NDArray
|
|
12
|
+
from numpy.typing import ArrayLike, NDArray
|
|
17
13
|
from scipy.optimize import linear_sum_assignment as scipy_lsa
|
|
18
14
|
|
|
19
|
-
from pytcl.assignment_algorithms.two_dimensional.assignment import
|
|
20
|
-
|
|
15
|
+
from pytcl.assignment_algorithms.two_dimensional.assignment import (
|
|
16
|
+
AssignmentResult,
|
|
17
|
+
assign2d,
|
|
18
|
+
)
|
|
21
19
|
|
|
22
20
|
|
|
23
21
|
class KBestResult(NamedTuple):
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Astronomical calculations for target tracking.
|
|
3
|
+
|
|
4
|
+
This module provides time system conversions, orbital mechanics,
|
|
5
|
+
Lambert problem solvers, reference frame transformations, and high-precision
|
|
6
|
+
ephemerides for celestial bodies.
|
|
7
|
+
|
|
8
|
+
Examples
|
|
9
|
+
--------
|
|
10
|
+
>>> from pytcl.astronomical import kepler_propagate, OrbitalElements
|
|
11
|
+
>>> import numpy as np
|
|
12
|
+
|
|
13
|
+
>>> # Propagate an orbit forward in time
|
|
14
|
+
>>> elements = OrbitalElements(a=7000, e=0.01, i=0.5, raan=0, omega=0, nu=0)
|
|
15
|
+
>>> new_elements = kepler_propagate(elements, 3600) # 1 hour
|
|
16
|
+
|
|
17
|
+
>>> # Solve Lambert's problem
|
|
18
|
+
>>> from pytcl.astronomical import lambert_universal
|
|
19
|
+
>>> r1 = np.array([5000, 10000, 2100])
|
|
20
|
+
>>> r2 = np.array([-14600, 2500, 7000])
|
|
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
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from pytcl.astronomical.ephemerides import (
|
|
29
|
+
DEEphemeris,
|
|
30
|
+
barycenter_position,
|
|
31
|
+
moon_position,
|
|
32
|
+
planet_position,
|
|
33
|
+
sun_position,
|
|
34
|
+
)
|
|
35
|
+
from pytcl.astronomical.lambert import (
|
|
36
|
+
LambertSolution,
|
|
37
|
+
bi_elliptic_transfer,
|
|
38
|
+
hohmann_transfer,
|
|
39
|
+
lambert_izzo,
|
|
40
|
+
lambert_universal,
|
|
41
|
+
minimum_energy_transfer,
|
|
42
|
+
)
|
|
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 (
|
|
47
|
+
GM_JUPITER,
|
|
48
|
+
GM_MARS,
|
|
49
|
+
GM_MOON,
|
|
50
|
+
GM_SUN,
|
|
51
|
+
OrbitalElements,
|
|
52
|
+
StateVector,
|
|
53
|
+
apoapsis_radius,
|
|
54
|
+
circular_velocity,
|
|
55
|
+
eccentric_to_mean_anomaly,
|
|
56
|
+
eccentric_to_true_anomaly,
|
|
57
|
+
escape_velocity,
|
|
58
|
+
flight_path_angle,
|
|
59
|
+
hyperbolic_to_true_anomaly,
|
|
60
|
+
kepler_propagate,
|
|
61
|
+
kepler_propagate_state,
|
|
62
|
+
mean_motion,
|
|
63
|
+
mean_to_eccentric_anomaly,
|
|
64
|
+
mean_to_hyperbolic_anomaly,
|
|
65
|
+
mean_to_true_anomaly,
|
|
66
|
+
orbit_radius,
|
|
67
|
+
orbital_elements_to_state,
|
|
68
|
+
orbital_period,
|
|
69
|
+
periapsis_radius,
|
|
70
|
+
specific_angular_momentum,
|
|
71
|
+
specific_orbital_energy,
|
|
72
|
+
state_to_orbital_elements,
|
|
73
|
+
time_since_periapsis,
|
|
74
|
+
true_to_eccentric_anomaly,
|
|
75
|
+
true_to_hyperbolic_anomaly,
|
|
76
|
+
true_to_mean_anomaly,
|
|
77
|
+
vis_viva,
|
|
78
|
+
)
|
|
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 (
|
|
83
|
+
ecef_to_eci,
|
|
84
|
+
eci_to_ecef,
|
|
85
|
+
ecliptic_to_equatorial,
|
|
86
|
+
equation_of_equinoxes,
|
|
87
|
+
equatorial_to_ecliptic,
|
|
88
|
+
gast_iau82,
|
|
89
|
+
gcrf_to_itrf,
|
|
90
|
+
gmst_iau82,
|
|
91
|
+
itrf_to_gcrf,
|
|
92
|
+
julian_centuries_j2000,
|
|
93
|
+
mean_obliquity_iau80,
|
|
94
|
+
nutation_angles_iau80,
|
|
95
|
+
nutation_matrix,
|
|
96
|
+
polar_motion_matrix,
|
|
97
|
+
precession_angles_iau76,
|
|
98
|
+
precession_matrix_iau76,
|
|
99
|
+
sidereal_rotation_matrix,
|
|
100
|
+
true_obliquity,
|
|
101
|
+
)
|
|
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 (
|
|
121
|
+
JD_J2000,
|
|
122
|
+
JD_UNIX_EPOCH,
|
|
123
|
+
MJD_OFFSET,
|
|
124
|
+
TT_TAI_OFFSET,
|
|
125
|
+
LeapSecondTable,
|
|
126
|
+
cal_to_jd,
|
|
127
|
+
gast,
|
|
128
|
+
get_leap_seconds,
|
|
129
|
+
gmst,
|
|
130
|
+
gps_to_tai,
|
|
131
|
+
gps_to_utc,
|
|
132
|
+
gps_week_seconds,
|
|
133
|
+
gps_week_to_utc,
|
|
134
|
+
jd_to_cal,
|
|
135
|
+
jd_to_mjd,
|
|
136
|
+
jd_to_unix,
|
|
137
|
+
mjd_to_jd,
|
|
138
|
+
tai_to_gps,
|
|
139
|
+
tai_to_tt,
|
|
140
|
+
tai_to_utc,
|
|
141
|
+
tt_to_tai,
|
|
142
|
+
tt_to_utc,
|
|
143
|
+
unix_to_jd,
|
|
144
|
+
utc_to_gps,
|
|
145
|
+
utc_to_tai,
|
|
146
|
+
utc_to_tt,
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
__all__ = [
|
|
150
|
+
# Time systems - Julian dates
|
|
151
|
+
"cal_to_jd",
|
|
152
|
+
"jd_to_cal",
|
|
153
|
+
"mjd_to_jd",
|
|
154
|
+
"jd_to_mjd",
|
|
155
|
+
# Time systems - Time scales
|
|
156
|
+
"utc_to_tai",
|
|
157
|
+
"tai_to_utc",
|
|
158
|
+
"tai_to_tt",
|
|
159
|
+
"tt_to_tai",
|
|
160
|
+
"utc_to_tt",
|
|
161
|
+
"tt_to_utc",
|
|
162
|
+
"tai_to_gps",
|
|
163
|
+
"gps_to_tai",
|
|
164
|
+
"utc_to_gps",
|
|
165
|
+
"gps_to_utc",
|
|
166
|
+
# Time systems - Unix time
|
|
167
|
+
"unix_to_jd",
|
|
168
|
+
"jd_to_unix",
|
|
169
|
+
# Time systems - GPS week
|
|
170
|
+
"gps_week_seconds",
|
|
171
|
+
"gps_week_to_utc",
|
|
172
|
+
# Time systems - Sidereal time
|
|
173
|
+
"gmst",
|
|
174
|
+
"gast",
|
|
175
|
+
# Time systems - Leap seconds
|
|
176
|
+
"get_leap_seconds",
|
|
177
|
+
"LeapSecondTable",
|
|
178
|
+
# Time systems - Constants
|
|
179
|
+
"JD_J2000",
|
|
180
|
+
"JD_UNIX_EPOCH",
|
|
181
|
+
"JD_GPS_EPOCH",
|
|
182
|
+
"MJD_OFFSET",
|
|
183
|
+
"TT_TAI_OFFSET",
|
|
184
|
+
# Orbital mechanics - Constants
|
|
185
|
+
"GM_SUN",
|
|
186
|
+
"GM_EARTH",
|
|
187
|
+
"GM_MOON",
|
|
188
|
+
"GM_MARS",
|
|
189
|
+
"GM_JUPITER",
|
|
190
|
+
# Orbital mechanics - Types
|
|
191
|
+
"OrbitalElements",
|
|
192
|
+
"StateVector",
|
|
193
|
+
# Orbital mechanics - Anomaly conversions
|
|
194
|
+
"mean_to_eccentric_anomaly",
|
|
195
|
+
"mean_to_hyperbolic_anomaly",
|
|
196
|
+
"eccentric_to_true_anomaly",
|
|
197
|
+
"true_to_eccentric_anomaly",
|
|
198
|
+
"hyperbolic_to_true_anomaly",
|
|
199
|
+
"true_to_hyperbolic_anomaly",
|
|
200
|
+
"eccentric_to_mean_anomaly",
|
|
201
|
+
"mean_to_true_anomaly",
|
|
202
|
+
"true_to_mean_anomaly",
|
|
203
|
+
# Orbital mechanics - Element conversions
|
|
204
|
+
"orbital_elements_to_state",
|
|
205
|
+
"state_to_orbital_elements",
|
|
206
|
+
# Orbital mechanics - Propagation
|
|
207
|
+
"kepler_propagate",
|
|
208
|
+
"kepler_propagate_state",
|
|
209
|
+
# Orbital mechanics - Orbital quantities
|
|
210
|
+
"orbital_period",
|
|
211
|
+
"mean_motion",
|
|
212
|
+
"vis_viva",
|
|
213
|
+
"specific_angular_momentum",
|
|
214
|
+
"specific_orbital_energy",
|
|
215
|
+
"flight_path_angle",
|
|
216
|
+
"periapsis_radius",
|
|
217
|
+
"apoapsis_radius",
|
|
218
|
+
"time_since_periapsis",
|
|
219
|
+
"orbit_radius",
|
|
220
|
+
"escape_velocity",
|
|
221
|
+
"circular_velocity",
|
|
222
|
+
# Lambert problem
|
|
223
|
+
"LambertSolution",
|
|
224
|
+
"lambert_universal",
|
|
225
|
+
"lambert_izzo",
|
|
226
|
+
"minimum_energy_transfer",
|
|
227
|
+
"hohmann_transfer",
|
|
228
|
+
"bi_elliptic_transfer",
|
|
229
|
+
# Reference frames - Precession
|
|
230
|
+
"julian_centuries_j2000",
|
|
231
|
+
"precession_angles_iau76",
|
|
232
|
+
"precession_matrix_iau76",
|
|
233
|
+
# Reference frames - Nutation
|
|
234
|
+
"nutation_angles_iau80",
|
|
235
|
+
"nutation_matrix",
|
|
236
|
+
"mean_obliquity_iau80",
|
|
237
|
+
"true_obliquity",
|
|
238
|
+
# Reference frames - Earth rotation
|
|
239
|
+
"earth_rotation_angle",
|
|
240
|
+
"gmst_iau82",
|
|
241
|
+
"gast_iau82",
|
|
242
|
+
"sidereal_rotation_matrix",
|
|
243
|
+
"equation_of_equinoxes",
|
|
244
|
+
# Reference frames - Polar motion
|
|
245
|
+
"polar_motion_matrix",
|
|
246
|
+
# Reference frames - Full transformations
|
|
247
|
+
"gcrf_to_itrf",
|
|
248
|
+
"itrf_to_gcrf",
|
|
249
|
+
"eci_to_ecef",
|
|
250
|
+
"ecef_to_eci",
|
|
251
|
+
# Reference frames - Ecliptic/equatorial
|
|
252
|
+
"ecliptic_to_equatorial",
|
|
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",
|
|
274
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Atmospheric models for tracking applications.
|
|
3
|
+
|
|
4
|
+
This module provides standard atmosphere models used for computing
|
|
5
|
+
temperature, pressure, density, and other properties at various altitudes.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pytcl.atmosphere.models import G0 # Constants
|
|
9
|
+
from pytcl.atmosphere.models import (
|
|
10
|
+
GAMMA,
|
|
11
|
+
P0,
|
|
12
|
+
RHO0,
|
|
13
|
+
T0,
|
|
14
|
+
AtmosphereState,
|
|
15
|
+
R,
|
|
16
|
+
altitude_from_pressure,
|
|
17
|
+
isa_atmosphere,
|
|
18
|
+
mach_number,
|
|
19
|
+
true_airspeed_from_mach,
|
|
20
|
+
us_standard_atmosphere_1976,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"AtmosphereState",
|
|
25
|
+
"us_standard_atmosphere_1976",
|
|
26
|
+
"isa_atmosphere",
|
|
27
|
+
"altitude_from_pressure",
|
|
28
|
+
"mach_number",
|
|
29
|
+
"true_airspeed_from_mach",
|
|
30
|
+
# Constants
|
|
31
|
+
"T0",
|
|
32
|
+
"P0",
|
|
33
|
+
"RHO0",
|
|
34
|
+
"G0",
|
|
35
|
+
"R",
|
|
36
|
+
"GAMMA",
|
|
37
|
+
]
|