open-space-toolkit-astrodynamics 9.0.4__py310-none-manylinux2014_aarch64.whl → 11.1.0__py310-none-manylinux2014_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/METADATA +5 -2
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/RECORD +21 -19
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/WHEEL +1 -1
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so +0 -0
- ostk/astrodynamics/converters.py +9 -92
- ostk/astrodynamics/dataframe.py +477 -0
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.11 +0 -0
- ostk/astrodynamics/test/flight/test_maneuver.py +8 -11
- ostk/astrodynamics/test/flight/test_profile.py +44 -50
- ostk/astrodynamics/test/test_converters.py +0 -94
- ostk/astrodynamics/test/test_dataframe.py +875 -0
- ostk/astrodynamics/test/test_display.py +2 -3
- ostk/astrodynamics/test/test_utilities.py +3 -3
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +9 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +3 -0
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +2 -2
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +2 -2
- ostk/astrodynamics/test/trajectory/test_orbit.py +42 -2
- ostk/astrodynamics/utilities.py +1 -1
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.9 +0 -0
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/zip-safe +0 -0
@@ -19,18 +19,17 @@ from ostk.astrodynamics import Trajectory
|
|
19
19
|
from ostk.astrodynamics import display
|
20
20
|
from ostk.astrodynamics.access import Generator as AccessGenerator
|
21
21
|
from ostk.astrodynamics.trajectory import Orbit
|
22
|
-
from ostk.astrodynamics.trajectory import State
|
23
22
|
from ostk.astrodynamics.trajectory.orbit.model import SGP4
|
24
23
|
from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE
|
25
24
|
|
26
25
|
|
27
26
|
class TestDisplay:
|
28
|
-
def test_accesses_plot(self
|
27
|
+
def test_accesses_plot(self):
|
29
28
|
start_instant: Instant = Instant.date_time(
|
30
29
|
DateTime(2023, 1, 3, 0, 0, 0),
|
31
30
|
Scale.UTC,
|
32
31
|
)
|
33
|
-
duration: Duration = Duration.
|
32
|
+
duration: Duration = Duration.hours(12.0)
|
34
33
|
step: Duration = Duration.seconds(10.0)
|
35
34
|
tolerance: Duration = Duration.seconds(1.0)
|
36
35
|
|
@@ -86,9 +86,9 @@ class TestUtility:
|
|
86
86
|
position: Position,
|
87
87
|
environment: Environment,
|
88
88
|
):
|
89
|
-
time_lla_aer: float[
|
90
|
-
|
91
|
-
|
89
|
+
time_lla_aer: float[Instant, float, float, float, float, float, float] = (
|
90
|
+
utilities.compute_time_lla_aer_state(state, position, environment)
|
91
|
+
)
|
92
92
|
|
93
93
|
assert time_lla_aer is not None
|
94
94
|
assert len(time_lla_aer) == 7
|
@@ -41,6 +41,15 @@ class TestPass:
|
|
41
41
|
def test_get_duration(self, pass_: Pass):
|
42
42
|
assert pass_.get_duration() is not None
|
43
43
|
|
44
|
+
def test_get_start_instant(self, pass_: Pass):
|
45
|
+
assert pass_.get_start_instant() is not None
|
46
|
+
|
47
|
+
def test_get_end_instant(self, pass_: Pass):
|
48
|
+
assert pass_.get_end_instant() is not None
|
49
|
+
|
50
|
+
def test_get_interval(self, pass_: Pass):
|
51
|
+
assert pass_.get_interval() is not None
|
52
|
+
|
44
53
|
def test_get_instant_at_ascending_node(self, pass_: Pass):
|
45
54
|
assert pass_.get_instant_at_ascending_node() is not None
|
46
55
|
|
@@ -30,6 +30,9 @@ class TestCoordinateSubset:
|
|
30
30
|
def test_ne(self, coordinate_subset: CoordinateSubset):
|
31
31
|
assert (coordinate_subset != coordinate_subset) == False
|
32
32
|
|
33
|
+
def test_hash(self, coordinate_subset: CoordinateSubset):
|
34
|
+
assert hash(coordinate_subset) is not None
|
35
|
+
|
33
36
|
def test_get_id(self, coordinate_subset: CoordinateSubset):
|
34
37
|
assert coordinate_subset.get_id() is not None
|
35
38
|
|
@@ -191,7 +191,7 @@ class TestNumericalSolver:
|
|
191
191
|
initial_state: State,
|
192
192
|
numerical_solver: NumericalSolver,
|
193
193
|
):
|
194
|
-
duration_seconds: float =
|
194
|
+
duration_seconds: float = 10.0
|
195
195
|
end_instant: Instant = initial_state.get_instant() + Duration.seconds(
|
196
196
|
duration_seconds
|
197
197
|
)
|
@@ -205,7 +205,7 @@ class TestNumericalSolver:
|
|
205
205
|
|
206
206
|
end_instants: list[Instant] = [
|
207
207
|
initial_state.get_instant() + Duration.seconds(duration)
|
208
|
-
for duration in np.arange(
|
208
|
+
for duration in np.arange(60.0, 100.0, 20.0)
|
209
209
|
]
|
210
210
|
states: list[State] = numerical_solver.integrate_time(
|
211
211
|
initial_state, end_instants, oscillator
|
@@ -46,12 +46,12 @@ class TestLocalOrbitalFrameFactory:
|
|
46
46
|
assert LocalOrbitalFrameFactory.TNW(Frame.GCRF()) is not None
|
47
47
|
assert LocalOrbitalFrameFactory.VVLH(Frame.GCRF()) is not None
|
48
48
|
|
49
|
-
def
|
49
|
+
def test_accessors(
|
50
50
|
self,
|
51
51
|
parent_frame: Frame,
|
52
52
|
local_orbital_frame_factory: LocalOrbitalFrameFactory,
|
53
53
|
):
|
54
|
-
assert parent_frame == local_orbital_frame_factory.
|
54
|
+
assert parent_frame == local_orbital_frame_factory.access_parent_frame()
|
55
55
|
|
56
56
|
def test_generate_frame(
|
57
57
|
self,
|
@@ -58,6 +58,22 @@ class TestOrbit:
|
|
58
58
|
assert state is not None
|
59
59
|
assert isinstance(state, State)
|
60
60
|
|
61
|
+
@pytest.mark.parametrize(
|
62
|
+
"frame_type",
|
63
|
+
[
|
64
|
+
(Orbit.FrameType.NED),
|
65
|
+
(Orbit.FrameType.LVLH),
|
66
|
+
(Orbit.FrameType.VVLH),
|
67
|
+
(Orbit.FrameType.LVLHGD),
|
68
|
+
(Orbit.FrameType.LVLHGDGT),
|
69
|
+
(Orbit.FrameType.QSW),
|
70
|
+
(Orbit.FrameType.TNW),
|
71
|
+
(Orbit.FrameType.VNC),
|
72
|
+
],
|
73
|
+
)
|
74
|
+
def test_get_orbital_frame(self, orbit: Orbit, frame_type: Orbit.FrameType):
|
75
|
+
assert orbit.get_orbital_frame(frame_type) is not None
|
76
|
+
|
61
77
|
def test_get_revolution_number_at(self, orbit: Orbit):
|
62
78
|
assert (
|
63
79
|
orbit.get_revolution_number_at(
|
@@ -82,6 +98,20 @@ class TestOrbit:
|
|
82
98
|
assert isinstance(pass_, Pass)
|
83
99
|
assert pass_.is_defined()
|
84
100
|
|
101
|
+
assert (
|
102
|
+
orbit.get_pass_with_revolution_number(2, Duration.minutes(10.0)) is not None
|
103
|
+
)
|
104
|
+
|
105
|
+
def test_get_passes_within_interval(self, orbit: Orbit):
|
106
|
+
passes: list[Pass] = orbit.get_passes_within_interval(
|
107
|
+
Interval.closed(
|
108
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
109
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 10, 0), Scale.UTC),
|
110
|
+
)
|
111
|
+
)
|
112
|
+
|
113
|
+
assert len(passes) > 0
|
114
|
+
|
85
115
|
def test_undefined(self):
|
86
116
|
assert Orbit.undefined().is_defined() is False
|
87
117
|
|
@@ -151,6 +181,16 @@ class TestOrbit:
|
|
151
181
|
argument_of_latitude=Angle.degrees(50.0),
|
152
182
|
).is_defined()
|
153
183
|
|
154
|
-
def test_compute_passes(self,
|
155
|
-
passes: list[tuple[int, Pass]] =
|
184
|
+
def test_compute_passes(self, states: list[State]):
|
185
|
+
passes: list[tuple[int, Pass]] = Orbit.compute_passes(states, 1)
|
156
186
|
assert passes is not None
|
187
|
+
|
188
|
+
def test_compute_passes_with_model(self, orbit: Orbit):
|
189
|
+
passes: list[tuple[int, Pass]] = Orbit.compute_passes_with_model(
|
190
|
+
model=orbit.access_kepler_model(),
|
191
|
+
start_instant=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
192
|
+
end_instant=Instant.date_time(DateTime(2018, 1, 1, 0, 10, 0), Scale.UTC),
|
193
|
+
initial_revolution_number=1,
|
194
|
+
)
|
195
|
+
|
196
|
+
assert len(passes) > 0
|
ostk/astrodynamics/utilities.py
CHANGED
@@ -134,7 +134,7 @@ def convert_state(
|
|
134
134
|
state: trajectory.State,
|
135
135
|
) -> tuple[str, float, float, float, float, float, float, float, float, float]:
|
136
136
|
"""
|
137
|
-
Convert
|
137
|
+
Convert a State into dataframe-ready values.
|
138
138
|
"""
|
139
139
|
|
140
140
|
lla: LLA = LLA.cartesian(
|
Binary file
|
File without changes
|
File without changes
|