open-space-toolkit-astrodynamics 5.1.5__py38-none-any.whl → 5.2.0__py38-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-5.1.5.dist-info → open_space_toolkit_astrodynamics-5.2.0.dist-info}/METADATA +1 -1
- open_space_toolkit_astrodynamics-5.2.0.dist-info/RECORD +96 -0
- ostk/__init__.py +1 -0
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-38-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/converters.py +44 -6
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.5 +0 -0
- ostk/astrodynamics/pytrajectory/pystate.py +1 -3
- ostk/astrodynamics/test/access/__init__.py +1 -0
- ostk/astrodynamics/test/access/test_generator.py +248 -0
- ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py +1 -0
- ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py +325 -0
- ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json +303 -0
- ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py +416 -0
- ostk/astrodynamics/test/dynamics/__init__.py +1 -0
- ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py +128 -0
- ostk/astrodynamics/test/dynamics/test_central_body_gravity.py +58 -0
- ostk/astrodynamics/test/dynamics/test_dynamics.py +50 -0
- ostk/astrodynamics/test/dynamics/test_position_derivative.py +51 -0
- ostk/astrodynamics/test/dynamics/test_third_body_gravity.py +67 -0
- ostk/astrodynamics/test/dynamics/test_thruster.py +142 -0
- ostk/astrodynamics/test/event_condition/test_angular_condition.py +113 -0
- ostk/astrodynamics/test/event_condition/test_boolean_condition.py +55 -0
- ostk/astrodynamics/test/event_condition/test_coe_condition.py +87 -0
- ostk/astrodynamics/test/event_condition/test_instant_condition.py +48 -0
- ostk/astrodynamics/test/event_condition/test_logical_condition.py +120 -0
- ostk/astrodynamics/test/event_condition/test_real_condition.py +50 -0
- ostk/astrodynamics/test/flight/__init__.py +1 -0
- ostk/astrodynamics/test/flight/profile/__init__.py +1 -0
- ostk/astrodynamics/test/flight/profile/test_state.py +144 -0
- ostk/astrodynamics/test/flight/system/__init__.py +1 -0
- ostk/astrodynamics/test/flight/system/test_propulsion_system.py +46 -0
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +91 -0
- ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py +71 -0
- ostk/astrodynamics/test/flight/test_profile.py +153 -0
- ostk/astrodynamics/test/flight/test_system.py +55 -0
- ostk/astrodynamics/test/guidance_law/test_constant_thrust.py +91 -0
- ostk/astrodynamics/test/guidance_law/test_qlaw.py +139 -0
- ostk/astrodynamics/test/solvers/__init__.py +1 -0
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +181 -0
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +153 -0
- ostk/astrodynamics/test/test_access.py +2 -6
- ostk/astrodynamics/test/test_converters.py +213 -6
- ostk/astrodynamics/test/test_viewer.py +1 -2
- ostk/astrodynamics/test/trajectory/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py +18 -0
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml +44 -0
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py +108 -0
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py +65 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py +102 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py +102 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +167 -0
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +331 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +130 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +195 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +380 -0
- ostk/astrodynamics/test/trajectory/orbit/test_model.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +55 -0
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_angular_velocity.py +30 -0
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_attitude_quaternion.py +18 -0
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py +107 -0
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py +115 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py +84 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py +43 -0
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +314 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py +81 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +64 -0
- ostk/astrodynamics/test/trajectory/test_model.py +1 -0
- ostk/astrodynamics/test/trajectory/test_orbit.py +92 -0
- ostk/astrodynamics/test/trajectory/test_propagator.py +402 -0
- ostk/astrodynamics/test/trajectory/test_segment.py +288 -0
- ostk/astrodynamics/test/trajectory/test_sequence.py +459 -0
- ostk/astrodynamics/test/trajectory/test_state.py +223 -0
- ostk/astrodynamics/test/trajectory/test_state_builder.py +171 -0
- ostk/astrodynamics/viewer.py +1 -3
- open_space_toolkit_astrodynamics-5.1.5.dist-info/RECORD +0 -25
- {open_space_toolkit_astrodynamics-5.1.5.dist-info → open_space_toolkit_astrodynamics-5.2.0.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-5.1.5.dist-info → open_space_toolkit_astrodynamics-5.2.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-5.1.5.dist-info → open_space_toolkit_astrodynamics-5.2.0.dist-info}/zip-safe +0 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-38-x86_64-linux-gnu.so,sha256=VvN9bLMp87RyeNcZS0dTduOx0P6naFrxcyCAX4z6gh0,2004760
|
3
|
+
ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
|
4
|
+
ostk/astrodynamics/converters.py,sha256=IUxJK5qNzDMsqMSiMT6hUThCjncKoIMW0ifu8kwbww0,4680
|
5
|
+
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
6
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.5,sha256=7okoTSc8oHuKbfLThcRJXkgb7EuYdzR4awMUcGsfNgM,94498664
|
7
|
+
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
8
|
+
ostk/astrodynamics/viewer.py,sha256=B5m-eNWQrd4vIBqmT7-400IfHldxU5lFDTLpfHiiHj4,8910
|
9
|
+
ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
10
|
+
ostk/astrodynamics/pytrajectory/pystate.py,sha256=ceNZWYCqtsXWJlE6JKDxB5qn5ixTWGOwrYXge21XPmk,1037
|
11
|
+
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
12
|
+
ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
|
13
|
+
ostk/astrodynamics/test/test_access.py,sha256=6sWINwQw-KMKKOfuJIJxyIIrmT513VjvoXt2rNPpm0w,3959
|
14
|
+
ostk/astrodynamics/test/test_converters.py,sha256=hnvqOCtUGrzBvjv7GnmaRdl2mlKM3eWuJUspe305B-A,12114
|
15
|
+
ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
|
16
|
+
ostk/astrodynamics/test/test_event_condition.py,sha256=mhMTH7wAoYFWRYt_8l2d1vjNPrFhVjMAEET4INLCVXY,1472
|
17
|
+
ostk/astrodynamics/test/test_import.py,sha256=stS8jK9HiXyzRWjtDvaTqUrzCrOVnYVX5CkmQf7MJsA,1201
|
18
|
+
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
19
|
+
ostk/astrodynamics/test/test_trajectory.py,sha256=pvv4GQsvtU0XfWYk-F-oQNgo8ciFQBgzeJ4FojZDW-A,1364
|
20
|
+
ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
|
21
|
+
ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
|
22
|
+
ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
23
|
+
ostk/astrodynamics/test/access/test_generator.py,sha256=6cwC5GGvnWLxPXmgRQ-N7tjorGUfPxA8qFcdGaTmpp4,8038
|
24
|
+
ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
25
|
+
ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py,sha256=xyTd24828Ue2HgOWY8UhizIc5mzgRgoH2VSOfVfKCdw,14632
|
26
|
+
ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py,sha256=SqtYXB8qhKzbQEWmCzz13xi0Uu64-VSKXuMObcFV7EI,18518
|
27
|
+
ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json,sha256=-CL8Bu-ivigzkrqHs9Q5snSubHJ_D0YMroatEInkidc,12965
|
28
|
+
ostk/astrodynamics/test/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
29
|
+
ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py,sha256=mKXF1r-gaRz7vtMNULsl6onFOwD3uk0lYqxKStm4bxU,3765
|
30
|
+
ostk/astrodynamics/test/dynamics/test_central_body_gravity.py,sha256=x2_Xe-nGVkhKuq7p5Wuq7exeXKg_de3sAGrwGsOSRfA,1790
|
31
|
+
ostk/astrodynamics/test/dynamics/test_dynamics.py,sha256=FU5Qc3H6wkguml1Kt_hTX8uKplEyfcbH8wkC1TT4bjE,1240
|
32
|
+
ostk/astrodynamics/test/dynamics/test_position_derivative.py,sha256=HIHH8W3WR0eHJo82N6k03CBj_i1g2OuiHm-xEumPbx4,1618
|
33
|
+
ostk/astrodynamics/test/dynamics/test_third_body_gravity.py,sha256=hl3svhU6gNJdKoqqdgsZt-Ngrex9whcuLPeCgepM4G8,1887
|
34
|
+
ostk/astrodynamics/test/dynamics/test_thruster.py,sha256=HHFei_ZdUcwdRNXcKDTF-EhYe8ZjVht-kQjUl0nhILU,4403
|
35
|
+
ostk/astrodynamics/test/event_condition/test_angular_condition.py,sha256=OFlEbUDWaUs1kjUSf0AhIsOKV5qSUj6_sOxLQK5q8AU,3120
|
36
|
+
ostk/astrodynamics/test/event_condition/test_boolean_condition.py,sha256=Ng6FLKD8XoUHUz6-gi3wvrYhSGNSB_iJ_n89ajN4O3s,1580
|
37
|
+
ostk/astrodynamics/test/event_condition/test_coe_condition.py,sha256=1znTEcKVhR54CVfjhQeeAxbe4CdJJ1qlsKc8TK9jwqw,2581
|
38
|
+
ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6nrK7XDff7L4vnGCqasMK-Fa6qvxwy_U0xgH5M,1438
|
39
|
+
ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
|
40
|
+
ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=tle6HVzMFMIIkfRY7CuaA0mPtw3riJBG_JQkc1L0dpk,1374
|
41
|
+
ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
42
|
+
ostk/astrodynamics/test/flight/test_profile.py,sha256=OBwXlN35Fosk9ue37cDl6NAdITv8JG3s7mnHq3_cxc8,5195
|
43
|
+
ostk/astrodynamics/test/flight/test_system.py,sha256=YPrjoV3o67_1zCXCZqohlSAR7zkU0LXP2fF20M2s0C8,1326
|
44
|
+
ostk/astrodynamics/test/flight/profile/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
45
|
+
ostk/astrodynamics/test/flight/profile/test_state.py,sha256=2vc-PHFr9M9_x08n0ZCm29O4mE-zeu_0oTW8Wd4x7KY,4266
|
46
|
+
ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
47
|
+
ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=ei-25MZczwzhiV5QVB9LXdmBY3VnBHr1DEVn_Zqtb1A,1027
|
48
|
+
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=rPka530ZqX_XBVmt0SC5o765O1O90_m_U5cEUsrQuWU,2530
|
49
|
+
ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py,sha256=G3MUD-mBTakr-ip_261kwBTvTclnAArPPeHY3ZF9PYM,2430
|
50
|
+
ostk/astrodynamics/test/guidance_law/test_constant_thrust.py,sha256=YpMkMvat4YnE1Fyy5vZ1Sf3VvbvDaC_UvbIKNNCG_B4,2635
|
51
|
+
ostk/astrodynamics/test/guidance_law/test_qlaw.py,sha256=nu56zm7D9uwonCXCjpNw49nv9TApelTSlsoItQQ6VhY,3677
|
52
|
+
ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
53
|
+
ostk/astrodynamics/test/solvers/test_finite_difference_solver.py,sha256=h_CDEswTKzEld9vvTMMPXj-TI3YSeY14-Z6clYWtfB0,5417
|
54
|
+
ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=s7r7VelXx1_b-6wO_GyOlmxlsfA4I_zpxrWojriQls8,4867
|
55
|
+
ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
56
|
+
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=d72J50UGG9m0Atei0UQ8sITU1WdJmws5xgUiacLZMbw,2515
|
57
|
+
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=FziYh9XxD2FEuj6WhnqOe5mF9twLTQtvcem8KzQZKXg,1864
|
58
|
+
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
59
|
+
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
|
60
|
+
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=kEAvrFM4MZouAAnYPi91akPSXWHbGxHTo5uaXQKexII,12631
|
61
|
+
ostk/astrodynamics/test/trajectory/test_segment.py,sha256=UxSyasdBQoaT7bTBlRoBxhQ3paHw1JRDR7GJzFTmf6M,8731
|
62
|
+
ostk/astrodynamics/test/trajectory/test_sequence.py,sha256=uZdHNY7wAvkSMQEzNId3DWQOilsKdCEbqBd-AbqMYVE,12412
|
63
|
+
ostk/astrodynamics/test/trajectory/test_state.py,sha256=rW0HH7oy_tZ-34VIhk2rx_v2Kyg3xegBYpKs9_NznSs,6508
|
64
|
+
ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=3C8JeN8VGgUzEASgh5PfnJQ2JWGkKYTm7eaelE6Lw7E,4815
|
65
|
+
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
66
|
+
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
67
|
+
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=MtPRKhVz4hCzfFuE0p1x89Ps68M9s7miT7VtPIDVeOo,1898
|
68
|
+
ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
69
|
+
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
70
|
+
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
|
71
|
+
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py,sha256=wfxuccqIF2odRA9Dc-8wtKZ8t__4KJ9HVhN-il284OU,3893
|
72
|
+
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml,sha256=DqIdfLCPD9oV4qDvgq35fIT8Gb8zgtrHr5Nx53InSQM,1363
|
73
|
+
ostk/astrodynamics/test/trajectory/orbit/models/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
74
|
+
ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py,sha256=sf1FpdYyiGyWcal-CwVfelW1k-HYGlIdbJdcbOi9-lY,3372
|
75
|
+
ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py,sha256=PnzJsRVn-TKQ7fcsmxm4YYE4e2Tr1xvBTB1r0RboRyk,6678
|
76
|
+
ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
77
|
+
ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py,sha256=tL3gGDitdEYCCRwGtu2RP-9d4JWsujV53ck9DRkyeG4,11183
|
78
|
+
ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
79
|
+
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py,sha256=9JC4LTpMXWzQ2VoEOaVaruy2hPjyiAIR5_2QTfm4MqU,1545
|
80
|
+
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py,sha256=gVpnA6FE3aCD6hskOKiVkb4YlONTUMogwBY1EaOqm7M,2472
|
81
|
+
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py,sha256=8g2Q8ywuU5wsvrycAKUWFY-1bqIcylBpcnMJW4ze8Hs,2489
|
82
|
+
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=C_2qGt8yzbs6S-rCheUbj8wOnLEWBNio2UD6ST-SwHk,4781
|
83
|
+
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
84
|
+
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=lbPqHd87ExTNbBFcFSTMWRnWbpe_4BDJ2g2APlQLJkY,11486
|
85
|
+
ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py,sha256=LUVQ6LjpWAxs6XA3vOwHO5Unnf4TMYCx31fk_ORLTcc,2907
|
86
|
+
ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py,sha256=eMmifR5rJMk2yFN7pfAHq2Ub3FPvknb6gvS-nBDidro,1201
|
87
|
+
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=-SHQWgR34Xk0gO26VwQWbmRnPXp3AKfk0j9t-lPvfmk,9403
|
88
|
+
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_angular_velocity.py,sha256=IWLmoMvxVejdiw8JuiDsIaii7ctbRDvU-13fgZEvWXA,626
|
89
|
+
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_attitude_quaternion.py,sha256=B1Tni_YpKB9Fzb0fpXSokw9DjgiZem9uBATMQbcq8P4,394
|
90
|
+
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py,sha256=L3MpDG9MDHbK2HPZejqiY0QJdiEB-FZe0rVGDl379YA,2722
|
91
|
+
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py,sha256=k0aNqdMwwt-XSFQ1Si8kDTY79SB7fC0WWm2UNjpaOI0,3077
|
92
|
+
open_space_toolkit_astrodynamics-5.2.0.dist-info/METADATA,sha256=R5UAtA3PdcwUnrltBkZOUeU1DQuv8Ggg-iY0Pfy7Kc0,1777
|
93
|
+
open_space_toolkit_astrodynamics-5.2.0.dist-info/WHEEL,sha256=LNQH4F1F9_Ua4GgazGQDFGQhQ8B1tSrkPIuEzIRv9nc,93
|
94
|
+
open_space_toolkit_astrodynamics-5.2.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
95
|
+
open_space_toolkit_astrodynamics-5.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
96
|
+
open_space_toolkit_astrodynamics-5.2.0.dist-info/RECORD,,
|
ostk/__init__.py
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Apache License 2.0
|
Binary file
|
ostk/astrodynamics/converters.py
CHANGED
@@ -15,12 +15,12 @@ from ostk.physics.coordinate import Velocity
|
|
15
15
|
from ostk.physics.coordinate import Frame
|
16
16
|
|
17
17
|
|
18
|
-
def coerce_to_datetime(value: Instant | datetime) -> datetime:
|
18
|
+
def coerce_to_datetime(value: Instant | datetime | str) -> datetime:
|
19
19
|
"""
|
20
20
|
Return datetime from value.
|
21
21
|
|
22
22
|
Args:
|
23
|
-
value (Instant | datetime): A value to coerce.
|
23
|
+
value (Instant | datetime | str): A value to coerce.
|
24
24
|
|
25
25
|
Returns:
|
26
26
|
datetime: The coerced datetime.
|
@@ -29,15 +29,21 @@ def coerce_to_datetime(value: Instant | datetime) -> datetime:
|
|
29
29
|
if isinstance(value, datetime):
|
30
30
|
return value
|
31
31
|
|
32
|
-
|
32
|
+
if isinstance(value, Instant):
|
33
|
+
return value.get_date_time(Scale.UTC).replace(tzinfo=timezone.utc)
|
34
|
+
|
35
|
+
if isinstance(value, str):
|
36
|
+
return datetime.fromisoformat(value)
|
37
|
+
|
38
|
+
raise TypeError("Argument must be a datetime, an Instant, or a str.")
|
33
39
|
|
34
40
|
|
35
|
-
def coerce_to_instant(value: Instant | datetime) -> Instant:
|
41
|
+
def coerce_to_instant(value: Instant | datetime | str) -> Instant:
|
36
42
|
"""
|
37
43
|
Return Instant from value.
|
38
44
|
|
39
45
|
Args:
|
40
|
-
value (Instant | datetime): A value to coerce.
|
46
|
+
value (Instant | datetime | str): A value to coerce.
|
41
47
|
|
42
48
|
Returns:
|
43
49
|
Instant: The coerced Instant.
|
@@ -46,7 +52,39 @@ def coerce_to_instant(value: Instant | datetime) -> Instant:
|
|
46
52
|
if isinstance(value, Instant):
|
47
53
|
return value
|
48
54
|
|
49
|
-
|
55
|
+
if isinstance(value, datetime):
|
56
|
+
return Instant.date_time(value.astimezone(tz=timezone.utc), Scale.UTC)
|
57
|
+
|
58
|
+
if isinstance(value, str):
|
59
|
+
return coerce_to_instant(coerce_to_datetime(value))
|
60
|
+
|
61
|
+
raise TypeError("Argument must be a datetime, an Instant, or a str.")
|
62
|
+
|
63
|
+
|
64
|
+
def coerce_to_iso(
|
65
|
+
value: Instant | datetime | str, timespec: str = "microseconds"
|
66
|
+
) -> Instant:
|
67
|
+
"""
|
68
|
+
Return an ISO string from value.
|
69
|
+
|
70
|
+
Args:
|
71
|
+
value (Instant | datetime | str): A value to coerce.
|
72
|
+
timespec (str): A time resolution. Defaults to "microseconds".
|
73
|
+
|
74
|
+
Returns:
|
75
|
+
str: The coerced ISO string.
|
76
|
+
"""
|
77
|
+
|
78
|
+
if isinstance(value, str):
|
79
|
+
return coerce_to_iso(coerce_to_datetime(value), timespec=timespec)
|
80
|
+
|
81
|
+
if isinstance(value, datetime):
|
82
|
+
return value.isoformat(timespec=timespec)
|
83
|
+
|
84
|
+
if isinstance(value, Instant):
|
85
|
+
return coerce_to_iso(coerce_to_datetime(value), timespec=timespec)
|
86
|
+
|
87
|
+
raise TypeError("Argument must be a datetime, an Instant, or a str.")
|
50
88
|
|
51
89
|
|
52
90
|
def coerce_to_interval(
|
Binary file
|
@@ -28,9 +28,7 @@ def custom_class_generator(frame: Frame, coordinates_subsets: list) -> type:
|
|
28
28
|
state_builder: StateBuilder = StateBuilder(frame, coordinates_subsets)
|
29
29
|
|
30
30
|
def __init__(self, instant: Instant, coordinates: np.ndarray):
|
31
|
-
super().__init__(
|
32
|
-
StateTemplateType.state_builder.build(instant, coordinates)
|
33
|
-
)
|
31
|
+
super().__init__(StateTemplateType.state_builder.build(instant, coordinates))
|
34
32
|
|
35
33
|
return StateTemplateType
|
36
34
|
|
@@ -0,0 +1 @@
|
|
1
|
+
# Apache License 2.0
|
@@ -0,0 +1,248 @@
|
|
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()
|
@@ -0,0 +1 @@
|
|
1
|
+
# Apache License 2.0
|