open-space-toolkit-astrodynamics 1.2.1__py310-none-any.whl → 4.2.0__py310-none-any.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-1.2.1.dist-info → open_space_toolkit_astrodynamics-4.2.0.dist-info}/METADATA +2 -2
- open_space_toolkit_astrodynamics-4.2.0.dist-info/RECORD +25 -0
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.py +6 -0
- ostk/astrodynamics/{libopen-space-toolkit-astrodynamics.so.1 → libopen-space-toolkit-astrodynamics.so.4} +0 -0
- ostk/astrodynamics/pytrajectory/pystate.py +36 -0
- ostk/astrodynamics/test/test_access.py +2 -6
- ostk/astrodynamics/test/test_converters.py +1 -3
- ostk/astrodynamics/test/test_event_condition.py +24 -41
- ostk/astrodynamics/test/test_import.py +3 -3
- ostk/astrodynamics/test/test_viewer.py +1 -2
- ostk/astrodynamics/viewer.py +1 -1
- open_space_toolkit_astrodynamics-1.2.1.dist-info/RECORD +0 -72
- ostk/astrodynamics/test/access/__init__.py +0 -1
- ostk/astrodynamics/test/access/test_generator.py +0 -248
- ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py +0 -1
- ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py +0 -325
- ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json +0 -303
- ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py +0 -418
- ostk/astrodynamics/test/event_condition/test_coe_condition.py +0 -95
- ostk/astrodynamics/test/event_condition/test_conjunctive.py +0 -64
- ostk/astrodynamics/test/event_condition/test_disjunctive.py +0 -63
- ostk/astrodynamics/test/event_condition/test_duration_condition.py +0 -36
- ostk/astrodynamics/test/event_condition/test_logical_connective.py +0 -37
- ostk/astrodynamics/test/flight/__init__.py +0 -1
- ostk/astrodynamics/test/flight/profile/__init__.py +0 -1
- ostk/astrodynamics/test/flight/profile/test_state.py +0 -144
- ostk/astrodynamics/test/flight/system/__init__.py +0 -1
- ostk/astrodynamics/test/flight/system/dynamics/__init__.py +0 -1
- ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py +0 -86
- ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py +0 -57
- ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py +0 -49
- ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py +0 -65
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +0 -77
- ostk/astrodynamics/test/flight/test_profile.py +0 -147
- ostk/astrodynamics/test/flight/test_system.py +0 -55
- ostk/astrodynamics/test/solvers/__init__.py +0 -1
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +0 -153
- ostk/astrodynamics/test/test_numerical_solver.py +0 -248
- ostk/astrodynamics/test/trajectory/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py +0 -18
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml +0 -44
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py +0 -108
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +0 -108
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +0 -332
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +0 -130
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +0 -197
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +0 -383
- ostk/astrodynamics/test/trajectory/orbit/test_model.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +0 -55
- ostk/astrodynamics/test/trajectory/test_model.py +0 -1
- ostk/astrodynamics/test/trajectory/test_orbit.py +0 -92
- ostk/astrodynamics/test/trajectory/test_propagator.py +0 -233
- ostk/astrodynamics/test/trajectory/test_state.py +0 -70
- {open_space_toolkit_astrodynamics-1.2.1.dist-info → open_space_toolkit_astrodynamics-4.2.0.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-1.2.1.dist-info → open_space_toolkit_astrodynamics-4.2.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-1.2.1.dist-info → open_space_toolkit_astrodynamics-4.2.0.dist-info}/zip-safe +0 -0
- /ostk/{__init__.py → astrodynamics/pytrajectory/__init__.py} +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: open-space-toolkit-astrodynamics
|
3
|
-
Version:
|
3
|
+
Version: 4.2.0
|
4
4
|
Summary: Orbit, attitude, access.
|
5
5
|
Author: Open Space Collective
|
6
6
|
Author-email: contact@open-space-collective.org
|
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
12
12
|
Classifier: Operating System :: POSIX :: Linux
|
13
13
|
Description-Content-Type: text/markdown
|
14
|
-
Requires-Dist: open-space-toolkit-physics (~=
|
14
|
+
Requires-Dist: open-space-toolkit-physics (~=3.0.0)
|
15
15
|
|
16
16
|
# Open Space Toolkit ▸ Astrodynamics
|
17
17
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-x86_64-linux-gnu.so,sha256=S8WiZTrzmrzsn9NJBNTBr52UKIH808UbKjNX3zEk8AA,1931000
|
2
|
+
ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
|
3
|
+
ostk/astrodynamics/converters.py,sha256=sBZ3_JMjowWbQ9gBPA2cSEkbBfAwXmt1IBbLks76-Vk,3502
|
4
|
+
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
5
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.4,sha256=edqCZyHsJ8FrYJu6f0LZCt02PL7oT_kJVNTkoGPHbCo,90297880
|
6
|
+
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
7
|
+
ostk/astrodynamics/viewer.py,sha256=_4uucNtZrIADtKtEYHbiu91RVVvKRG3vPULUAshPLJU,8912
|
8
|
+
ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
9
|
+
ostk/astrodynamics/pytrajectory/pystate.py,sha256=ceNZWYCqtsXWJlE6JKDxB5qn5ixTWGOwrYXge21XPmk,1037
|
10
|
+
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
11
|
+
ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
|
12
|
+
ostk/astrodynamics/test/test_access.py,sha256=4I5r4Hukv0fkByHVARhaYpcDu5EOQ7dtbs-ZK7siTqg,3961
|
13
|
+
ostk/astrodynamics/test/test_converters.py,sha256=ktkLH0xpeRdQ7kN6i5a_agmGqovUxVtCwlwcCdCUaa0,5847
|
14
|
+
ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
|
15
|
+
ostk/astrodynamics/test/test_event_condition.py,sha256=6FWvOFCShwZcwF3almMx9KUE8cU7X9n_LPXB2pjmus8,1440
|
16
|
+
ostk/astrodynamics/test/test_import.py,sha256=stS8jK9HiXyzRWjtDvaTqUrzCrOVnYVX5CkmQf7MJsA,1201
|
17
|
+
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
18
|
+
ostk/astrodynamics/test/test_trajectory.py,sha256=4AhlAaIrCrP17ZycJqYlYskj8SC2MH7fp3_4eqWdF9s,1366
|
19
|
+
ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
|
20
|
+
ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
|
21
|
+
open_space_toolkit_astrodynamics-4.2.0.dist-info/METADATA,sha256=3KFGB_9TpIjn290Y9BtnRVXchhIeAPcCLy-efggQ-BQ,1779
|
22
|
+
open_space_toolkit_astrodynamics-4.2.0.dist-info/WHEEL,sha256=oaSFssuzKzruaIhyzhbDphpBmFeR9wv-Pmjc-TsXgB4,94
|
23
|
+
open_space_toolkit_astrodynamics-4.2.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
24
|
+
open_space_toolkit_astrodynamics-4.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
25
|
+
open_space_toolkit_astrodynamics-4.2.0.dist-info/RECORD,,
|
Binary file
|
ostk/astrodynamics/__init__.py
CHANGED
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Apache License 2.0
|
2
|
+
|
3
|
+
|
4
|
+
# Python-only State functionality
|
5
|
+
import numpy as np
|
6
|
+
|
7
|
+
from ostk.physics.coordinate import Frame
|
8
|
+
from ostk.physics.time import Instant
|
9
|
+
|
10
|
+
from ostk.astrodynamics.trajectory import State, StateBuilder
|
11
|
+
|
12
|
+
|
13
|
+
@staticmethod
|
14
|
+
def custom_class_generator(frame: Frame, coordinates_subsets: list) -> type:
|
15
|
+
"""
|
16
|
+
Emit a custom class type for States. This is meta-programming syntactic sugar on top of the StateBuilder class.
|
17
|
+
|
18
|
+
StateType = State.template(frame, coordinates_subsets)
|
19
|
+
state = StateType(instant, coordinates)
|
20
|
+
|
21
|
+
is equivalent to
|
22
|
+
|
23
|
+
state_builder = StateBuilder(frame, coordinates_subsets)
|
24
|
+
state = state_builder.build(instant, coordinates)
|
25
|
+
"""
|
26
|
+
|
27
|
+
class StateTemplateType(State):
|
28
|
+
state_builder: StateBuilder = StateBuilder(frame, coordinates_subsets)
|
29
|
+
|
30
|
+
def __init__(self, instant: Instant, coordinates: np.ndarray):
|
31
|
+
super().__init__(StateTemplateType.state_builder.build(instant, coordinates))
|
32
|
+
|
33
|
+
return StateTemplateType
|
34
|
+
|
35
|
+
|
36
|
+
State.template = custom_class_generator
|
@@ -38,9 +38,7 @@ Access = astrodynamics.Access
|
|
38
38
|
|
39
39
|
def test_access_constructors():
|
40
40
|
acquisition_of_signal = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
41
|
-
time_at_closest_approach = Instant.date_time(
|
42
|
-
DateTime(2018, 1, 1, 0, 1, 0), Scale.UTC
|
43
|
-
)
|
41
|
+
time_at_closest_approach = Instant.date_time(DateTime(2018, 1, 1, 0, 1, 0), Scale.UTC)
|
44
42
|
loss_of_signal = Instant.date_time(DateTime(2018, 1, 1, 0, 2, 0), Scale.UTC)
|
45
43
|
max_elevation = Angle.degrees(54.3)
|
46
44
|
|
@@ -66,9 +64,7 @@ def test_access_undefined():
|
|
66
64
|
|
67
65
|
def test_access_getters():
|
68
66
|
acquisition_of_signal = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
69
|
-
time_at_closest_approach = Instant.date_time(
|
70
|
-
DateTime(2018, 1, 1, 0, 1, 0), Scale.UTC
|
71
|
-
)
|
67
|
+
time_at_closest_approach = Instant.date_time(DateTime(2018, 1, 1, 0, 1, 0), Scale.UTC)
|
72
68
|
loss_of_signal = Instant.date_time(DateTime(2018, 1, 1, 0, 2, 0), Scale.UTC)
|
73
69
|
max_elevation = Angle.degrees(54.3)
|
74
70
|
|
@@ -36,9 +36,7 @@ def test_coerce_to_datetime_success_datetime():
|
|
36
36
|
|
37
37
|
def test_coerce_to_instant_success_datetime():
|
38
38
|
value = datetime(2020, 1, 1, tzinfo=timezone.utc)
|
39
|
-
assert coerce_to_instant(value) == Instant.date_time(
|
40
|
-
DateTime(2020, 1, 1), Scale.UTC
|
41
|
-
)
|
39
|
+
assert coerce_to_instant(value) == Instant.date_time(DateTime(2020, 1, 1), Scale.UTC)
|
42
40
|
|
43
41
|
|
44
42
|
def test_coerce_to_instant_success_instant():
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
import pytest
|
4
4
|
|
5
|
-
from ostk.astrodynamics import EventCondition
|
5
|
+
from ostk.astrodynamics import EventCondition, EventConditionTarget
|
6
6
|
|
7
7
|
|
8
8
|
@pytest.fixture
|
@@ -11,31 +11,31 @@ def name() -> str:
|
|
11
11
|
|
12
12
|
|
13
13
|
@pytest.fixture
|
14
|
-
def
|
15
|
-
return
|
14
|
+
def evaluator() -> callable:
|
15
|
+
return lambda state: 0.0
|
16
16
|
|
17
17
|
|
18
18
|
@pytest.fixture
|
19
|
-
def
|
20
|
-
|
21
|
-
def evaluate(self, state_vector, time):
|
22
|
-
return state_vector[0]
|
23
|
-
|
24
|
-
return MyEventCondition(name, criteria)
|
19
|
+
def target_value() -> float:
|
20
|
+
return 0.0
|
25
21
|
|
26
22
|
|
27
23
|
@pytest.fixture
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
return (current_value > 0.0) and (previous_value < 0.0)
|
24
|
+
def target(target_value: float) -> EventConditionTarget:
|
25
|
+
return EventConditionTarget(target_value, EventConditionTarget.Type.Absolute)
|
26
|
+
|
32
27
|
|
33
|
-
|
34
|
-
|
28
|
+
@pytest.fixture
|
29
|
+
def event_condition(
|
30
|
+
name: str, evaluator: callable, target: EventConditionTarget
|
31
|
+
) -> EventCondition:
|
32
|
+
class MyEventCondition(EventCondition):
|
33
|
+
def is_satisfied(
|
34
|
+
self, current_state_vector, current_time, previous_state_vector, previous_time
|
35
|
+
):
|
36
|
+
return current_state_vector[0] > 0.0 and previous_state_vector[0] < 0.0
|
35
37
|
|
36
|
-
return
|
37
|
-
"OverloadedEventCondition", EventCondition.Criteria.Undefined
|
38
|
-
)
|
38
|
+
return MyEventCondition(name, evaluator, target)
|
39
39
|
|
40
40
|
|
41
41
|
class TestEventCondition:
|
@@ -45,27 +45,10 @@ class TestEventCondition:
|
|
45
45
|
def test_get_name(self, event_condition: EventCondition, name: str):
|
46
46
|
assert event_condition.get_name() == name
|
47
47
|
|
48
|
-
def
|
49
|
-
|
48
|
+
def test_get_evaluator(self, event_condition: EventCondition):
|
49
|
+
assert event_condition.get_evaluator() is not None
|
50
|
+
|
51
|
+
def test_get_target(
|
52
|
+
self, event_condition: EventCondition, target: EventConditionTarget
|
50
53
|
):
|
51
|
-
assert event_condition.
|
52
|
-
|
53
|
-
def test_is_satisfied(self, event_condition: EventCondition):
|
54
|
-
assert (
|
55
|
-
event_condition.is_satisfied(current_value=1.0, previous_value=-1.0) == True
|
56
|
-
)
|
57
|
-
|
58
|
-
def test_overloaded_is_satisfied(self, event_condition_overloaded: EventCondition):
|
59
|
-
assert event_condition_overloaded is not None
|
60
|
-
assert (
|
61
|
-
event_condition_overloaded.is_satisfied(
|
62
|
-
current_value=1.0, previous_value=-1.0
|
63
|
-
)
|
64
|
-
== True
|
65
|
-
)
|
66
|
-
assert (
|
67
|
-
event_condition_overloaded.is_satisfied(
|
68
|
-
current_value=1.0, previous_value=1.0
|
69
|
-
)
|
70
|
-
== False
|
71
|
-
)
|
54
|
+
assert event_condition.get_target() == target
|
@@ -18,8 +18,8 @@ class TestImport:
|
|
18
18
|
from ostk.astrodynamics.flight import Profile
|
19
19
|
from ostk.astrodynamics.flight import System
|
20
20
|
from ostk.astrodynamics.flight.system import SatelliteSystem
|
21
|
-
from ostk.astrodynamics.
|
22
|
-
from ostk.astrodynamics.
|
21
|
+
from ostk.astrodynamics.dynamics import CentralBodyGravity
|
22
|
+
from ostk.astrodynamics.dynamics import AtmosphericDrag
|
23
23
|
from ostk.astrodynamics import Access
|
24
24
|
from ostk.astrodynamics.access import Generator
|
25
|
-
from ostk.astrodynamics import NumericalSolver
|
25
|
+
from ostk.astrodynamics.trajectory.state import NumericalSolver
|
@@ -103,8 +103,7 @@ class TestViewer:
|
|
103
103
|
assert "Cesium.IonResource.fromAssetId(123)" in rendered_html
|
104
104
|
assert "widget.entities.add({polyline:" in rendered_html
|
105
105
|
assert (
|
106
|
-
"widget.entities.add({position: widget.star_tracker_position"
|
107
|
-
in rendered_html
|
106
|
+
"widget.entities.add({position: widget.star_tracker_position" in rendered_html
|
108
107
|
)
|
109
108
|
assert rendered_html.endswith("</script>")
|
110
109
|
|
ostk/astrodynamics/viewer.py
CHANGED
@@ -303,7 +303,7 @@ def _cesium_from_ostk_sensor(sensor: Sensor) -> cesiumpy.ConicSensor:
|
|
303
303
|
return cesiumpy.ConicSensor(
|
304
304
|
name=sensor.name,
|
305
305
|
direction=cesiumpy.Cartesian3(*sensor.direction),
|
306
|
-
half_angle=
|
306
|
+
half_angle=float(sensor.half_angle.in_radians()),
|
307
307
|
length=float(sensor.length.in_meters()),
|
308
308
|
material=sensor.color or cesiumpy.color.RED,
|
309
309
|
)
|
@@ -1,72 +0,0 @@
|
|
1
|
-
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
-
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-x86_64-linux-gnu.so,sha256=HTDmKytResW1W_ufzYC-EKHlRKCIY1xMIBqzXcHzJIg,1213656
|
3
|
-
ostk/astrodynamics/__init__.py,sha256=BE7yyrOnPqFCTPT3GhYEI4IWR5nzs96VSjKphhQ09ew,97
|
4
|
-
ostk/astrodynamics/converters.py,sha256=sBZ3_JMjowWbQ9gBPA2cSEkbBfAwXmt1IBbLks76-Vk,3502
|
5
|
-
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
6
|
-
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.1,sha256=utR4AiYtpPDCwjjalrTNRmGWhG4LQrNiOevCJJ90GOE,66464592
|
7
|
-
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
8
|
-
ostk/astrodynamics/viewer.py,sha256=5YFPBiv0YSBZrI42G4UANmOeW8tnJj86_f9gfSpHGgY,8938
|
9
|
-
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
10
|
-
ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
|
11
|
-
ostk/astrodynamics/test/test_access.py,sha256=sOJ0IBWcHN8IgIUDMmz-mKB2uEytQZCsQzUK0Ffbsaw,3989
|
12
|
-
ostk/astrodynamics/test/test_converters.py,sha256=xRSnIaZNDSlx_HtCLyUkbDvpM2j2pEnipCTMdSBF7OQ,5861
|
13
|
-
ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
|
14
|
-
ostk/astrodynamics/test/test_event_condition.py,sha256=-5pBYc0ckmLnBJt34I5UxYBYZVqX4dHrTEnfyDJ-vO0,2071
|
15
|
-
ostk/astrodynamics/test/test_import.py,sha256=y62-SI3pmSkIgyOIrDDXeWqWI3DhnjnUl7SgWAp99kA,1212
|
16
|
-
ostk/astrodynamics/test/test_numerical_solver.py,sha256=aeLKhxvDWyQi-pzeGmg7KnUZmkoGorRVyY95YWOs0Sk,8181
|
17
|
-
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
18
|
-
ostk/astrodynamics/test/test_trajectory.py,sha256=4AhlAaIrCrP17ZycJqYlYskj8SC2MH7fp3_4eqWdF9s,1366
|
19
|
-
ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
|
20
|
-
ostk/astrodynamics/test/test_viewer.py,sha256=x_U6kmxaw_8JtamTbzNj0U-VCFAskWOL87eezv02uAE,3969
|
21
|
-
ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
22
|
-
ostk/astrodynamics/test/access/test_generator.py,sha256=6cwC5GGvnWLxPXmgRQ-N7tjorGUfPxA8qFcdGaTmpp4,8038
|
23
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
24
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py,sha256=xyTd24828Ue2HgOWY8UhizIc5mzgRgoH2VSOfVfKCdw,14632
|
25
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py,sha256=spMvHF6YH59xx14F6ijMp28cTYSeYfJZB9AleVi53JQ,18548
|
26
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json,sha256=-CL8Bu-ivigzkrqHs9Q5snSubHJ_D0YMroatEInkidc,12965
|
27
|
-
ostk/astrodynamics/test/event_condition/test_coe_condition.py,sha256=rfu8STuLUaUsxMJUbKCP8PPPiPaF2UVCHYTClDsiOuE,2831
|
28
|
-
ostk/astrodynamics/test/event_condition/test_conjunctive.py,sha256=X8fNUgUfXcBJB5CPip6mRDBFMNAqCHw9Mt9r3Wubjl8,1982
|
29
|
-
ostk/astrodynamics/test/event_condition/test_disjunctive.py,sha256=71eNzfqtCyNeHkw6-g2i_OIWveJv40nbZU2EPfGm9Ro,1968
|
30
|
-
ostk/astrodynamics/test/event_condition/test_duration_condition.py,sha256=wyDBde1vc06-cUjOwmJP6Po8cHbQTGHIDWB3e6eoO_o,973
|
31
|
-
ostk/astrodynamics/test/event_condition/test_logical_connective.py,sha256=WQQQn1FdQEbAs7UxXawzAnX3ON8-UgKqYmKeOGkufN8,1117
|
32
|
-
ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
33
|
-
ostk/astrodynamics/test/flight/test_profile.py,sha256=vSkDZMCObGa2ldZlWYsa1Md0m4i4TPjirTXOdje5ieU,5003
|
34
|
-
ostk/astrodynamics/test/flight/test_system.py,sha256=YPrjoV3o67_1zCXCZqohlSAR7zkU0LXP2fF20M2s0C8,1326
|
35
|
-
ostk/astrodynamics/test/flight/profile/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
36
|
-
ostk/astrodynamics/test/flight/profile/test_state.py,sha256=49UyPz6p9Q_RYKVBiLgW_WHo4A7JUZtacGMhQ9ERCdc,4268
|
37
|
-
ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
38
|
-
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=-5KOGVTWRIpY1jcRc0xGX6N9oRbUT_EexzB9jZFsZQg,2208
|
39
|
-
ostk/astrodynamics/test/flight/system/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
40
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=qLlq90gVEOIubOprl5H-1WK5xo0DHRfnevUwn8p4JHI,2985
|
41
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py,sha256=WfBj6OyagncdlHMbxc-curLHpEdWjY09mp9hawlP0yE,1748
|
42
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py,sha256=CXIdjCLFmW5UQm28FnV9-nrmReXdyj0wvjYFcFVqPAo,1539
|
43
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py,sha256=eNStu22MaKK7bknnb_zshewIHHcKt1It3y0_lmqPJXY,1783
|
44
|
-
ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
45
|
-
ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=s7r7VelXx1_b-6wO_GyOlmxlsfA4I_zpxrWojriQls8,4867
|
46
|
-
ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
47
|
-
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
48
|
-
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
|
49
|
-
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=Csek8PHdoAUIAgb4mtHKmR0hUAJMmCcttFbR5hxCSpQ,7440
|
50
|
-
ostk/astrodynamics/test/trajectory/test_state.py,sha256=HHBhJUfPhR1by7qTetRyF-51u9XzWUVKtu3XzTRHJtk,2079
|
51
|
-
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
52
|
-
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
53
|
-
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=MtPRKhVz4hCzfFuE0p1x89Ps68M9s7miT7VtPIDVeOo,1898
|
54
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
55
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
56
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
|
57
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py,sha256=wfxuccqIF2odRA9Dc-8wtKZ8t__4KJ9HVhN-il284OU,3893
|
58
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml,sha256=DqIdfLCPD9oV4qDvgq35fIT8Gb8zgtrHr5Nx53InSQM,1363
|
59
|
-
ostk/astrodynamics/test/trajectory/orbit/models/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
60
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py,sha256=sf1FpdYyiGyWcal-CwVfelW1k-HYGlIdbJdcbOi9-lY,3372
|
61
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py,sha256=Dtlk8QFrLWbTVARqtENO0c873u9YqhisdDDKrA8EXuE,6709
|
62
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
63
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py,sha256=zGHAXTcZSzNMSvmyicqwDMe_yQzAHphqrwsBRHfNV40,11235
|
64
|
-
ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
65
|
-
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=c0k_m0Kq3syT8r9IaUp0J-yewzeZ3SKbUQ2L5XGkf90,2591
|
66
|
-
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
67
|
-
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=3uwgIkDENZhdtEZIQhyT6R2-9WiVicazoAdBgdX8q2U,11498
|
68
|
-
open_space_toolkit_astrodynamics-1.2.1.dist-info/METADATA,sha256=bXlinaWrLmIuXYsfccgetGLmNNIFXicOJ6pu7PPmIkU,1779
|
69
|
-
open_space_toolkit_astrodynamics-1.2.1.dist-info/WHEEL,sha256=oaSFssuzKzruaIhyzhbDphpBmFeR9wv-Pmjc-TsXgB4,94
|
70
|
-
open_space_toolkit_astrodynamics-1.2.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
71
|
-
open_space_toolkit_astrodynamics-1.2.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
72
|
-
open_space_toolkit_astrodynamics-1.2.1.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|
@@ -1,248 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|
2
|
-
|
3
|
-
import pytest
|
4
|
-
|
5
|
-
from ostk.mathematics.objects import RealInterval
|
6
|
-
|
7
|
-
from ostk.physics.units import Length
|
8
|
-
from ostk.physics.units import Angle
|
9
|
-
from ostk.physics.time import DateTime
|
10
|
-
from ostk.physics.time import Scale
|
11
|
-
from ostk.physics.time import Duration
|
12
|
-
from ostk.physics.time import Instant
|
13
|
-
from ostk.physics.time import Interval
|
14
|
-
from ostk.physics import Environment
|
15
|
-
from ostk.physics.environment.objects import Celestial
|
16
|
-
|
17
|
-
from ostk.astrodynamics import Trajectory
|
18
|
-
from ostk.astrodynamics.trajectory import Orbit
|
19
|
-
from ostk.astrodynamics.trajectory.orbit.models import Kepler
|
20
|
-
from ostk.astrodynamics.trajectory.orbit.models.kepler import COE
|
21
|
-
from ostk.astrodynamics import Access
|
22
|
-
from ostk.astrodynamics.access import Generator
|
23
|
-
|
24
|
-
|
25
|
-
@pytest.fixture
|
26
|
-
def environment() -> Environment:
|
27
|
-
return Environment.default()
|
28
|
-
|
29
|
-
|
30
|
-
@pytest.fixture
|
31
|
-
def earth(environment: Environment) -> Celestial:
|
32
|
-
return environment.access_celestial_object_with_name("Earth")
|
33
|
-
|
34
|
-
|
35
|
-
@pytest.fixture
|
36
|
-
def generator(environment: Environment) -> Generator:
|
37
|
-
return Generator(
|
38
|
-
environment=environment,
|
39
|
-
aer_filter=lambda aer: True,
|
40
|
-
access_filter=lambda access: True,
|
41
|
-
state_filter=lambda state_1, state_2: True,
|
42
|
-
)
|
43
|
-
|
44
|
-
|
45
|
-
@pytest.fixture
|
46
|
-
def from_trajectory(earth: Celestial) -> Trajectory:
|
47
|
-
return Orbit(
|
48
|
-
model=Kepler(
|
49
|
-
coe=COE(
|
50
|
-
semi_major_axis=Length.kilometers(7000.0),
|
51
|
-
eccentricity=0.0,
|
52
|
-
inclination=Angle.degrees(45.0),
|
53
|
-
raan=Angle.degrees(0.0),
|
54
|
-
aop=Angle.degrees(0.0),
|
55
|
-
true_anomaly=Angle.degrees(0.0),
|
56
|
-
),
|
57
|
-
epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
58
|
-
celestial_object=earth,
|
59
|
-
perturbation_type=Kepler.PerturbationType.No,
|
60
|
-
),
|
61
|
-
celestial_object=earth,
|
62
|
-
)
|
63
|
-
|
64
|
-
|
65
|
-
@pytest.fixture
|
66
|
-
def to_trajectory(earth: Celestial) -> Trajectory:
|
67
|
-
return Orbit(
|
68
|
-
model=Kepler(
|
69
|
-
coe=COE(
|
70
|
-
semi_major_axis=Length.kilometers(7000.0),
|
71
|
-
eccentricity=0.0,
|
72
|
-
inclination=Angle.degrees(45.0),
|
73
|
-
raan=Angle.degrees(180.0),
|
74
|
-
aop=Angle.degrees(0.0),
|
75
|
-
true_anomaly=Angle.degrees(180.0),
|
76
|
-
),
|
77
|
-
epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
78
|
-
celestial_object=earth,
|
79
|
-
perturbation_type=Kepler.PerturbationType.No,
|
80
|
-
),
|
81
|
-
celestial_object=earth,
|
82
|
-
)
|
83
|
-
|
84
|
-
|
85
|
-
class TestGenerator:
|
86
|
-
def test_constructor_success_environment(self, environment: Environment):
|
87
|
-
generator = Generator(
|
88
|
-
environment=environment,
|
89
|
-
)
|
90
|
-
|
91
|
-
assert generator is not None
|
92
|
-
assert isinstance(generator, Generator)
|
93
|
-
|
94
|
-
def test_constructor_success_environment_aer_filter(self, environment: Environment):
|
95
|
-
generator = Generator(
|
96
|
-
environment=environment,
|
97
|
-
aer_filter=lambda aer: True,
|
98
|
-
)
|
99
|
-
|
100
|
-
assert generator is not None
|
101
|
-
assert isinstance(generator, Generator)
|
102
|
-
|
103
|
-
def test_constructor_success_environment_access_filter(
|
104
|
-
self,
|
105
|
-
environment: Environment,
|
106
|
-
):
|
107
|
-
generator = Generator(
|
108
|
-
environment=environment,
|
109
|
-
access_filter=lambda access: True,
|
110
|
-
)
|
111
|
-
|
112
|
-
assert generator is not None
|
113
|
-
assert isinstance(generator, Generator)
|
114
|
-
|
115
|
-
def test_constructor_success_environment_state_filter(
|
116
|
-
self,
|
117
|
-
environment: Environment,
|
118
|
-
):
|
119
|
-
generator = Generator(
|
120
|
-
environment=environment,
|
121
|
-
state_filter=lambda state_1, state_2: True,
|
122
|
-
)
|
123
|
-
|
124
|
-
assert generator is not None
|
125
|
-
assert isinstance(generator, Generator)
|
126
|
-
|
127
|
-
def test_constructor_success_environment_step_tolerance(
|
128
|
-
self,
|
129
|
-
environment: Environment,
|
130
|
-
):
|
131
|
-
generator = Generator(
|
132
|
-
environment=environment,
|
133
|
-
step=Duration.seconds(1.0),
|
134
|
-
tolerance=Duration.minutes(1.0),
|
135
|
-
)
|
136
|
-
|
137
|
-
assert generator is not None
|
138
|
-
assert isinstance(generator, Generator)
|
139
|
-
assert generator.get_step() == Duration.seconds(1.0)
|
140
|
-
assert generator.get_tolerance() == Duration.minutes(1.0)
|
141
|
-
|
142
|
-
def test_getters_success(self, generator: Generator):
|
143
|
-
assert generator.get_step() == Duration.minutes(1.0)
|
144
|
-
assert generator.get_tolerance() == Duration.microseconds(1.0)
|
145
|
-
assert generator.get_aer_filter() is not None
|
146
|
-
assert generator.get_access_filter() is not None
|
147
|
-
assert generator.get_state_filter() is not None
|
148
|
-
|
149
|
-
def test_get_condition_function_success(
|
150
|
-
self,
|
151
|
-
generator: Generator,
|
152
|
-
from_trajectory: Trajectory,
|
153
|
-
to_trajectory: Trajectory,
|
154
|
-
):
|
155
|
-
condition_function = generator.get_condition_function(
|
156
|
-
from_trajectory=from_trajectory,
|
157
|
-
to_trajectory=to_trajectory,
|
158
|
-
)
|
159
|
-
|
160
|
-
assert condition_function is not None
|
161
|
-
assert (
|
162
|
-
condition_function(
|
163
|
-
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
164
|
-
)
|
165
|
-
is True
|
166
|
-
)
|
167
|
-
|
168
|
-
def test_compute_accesses_success(
|
169
|
-
self,
|
170
|
-
generator: Generator,
|
171
|
-
from_trajectory: Trajectory,
|
172
|
-
to_trajectory: Trajectory,
|
173
|
-
):
|
174
|
-
accesses = generator.compute_accesses(
|
175
|
-
interval=Interval.closed(
|
176
|
-
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
177
|
-
Instant.date_time(DateTime(2018, 1, 1, 2, 0, 0), Scale.UTC),
|
178
|
-
),
|
179
|
-
from_trajectory=from_trajectory,
|
180
|
-
to_trajectory=to_trajectory,
|
181
|
-
)
|
182
|
-
|
183
|
-
assert accesses is not None
|
184
|
-
assert isinstance(accesses, list)
|
185
|
-
assert accesses[0] is not None
|
186
|
-
assert isinstance(accesses[0], Access)
|
187
|
-
|
188
|
-
def test_set_step_success(self, generator: Generator):
|
189
|
-
generator.set_step(Duration.seconds(1.0))
|
190
|
-
|
191
|
-
def test_set_tolerance_success(self, generator: Generator):
|
192
|
-
generator.set_tolerance(Duration.seconds(1.0))
|
193
|
-
|
194
|
-
def test_set_aer_filter_success(self, generator: Generator):
|
195
|
-
generator.set_aer_filter(aer_filter=lambda aer: True)
|
196
|
-
|
197
|
-
def test_set_access_filter_success(self, generator: Generator):
|
198
|
-
generator.set_access_filter(access_filter=lambda access: True)
|
199
|
-
|
200
|
-
def test_set_state_filter_success(self, generator: Generator):
|
201
|
-
generator.set_state_filter(state_filter=lambda state_1, state_2: True)
|
202
|
-
|
203
|
-
def test_undefined_success(self):
|
204
|
-
generator = Generator.undefined()
|
205
|
-
|
206
|
-
assert generator is not None
|
207
|
-
assert isinstance(generator, Generator)
|
208
|
-
assert generator.is_defined() is False
|
209
|
-
|
210
|
-
def test_aer_ranges_success(self, environment: Environment):
|
211
|
-
# Construct arbitrary AER ranges
|
212
|
-
azimuth_interval = RealInterval.closed(0.0, 360.0)
|
213
|
-
elevation_interval = RealInterval.closed(0.0, 90.0)
|
214
|
-
range_interval = RealInterval.closed(0.0, 7000e3)
|
215
|
-
|
216
|
-
generator = Generator.aer_ranges(
|
217
|
-
azimuth_range=azimuth_interval,
|
218
|
-
elevation_range=elevation_interval,
|
219
|
-
range_range=range_interval,
|
220
|
-
environment=environment,
|
221
|
-
)
|
222
|
-
|
223
|
-
assert generator is not None
|
224
|
-
assert isinstance(generator, Generator)
|
225
|
-
assert generator.is_defined()
|
226
|
-
|
227
|
-
def test_aer_mask_success(self, environment: Environment):
|
228
|
-
# Construct arbitrary anAzimuthElevationMask using python dict
|
229
|
-
an_azimuth_elevation_mask = {
|
230
|
-
0.0: 30.0,
|
231
|
-
90.0: 60.0,
|
232
|
-
180.0: 60.0,
|
233
|
-
270.0: 30.0,
|
234
|
-
359.0: 30.0,
|
235
|
-
}
|
236
|
-
|
237
|
-
# Construct arbitrary aRangerange
|
238
|
-
a_range_range = RealInterval(0.0, 10e4, RealInterval.Type.Closed)
|
239
|
-
|
240
|
-
generator = Generator.aer_mask(
|
241
|
-
azimuth_elevation_mask=an_azimuth_elevation_mask,
|
242
|
-
range_range=a_range_range,
|
243
|
-
environment=environment,
|
244
|
-
)
|
245
|
-
|
246
|
-
assert generator is not None
|
247
|
-
assert isinstance(generator, Generator)
|
248
|
-
assert generator.is_defined()
|
@@ -1 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|