nrl-tracker 1.0.0__tar.gz → 1.1.0__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.0.0/nrl_tracker.egg-info → nrl_tracker-1.1.0}/PKG-INFO +3 -1
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0/nrl_tracker.egg-info}/PKG-INFO +3 -1
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/nrl_tracker.egg-info/SOURCES.txt +1 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/nrl_tracker.egg-info/requires.txt +3 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pyproject.toml +7 -1
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/__init__.py +1 -1
- nrl_tracker-1.1.0/pytcl/logging_config.py +328 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/CONTRIBUTING.md +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/LICENSE +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/MANIFEST.in +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/README.md +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/nrl_tracker.egg-info/dependency_links.txt +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/nrl_tracker.egg-info/top_level.txt +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/data_association.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/gating.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/jpda.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/three_dimensional/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/three_dimensional/assignment.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/assignment.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/kbest.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/ephemerides.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/lambert.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/orbital_mechanics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/reference_frames.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/relativity.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/astronomical/time_systems.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/atmosphere/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/atmosphere/models.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/clustering/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/clustering/dbscan.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/clustering/gaussian_mixture.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/clustering/hierarchical.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/clustering/kmeans.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/cluster_set.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/covertree.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/kd_tree.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/measurement_set.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/rtree.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/track_list.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/containers/vptree.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/conversions/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/conversions/geodetic.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/conversions/spherical.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/jacobians/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/jacobians/jacobians.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/projections/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/projections/projections.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/rotations/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/coordinate_systems/rotations/rotations.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/core/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/core/array_utils.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/core/constants.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/core/validation.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/batch_estimation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/imm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/information_filter.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/kalman/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/kalman/extended.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/kalman/linear.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/kalman/square_root.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/kalman/unscented.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/measurement_update/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/particle_filters/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/particle_filters/bootstrap.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/smoothers.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/continuous_time/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/continuous_time/dynamics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/discrete_time/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/discrete_time/coordinated_turn.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/discrete_time/polynomial.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/discrete_time/singer.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/process_noise/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/process_noise/coordinated_turn.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/process_noise/polynomial.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/process_noise/singer.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/clenshaw.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/egm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/models.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/spherical_harmonics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/gravity/tides.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/magnetism/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/magnetism/emm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/magnetism/igrf.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/magnetism/wmm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/basic_matrix/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/basic_matrix/decompositions.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/basic_matrix/special_matrices.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/combinatorics/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/combinatorics/combinatorics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/continuous_optimization/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/geometry/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/geometry/geometry.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/interpolation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/interpolation/interpolation.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/numerical_integration/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/numerical_integration/quadrature.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/polynomials/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/detection.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/filters.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/matched_filter.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/bessel.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/debye.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/elliptic.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/error_functions.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/gamma_functions.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/hypergeometric.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/lambert_w.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/marcum_q.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/statistics/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/statistics/distributions.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/statistics/estimators.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/transforms/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/transforms/fourier.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/transforms/stft.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/transforms/wavelets.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/misc/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/geodesy.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/great_circle.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/ins.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/ins_gnss.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/navigation/rhumb.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/performance_evaluation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/performance_evaluation/estimation_metrics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/performance_evaluation/track_metrics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/physical_values/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/plotting/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/plotting/coordinates.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/plotting/ellipses.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/plotting/metrics.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/plotting/tracks.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/scheduling/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/static_estimation/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/static_estimation/least_squares.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/static_estimation/maximum_likelihood.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/static_estimation/robust.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/terrain/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/terrain/dem.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/terrain/loaders.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/terrain/visibility.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/trackers/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/trackers/hypothesis.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/trackers/mht.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/trackers/multi_target.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/trackers/single_target.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/transponders/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/setup.cfg +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/__init__.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/conftest.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_additional_trees.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_assignment_algorithms.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_astronomical.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_clustering.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_coordinate_systems.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_coverage_boost.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_coverage_boost_2.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_dynamic_models.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_egm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_emm.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_ephemerides.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_gaussian_mixtures.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_geophysical.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_great_circle.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_ins.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_ins_gnss.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_kalman_filters.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_mathematical_functions.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_maximum_likelihood.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_mht.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_performance_evaluation.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_phase6_specialized.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_plotting.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_projections.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_relativity.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_rhumb.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_signal_processing.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_smoothers.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_spatial_structures.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_special_functions_phase12.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_static_estimation.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_terrain.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_terrain_loaders.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_tides.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_trackers.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_tracking_containers.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_transforms.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_v030_comprehensive.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/tests/test_v030_features.py +0 -0
- {nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/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.1.0
|
|
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
|
|
@@ -55,6 +55,8 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
|
|
|
55
55
|
Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "dev"
|
|
56
56
|
Requires-Dist: myst-parser>=1.0.0; extra == "dev"
|
|
57
57
|
Requires-Dist: nbsphinx>=0.9.0; extra == "dev"
|
|
58
|
+
Provides-Extra: benchmark
|
|
59
|
+
Requires-Dist: pytest-benchmark>=4.0.0; extra == "benchmark"
|
|
58
60
|
Provides-Extra: all
|
|
59
61
|
Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualization]; extra == "all"
|
|
60
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.0
|
|
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
|
|
@@ -55,6 +55,8 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
|
|
|
55
55
|
Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "dev"
|
|
56
56
|
Requires-Dist: myst-parser>=1.0.0; extra == "dev"
|
|
57
57
|
Requires-Dist: nbsphinx>=0.9.0; extra == "dev"
|
|
58
|
+
Provides-Extra: benchmark
|
|
59
|
+
Requires-Dist: pytest-benchmark>=4.0.0; extra == "benchmark"
|
|
58
60
|
Provides-Extra: all
|
|
59
61
|
Requires-Dist: nrl-tracker[astronomy,dev,geodesy,optimization,signal,visualization]; extra == "all"
|
|
60
62
|
|
|
@@ -9,6 +9,7 @@ nrl_tracker.egg-info/dependency_links.txt
|
|
|
9
9
|
nrl_tracker.egg-info/requires.txt
|
|
10
10
|
nrl_tracker.egg-info/top_level.txt
|
|
11
11
|
pytcl/__init__.py
|
|
12
|
+
pytcl/logging_config.py
|
|
12
13
|
pytcl/assignment_algorithms/__init__.py
|
|
13
14
|
pytcl/assignment_algorithms/data_association.py
|
|
14
15
|
pytcl/assignment_algorithms/gating.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.1.0"
|
|
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 = [
|
|
@@ -78,6 +78,9 @@ dev = [
|
|
|
78
78
|
"myst-parser>=1.0.0",
|
|
79
79
|
"nbsphinx>=0.9.0",
|
|
80
80
|
]
|
|
81
|
+
benchmark = [
|
|
82
|
+
"pytest-benchmark>=4.0.0",
|
|
83
|
+
]
|
|
81
84
|
all = [
|
|
82
85
|
"nrl-tracker[astronomy,geodesy,visualization,optimization,signal,dev]",
|
|
83
86
|
]
|
|
@@ -100,6 +103,9 @@ testpaths = ["tests"]
|
|
|
100
103
|
markers = [
|
|
101
104
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
102
105
|
"matlab_validated: tests validated against MATLAB reference output",
|
|
106
|
+
"benchmark: marks tests as benchmarks",
|
|
107
|
+
"light: marks benchmark as part of light (PR) suite",
|
|
108
|
+
"full: marks benchmark as part of full (main) suite",
|
|
103
109
|
]
|
|
104
110
|
filterwarnings = [
|
|
105
111
|
"ignore::DeprecationWarning",
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Hierarchical logging configuration for pyTCL.
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
- Hierarchical loggers (pytcl.estimation, pytcl.assignment, etc.)
|
|
6
|
+
- Performance instrumentation decorators
|
|
7
|
+
- Context managers for timing critical sections
|
|
8
|
+
- Configurable output formats and levels
|
|
9
|
+
|
|
10
|
+
Usage
|
|
11
|
+
-----
|
|
12
|
+
>>> from pytcl.logging_config import get_logger, timed, TimingContext
|
|
13
|
+
>>> logger = get_logger(__name__)
|
|
14
|
+
>>> logger.debug("Processing measurement batch")
|
|
15
|
+
|
|
16
|
+
>>> @timed(logger, "kf_predict")
|
|
17
|
+
... def kf_predict(x, P, F, Q):
|
|
18
|
+
... ...
|
|
19
|
+
|
|
20
|
+
>>> with TimingContext(logger, "update_loop"):
|
|
21
|
+
... for _ in range(100):
|
|
22
|
+
... do_update()
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import functools
|
|
26
|
+
import logging
|
|
27
|
+
import time
|
|
28
|
+
from contextlib import contextmanager
|
|
29
|
+
from typing import Any, Callable, Optional, TypeVar
|
|
30
|
+
|
|
31
|
+
# Type variable for decorated functions
|
|
32
|
+
F = TypeVar("F", bound=Callable[..., Any])
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# =============================================================================
|
|
36
|
+
# Logger Configuration
|
|
37
|
+
# =============================================================================
|
|
38
|
+
|
|
39
|
+
# Root logger for pytcl namespace
|
|
40
|
+
PYTCL_LOGGER = "pytcl"
|
|
41
|
+
|
|
42
|
+
# Sub-loggers for major components
|
|
43
|
+
LOGGER_HIERARCHY = {
|
|
44
|
+
"pytcl.estimation": "Dynamic estimation algorithms (Kalman, IMM, particle)",
|
|
45
|
+
"pytcl.assignment": "Assignment and data association (gating, JPDA, MHT)",
|
|
46
|
+
"pytcl.signal": "Signal processing functions (CFAR, matched filter)",
|
|
47
|
+
"pytcl.coordinate": "Coordinate system operations (rotations, conversions)",
|
|
48
|
+
"pytcl.containers": "Data containers and structures (TrackList, KDTree)",
|
|
49
|
+
"pytcl.math": "Mathematical functions (special functions, transforms)",
|
|
50
|
+
"pytcl.perf": "Performance instrumentation and timing",
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# Default format strings
|
|
54
|
+
FORMATS = {
|
|
55
|
+
"detailed": (
|
|
56
|
+
"%(asctime)s - %(name)s - %(levelname)s - "
|
|
57
|
+
"%(funcName)s:%(lineno)d - %(message)s"
|
|
58
|
+
),
|
|
59
|
+
"simple": "%(name)s - %(levelname)s - %(message)s",
|
|
60
|
+
"performance": "%(asctime)s - PERF - %(name)s - %(message)s",
|
|
61
|
+
"minimal": "%(levelname)s: %(message)s",
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def configure_logging(
|
|
66
|
+
level: int = logging.WARNING,
|
|
67
|
+
format_style: str = "simple",
|
|
68
|
+
handler: Optional[logging.Handler] = None,
|
|
69
|
+
) -> logging.Logger:
|
|
70
|
+
"""
|
|
71
|
+
Configure the pytcl logging hierarchy.
|
|
72
|
+
|
|
73
|
+
Parameters
|
|
74
|
+
----------
|
|
75
|
+
level : int
|
|
76
|
+
Logging level (e.g., logging.DEBUG, logging.INFO).
|
|
77
|
+
format_style : str
|
|
78
|
+
One of 'detailed', 'simple', 'performance', 'minimal'.
|
|
79
|
+
handler : logging.Handler, optional
|
|
80
|
+
Custom handler. If None, uses StreamHandler.
|
|
81
|
+
|
|
82
|
+
Returns
|
|
83
|
+
-------
|
|
84
|
+
logging.Logger
|
|
85
|
+
The root pytcl logger.
|
|
86
|
+
|
|
87
|
+
Examples
|
|
88
|
+
--------
|
|
89
|
+
>>> import logging
|
|
90
|
+
>>> from pytcl.logging_config import configure_logging
|
|
91
|
+
>>> configure_logging(level=logging.DEBUG, format_style="detailed")
|
|
92
|
+
"""
|
|
93
|
+
root = logging.getLogger(PYTCL_LOGGER)
|
|
94
|
+
root.setLevel(level)
|
|
95
|
+
|
|
96
|
+
# Clear existing handlers
|
|
97
|
+
root.handlers.clear()
|
|
98
|
+
|
|
99
|
+
# Create handler if not provided
|
|
100
|
+
if handler is None:
|
|
101
|
+
handler = logging.StreamHandler()
|
|
102
|
+
|
|
103
|
+
# Set format
|
|
104
|
+
fmt = FORMATS.get(format_style, FORMATS["simple"])
|
|
105
|
+
formatter = logging.Formatter(fmt)
|
|
106
|
+
handler.setFormatter(formatter)
|
|
107
|
+
handler.setLevel(level)
|
|
108
|
+
|
|
109
|
+
root.addHandler(handler)
|
|
110
|
+
|
|
111
|
+
return root
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def get_logger(name: str) -> logging.Logger:
|
|
115
|
+
"""
|
|
116
|
+
Get a logger in the pytcl hierarchy.
|
|
117
|
+
|
|
118
|
+
Parameters
|
|
119
|
+
----------
|
|
120
|
+
name : str
|
|
121
|
+
Logger name. If starts with 'pytcl.', used as-is.
|
|
122
|
+
Otherwise, 'pytcl.' is prepended.
|
|
123
|
+
|
|
124
|
+
Returns
|
|
125
|
+
-------
|
|
126
|
+
logging.Logger
|
|
127
|
+
Logger instance.
|
|
128
|
+
|
|
129
|
+
Examples
|
|
130
|
+
--------
|
|
131
|
+
>>> logger = get_logger("dynamic_estimation.kalman")
|
|
132
|
+
>>> logger.name
|
|
133
|
+
'pytcl.dynamic_estimation.kalman'
|
|
134
|
+
"""
|
|
135
|
+
if not name.startswith(PYTCL_LOGGER):
|
|
136
|
+
name = f"{PYTCL_LOGGER}.{name}"
|
|
137
|
+
return logging.getLogger(name)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
# =============================================================================
|
|
141
|
+
# Performance Instrumentation
|
|
142
|
+
# =============================================================================
|
|
143
|
+
|
|
144
|
+
# Performance logger
|
|
145
|
+
_perf_logger = logging.getLogger(f"{PYTCL_LOGGER}.perf")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def timed(
|
|
149
|
+
logger: Optional[logging.Logger] = None,
|
|
150
|
+
name: Optional[str] = None,
|
|
151
|
+
level: int = logging.DEBUG,
|
|
152
|
+
) -> Callable[[F], F]:
|
|
153
|
+
"""
|
|
154
|
+
Decorator to time function execution.
|
|
155
|
+
|
|
156
|
+
Parameters
|
|
157
|
+
----------
|
|
158
|
+
logger : logging.Logger, optional
|
|
159
|
+
Logger to use. Defaults to pytcl.perf.
|
|
160
|
+
name : str, optional
|
|
161
|
+
Name to use in log message. Defaults to function name.
|
|
162
|
+
level : int
|
|
163
|
+
Logging level. Default is DEBUG.
|
|
164
|
+
|
|
165
|
+
Returns
|
|
166
|
+
-------
|
|
167
|
+
callable
|
|
168
|
+
Decorated function.
|
|
169
|
+
|
|
170
|
+
Examples
|
|
171
|
+
--------
|
|
172
|
+
>>> @timed(logger, "kf_predict")
|
|
173
|
+
... def kf_predict(x, P, F, Q):
|
|
174
|
+
... return do_prediction(x, P, F, Q)
|
|
175
|
+
"""
|
|
176
|
+
|
|
177
|
+
def decorator(func: F) -> F:
|
|
178
|
+
log = logger or _perf_logger
|
|
179
|
+
func_name = name or func.__name__
|
|
180
|
+
|
|
181
|
+
@functools.wraps(func)
|
|
182
|
+
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
|
183
|
+
start = time.perf_counter()
|
|
184
|
+
try:
|
|
185
|
+
result = func(*args, **kwargs)
|
|
186
|
+
elapsed = (time.perf_counter() - start) * 1000
|
|
187
|
+
log.log(level, "%s completed in %.3fms", func_name, elapsed)
|
|
188
|
+
return result
|
|
189
|
+
except Exception as e:
|
|
190
|
+
elapsed = (time.perf_counter() - start) * 1000
|
|
191
|
+
log.log(level, "%s failed after %.3fms: %s", func_name, elapsed, e)
|
|
192
|
+
raise
|
|
193
|
+
|
|
194
|
+
return wrapper # type: ignore
|
|
195
|
+
|
|
196
|
+
return decorator
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
@contextmanager
|
|
200
|
+
def TimingContext(
|
|
201
|
+
logger: Optional[logging.Logger] = None,
|
|
202
|
+
name: str = "operation",
|
|
203
|
+
level: int = logging.DEBUG,
|
|
204
|
+
):
|
|
205
|
+
"""
|
|
206
|
+
Context manager for timing code blocks.
|
|
207
|
+
|
|
208
|
+
Parameters
|
|
209
|
+
----------
|
|
210
|
+
logger : logging.Logger, optional
|
|
211
|
+
Logger to use. Defaults to pytcl.perf.
|
|
212
|
+
name : str
|
|
213
|
+
Name for the operation being timed.
|
|
214
|
+
level : int
|
|
215
|
+
Logging level.
|
|
216
|
+
|
|
217
|
+
Yields
|
|
218
|
+
------
|
|
219
|
+
dict
|
|
220
|
+
Dictionary that will contain 'elapsed_ms' after context exits.
|
|
221
|
+
|
|
222
|
+
Examples
|
|
223
|
+
--------
|
|
224
|
+
>>> with TimingContext(logger, "update_loop") as timing:
|
|
225
|
+
... for _ in range(100):
|
|
226
|
+
... do_update()
|
|
227
|
+
>>> print(f"Elapsed: {timing['elapsed_ms']:.2f}ms")
|
|
228
|
+
"""
|
|
229
|
+
log = logger or _perf_logger
|
|
230
|
+
timing: dict[str, float] = {"elapsed_ms": 0.0}
|
|
231
|
+
start = time.perf_counter()
|
|
232
|
+
try:
|
|
233
|
+
yield timing
|
|
234
|
+
finally:
|
|
235
|
+
timing["elapsed_ms"] = (time.perf_counter() - start) * 1000
|
|
236
|
+
log.log(level, "%s completed in %.3fms", name, timing["elapsed_ms"])
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class PerformanceTracker:
|
|
240
|
+
"""
|
|
241
|
+
Track cumulative performance statistics.
|
|
242
|
+
|
|
243
|
+
Useful for tracking performance across many iterations without
|
|
244
|
+
logging each one individually.
|
|
245
|
+
|
|
246
|
+
Parameters
|
|
247
|
+
----------
|
|
248
|
+
name : str
|
|
249
|
+
Name for the tracked operation.
|
|
250
|
+
logger : logging.Logger, optional
|
|
251
|
+
Logger to use. Defaults to pytcl.perf.
|
|
252
|
+
|
|
253
|
+
Examples
|
|
254
|
+
--------
|
|
255
|
+
>>> tracker = PerformanceTracker("filter_cycles")
|
|
256
|
+
>>> for _ in range(1000):
|
|
257
|
+
... with tracker.track():
|
|
258
|
+
... do_filter_step()
|
|
259
|
+
>>> tracker.log_summary()
|
|
260
|
+
"""
|
|
261
|
+
|
|
262
|
+
def __init__(self, name: str, logger: Optional[logging.Logger] = None):
|
|
263
|
+
self.name = name
|
|
264
|
+
self.logger = logger or _perf_logger
|
|
265
|
+
self.count = 0
|
|
266
|
+
self.total_ms = 0.0
|
|
267
|
+
self.min_ms = float("inf")
|
|
268
|
+
self.max_ms = 0.0
|
|
269
|
+
|
|
270
|
+
@contextmanager
|
|
271
|
+
def track(self):
|
|
272
|
+
"""Track a single operation."""
|
|
273
|
+
start = time.perf_counter()
|
|
274
|
+
try:
|
|
275
|
+
yield
|
|
276
|
+
finally:
|
|
277
|
+
elapsed = (time.perf_counter() - start) * 1000
|
|
278
|
+
self.count += 1
|
|
279
|
+
self.total_ms += elapsed
|
|
280
|
+
self.min_ms = min(self.min_ms, elapsed)
|
|
281
|
+
self.max_ms = max(self.max_ms, elapsed)
|
|
282
|
+
|
|
283
|
+
@property
|
|
284
|
+
def mean_ms(self) -> float:
|
|
285
|
+
"""Get mean execution time."""
|
|
286
|
+
return self.total_ms / self.count if self.count > 0 else 0.0
|
|
287
|
+
|
|
288
|
+
def log_summary(self, level: int = logging.INFO) -> None:
|
|
289
|
+
"""Log performance summary."""
|
|
290
|
+
if self.count == 0:
|
|
291
|
+
self.logger.log(level, "%s: no data", self.name)
|
|
292
|
+
return
|
|
293
|
+
|
|
294
|
+
self.logger.log(
|
|
295
|
+
level,
|
|
296
|
+
"%s: count=%d, mean=%.3fms, min=%.3fms, max=%.3fms, total=%.1fms",
|
|
297
|
+
self.name,
|
|
298
|
+
self.count,
|
|
299
|
+
self.mean_ms,
|
|
300
|
+
self.min_ms,
|
|
301
|
+
self.max_ms,
|
|
302
|
+
self.total_ms,
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
def reset(self) -> None:
|
|
306
|
+
"""Reset statistics."""
|
|
307
|
+
self.count = 0
|
|
308
|
+
self.total_ms = 0.0
|
|
309
|
+
self.min_ms = float("inf")
|
|
310
|
+
self.max_ms = 0.0
|
|
311
|
+
|
|
312
|
+
def __repr__(self) -> str:
|
|
313
|
+
return (
|
|
314
|
+
f"PerformanceTracker(name={self.name!r}, count={self.count}, "
|
|
315
|
+
f"mean_ms={self.mean_ms:.3f})"
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
__all__ = [
|
|
320
|
+
"configure_logging",
|
|
321
|
+
"get_logger",
|
|
322
|
+
"timed",
|
|
323
|
+
"TimingContext",
|
|
324
|
+
"PerformanceTracker",
|
|
325
|
+
"PYTCL_LOGGER",
|
|
326
|
+
"LOGGER_HIERARCHY",
|
|
327
|
+
"FORMATS",
|
|
328
|
+
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/three_dimensional/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/three_dimensional/assignment.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/assignment.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/assignment_algorithms/two_dimensional/kbest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/batch_estimation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/measurement_update/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/particle_filters/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_estimation/particle_filters/bootstrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/discrete_time/coordinated_turn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/dynamic_models/process_noise/coordinated_turn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/basic_matrix/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/basic_matrix/decompositions.py
RENAMED
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/combinatorics/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/combinatorics/combinatorics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/interpolation/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/interpolation/interpolation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/polynomials/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/detection.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/signal_processing/filters.py
RENAMED
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/__init__.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/bessel.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/debye.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/elliptic.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/lambert_w.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/special_functions/marcum_q.py
RENAMED
|
File without changes
|
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/statistics/distributions.py
RENAMED
|
File without changes
|
{nrl_tracker-1.0.0 → nrl_tracker-1.1.0}/pytcl/mathematical_functions/statistics/estimators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|