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.
Files changed (22) hide show
  1. {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/METADATA +5 -2
  2. {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/RECORD +21 -19
  3. {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/WHEEL +1 -1
  4. ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so +0 -0
  5. ostk/astrodynamics/converters.py +9 -92
  6. ostk/astrodynamics/dataframe.py +477 -0
  7. ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.11 +0 -0
  8. ostk/astrodynamics/test/flight/test_maneuver.py +8 -11
  9. ostk/astrodynamics/test/flight/test_profile.py +44 -50
  10. ostk/astrodynamics/test/test_converters.py +0 -94
  11. ostk/astrodynamics/test/test_dataframe.py +875 -0
  12. ostk/astrodynamics/test/test_display.py +2 -3
  13. ostk/astrodynamics/test/test_utilities.py +3 -3
  14. ostk/astrodynamics/test/trajectory/orbit/test_pass.py +9 -0
  15. ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +3 -0
  16. ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +2 -2
  17. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +2 -2
  18. ostk/astrodynamics/test/trajectory/test_orbit.py +42 -2
  19. ostk/astrodynamics/utilities.py +1 -1
  20. ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.9 +0 -0
  21. {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-11.1.0.dist-info}/top_level.txt +0 -0
  22. {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, state: State):
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.days(7.0)
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
- Instant, float, float, float, float, float, float
91
- ] = utilities.compute_time_lla_aer_state(state, position, environment)
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 = 100.0
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(600.0, 1000.0, 50.0)
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 test_getters(
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.get_parent_frame()
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, orbit: Orbit, states: list[State]):
155
- passes: list[tuple[int, Pass]] = orbit.compute_passes(states, 1)
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
@@ -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 an input (Instant, State) into dataframe-ready values.
137
+ Convert a State into dataframe-ready values.
138
138
  """
139
139
 
140
140
  lla: LLA = LLA.cartesian(