From 1e51b87073704f1574fd518ce7f0c6488f785630 Mon Sep 17 00:00:00 2001 From: "Sebastian M. Ernst" Date: Sun, 17 Dec 2023 12:13:32 +0100 Subject: [PATCH] rebranding (1) --- .circleci/config.yml | 104 ------ .github/FUNDING.yml | 4 - .github/ISSUE_TEMPLATE/new_release.md | 8 +- .github/no-response.yml | 2 +- .github/workflows/documentation-links.yaml | 2 +- .github/workflows/test.yaml | 67 ++++ .github/workflows/validation_trigger.yml | 12 +- .gitignore | 4 + AUTHORS.md | 12 +- CITATION.cff | 33 -- CODE_OF_CONDUCT.md | 58 --- CONTRIBUTING.md | 115 ++---- COPYING => LICENSE | 3 +- MANIFEST.in | 4 +- Makefile | 26 +- README.md | 239 +++--------- binder/environment.yml | 4 - .../labconfig/default_setting_overrides.json | 9 - binder/postBuild | 6 - codemeta.json | 205 ----------- contrib/CR3BP/CR3BP.py | 20 +- contrib/CR3BP/README.md | 2 +- contrib/CR3BP/test_run_CR3BP.py | 2 +- contrib/README.md | 8 +- contrib/cr3bp_DhruvJ/cr3bp_PO_master.py | 32 +- contrib/cr3bp_DhruvJ/cr3bp_model_master.py | 25 +- .../cr3bp_DhruvJ/cr3bp_po_fam_continuation.py | 19 +- contrib/cr3bp_DhruvJ/cr3bp_po_plot_orbits.py | 4 +- contrib/cr3bp_DhruvJ/example.py | 8 +- contrib/cr3bp_DhruvJ/example_3D_orb_fam.py | 8 +- .../example_L4_vertical_orb_fam.py | 8 +- .../example_L4_vertical_orb_fam_palc.py | 8 +- .../cr3bp_DhruvJ/example_lyapunov_orb_fam.py | 4 +- contrib/relative.py | 20 +- contrib/rv2tle.py | 16 +- docs/Makefile | 8 +- docs/source/_static/logo_readme.png | Bin 361179 -> 375741 bytes docs/source/_static/logo_text.png | Bin 38810 -> 32033 bytes docs/source/_static/logo_text_transp.png | Bin 44416 -> 41211 bytes docs/source/api.md | 33 +- docs/source/background.md | 5 +- docs/source/bibliography.md | 14 +- docs/source/changelog.md | 31 ++ docs/source/conf.py | 48 +-- docs/source/examples/analyzing-NEOs.myst.md | 8 +- ...zing-the-parker-solar-probe-flybys.myst.md | 18 +- .../examples/atmospheric-models.myst.md | 4 +- .../examples/catch-that-asteroid.myst.md | 14 +- ...g-hohmann-and-bielliptic-transfers.myst.md | 6 +- .../customising-static-orbit-plots.myst.md | 10 +- docs/source/examples/czml-tutorial.myst.md | 16 +- docs/source/examples/detecting-events.myst.md | 30 +- .../exploring-the-new-horizons-launch.myst.md | 18 +- .../generating-orbit-groundtracks.myst.md | 12 +- ...python-using-jupyter-and-poliastro.myst.md | 22 +- ...o-mars-with-python-using-poliastro.myst.md | 24 +- .../examples/hohmann-bielliptic-transfers.png | Bin 88421 -> 88421 bytes docs/source/examples/hohmann.png | Bin 42084 -> 42084 bytes ...loading-OMM-and-TLE-satellite-data.myst.md | 18 +- docs/source/examples/logo_text.png | Bin 40039 -> 41211 bytes ...tions-solution-in-lamberts-problem.myst.md | 22 +- ...tural-and-artificial-perturbations.myst.md | 32 +- docs/source/examples/plotting-in-3D.myst.md | 16 +- .../examples/porkchops-with-poliastro.myst.md | 16 +- ...pagation-using-cowells-formulation.myst.md | 22 +- ...isiting-lamberts-problem-in-python.myst.md | 8 +- .../studying-hohmann-transfers.myst.md | 8 +- docs/source/examples/tisserand.myst.md | 10 +- ...spacex-tesla-roadster-trip-to-mars.myst.md | 14 +- docs/source/gallery.md | 12 +- docs/source/history.md | 38 +- docs/source/index.md | 139 ++++--- docs/source/installation.md | 59 +-- docs/source/logo/logo.svg | 2 +- docs/source/logo/logo_text.svg | 342 ++++++++---------- docs/source/quickstart.md | 190 +++------- docs/source/related.md | 11 +- index.ipynb | 2 +- pyproject.toml | 84 ++--- src/{poliastro => hapsira}/__init__.py | 0 src/{poliastro => hapsira}/_math/__init__.py | 0 src/{poliastro => hapsira}/_math/integrate.py | 0 .../_math/interpolate.py | 0 src/{poliastro => hapsira}/_math/ivp.py | 0 src/{poliastro => hapsira}/_math/linalg.py | 0 src/{poliastro => hapsira}/_math/optimize.py | 0 src/{poliastro => hapsira}/_math/special.py | 0 src/{poliastro => hapsira}/bodies.py | 16 +- .../constants/__init__.py | 6 +- .../constants/general.py | 0 .../constants/mean_elements.py | 0 .../constants/rotational_elements.py | 0 src/{poliastro => hapsira}/core/__init__.py | 0 src/{poliastro => hapsira}/core/angles.py | 0 src/{poliastro => hapsira}/core/czml_utils.py | 2 +- .../core/earth_atmosphere/__init__.py | 0 .../core/earth_atmosphere/jacchia.py | 25 +- .../core/earth_atmosphere/util.py | 0 src/{poliastro => hapsira}/core/elements.py | 26 +- src/{poliastro => hapsira}/core/events.py | 11 +- src/{poliastro => hapsira}/core/fixed.py | 0 src/{poliastro => hapsira}/core/flybys.py | 2 +- src/{poliastro => hapsira}/core/iod.py | 39 +- src/{poliastro => hapsira}/core/maneuver.py | 8 +- .../core/perturbations.py | 13 +- src/hapsira/core/propagation/__init__.py | 35 ++ .../core/propagation/base.py | 0 .../core/propagation/cowell.py | 4 +- .../core/propagation/danby.py | 8 +- .../core/propagation/farnocchia.py | 12 +- .../core/propagation/gooding.py | 4 +- .../core/propagation/markley.py | 13 +- .../core/propagation/mikkola.py | 9 +- .../core/propagation/pimienta.py | 18 +- .../core/propagation/recseries.py | 8 +- .../core/propagation/vallado.py | 8 +- src/{poliastro => hapsira}/core/sensors.py | 0 .../core/spheroid_location.py | 10 +- .../core/threebody/__init__.py | 0 .../cr3bp_quantities_calculations.py | 0 src/hapsira/core/thrust/__init__.py | 5 + .../core/thrust/change_a_inc.py | 4 +- .../core/thrust/change_argp.py | 4 +- .../core/thrust/change_ecc_inc.py | 17 +- .../core/thrust/change_ecc_quasioptimal.py | 2 +- src/{poliastro => hapsira}/core/util.py | 0 src/{poliastro => hapsira}/czml/__init__.py | 0 .../czml/extract_czml.py | 84 ++--- src/{poliastro => hapsira}/earth/__init__.py | 17 +- src/hapsira/earth/atmosphere/__init__.py | 4 + .../earth/atmosphere/base.py | 2 +- .../earth/atmosphere/coesa62.py | 7 +- .../earth/atmosphere/coesa76.py | 6 +- .../earth/atmosphere/data/coesa62.dat | 0 .../earth/atmosphere/data/coesa76.dat | 0 .../earth/atmosphere/data/coesa76_p.dat | 0 .../earth/atmosphere/data/coesa76_rho.dat | 0 .../earth/atmosphere/jacchia.py | 2 +- src/{poliastro => hapsira}/earth/enums.py | 0 .../earth/plotting/__init__.py | 2 +- .../earth/plotting/groundtrack.py | 14 +- .../earth/plotting/utils.py | 0 src/{poliastro => hapsira}/earth/util.py | 4 +- src/{poliastro => hapsira}/ephem.py | 60 ++- src/{poliastro => hapsira}/examples.py | 4 +- src/hapsira/frames/__init__.py | 5 + src/{poliastro => hapsira}/frames/ecliptic.py | 14 +- src/{poliastro => hapsira}/frames/enums.py | 0 .../frames/equatorial.py | 18 +- src/{poliastro => hapsira}/frames/fixed.py | 24 +- src/{poliastro => hapsira}/frames/util.py | 16 +- src/{poliastro => hapsira}/io.py | 16 +- src/{poliastro => hapsira}/iod/__init__.py | 2 +- src/{poliastro => hapsira}/iod/izzo.py | 6 +- src/{poliastro => hapsira}/iod/vallado.py | 10 +- src/{poliastro => hapsira}/maneuver.py | 22 +- src/hapsira/plotting/__init__.py | 11 + .../plotting/gabbard.py | 8 +- src/{poliastro => hapsira}/plotting/misc.py | 10 +- .../plotting/orbit/__init__.py | 2 +- .../plotting/orbit/backends/__init__.py | 4 +- .../plotting/orbit/backends/_base.py | 0 .../plotting/orbit/backends/matplotlib.py | 6 +- .../plotting/orbit/backends/plotly.py | 8 +- .../plotting/orbit/plotter.py | 99 ++--- .../plotting/porkchop.py | 36 +- .../plotting/tisserand.py | 20 +- src/{poliastro => hapsira}/plotting/util.py | 0 src/{poliastro => hapsira}/sensors.py | 2 +- .../spacecraft/__init__.py | 0 .../spheroid_location.py | 16 +- .../threebody/__init__.py | 0 .../threebody/cr3bp_char_quant.py | 14 +- .../threebody/flybys.py | 6 +- .../threebody/restricted.py | 4 +- src/{poliastro => hapsira}/threebody/soi.py | 6 +- src/hapsira/twobody/__init__.py | 3 + src/{poliastro => hapsira}/twobody/angles.py | 2 +- .../twobody/elements.py | 8 +- src/{poliastro => hapsira}/twobody/events.py | 24 +- .../twobody/mean_elements.py | 14 +- src/hapsira/twobody/orbit/__init__.py | 3 + .../twobody/orbit/creation.py | 93 ++--- .../twobody/orbit/scalar.py | 62 ++-- .../twobody/propagation/__init__.py | 22 +- .../twobody/propagation/_compat.py | 2 +- .../twobody/propagation/cowell.py | 14 +- .../twobody/propagation/danby.py | 6 +- .../twobody/propagation/enums.py | 0 .../twobody/propagation/farnocchia.py | 12 +- .../twobody/propagation/gooding.py | 6 +- .../twobody/propagation/markley.py | 6 +- .../twobody/propagation/mikkola.py | 6 +- .../twobody/propagation/pimienta.py | 6 +- .../twobody/propagation/recseries.py | 6 +- .../twobody/propagation/vallado.py | 10 +- .../twobody/sampling.py | 24 +- src/{poliastro => hapsira}/twobody/states.py | 18 +- src/hapsira/twobody/thrust/__init__.py | 13 + .../twobody/thrust/change_a_inc.py | 2 +- .../twobody/thrust/change_argp.py | 2 +- .../twobody/thrust/change_ecc_inc.py | 2 +- .../twobody/thrust/change_ecc_quasioptimal.py | 4 +- src/{poliastro => hapsira}/util.py | 8 +- src/{poliastro => hapsira}/warnings.py | 0 src/poliastro/core/propagation/__init__.py | 35 -- src/poliastro/core/thrust/__init__.py | 5 - src/poliastro/earth/atmosphere/__init__.py | 4 - src/poliastro/frames/__init__.py | 5 - src/poliastro/plotting/__init__.py | 11 - src/poliastro/twobody/__init__.py | 3 - src/poliastro/twobody/orbit/__init__.py | 3 - src/poliastro/twobody/thrust/__init__.py | 13 - tests/conftest.py | 4 +- tests/test_bodies.py | 4 +- tests/test_czml.py | 31 +- tests/test_ephem.py | 41 +-- tests/test_examples.py | 2 +- tests/test_frames.py | 38 +- tests/test_hyper.py | 2 +- tests/test_iod.py | 12 +- tests/test_maneuver.py | 44 +-- tests/test_sensors.py | 12 +- tests/test_spheroid_location.py | 8 +- tests/test_stumpff.py | 2 +- tests/test_util.py | 25 +- tests/tests_core/test_core_propagation.py | 6 +- tests/tests_core/test_core_util.py | 20 +- .../test_cr3bp_quantities_calculations.py | 4 +- tests/tests_earth/test_earth_util.py | 10 +- tests/tests_earth/test_earthsatellite.py | 10 +- .../tests_atmosphere/test_coesa62.py | 47 +-- .../tests_atmosphere/test_coesa76.py | 22 +- .../tests_atmosphere/test_jacchia77.py | 2 +- tests/tests_plotting/test_gabbard.py | 8 +- tests/tests_plotting/test_misc.py | 6 +- tests/tests_plotting/test_orbit_plotter.py | 48 +-- tests/tests_plotting/test_porkchop.py | 10 +- tests/tests_plotting/test_tisserand.py | 6 +- tests/tests_spacecraft/test_spacecraft.py | 2 +- .../tests_threebody/test_cr3bp_char_quant.py | 6 +- tests/tests_threebody/test_flybys.py | 12 +- tests/tests_threebody/test_restricted.py | 4 +- tests/tests_threebody/test_soi.py | 8 +- tests/tests_twobody/test_angles.py | 6 +- tests/tests_twobody/test_elements.py | 2 +- tests/tests_twobody/test_events.py | 36 +- tests/tests_twobody/test_mean_elements.py | 6 +- tests/tests_twobody/test_orbit.py | 153 +++----- tests/tests_twobody/test_perturbations.py | 66 ++-- tests/tests_twobody/test_propagation.py | 44 +-- tests/tests_twobody/test_sampling.py | 8 +- tests/tests_twobody/test_states.py | 12 +- tests/tests_twobody/test_thrust.py | 30 +- tox.ini | 6 +- 255 files changed, 1675 insertions(+), 2974 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/test.yaml delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md rename COPYING => LICENSE (87%) delete mode 100644 binder/environment.yml delete mode 100644 binder/labconfig/default_setting_overrides.json delete mode 100644 binder/postBuild delete mode 100644 codemeta.json rename src/{poliastro => hapsira}/__init__.py (100%) rename src/{poliastro => hapsira}/_math/__init__.py (100%) rename src/{poliastro => hapsira}/_math/integrate.py (100%) rename src/{poliastro => hapsira}/_math/interpolate.py (100%) rename src/{poliastro => hapsira}/_math/ivp.py (100%) rename src/{poliastro => hapsira}/_math/linalg.py (100%) rename src/{poliastro => hapsira}/_math/optimize.py (100%) rename src/{poliastro => hapsira}/_math/special.py (100%) rename src/{poliastro => hapsira}/bodies.py (94%) rename src/{poliastro => hapsira}/constants/__init__.py (96%) rename src/{poliastro => hapsira}/constants/general.py (100%) rename src/{poliastro => hapsira}/constants/mean_elements.py (100%) rename src/{poliastro => hapsira}/constants/rotational_elements.py (100%) rename src/{poliastro => hapsira}/core/__init__.py (100%) rename src/{poliastro => hapsira}/core/angles.py (100%) rename src/{poliastro => hapsira}/core/czml_utils.py (98%) rename src/{poliastro => hapsira}/core/earth_atmosphere/__init__.py (100%) rename src/{poliastro => hapsira}/core/earth_atmosphere/jacchia.py (89%) rename src/{poliastro => hapsira}/core/earth_atmosphere/util.py (100%) rename src/{poliastro => hapsira}/core/elements.py (96%) rename src/{poliastro => hapsira}/core/events.py (93%) rename src/{poliastro => hapsira}/core/fixed.py (100%) rename src/{poliastro => hapsira}/core/flybys.py (98%) rename src/{poliastro => hapsira}/core/iod.py (93%) rename src/{poliastro => hapsira}/core/maneuver.py (96%) rename src/{poliastro => hapsira}/core/perturbations.py (95%) create mode 100644 src/hapsira/core/propagation/__init__.py rename src/{poliastro => hapsira}/core/propagation/base.py (100%) rename src/{poliastro => hapsira}/core/propagation/cowell.py (92%) rename src/{poliastro => hapsira}/core/propagation/danby.py (92%) rename src/{poliastro => hapsira}/core/propagation/farnocchia.py (96%) rename src/{poliastro => hapsira}/core/propagation/gooding.py (94%) rename src/{poliastro => hapsira}/core/propagation/markley.py (90%) rename src/{poliastro => hapsira}/core/propagation/mikkola.py (93%) rename src/{poliastro => hapsira}/core/propagation/pimienta.py (96%) rename src/{poliastro => hapsira}/core/propagation/recseries.py (93%) rename src/{poliastro => hapsira}/core/propagation/vallado.py (94%) rename src/{poliastro => hapsira}/core/sensors.py (100%) rename src/{poliastro => hapsira}/core/spheroid_location.py (94%) rename src/{poliastro => hapsira}/core/threebody/__init__.py (100%) rename src/{poliastro => hapsira}/core/threebody/cr3bp_quantities_calculations.py (100%) create mode 100644 src/hapsira/core/thrust/__init__.py rename src/{poliastro => hapsira}/core/thrust/change_a_inc.py (96%) rename src/{poliastro => hapsira}/core/thrust/change_argp.py (94%) rename src/{poliastro => hapsira}/core/thrust/change_ecc_inc.py (84%) rename src/{poliastro => hapsira}/core/thrust/change_ecc_quasioptimal.py (88%) rename src/{poliastro => hapsira}/core/util.py (100%) rename src/{poliastro => hapsira}/czml/__init__.py (100%) rename src/{poliastro => hapsira}/czml/extract_czml.py (89%) rename src/{poliastro => hapsira}/earth/__init__.py (86%) create mode 100644 src/hapsira/earth/atmosphere/__init__.py rename src/{poliastro => hapsira}/earth/atmosphere/base.py (97%) rename src/{poliastro => hapsira}/earth/atmosphere/coesa62.py (98%) rename src/{poliastro => hapsira}/earth/atmosphere/coesa76.py (98%) rename src/{poliastro => hapsira}/earth/atmosphere/data/coesa62.dat (100%) rename src/{poliastro => hapsira}/earth/atmosphere/data/coesa76.dat (100%) rename src/{poliastro => hapsira}/earth/atmosphere/data/coesa76_p.dat (100%) rename src/{poliastro => hapsira}/earth/atmosphere/data/coesa76_rho.dat (100%) rename src/{poliastro => hapsira}/earth/atmosphere/jacchia.py (98%) rename src/{poliastro => hapsira}/earth/enums.py (100%) rename src/{poliastro => hapsira}/earth/plotting/__init__.py (56%) rename src/{poliastro => hapsira}/earth/plotting/groundtrack.py (95%) rename src/{poliastro => hapsira}/earth/plotting/utils.py (100%) rename src/{poliastro => hapsira}/earth/util.py (97%) rename src/{poliastro => hapsira}/ephem.py (86%) rename src/{poliastro => hapsira}/examples.py (94%) create mode 100644 src/hapsira/frames/__init__.py rename src/{poliastro => hapsira}/frames/ecliptic.py (90%) rename src/{poliastro => hapsira}/frames/enums.py (100%) rename src/{poliastro => hapsira}/frames/equatorial.py (91%) rename src/{poliastro => hapsira}/frames/fixed.py (92%) rename src/{poliastro => hapsira}/frames/util.py (88%) rename src/{poliastro => hapsira}/io.py (81%) rename src/{poliastro => hapsira}/iod/__init__.py (56%) rename src/{poliastro => hapsira}/iod/izzo.py (90%) rename src/{poliastro => hapsira}/iod/vallado.py (85%) rename src/{poliastro => hapsira}/maneuver.py (93%) create mode 100644 src/hapsira/plotting/__init__.py rename src/{poliastro => hapsira}/plotting/gabbard.py (91%) rename src/{poliastro => hapsira}/plotting/misc.py (89%) rename src/{poliastro => hapsira}/plotting/orbit/__init__.py (60%) rename src/{poliastro => hapsira}/plotting/orbit/backends/__init__.py (89%) rename src/{poliastro => hapsira}/plotting/orbit/backends/_base.py (100%) rename src/{poliastro => hapsira}/plotting/orbit/backends/matplotlib.py (98%) rename src/{poliastro => hapsira}/plotting/orbit/backends/plotly.py (98%) rename src/{poliastro => hapsira}/plotting/orbit/plotter.py (89%) rename src/{poliastro => hapsira}/plotting/porkchop.py (89%) rename src/{poliastro => hapsira}/plotting/tisserand.py (92%) rename src/{poliastro => hapsira}/plotting/util.py (100%) rename src/{poliastro => hapsira}/sensors.py (98%) rename src/{poliastro => hapsira}/spacecraft/__init__.py (100%) rename src/{poliastro => hapsira}/spheroid_location.py (91%) rename src/{poliastro => hapsira}/threebody/__init__.py (100%) rename src/{poliastro => hapsira}/threebody/cr3bp_char_quant.py (90%) rename src/{poliastro => hapsira}/threebody/flybys.py (87%) rename src/{poliastro => hapsira}/threebody/restricted.py (97%) rename src/{poliastro => hapsira}/threebody/soi.py (95%) create mode 100644 src/hapsira/twobody/__init__.py rename src/{poliastro => hapsira}/twobody/angles.py (99%) rename src/{poliastro => hapsira}/twobody/elements.py (96%) rename src/{poliastro => hapsira}/twobody/events.py (93%) rename src/{poliastro => hapsira}/twobody/mean_elements.py (76%) create mode 100644 src/hapsira/twobody/orbit/__init__.py rename src/{poliastro => hapsira}/twobody/orbit/creation.py (91%) rename src/{poliastro => hapsira}/twobody/orbit/scalar.py (92%) rename src/{poliastro => hapsira}/twobody/propagation/__init__.py (75%) rename src/{poliastro => hapsira}/twobody/propagation/_compat.py (94%) rename src/{poliastro => hapsira}/twobody/propagation/cowell.py (80%) rename src/{poliastro => hapsira}/twobody/propagation/danby.py (83%) rename src/{poliastro => hapsira}/twobody/propagation/enums.py (100%) rename src/{poliastro => hapsira}/twobody/propagation/farnocchia.py (82%) rename src/{poliastro => hapsira}/twobody/propagation/gooding.py (86%) rename src/{poliastro => hapsira}/twobody/propagation/markley.py (83%) rename src/{poliastro => hapsira}/twobody/propagation/mikkola.py (83%) rename src/{poliastro => hapsira}/twobody/propagation/pimienta.py (85%) rename src/{poliastro => hapsira}/twobody/propagation/recseries.py (88%) rename src/{poliastro => hapsira}/twobody/propagation/vallado.py (83%) rename src/{poliastro => hapsira}/twobody/sampling.py (90%) rename src/{poliastro => hapsira}/twobody/states.py (93%) create mode 100644 src/hapsira/twobody/thrust/__init__.py rename src/{poliastro => hapsira}/twobody/thrust/change_a_inc.py (96%) rename src/{poliastro => hapsira}/twobody/thrust/change_argp.py (94%) rename src/{poliastro => hapsira}/twobody/thrust/change_ecc_inc.py (96%) rename src/{poliastro => hapsira}/twobody/thrust/change_ecc_quasioptimal.py (92%) rename src/{poliastro => hapsira}/util.py (92%) rename src/{poliastro => hapsira}/warnings.py (100%) delete mode 100644 src/poliastro/core/propagation/__init__.py delete mode 100644 src/poliastro/core/thrust/__init__.py delete mode 100644 src/poliastro/earth/atmosphere/__init__.py delete mode 100644 src/poliastro/frames/__init__.py delete mode 100644 src/poliastro/plotting/__init__.py delete mode 100644 src/poliastro/twobody/__init__.py delete mode 100644 src/poliastro/twobody/orbit/__init__.py delete mode 100644 src/poliastro/twobody/thrust/__init__.py diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index cb216ee1c..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,104 +0,0 @@ -version: 2.1 - -jobs: - quality: &test-template - description: Code style - docker: - - image: python:3.8 - environment: - PIP_PREFER_BINARY: true - PIP_PROGRESS_BAR: "off" - TOXENV: style - steps: - - checkout - - run: python -m pip install tox - - run: tox - - tests38-fast: - <<: *test-template - description: Tests fast - Python 3.8 - environment: - TOXENV: tests38-fast - - tests38-online: - <<: *test-template - description: Tests online - Python 3.8 - environment: - TOXENV: tests38-online - - tests38-slow: - <<: *test-template - description: Tests slow - Python 3.8 - environment: - TOXENV: tests38-slow - - tests38-images: - <<: *test-template - description: Tests images - Python 3.8 - environment: - TOXENV: tests38-images - - tests38-coverage: - <<: *test-template - description: Tests coverage - Python 3.8 - environment: - TOXENV: tests38-coverage - steps: - - checkout - - run: python -m pip install tox - - run: tox - - run: python -m pip install codecov && codecov - - tests39: - <<: *test-template - description: Tests - Python 3.9 - docker: - - image: python:3.9 - environment: - TOXENV: tests39 - - tests310: - <<: *test-template - description: Tests - Python 3.10 - docker: - - image: python:3.10 - environment: - TOXENV: tests310 - - tests311: - <<: *test-template - description: Tests - Python 3.11 - docker: - - image: python:3.11 - environment: - TOXENV: tests311 - -workflows: - version: 2 - build_and_test: - jobs: - - quality - - tests38-fast: - requires: - - quality - - tests38-online: - requires: - - quality - - tests38-slow: - requires: - - quality - - tests38-images: - requires: - - quality - - tests38-coverage: - requires: - - quality - - tests39: - requires: - - quality - - tests310: - requires: - - quality - - tests311: - requires: - - quality diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 6bae7e024..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,4 +0,0 @@ -# These are supported funding model platforms - -open_collective: poliastro -github: [numfocus, astrojuanlu] diff --git a/.github/ISSUE_TEMPLATE/new_release.md b/.github/ISSUE_TEMPLATE/new_release.md index 6efb97d3c..c63d2487a 100644 --- a/.github/ISSUE_TEMPLATE/new_release.md +++ b/.github/ISSUE_TEMPLATE/new_release.md @@ -11,9 +11,9 @@ assignees: astrojuanlu * [ ] Rerun all notebooks (pay special attention to new features) * [ ] Review documentation, optionally improving the user guide or adding new notebooks showcasing new functionality * [ ] Write the changelog and list of contributors - - Commits since last release branch https://github.com/poliastro/poliastro/compare/X.Y.Z...main - - Issues closed in this milestone https://github.com/poliastro/poliastro/milestone/N?closed=1 (note that there might be issues without milestone!) - - Pull requests merged since last branching https://github.com/poliastro/poliastro/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E%3D2019-02-09+sort%3Aupdated-asc + - Commits since last release branch https://github.com/hapsira/hapsira/compare/X.Y.Z...main + - Issues closed in this milestone https://github.com/hapsira/hapsira/milestone/N?closed=1 (note that there might be issues without milestone!) + - Pull requests merged since last branching https://github.com/hapsira/hapsira/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E%3D2019-02-09+sort%3Aupdated-asc - List of contributors: `git shortlog --summary --email ${BRANCHING_COMMIT}..` ## Before the beta release @@ -57,6 +57,6 @@ assignees: astrojuanlu * [ ] Check Read the Docs * [ ] Create GitHub release * [ ] Add Zenodo badge to GitHub release -* [ ] Send announcement email with subject "ANN: poliastro X.Y.Z released 🚀" +* [ ] Send announcement email with subject "ANN: hapsira X.Y.Z released 🚀" * [ ] Cherry pick release date to main * [ ] Close milestone diff --git a/.github/no-response.yml b/.github/no-response.yml index c873ad7c9..a9d5ad7a0 100644 --- a/.github/no-response.yml +++ b/.github/no-response.yml @@ -10,5 +10,5 @@ closeComment: > to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Moreover, the problems discussed in the issue may not be - directly from poliastro. If you still face this problem, reopen the issue or + directly from hapsira. If you still face this problem, reopen the issue or comment on it. We would be happy to help again! diff --git a/.github/workflows/documentation-links.yaml b/.github/workflows/documentation-links.yaml index 342d3ac37..a30b45d65 100644 --- a/.github/workflows/documentation-links.yaml +++ b/.github/workflows/documentation-links.yaml @@ -13,4 +13,4 @@ jobs: steps: - uses: readthedocs/actions/preview@v1 with: - project-slug: "poliastro" + project-slug: "hapsira" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 000000000..2dbd3a27b --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,67 @@ +name: hapsira test suite + +on: + push: {} + schedule: + - cron: '30 9 7 * *' + +jobs: + + specifics: + strategy: + matrix: + tox-env: [ + "fast", + "online", + "slow", + "images" + ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install Python + uses: actions/setup-python@v4 + with: + python-version: "3.8" + - name: Update Python infrastructure + run: | + python -m pip install --upgrade pip + pip install -U tox + - name: Versions + run: + python --version + tox --version + - name: Run tests + run: | + tox -e tests38-${{ matrix.tox-env }} + + build: + strategy: + matrix: + python-version: [ + "3.8", + "3.9", + "3.10", + "3.11" + ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install pandoc + run: | + sudo apt-get install -y pandoc + - name: Install Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Update Python infrastructure + run: | + python -m pip install --upgrade pip + pip install -U tox + - name: Versions + run: + python --version + tox --version + - name: Run tests + run: | + tox diff --git a/.github/workflows/validation_trigger.yml b/.github/workflows/validation_trigger.yml index 95711c421..2a89c5daa 100644 --- a/.github/workflows/validation_trigger.yml +++ b/.github/workflows/validation_trigger.yml @@ -1,5 +1,5 @@ -# This workflow triggers poliastro/validation CI from poliastro/poliastro -# everytime a new commit is introduced in poliastro:main branch +# This workflow triggers hapsira/validation CI from pleiszenburg/hapsira +# everytime a new commit is introduced in hapsira:main branch name: Validation test cases on: @@ -12,18 +12,18 @@ on: workflow_dispatch: jobs: - - # Validate poliastro's new features + + # Validate hapsira's new features validation: runs-on: ubuntu-latest environment: validation-env # Steps to be followed during validation job steps: - - name: Trigger poliastro/validation + - name: Trigger hapsira/validation run: | curl -XPOST -u "${{ secrets.VALIDATION_USER }}:${{ secrets.VALIDATION_PASS }}" \ -H "Accept: application/vnd.github.v3+json" \ - -H "Content-Type: application/json" https://api.github.com/repos/poliastro/validation/actions/workflows/ci_actions.yml/dispatches \ + -H "Content-Type: application/json" https://api.github.com/repos/hapsira/validation/actions/workflows/ci_actions.yml/dispatches \ --data '{"ref": "main"}' \ --fail diff --git a/.gitignore b/.gitignore index d3db135be..0f665555d 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ coverage.xml # Sphinx documentation docs/_build/ +docs/source/autoapi/hapsira/ # PyBuilder target/ @@ -127,6 +128,9 @@ dmypy.json .idea .cache .venv +env*/ # General .DS_Store + +todo.md diff --git a/AUTHORS.md b/AUTHORS.md index 2c081f445..4a47f8b08 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,11 +1,13 @@ # Authors -Originally devised and implemented by [Juan Luis Cano Rodríguez](mailto:hello@juanlu.space). +Core developer: +- [Sebastian M. Ernst](mailto:ernst@pleiszenburg.de) -# Maintainers +Contributors, in alphabetical order: -poliastro is maintained thanks to: +- (TBD) -* [Juan Luis Cano Rodríguez](mailto:hello@juanlu.space) -* [Jorge Martinez Garrido](mailto:contact@jorgemartinez.space) +## Original Authors 2012 - 2023 + +This project began as a fork of `poliastro`, which was implemented and maintained by [Juan Luis Cano Rodríguez](mailto:hello@juanlu.space) and [Jorge Martinez Garrido](mailto:contact@jorgemartinez.space). diff --git a/CITATION.cff b/CITATION.cff deleted file mode 100644 index cd9cd8f42..000000000 --- a/CITATION.cff +++ /dev/null @@ -1,33 +0,0 @@ -# This CITATION.cff file was generated with cffinit. -# Visit https://bit.ly/cffinit to generate yours today! - -cff-version: 1.2.0 -title: poliastro -message: Please cite this software using these metadata. -type: software -authors: - - given-names: Juan Luis - family-names: Cano Rodriguez - email: hello@juanlu.space - orcid: 'https://orcid.org/0000-0002-2187-161X' - - given-names: Jorge - family-names: Martínez Garrido - email: contact@jorgemartinez.space - orcid: 'https://orcid.org/0000-0001-9622-2369' -identifiers: - - type: doi - value: 10.5281/zenodo.6817189 - description: poliastro v0.17.0 -repository-code: 'https://github.com/poliastro/poliastro/' -url: 'https://www.poliastro.space/' -abstract: >- - poliastro is a pure Python library for interactive - astrodynamics. -keywords: - - astrodynamics - - orbital mechanics - - physics - - celestial mechanics -license: MIT -version: v0.17.0 -date-released: '2022-07-10' diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 524eae8da..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,58 +0,0 @@ -# Code of Conduct for the poliastro community - -The community of participants in poliastro is made up of members from -around the globe with a diverse set of skills, personalities, and -experiences. It is through these differences that our community -experiences success and continued growth. We expect everyone in our -community to follow these guidelines when interacting with others both -inside and outside of our community. Our goal is to keep ours a -positive, inclusive, successful, and growing community. - -As members of the community, - -- We pledge to treat all people with respect and provide a harassment- - and bullying-free environment, regardless of sex, sexual orientation - and/or gender identity, disability, physical appearance, body size, - race, nationality, ethnicity, and religion. In particular, sexual - language and imagery, sexist, racist, or otherwise exclusionary - jokes are not appropriate. -- We pledge to respect the work of others by recognizing - acknowledgment/citation requests of original authors. As authors, we - pledge to be explicit about how we want our own work to be cited or - acknowledged. -- We pledge to welcome those interested in joining the community, and - realize that including people with a variety of opinions and - backgrounds will only serve to enrich our community. In particular, - discussions relating to pros/cons of various technologies, - programming languages, and so on are welcome, but these should be - done with respect, taking proactive measure to ensure that all - participants are heard and feel confident that they can freely - express their opinions. -- We pledge to welcome questions and answer them respectfully, paying - particular attention to those new to the community. We pledge to - provide respectful criticisms and feedback in forums, especially in - discussion threads resulting from code contributions. -- We pledge to be conscientious of the perceptions of the wider - community and to respond to criticism respectfully. We will strive - to model behaviors that encourage productive debate and - disagreement, both within our community and where we are criticized. - We will treat those outside our community with the same respect as - people within our community. -- We pledge to help the entire community follow the code of conduct, - and to not remain silent when we see violations of the code of - conduct. We will take action when members of our community violate - this code such as contacting - (all emails sent to this address will be treated with the strictest - confidence) or talking privately with the person. - -This code of conduct applies to all community situations online and -offline, including mailing lists, forums, social media, conferences, -meetings, associated social events, and one-to-one interactions. - -Parts of this code of conduct have been adapted from the Astropy code of -conduct. - -The Code of Conduct for the poliastro community is licensed under a -Creative Commons Attribution 4.0 International License. We encourage -other communities related to ours to use or adapt this code as they see -fit. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d70a9197e..341b6813f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,87 +1,50 @@ # Contributing -poliastro is a community project, all contributions are more than welcome! +`hapsira` is a community project, all contributions are more than welcome! ## What you can do ### Report bugs -Not only things can break, but also different people have -different use cases for the project. If you find anything that doesn't -work as expected or have suggestions, please open a new issue on our -[issue tracker](https://github.com/poliastro/poliastro/issues). +Not only things can break, but also different people have different use cases for the project. If you find anything that doesn't work as expected or have suggestions, please open a new issue on our [issue tracker](https://github.com/pleiszenburg/hapsira/issues). ### Participate in the chat -Most of the project discussions happen in [the project chat](http://chat.poliastro.space/), -where announcements are first made, newcomers ask questions, -and in general project users exchange all sorts of information. -[Join today!](http://chat.poliastro.space/) +Most of the project discussions happen in [the project chat](https://matrix.to/#/#hapsira:matrix.org), where announcements are first made, newcomers ask questions, and in general project users exchange all sorts of information. [Join today!](https://matrix.to/#/#hapsira:matrix.org) ### Improve the Documentation -Documentation can always be expanded and improved. -The docs are stored in text files under the `docs/source` directory, -and the Python classes and methods also feature inline docs -in the form of docstrings. +Documentation can always be expanded and improved. The docs are stored in text files under the `docs/source` directory, and the Python classes and methods also feature inline docs in the form of docstrings. ### Contribute your research scripts -We would love to give your Astrodynamics scripts a home! -Please head to [our `contrib/` directory](https://github.com/poliastro/poliastro/tree/main/contrib) -for further information. +We would love to give your Astrodynamics scripts a home! Please head to [our `contrib/` directory](https://github.com/pleiszenburg/hapsira/tree/main/contrib) for further information. ### Fix bugs and add new features -Code contributions are welcome! If you are looking for a place to start, -check out the ["good-first-issue" label](https://github.com/poliastro/poliastro/labels/good%20first%20issue) -on our issue tracker. Those tasks should be easier to fix than the others -and require less knowledge about the library. +Code contributions are welcome! If you are looking for a place to start, check out the ["good-first-issue" label](https://github.com/pleiszenburg/hapsira/labels/good%20first%20issue) on our issue tracker. Those tasks should be easier to fix than the others and require less knowledge about the library. ## How to contribute ### Work from GitHub -GitHub makes it very easy to make small contributions -directly from your browser, without having to install any additional software. -To get familiar with the process, you can do -[this interactive GitHub training](https://lab.github.com/githubtraining/introduction-to-github). -Once you have finished it, you can edit the poliastro source files -straight from GitHub and open pull requests from your browser. +GitHub makes it very easy to make small contributions directly from your browser, without having to install any additional software. To get familiar with the process, you can do [this interactive GitHub training](https://lab.github.com/githubtraining/introduction-to-github). Once you have finished it, you can edit the `hapsira` source files straight from GitHub and open pull requests from your browser. ### Work locally -For more complex contributions, it will be more effective -to set up a local development environment and work from your own computer. +For more complex contributions, it will be more effective to set up a local development environment and work from your own computer. -The most important thing is to understand how Git works. Git is a decentralized -version control system that preserves the history of the software, helps -tracking changes and allows for multiple versions of the code to exist -at the same time. To learn more, you can have a look at -[this Getting Started guide](https://docs.github.com/en/get-started/getting-started-with-git). +The most important thing is to understand how Git works. Git is a decentralized version control system that preserves the history of the software, helps tracking changes and allows for multiple versions of the code to exist at the same time. To learn more, you can have a look at [this Getting Started guide](https://docs.github.com/en/get-started/getting-started-with-git). -Finally, you might want to have an Integrated Development Environment (IDE) -that makes editing the source files easier. -If you are hesitant on what IDE or editor to use, -have a look at [PyCharm](https://www.jetbrains.com/pycharm/), -[Visual Studio Code](https://code.visualstudio.com/), -or [Spyder](https://www.spyder-ide.org/). +Finally, you might want to have an Integrated Development Environment (IDE) that makes editing the source files easier. If you are hesitant on what IDE or editor to use, have a look at [PyCharm](https://www.jetbrains.com/pycharm/), [Visual Studio Code](https://code.visualstudio.com/), or [Spyder](https://www.spyder-ide.org/). ### Work from a cloud environment -There are some cloud options that give you -the flexibility of a powerful IDE with a terminal, -all from your web browser so you don't have to install anything. -Two popular cloud environments for development are -[the GitHub web editor](https://github.dev/poliastro/poliastro) -and [Gitpod](https://gitpod.io/#https://github.com/poliastro/poliastro/). +There are some cloud options that give you the flexibility of a powerful IDE with a terminal, all from your web browser so you don't have to install anything. Two popular cloud environments for development are [the GitHub web editor](https://github.dev/pleiszenburg/hapsira) and [Gitpod](https://gitpod.io/#https://github.com/pleiszenburg/hapsira/). ## Command line instructions -In the sections below you can read step-by-step guides to -perform common development tasks on the command line. -All these instructions are meant for UNIX-like operating systems, -for example: +In the sections below you can read step-by-step guides to perform common development tasks on the command line. All these instructions are meant for UNIX-like operating systems, for example: - Linux (any distribution will work) - macOS @@ -89,18 +52,15 @@ for example: ### Set up a development environment -To set up a development environment you will need Git and Python -up and running. You should only need to do this once! +To set up a development environment you will need Git and Python up and running. You should only need to do this once! Start by setting up Git: 1. [Install Git](https://git-scm.com/) on your computer. 2. [Sign up to GitHub](https://github.com/). -3. [Fork poliastro](https://help.github.com/articles/fork-a-repo/). -4. [Clone your fork](https://help.github.com/articles/cloning-a-repository/) - (remote name will be `origin`) -5. Add an `upstream` remote with `git remote add upstream https://github.com/poliastro/poliastro.git` - and fetch its information with `git fetch upstream` +3. [Fork hapsira](https://help.github.com/articles/fork-a-repo/). +4. [Clone your fork](https://help.github.com/articles/cloning-a-repository/) (remote name will be `origin`) +5. Add an `upstream` remote with `git remote add upstream https://github.com/pleiszenburg/hapsira.git` and fetch its information with `git fetch upstream` 6. Set your `main` branch to track `upstream` using `git branch --set-upstream-to=upstream/main` Next, configure your Python environment: @@ -109,16 +69,13 @@ Next, configure your Python environment: 7. Create a Python virtual environment using `python -m venv .venv` 8. Activate it using `source .venv/bin/activate` 9. Upgrade the development dependencies using `python -m pip install -U pip setuptools wheel flit tox` -10. Install the code in development mode using `python -m pip install -e .` - (this means that the installed code will change as soon as you change it in the - download location). +10. Install the code in development mode using `python -m pip install -e .` (this means that the installed code will change as soon as you change it in the download location). And with this, you will be ready to start contributing! ### Pull request workflow -Every time you want to contribute some code or documentation to poliastro, -you will need to follow these steps: +Every time you want to contribute some code or documentation to `hapsira`, you will need to follow these steps: 1. Make sure that your `main` branch is up to date: `git switch main` (or `git checkout main`) and `git pull --rebase upstream main` @@ -128,9 +85,7 @@ you will need to follow these steps: 5. [Push to your fork](https://help.github.com/articles/pushing-to-a-remote/). 6. [Open a pull request!](https://help.github.com/articles/creating-a-pull-request/) -One branch corresponds to one pull request. This means that, -if you keep committing and pushing changes to the same branch, -the pull request will update automatically (you don't need to open a new one!). +One branch corresponds to one pull request. This means that, if you keep committing and pushing changes to the same branch, the pull request will update automatically (you don't need to open a new one!). When your pull request is merged, you can: @@ -138,14 +93,11 @@ When your pull request is merged, you can: 8. Delete your local branch: `git branch --delete descriptive-name-of-my-change` 9. Refresh your fork: `git fetch --prune origin` and `git push origin main` -Remember that, whenever you want to start a new pull request, -you need to start from step 1. +Remember that, whenever you want to start a new pull request, you need to start from step 1. ### Build the documentation -To build the docs, you will need some system dependencies. -On Debian-like systems (Ubuntu, Linux Mint, etc), -they can be installed running: +To build the docs, you will need some system dependencies. On Debian-like systems (Ubuntu, Linux Mint, etc), they can be installed running: ```console $ sudo apt-get update && sudo apt-get install \ @@ -166,8 +118,7 @@ or, alternatively: (.venv) $ make html ``` -After this, the new docs will be inside `build/html`. You can open them -by running an HTTP server: +After this, the new docs will be inside `build/html`. You can open them by running an HTTP server: ```console $ cd build/html @@ -179,22 +130,12 @@ And point your browser to . ### Make code changes -You want to contribute new features or fix existing behavior? You are awesome! -Before rushing out though, make sure if the new feature you propose -is within the scope of the library (best thing is to ask in -[the chat](http://chat.poliastro.space/)) -or that the fix you want to apply has a corresponding issue in the issue tracker. +You want to contribute new features or fix existing behavior? You are awesome! Before rushing out though, make sure if the new feature you propose is within the scope of the library (best thing is to ask in [the chat](https://matrix.to/#/#hapsira:matrix.org)) or that the fix you want to apply has a corresponding issue in the issue tracker. Apart from all the steps described above, you need to have these extra things in mind: -1. Add tests to your code. You have lots of examples in the `tests/` directory - to get inspiration from. All new features and fixes should be tested, - and in the ideal case the coverage rate should increase or stay the same. -2. To check if your code is correct, run `tox`. This command runs the code - style, the tests and build the documentation of the project. -3. Notice that you can run a subset of the tests by - passing extra arguments to pytest, for example running - `tox -e tests-fast -- -k "anomaly"` - -Automatic services will ensure your code works -on all the supported operating systems and Python versions. +1. Add tests to your code. You have lots of examples in the `tests/` directory to get inspiration from. All new features and fixes should be tested, and in the ideal case the coverage rate should increase or stay the same. +2. To check if your code is correct, run `tox`. This command runs the code style, the tests and build the documentation of the project. +3. Notice that you can run a subset of the tests by passing extra arguments to pytest, for example running `tox -e tests-fast -- -k "anomaly"` + +Automatic services will ensure your code works on all the supported operating systems and Python versions. diff --git a/COPYING b/LICENSE similarity index 87% rename from COPYING rename to LICENSE index b52df60ae..8178a1fa1 100644 --- a/COPYING +++ b/LICENSE @@ -1,6 +1,7 @@ The MIT License (MIT) -Copyright (c) 2012 Juan Luis Cano Rodríguez, Jorge Martínez Garrido, and the poliastro development team +Copyright (c) 2023-2024 Sebastian M. Ernst +Copyright (c) 2012-2023 Juan Luis Cano Rodríguez, Jorge Martínez Garrido, and the poliastro development team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/MANIFEST.in b/MANIFEST.in index bd6a0cb4a..48a408f91 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,5 @@ -include COPYING -include AUTHORS +include LICENSE +include AUTHORS.md recursive-include tests *.py *.html diff --git a/Makefile b/Makefile index e65508160..56f66fad4 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,22 @@ -DOCKER_BASE_IMAGE := "poliastro:dev" -DOCKER_CONTAINER_NAME := "poliastro-dev" +DOCKER_BASE_IMAGE := "hapsira:dev" +DOCKER_CONTAINER_NAME := "hapsira-dev" +docs: + tox -e docs image: Dockerfile pyproject.toml docker build \ - -t poliastro:dev \ - . + -t hapsira:dev \ + . docker: docker run \ - -it \ - --rm \ - --name ${DOCKER_CONTAINER_NAME} \ - --volume $(shell pwd):/code \ - --user $(shell id -u):$(shell id -g) \ - ${DOCKER_BASE_IMAGE} \ - bash + -it \ + --rm \ + --name ${DOCKER_CONTAINER_NAME} \ + --volume $(shell pwd):/code \ + --user $(shell id -u):$(shell id -g) \ + ${DOCKER_BASE_IMAGE} \ + bash -.PHONY: docker image +.PHONY: docs docker image diff --git a/README.md b/README.md index 7fe5a127c..5b04698a4 100644 --- a/README.md +++ b/README.md @@ -1,246 +1,99 @@ -> This project is intended to be a fork of [poliastro](https://github.com/poliastro/poliastro), project setup & rebranding are work in progress. +[![hapsira Logo](docs/source/_static/logo_readme.png)](https://hapsira.readthedocs.io/) -[![poliastro Logo](https://raw.githubusercontent.com/poliastro/poliastro/main/docs/source/_static/logo_readme.png)](https://docs.poliastro.space/en/stable/) -| **Name** | **Website** | **Authors** | **Maintainers** | **Version** | -|:---------:|:----------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:----------------------------------------------------:| -| poliastro | [https://www.poliastro.space](https://www.poliastro.space) | [Juan Luis Cano Rodriguez](https://orcid.org/0000-0002-2187-161X) [Jorge Martinez](https://orcid.org/0000-0001-9622-2369) | [poliastro development team](https://github.com/poliastro/poliastro/blob/main/AUTHORS.md) | [0.18.dev0](https://github.com/poliastro/poliastro/) | +# hapsira -[![poliastro_badge]](https://github.com/poliastro/poliastro) -[![ci_badge]](https://circleci.com/gh/poliastro/poliastro/?branch=main) -[![docs_badge]](https://docs.poliastro.space/en/latest/?badge=latest) -[![coverage_badge]](https://codecov.io/github/poliastro/poliastro?branch=main) -[![pre_commit_badge]](https://results.pre-commit.ci/latest/github/poliastro/poliastro/main) -[![python_badge]](https://pypi.org/project/poliastro) -[![pypi_badge]](https://pypi.org/project/poliastro) -[![license_badge]](https://opensource.org/licenses/MIT) -[![doi_badge]](https://zenodo.org/badge/latestdoi/11178845) -[![astropy_badge]](https://zenodo.org/badge/latestdoi/11178845) -[![mailing_badge]](https://groups.io/g/poliastro-dev) -[![chat_badge]](http://chat.poliastro.space/) -[![backers_badge]](https://opencollective.com/poliastro/) -[![sponsors_badge]](https://opencollective.com/poliastro/) -[![binder_badge]](https://mybinder.org/v2/gh/poliastro/poliastro/main?labpath=index.ipynb) -[![code_badge]]() +**🚀 Astrodynamics in Python - a `poliastro` fork** +[![ci_badge](https://github.com/pleiszenburg/hapsira/actions/workflows/test.yaml/badge.svg?branch=main "Build Status: main / release")](https://github.com/pleiszenburg/hapsira/actions/workflows/test.yaml) +[![docs_badge](https://readthedocs.org/projects/hapsira/badge/?version=latest "Build Status: Docs")](https://hapsira.readthedocs.io/en/latest/?badge=latest) +[![pre_commit_badge](https://results.pre-commit.ci/badge/github/pleiszenburg/hapsira/main.svg "pre-commit badge")](https://results.pre-commit.ci/latest/github/pleiszenburg/hapsira/main) +[![python_badge](https://img.shields.io/pypi/pyversions/hapsira?logo=pypi&logoColor=white "python badge")](https://pypi.org/project/hapsira) +[![pypi_badge](https://img.shields.io/pypi/v/hapsira.svg?logo=Python&logoColor=white?labelColor=blue "pypi badge")](https://pypi.org/project/hapsira) +[![license_badge](https://img.shields.io/badge/license-MIT-blue.svg?logo=open%20source%20initiative&logoColor=white "license badge")](https://opensource.org/licenses/MIT) +[![mailing_badge](https://img.shields.io/badge/mailing%20list-groups.io-8cbcd1.svg "mailing badge")](https://groups.io/g/hapsira-dev) +[![chat_badge](https://img.shields.io/matrix/hapsira:matrix.org.svg?logo=Matrix&logoColor=white "chat badge")](https://matrix.to/#/#hapsira:matrix.org) -poliastro is an open source ([MIT](#License)) pure Python library for interactive -Astrodynamics and Orbital Mechanics, with a focus on ease of use, speed, and -quick visualization. It provides a simple and intuitive API, and handles -physical quantities with units. -Some features include orbit propagation, solution of the Lambert\'s problem, -conversion between position and velocity vectors and classical orbital elements -and orbit plotting, among others. It focuses on interplanetary applications, -but can also be used to analyze artificial satellites in Low-Earth Orbit (LEO). +## Synopsis -If you use poliastro on your project, please [let us know]. Use the DOI to cite -poliastro in your publications: +`hapsira` is an open source ([MIT](https://opensource.org/licenses/MIT)) pure Python library for interactive Astrodynamics and Orbital Mechanics, with a focus on ease of use, speed, and quick visualization. It provides a simple and intuitive API, and handles physical quantities with units. Its features include orbit propagation, solution of Lambert\'s problem, conversion between position and velocity vectors and classical orbital elements and orbit plotting, among others. It focuses on interplanetary applications, but can also be used to analyze artificial satellites in Low-Earth Orbit (LEO). - Juan Luis Cano Rodríguez, Jorge Martinez, et al.. (2023). poliastro: poliastro 0.17.0. Zenodo. 10.5281/zenodo.6817189 +![Multiple examples image](docs/source/_static/examples.png) -![Multiple examples image](https://github.com/poliastro/poliastro/raw/main/docs/source/_static/examples.png) - - -## Requirements - -poliastro requires the following Python packages: - -- [numpy](https://numpy.org/) for basic numerical routines -- [astropy](https://www.astropy.org/) for physical units and time handling -- [numba](https://numba.pydata.org/) for accelerating the code -- [jplephem](https://github.com/brandon-rhodes/python-jplephem) for the planetary ephemerides using SPICE kernels -- [matplotlib](https://matplotlib.org/) for orbit plotting -- [plotly](https://plotly.com/) for 2D and 3D interactive orbit plotting -- [scipy](https://scipy.org/) for root finding and numerical propagation - -poliastro is supported on Linux, macOS and Windows on Python 3.8 to 3.10. +This project is a fork of the as of October 2023 unmaintained & archived [poliastro](https://github.com/poliastro/poliastro) package. ## Installation -Multiple installation methods are supported by poliastro, including: +`hapsira` is supported on Linux, macOS and Windows on Python 3.8 to 3.11. Python 3.8 support will be dropped and Python 3.12 support will be added as soon as [numba 0.59 gets released](https://github.com/numba/numba/issues/9197). + +Multiple installation methods are supported by `hapsira`, including: | **Logo** | **Platform** | **Command** | |:-----------------------------------------------------------------:|:------------:|:---------------------------------------------------------------------------------:| -| ![PyPI logo](https://simpleicons.org/icons/pypi.svg) | PyPI | ``python -m pip install poliastro`` | -| ![Conda Forge logo](https://simpleicons.org/icons/condaforge.svg) | Conda Forge | ``conda install poliastro --channel conda-forge`` | -| ![GitHub logo](https://simpleicons.org/icons/github.svg) | GitHub | ``python -m pip install https://github.com/poliastro/poliastro/archive/main.zip`` | - -For other installation methods, see the [alternative installation methods]. - - -## Documentation - -Complete documentation, including a [quickstart guide] and an [API reference], can -be read on the wonderful [Read the Docs]. Multi-version documentation includes: - -* [Development documentation](https://docs.poliastro.space/en/latest/) -* [Stable documentation](https://docs.poliastro.space/en/stable/) - +| ![PyPI logo](https://simpleicons.org/icons/pypi.svg) | PyPI | ``python -m pip install hapsira`` | +| ![Conda Forge logo](https://simpleicons.org/icons/condaforge.svg) | Conda Forge | ``conda install hapsira --channel conda-forge`` | +| ![GitHub logo](https://simpleicons.org/icons/github.svg) | GitHub | ``python -m pip install https://github.com/pleiszenburg/hapsira/archive/main.zip`` | -## Examples, background and talks +For other installation methods, see the [alternative installation methods](https://hapsira.readthedocs.io/en/stable/installation.html#alternative-installation-methods). -There is a great variety of examples demostrating the capabilities of -poliastro. Examples can be accessed in various ways: -* Examples source code collected in the [examples directory] -* Rendered [gallery of examples] presented in the documentation -* Interactive examples powered by [binder] so users can try poliastro without installing it +## Migrating from `poliastro` to `hapsira` -poliastro is also promoted through conferences and talks. These are the latest -talks in some of the most popular conferences about scientific software: +Currently, both packages are near-identical and should therefore be fully compatible. Potentially breaking changes will be added here and in the documentation. -| **Conference** | **Talk** | -|:---------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| SciPy 2022 | [Per Python ad astra: Interactive Astrodynamics with poliastro](https://www.youtube.com/watch?v=0GqdIRdDe9c) | -| OSCW 2019 | [Interplanetary mission analysis with poliastro](https://www.youtube.com/watch?v=0GqdIRdDe9c) | -| EuroSciPy 2019 | [Can we make Python fast without sacrificing readability? numba for Astrodynamics](https://pyvideo.org/euroscipy-2019/can-we-make-python-fast-without-sacrificing-readability-numba-for-astrodynamics.html) | -| EuroPython 2016 | [Per Python ad Astra](https://pyvideo.org/europython-2016/per-python-ad-astra.html) | +## Documentation -## License - -poliastro is released under the MIT license, hence allowing commercial use of -the library. Please refer to the [COPYING] file. - - The MIT License (MIT) - - Copyright (c) 2012-2023 Juan Luis Cano Rodríguez, Jorge Martínez Garrido, and the poliastro development team +Complete documentation, including a [quickstart guide](https://hapsira.readthedocs.io/en/stable/quickstart.html) and an [API reference](https://hapsira.readthedocs.io/en/latest/api.html) can be read on [Read the Docs](https://readthedocs.org). - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. +## Examples - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. +There is a great variety of examples demonstrating the capabilities of `hapsira`. Examples can be accessed in various ways: -If you are planning to use poliastro with commercial purposes consider -[sponsoring the project](#Backers-and-sponsors). +* Examples source code collected in the [examples directory](https://github.com/pleiszenburg/hapsira/tree/main/docs/source/examples) +* Rendered [gallery of examples](https://hapsira.readthedocs.io/en/latest/gallery.html) presented in the documentation ## Problems and suggestions -If for any reason you get an unexpected error message or an incorrect result, -or you want to let the developers know about your use case, please open a new -issue in the [issue tracker] and we will try to answer promptly. +If for any reason you get an unexpected error message or an incorrect result, or you want to let the developers know about your use case, please open a new issue in the [issue tracker](https://github.com/pleiszenburg/hapsira/issues) and we will try to answer promptly. ## Contributing and community support -This project exists thanks to all the people who contribute! poliastro is a -community project, hence all contributions are more than welcome! For more -information, head to the [CONTRIBUTING.md] file. - -Release announcements and general discussion take place on our [mailing list]. - -For further clarifications and discussions, feel free to join poliastro's [chat -room]. - -![Contributors image](https://opencollective.com/poliastro/contributors.svg?width=890&button=false) +This project exists thanks to all the people who contribute! `hapsira` is a community project, hence all contributions are more than welcome! For more information, head to the [CONTRIBUTING.md](https://github.com/pleiszenburg/hapsira/blob/main/CONTRIBUTING.md) file. +Release announcements and general discussion take place on our [mailing list](https://groups.io/g/hapsira-dev). -## Backers and sponsors +For further clarifications, feature suggestions and discussions, feel free to join `hapsira`'s [chat room](https://matrix.to/#/#hapsira:matrix.org). -poliastro requires finnacial support to mantain its high quality standars. The -money is used to renew the web domain and updating the documentation hosting -subscription among others. -If you would like to support poliastro, consider [becoming a backer] or -[becoming a sponsor]. +## Commercial support -**Thanks to all our backers!** - -[![Backers](https://opencollective.com/poliastro/backers.svg?width=890)](https://opencollective.com/poliastro#backer) - - -**Thanks to all our sponsors!** - -[![Sponsors](https://opencollective.com/poliastro/sponsor/0/avatar.svg)](https://opencollective.com/poliastro/sponsor/0/website) -[![Sponsors](https://opencollective.com/poliastro/sponsor/1/avatar.svg)](https://opencollective.com/poliastro/sponsor/0/website) +Commercial support is provided by [pleiszenburg.de - Independent Scientific Services](https://pleiszenburg.de). ## Frequently asked questions * **What's up with the name?** - poliastro comes from Polimi, which is the shortened name of the Politecnico di - Milano, see the [acknowledgement from the original author]. *Grazie mille!* + "hapsira" is a shorthand for "[hapësira kozmike](https://sq.wikipedia.org/wiki/Hap%C3%ABsira_kozmike)", which is Albanian for "space". Why Albanian? Other than virtually every reasonable English (and German for that matter) package name related to this topic already taken, [Wag the Dog](https://en.wikipedia.org/wiki/Wag_the_Dog) is a film definitely worth watching. + +* **Why a fork of poliastro?** + + See [here](https://github.com/poliastro/poliastro/issues/1640). -* **Is poliastro validated?** +* **Is hapsira validated?** - Yes! poliastro is a community project that strives to be easy to use, while at - the same time producing correct results [that are validated] against other - [commonly used Astrodynamics software] such as GMAT and Orekit. + `hapsira` is a fork of `poliastro`, [which was validated](https://github.com/poliastro/validation/) against other [commonly used Astrodynamics software](https://hapsira.readthedocs.io/en/stable/related.html) such as GMAT and Orekit. Currently, `hapsira`'s results are matching those of `poliastro`. -* **Can I suggest new features for poliastro?** +* **Can I suggest new features for hapsira?** - Sure, we encourage you to [open an issue] so we can discuss future feature - additions! + Sure, we encourage you to [open an issue](https://github.com/pleiszenburg/hapsira/issues) so we can discuss future feature additions! * **What's the future of the project?** - poliastro is actively maintained and receiving an influx of new contributors - thanks to the generous sponsorship of Google, the European Space Agency, and - NumFOCUS. The best way to get an idea of the roadmap is to see the - [milestones] of the project. - - - - -[quickstart guide]: https://docs.poliastro.space/en/stable/quickstart.html -[API reference]: https://docs.poliastro.space/en/latest/api.html -[Read the docs]: https://readthedocs.org -[binder]: https://mybinder.org/ -[alternative installation methods]: https://docs.poliastro.space/en/stable/installation.html#alternative-installation-methods -[issue tracker]: https://github.com/poliastro/poliastro/issues -[CONTRIBUTING.md]: https://github.com/poliastro/poliastro/blob/main/CONTRIBUTING.md -[COPYING]: https://github.com/poliastro/poliastro/blob/main/COPYING -[mailing list]: https://groups.io/g/poliastro-dev -[chat room]: http://chat.poliastro.space/ -[let us know]: mailto:hello@juanlu.space -[examples directory]: https://github.com/poliastro/poliastro/tree/main/docs/source/examples -[become a sponsor]: https://opencollective.com/poliastro/sponsor/0/website -[docs_stable]: https://docs.poliastro.space/en/stable/ -[docs_latest]: https://docs.poliastro.space/en/latest/ -[that are validated]: https://github.com/poliastro/validation/ -[commonly used Astrodynamics software]: https://docs.poliastro.space/en/stable/related.html -[open an issue]: https://github.com/poliastro/validation/issues/new -[milestones]: https://github.com/poliastro/poliastro/milestones -[Want to be a backer]: https://opencollective.com/poliastro#backer -[gallery of examples]: https://docs.poliastro.space/en/latest/gallery.html -[becoming a backer]: https://opencollective.com/poliastro#backer -[becoming a sponsor]: https://opencollective.com/poliastro#sponsor -[acknowledgement from the original author]: https://docs.poliastro.space/en/stable/history.html#acknowledgement-from-the-original-author - - - - -[poliastro_badge]: https://img.shields.io/badge/poliastro-gray.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAbxJREFUOE+Vk79LAmEYx7/njzulHKLQQIKwiyLuohykxqJBaHMNwvorcmltbG6LhnBqrMiWlmYl0SydaoqgwbLz9DS/B++heUI98A73vs/zfZ7n8zwndXsGF6tUKojFYvD7/W7Pzp00SiCXyyGTySCZTCKVSiEej7sKjRSgdzqdRq1WQzabRTQa/b8Ag8vlMsLhMBKJxN8F2u02LMtyAur1OqqFe+jaEsYi6oDQUAuGYcDn89nHsR7nq+N9zKxsQdvcGS3QbDYhyzJYQafTGSzZMvBQeoau61AUZXgKLJkTZaDX64XH40Gr1bIdKWqaJorFIjRNs995aE4LIjsdOXsGK9YT0HqHoawjEAggf3OJ2eUVBCcmnSoGBEQ2BsteA6juAY08unNn+HgN4fboEItqDAsHR6MF2B+rkMnwcRtov6E7fwGzM42781PEdQ2h1TV3AZInB6nX/8l1AbsbixhXJBgmUCqV7GWKRCJguwKk0wLhESQnEAwGcVd8wZTnE9+NLxuoqqo2B0mSHMgDEPnB0kmXDPp3gfesjHCZgFMRNrRIdKYxq9hGESgg9y+I68/EdsQOCGeKUPS3/QDL/fnRmszmsAAAAABJRU5ErkJggg== "poliastro" -[orcid_badge]: https://img.shields.io/badge/id-0000--0002--2187--161X-a6ce39.svg "orcid badge" -[ci_badge]: https://img.shields.io/circleci/build/gh/poliastro/poliastro/main?logo=CircleCi "ci badge" -[docs_badge]: https://img.shields.io/readthedocs/poliastro/stable.svg?logo=read%20the%20docs&logoColor=white&label=docs&version=stable "docs badge" -[coverage_badge]: https://img.shields.io/codecov/c/github/poliastro/poliastro.svg?logo=Codecov&logoColor=white "coverage badge" -[pre_commit_badge]: https://results.pre-commit.ci/badge/github/poliastro/poliastro/main.svg "pre-commit badge" -[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg?logo=open%20source%20initiative&logoColor=white "license badge" -[doi_badge]: https://zenodo.org/badge/11178845.svg "doi badge" -[astropy_badge]: http://img.shields.io/badge/powered%20by-AstroPy-orange.svg "astropy badge" -[mailing_badge]: https://img.shields.io/badge/mailing%20list-groups.io-8cbcd1.svg -[chat_badge]: https://img.shields.io/matrix/poliastro:matrix.org.svg?logo=Matrix&logoColor=white "chat badge" -[backers_badge]: https://img.shields.io/opencollective/backers/poliastro?logo=open%20collective&logoColor=white "backers badge" -[sponsors_badge]: https://img.shields.io/opencollective/sponsors/poliastro?logo=open%20collective&logoColor=white "sponsors badge" -[python_badge]: https://img.shields.io/pypi/pyversions/poliastro?logo=pypi&logoColor=white "python badge" -[pypi_badge]: https://img.shields.io/pypi/v/poliastro.svg?logo=Python&logoColor=white?labelColor=blue "pypi badge" -[code_badge]: https://img.shields.io/badge/Code%20style-black%20isort%20flake8-black "code badge" -[binder_badge]: https://img.shields.io/badge/Binder-examples-green.svg?logo=data:image/png;base64,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 "binder badge" + The best way to get an idea of the roadmap is to see the [milestones](https://github.com/pleiszenburg/hapsira/milestones) of the project. diff --git a/binder/environment.yml b/binder/environment.yml deleted file mode 100644 index b50af1b33..000000000 --- a/binder/environment.yml +++ /dev/null @@ -1,4 +0,0 @@ -name: python 3.10 -dependencies: -- python=3.10 -- jupytext>=1.13.3 \ No newline at end of file diff --git a/binder/labconfig/default_setting_overrides.json b/binder/labconfig/default_setting_overrides.json deleted file mode 100644 index f175b9367..000000000 --- a/binder/labconfig/default_setting_overrides.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@jupyterlab/docmanager-extension:plugin": { - "defaultViewers": { - "markdown": "Jupytext Notebook", - "myst": "Jupytext Notebook" - } - } -} - diff --git a/binder/postBuild b/binder/postBuild deleted file mode 100644 index 34ef85fd8..000000000 --- a/binder/postBuild +++ /dev/null @@ -1,6 +0,0 @@ -# Stop everything if one command fails -set -e - -# See https://github.com/mwouts/jupytext/issues/803#issuecomment-982170660 -mkdir -p ${HOME}/.jupyter/labconfig -cp binder/labconfig/* ${HOME}/.jupyter/labconfig diff --git a/codemeta.json b/codemeta.json deleted file mode 100644 index 4463b1524..000000000 --- a/codemeta.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "@context": "https://doi.org/10.5063/schema/codemeta-2.0", - "@type": "SoftwareSourceCode", - "license": "https://spdx.org/licenses/MIT", - "codeRepository": "https://github.com/poliastro/poliastro", - "datePublished": "2013-07-07", - "dateModified": "2020-05-08", - "downloadUrl": "https://github.com/poliastro/poliastro.git", - "issueTracker": "https://github.com/poliastro/poliastro/issues", - "name": "poliastro", - "version": "0.14.0", - "description": "poliastro is an open-source pure Python package dedicated to problems arising in Astrodynamics and Orbital Mechanics, such as orbit propagation, solution of Lambert's problem, conversion between position and velocity vectors, and classical orbital elements and orbit plotting, focusing on interplanetary applications.", - "releaseNotes": "https://docs.poliastro.space/en/v0.14.0/changelog.html#poliastro-0-14-0-2020-05-08", - "programmingLanguage": [ - "Python3" - ], - "softwareRequirements": [ - "NumPy", - "Astropy", - "numba", - "jplephem", - "matplotlib", - "plotly", - "SciPy" - ], - "author": [ - { - "@type": "Person", - "givenName": "Juan Luis", - "familyName": "Cano Rodr\\u00edguez", - "affiliation": { - "@type": "Organization", - "name": "Satellogic" - } - }, - { - "@type": "Person", - "givenName": "Antonio", - "familyName": "Hidalgo" - }, - { - "@type": "Person", - "givenName": "Shreyas", - "familyName": "Bapat", - "affiliation": { - "@type": "Organization", - "name": "IIT Mandi" - } - }, - { - "@type": "Person", - "givenName": "Jorge", - "affiliation": { - "@type": "Organization", - "name": "poliastro" - } - }, - { - "@type": "Person", - "givenName": "Nikita", - "familyName": "Astrakhantsev", - "affiliation": { - "@type": "Organization", - "name": "University of Zurich" - } - }, - { - "@type": "Person", - "givenName": "Chatziargyriou", - "familyName": "Eleftheria" - }, - { - "@type": "Person", - "givenName": "Daniel", - "familyName": "Lubi\\u00e1n" - }, - { - "@type": "Person", - "givenName": "Alberto Lorenzo ", - "familyName": "M\\u00e1rquez", - "affiliation": { - "@type": "Organization", - "name": "Dassault Syst\\u00e8mes" - } - }, - { - "@type": "Person", - "givenName": "Abhishek ", - "familyName": "Chaurasia" - }, - { - "@type": "Person", - "givenName": "Emily", - "familyName": "Selwood" - }, - { - "@type": "Person", - "givenName": "Meu" - }, - { - "@type": "Person", - "givenName": "Pablo Rodr\\u00edguez ", - "familyName": "Robles", - "affiliation": { - "@type": "Organization", - "name": "Technical University of Munich (TUM)" - } - }, - { - "@type": "Person", - "givenName": "Tomek", - "familyName": "Mrugalski", - "affiliation": { - "@type": "Organization", - "name": "Internet Systems Consortium" - } - }, - { - "@type": "Person", - "givenName": "Helge", - "familyName": "Eichhorn" - }, - { - "@type": "Person", - "givenName": "Greg", - "familyName": "Lindahl" - }, - { - "@type": "Person", - "givenName": "Andrej", - "familyName": "Rode" - }, - { - "@type": "Person", - "givenName": "Himanshu ", - "familyName": "Garg" - }, - { - "@type": "Person", - "givenName": "aOrionis" - }, - { - "@type": "Person", - "givenName": "Ian", - "familyName": "DesJardin" - }, - { - "@type": "Person", - "givenName": "Hrishikesh", - "familyName": "Goyal" - }, - { - "@type": "Person", - "givenName": "priyanshu", - "familyName": "rohilla" - }, - { - "@type": "Person", - "givenName": "AntoniiaK" - }, - { - "@type": "Person", - "givenName": "Angala" - }, - { - "@type": "Person", - "givenName": "Ahmada", - "familyName": "Yusril" - }, - { - "@type": "Person", - "givenName": "Sarthak", - "familyName": "Jain", - "affiliation": { - "@type": "Organization", - "name": "IIT Indore" - } - }, - { - "@type": "Person", - "givenName": "Syed Osama Hussain" - }, - { - "@type": "Person", - "givenName": "Ole Streicher", - "affiliation": { - "@type": "Organization", - "name": "Leibniz Institute for Astrophysics" - } - }, - { - "@type": "Person", - "givenName": "Iv\\u00e1n Castro Fern\\u00e1ndez" - }, - { - "@type": "Person", - "givenName": "Fabian P. Schmidt" - }, - { - "@type": "Person", - "givenName": "Divyansh", - "familyName": "Raina" - } - ] -} \ No newline at end of file diff --git a/contrib/CR3BP/CR3BP.py b/contrib/CR3BP/CR3BP.py index 12f3d5de8..1b93cabc4 100644 --- a/contrib/CR3BP/CR3BP.py +++ b/contrib/CR3BP/CR3BP.py @@ -32,7 +32,7 @@ from numba import njit as jit import numpy as np -from poliastro._math.ivp import DOP853, solve_ivp +from hapsira._math.ivp import DOP853, solve_ivp @jit @@ -138,22 +138,10 @@ def getUdiff_CR3BP(r_, mu): # computing the double derivates with position Uxx = 1 - (1 - mu) / r13**3 - mu / r23**3 - ( - +3 * (1 - mu) * (rx + mu) ** 2 / r13**5 - + 3 * mu * (rx + mu - 1) ** 2 / r23**5 - ) - Uyy = ( - 1 - - (1 - mu) / r13**3 - - mu / r23**3 - + 3 * (1 - mu) * ry**2 / r13**5 - ) + (+3 * (1 - mu) * (rx + mu) ** 2 / r13**5 + 3 * mu * (rx + mu - 1) ** 2 / r23**5) + Uyy = 1 - (1 - mu) / r13**3 - mu / r23**3 + 3 * (1 - mu) * ry**2 / r13**5 +3 * mu * ry**2 / r23**5 - Uzz = ( - -(1 - mu) / r13**3 - - mu / r23**3 - + 3 * (1 - mu) * rz**2 / r13**5 - ) + Uzz = -(1 - mu) / r13**3 - mu / r23**3 + 3 * (1 - mu) * rz**2 / r13**5 +3 * mu * rz**2 / r23**5 Uxy = ( 3 * ry * (1 - mu) * (rx + mu) / r13**5 diff --git a/contrib/CR3BP/README.md b/contrib/CR3BP/README.md index ffd32dbca..a6a1794a1 100644 --- a/contrib/CR3BP/README.md +++ b/contrib/CR3BP/README.md @@ -22,7 +22,7 @@ ## Functionality I Required Help With - Integration of code with astropy constants and units without breaking JIT Compilation -- Integration of ploting with existing poliastro interactive plotter (currently in the test file I use matplotlib and mplot3d) +- Integration of ploting with existing hapsira interactive plotter (currently in the test file I use matplotlib and mplot3d) ## About Me I am Kevin, a Space Engineering graduate from Politecnico di Milano. I love working with mission design, flight dynamics and simulations. Most of my work was done with MATLAB and I have some experience with C++, but I am quite a noob with Python. So in case you find any error in my implementation, discussion of new functionality to add and improvement to my code, feel free to contact me through my email. diff --git a/contrib/CR3BP/test_run_CR3BP.py b/contrib/CR3BP/test_run_CR3BP.py index 92797a901..ffab728b9 100644 --- a/contrib/CR3BP/test_run_CR3BP.py +++ b/contrib/CR3BP/test_run_CR3BP.py @@ -22,7 +22,7 @@ import matplotlib.pyplot as plt import numpy as np -from poliastro.bodies import Earth, Moon +from hapsira.bodies import Earth, Moon # Earth-Moon system properties k1 = Earth.k.to(u.km**3 / u.s**2).value diff --git a/contrib/README.md b/contrib/README.md index 52bdeb924..81103f83f 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -1,7 +1,7 @@ # Community contributions The `contrib` directory contains community contributions -that are not yet ready to be part of the poliastro API, +that are not yet ready to be part of the hapsira API, but are nonetheless useful for Astrodynamics Python users. If you have a small script or set of them @@ -28,8 +28,8 @@ please follow these steps: specifying any required dependencies. And if you have any questions, -please [join our chat](http://chat.poliastro.space) -or [open an issue](https://github.com/poliastro/poliastro/issues/new)! +please [join our chat](http://chat.hapsira.space) +or [open an issue](https://github.com/hapsira/hapsira/issues/new)! Note that: @@ -40,6 +40,6 @@ Note that: so either they should be pure Python or be written in a compiled language with a Python wrapper. - All contributions will be permissively licensed with the MIT license, - the one that poliastro uses. + the one that hapsira uses. If you don't agree with this, we ask you to find a different place to share your contribution. diff --git a/contrib/cr3bp_DhruvJ/cr3bp_PO_master.py b/contrib/cr3bp_DhruvJ/cr3bp_PO_master.py index e66d86873..396bd698f 100644 --- a/contrib/cr3bp_DhruvJ/cr3bp_PO_master.py +++ b/contrib/cr3bp_DhruvJ/cr3bp_PO_master.py @@ -221,9 +221,7 @@ def single_shooter( # Update Free variable vector, include PALC constraint if PALC is being used if palc_args is None: - self.xfree = self.newton_raphson_update( - self.xfree, FX, self.DF - ) + self.xfree = self.newton_raphson_update(self.xfree, FX, self.DF) else: DG[:-1, :] = self.DF DG[-1, :] = palc_args[ @@ -343,9 +341,7 @@ def __free_vars_setup_update(self, free_vars, purpose="update"): else: self.ic[self.stm_col_index] = self.xfree - def __constraints_setup_update( - self, constraints, results_stm, purpose="update" - ): + def __constraints_setup_update(self, constraints, results_stm, purpose="update"): """Computes intial xconstraint and xdesired Vector and Updates the two after computing a new xfree Parameters ---------- @@ -383,15 +379,11 @@ def __constraints_setup_update( # Setup/Update Constraint Vector and Desired vector, xconstraint where FX = xconstraint - xdesired if "jc" in constraints: - self.xconstraint[:-1] = results_stm["states"][ - -1, self.stm_row_index - ] + self.xconstraint[:-1] = results_stm["states"][-1, self.stm_row_index] self.xconstraint[-1] = self.JC(self.ic) # JC of IC self.xdesired[-1] = self.JCd # Desired JC else: - self.xconstraint = results_stm["states"][ - -1, self.stm_row_index - ] + self.xconstraint = results_stm["states"][-1, self.stm_row_index] # Updated desired to be inital state of orbit if self.sym_period_targ == 1: @@ -550,9 +542,7 @@ def __compute_DF( ) # Account for Phase constraint with PALC if palc_args is not None: - self.DF[-1, : len(palc_args["dx/dtheta"])] = palc_args[ - "dx/dtheta" - ] + self.DF[-1, : len(palc_args["dx/dtheta"])] = palc_args["dx/dtheta"] def newton_raphson_update(self, xfree, FX, DG): """Multi-dimensional Newton-Raphson Method to update inital guess. @@ -763,9 +753,7 @@ def local_manifold_gen( if get_initial_states is False: local_manifold_states = np.zeros((teval_len, 6)) - self.teval = np.linspace(0, abs(prop_time), teval_len) * np.sign( - prop_time - ) + self.teval = np.linspace(0, abs(prop_time), teval_len) * np.sign(prop_time) int_method_orig = self.int_method self.int_method = "DOP853" @@ -829,9 +817,7 @@ def global_manifold_gen( # Obtain states at dififerent times along PO and STM(tf,0) int_method_orig = self.int_method self.int_method = "boost" - result_stm = self.propagate( - ic=po_ic, tf=tf_po_state[count_po_states] - ) + result_stm = self.propagate(ic=po_ic, tf=tf_po_state[count_po_states]) # eigenvect of nth invariant curve = STM(tf_i,0)*eigenvector of the first invar curve eigvector_tfi = np.real( @@ -843,9 +829,7 @@ def global_manifold_gen( self.int_method = int_method_orig - global_manifold_states[ - count_po_states, :, : - ] = self.local_manifold_gen( + global_manifold_states[count_po_states, :, :] = self.local_manifold_gen( dist=dist, eigenvect_manifold=eigvector_tfi, prop_time=prop_time, diff --git a/contrib/cr3bp_DhruvJ/cr3bp_model_master.py b/contrib/cr3bp_DhruvJ/cr3bp_model_master.py index 7d20d5b2e..99a874747 100644 --- a/contrib/cr3bp_DhruvJ/cr3bp_model_master.py +++ b/contrib/cr3bp_DhruvJ/cr3bp_model_master.py @@ -155,7 +155,9 @@ def propagate( (ic, np.identity(6).flatten()) ) # Appends the IC for STM: IC[6x1] + I_6x6 elif len(ic) == 42: - self.stm_bool = 1 # To make sure stm_bool is set to 1 if all 42 states are passed + self.stm_bool = ( + 1 # To make sure stm_bool is set to 1 if all 42 states are passed + ) if len(ic) == 6: stm_bool == 0 elif len(ic) != 6 and len(ic) != 42: @@ -182,9 +184,7 @@ def xcross(t, y): ): # Terminates integration when event encountered, solution is hit from from either direction: crossising -y to +y region or +y to -y region, that is crossing XZ or XY plane xcross.terminal = True xcross.direction = 0 - elif ( - self.xcross_cond == 2 - ): # Track events when crossing -y to +y region + elif self.xcross_cond == 2: # Track events when crossing -y to +y region xcross.terminal = True xcross.direction = 1 else: # Does not track any events @@ -192,10 +192,7 @@ def xcross(t, y): # Numerical Integration # Uses a custom events function during propagation - if ( - self.custom_events_func is not None - and use_custom_events_func is True - ): + if self.custom_events_func is not None and use_custom_events_func is True: fun = solve_ivp( self.__Nondim_DE_CR3BP_STM, [t0, tf], @@ -372,9 +369,7 @@ def rel_dist_cr3bp(self, state=None): if state is None: state = self.ic - dist_p1_p3 = ( - (state[0] + self.mu) ** 2 + state[1] ** 2 + state[2] ** 2 - ) ** 0.5 + dist_p1_p3 = ((state[0] + self.mu) ** 2 + state[1] ** 2 + state[2] ** 2) ** 0.5 dist_p2_p3 = ( (state[0] - 1 + self.mu) ** 2 + state[1] ** 2 + state[2] ** 2 ) ** 0.5 @@ -467,9 +462,7 @@ def ui_partials_acc_cr3bp(self, state=None): x_plus_mu = state[0] + self.mu # x+mu x_minus_1_plus_mu = state[0] - 1 + self.mu # x-1+mu - one_minus_mu_dist_p1_p3_3 = ( - one_minus_mu / dist_p1_p3**3 - ) # (1-mu)/d13^3 + one_minus_mu_dist_p1_p3_3 = one_minus_mu / dist_p1_p3**3 # (1-mu)/d13^3 mu_dist_p2_p3_3 = self.mu / dist_p2_p3**3 # mu/d23^3 # Calculate Ux, Uy, Uz, ax, ay, az @@ -479,9 +472,7 @@ def ui_partials_acc_cr3bp(self, state=None): - mu_dist_p2_p3_3 * x_minus_1_plus_mu ) Uy = ( - state[1] - - one_minus_mu_dist_p1_p3_3 * state[1] - - mu_dist_p2_p3_3 * state[1] + state[1] - one_minus_mu_dist_p1_p3_3 * state[1] - mu_dist_p2_p3_3 * state[1] ) Uz = -one_minus_mu_dist_p1_p3_3 * state[2] - mu_dist_p2_p3_3 * state[2] ax = 2 * state[4] + Ux diff --git a/contrib/cr3bp_DhruvJ/cr3bp_po_fam_continuation.py b/contrib/cr3bp_DhruvJ/cr3bp_po_fam_continuation.py index 01f90e043..f494ecc19 100644 --- a/contrib/cr3bp_DhruvJ/cr3bp_po_fam_continuation.py +++ b/contrib/cr3bp_DhruvJ/cr3bp_po_fam_continuation.py @@ -371,9 +371,7 @@ def palc_po_fam( DF = np.zeros((len(free_vars) - 1, len(free_vars))) DF[:-1, :] = retargeted_orbit["DF"] - DF[-1, :-1] = palc_args[ - "dx/dtheta" - ] # Time phase constraint part is 0 + DF[-1, :-1] = palc_args["dx/dtheta"] # Time phase constraint part is 0 retargeted_orbit["DF"] = copy.deepcopy(DF) # Compute null vector and palc constraint components @@ -567,9 +565,7 @@ def palc_po_phase_constraint(self, free_vars, results, palc_args): The default is None """ # Phase constraint = dxi/dtheta = dxi/dt*(Period/2pi) - _, _, _, ax, ay, az = self.ui_partials_acc_cr3bp( - results["states"][0, :] - ) + _, _, _, ax, ay, az = self.ui_partials_acc_cr3bp(results["states"][0, :]) palc_args["dx/dtheta"] = ( np.array( [ @@ -586,9 +582,7 @@ def palc_po_phase_constraint(self, free_vars, results, palc_args): ) free_vars_index = self.map_vars_index_cr3bp(free_vars) stm_col_index = [ - free_vars_index[i] - for i in range(len(free_vars)) - if free_vars_index[i] < 6 + free_vars_index[i] for i in range(len(free_vars)) if free_vars_index[i] < 6 ] palc_args["dx/dtheta"] = palc_args["dx/dtheta"][stm_col_index] @@ -654,8 +648,7 @@ def line_search( # Check if step size is bigger than a given fraction of the initial step size if abs(step_size) < abs( - line_search_params["step_size0"] - * line_search_params["lower_lim_factor"] + line_search_params["step_size0"] * line_search_params["lower_lim_factor"] ): print( "Updated step size is too small compared to given step size. Rerun with smaller step size, attenuation factor or allowable lower limit" @@ -682,9 +675,7 @@ def save_targeted_po_char(self, results): self.targeted_po_char["conv_tol"] = self.conv_tol self.targeted_po_char["int_tol"] = self.int_tol - self.targeted_po_char["ic"].append( - copy.deepcopy(results["states"][0, :]) - ) + self.targeted_po_char["ic"].append(copy.deepcopy(results["states"][0, :])) self.targeted_po_char["tf"].append(copy.deepcopy(results["t"][-1])) self.targeted_po_char["jc"].append( copy.deepcopy(self.JC(results["states"][0, :])) diff --git a/contrib/cr3bp_DhruvJ/cr3bp_po_plot_orbits.py b/contrib/cr3bp_DhruvJ/cr3bp_po_plot_orbits.py index c8261e47f..c827d1f5a 100644 --- a/contrib/cr3bp_DhruvJ/cr3bp_po_plot_orbits.py +++ b/contrib/cr3bp_DhruvJ/cr3bp_po_plot_orbits.py @@ -62,9 +62,7 @@ def plot_orbits( colour_range = [min(colourby), max(colourby)] cmap = matplotlib.cm.get_cmap(colourmap) - norm = matplotlib.colors.Normalize( - vmin=colour_range[0], vmax=colour_range[1] - ) + norm = matplotlib.colors.Normalize(vmin=colour_range[0], vmax=colour_range[1]) colours = [] for i in colourby: colours.append(cmap(norm(i))) diff --git a/contrib/cr3bp_DhruvJ/example.py b/contrib/cr3bp_DhruvJ/example.py index 162cac3ad..fdee72053 100644 --- a/contrib/cr3bp_DhruvJ/example.py +++ b/contrib/cr3bp_DhruvJ/example.py @@ -39,9 +39,7 @@ plt.figure(pltnum) ax = plt.axes(projection="3d") ax.set_title("CR3BP EM, trajectory, T = 10[nd], tol = 1e-12") -ax.plot3D( - results["states"][:, 0], results["states"][:, 1], results["states"][:, 2] -) +ax.plot3D(results["states"][:, 0], results["states"][:, 1], results["states"][:, 2]) ax.scatter( results["states"][0, 0], results["states"][0, 1], @@ -52,9 +50,7 @@ ax.scatter(li[:, 0], li[:, 1], li[:, 2], color="red", label="Li") ax.scatter(-mu, 0, 0, color="blue", label="Earth") ax.scatter(1 - mu, 0, 0, color="grey", label="Moon") -ax.set_box_aspect( - [ub - lb for lb, ub in (getattr(ax, f"get_{a}lim")() for a in "xyz")] -) +ax.set_box_aspect([ub - lb for lb, ub in (getattr(ax, f"get_{a}lim")() for a in "xyz")]) ax.set_ylabel("y [nd]") ax.set_xlabel("x [nd]") ax.set_zlabel("z [nd]") diff --git a/contrib/cr3bp_DhruvJ/example_3D_orb_fam.py b/contrib/cr3bp_DhruvJ/example_3D_orb_fam.py index 18f43501e..0a67e7b8a 100644 --- a/contrib/cr3bp_DhruvJ/example_3D_orb_fam.py +++ b/contrib/cr3bp_DhruvJ/example_3D_orb_fam.py @@ -22,9 +22,7 @@ lib_loc = lib_pt_loc(sys_p1p2) li = lib_loc[1, :] # 0 for L1 and 1 for L2 -ig = np.array( - [1.021881345465263, 0, 0.182000000000000, 0, -0.102950816739606, 0] -) +ig = np.array([1.021881345465263, 0, 0.182000000000000, 0, -0.102950816739606, 0]) tf_guess = 1.509263667286943 free_vars = ["x", "vy", "t"] @@ -59,9 +57,7 @@ ) plt.plot(li[0], li[1], "ro", label="L1") ax.scatter(li[0], li[1], li[2], color="red") -ax.set_box_aspect( - [ub - lb for lb, ub in (getattr(ax, f"get_{a}lim")() for a in "xyz")] -) +ax.set_box_aspect([ub - lb for lb, ub in (getattr(ax, f"get_{a}lim")() for a in "xyz")]) ax.set_ylabel("y [nd]") ax.set_xlabel("x [nd]") ax.set_zlabel("z [nd]") diff --git a/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam.py b/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam.py index 37004e840..22ae3b1c1 100644 --- a/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam.py +++ b/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam.py @@ -92,14 +92,10 @@ ) # Add Earth data_trace.append( - go.Scatter3d( - x=[-sys_p1p2.mu], y=[0], z=[0], marker=dict(color="blue", size=10) - ) + go.Scatter3d(x=[-sys_p1p2.mu], y=[0], z=[0], marker=dict(color="blue", size=10)) ) data_trace.append( - go.Scatter3d( - x=[1 - sys_p1p2.mu], y=[0], z=[0], marker=dict(color="grey", size=7) - ) + go.Scatter3d(x=[1 - sys_p1p2.mu], y=[0], z=[0], marker=dict(color="grey", size=7)) ) diff --git a/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam_palc.py b/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam_palc.py index 0f83ed541..8fcdeab61 100644 --- a/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam_palc.py +++ b/contrib/cr3bp_DhruvJ/example_L4_vertical_orb_fam_palc.py @@ -76,14 +76,10 @@ ) # Add Earth data_trace.append( - go.Scatter3d( - x=[-sys_p1p2.mu], y=[0], z=[0], marker=dict(color="blue", size=10) - ) + go.Scatter3d(x=[-sys_p1p2.mu], y=[0], z=[0], marker=dict(color="blue", size=10)) ) data_trace.append( - go.Scatter3d( - x=[1 - sys_p1p2.mu], y=[0], z=[0], marker=dict(color="grey", size=7) - ) + go.Scatter3d(x=[1 - sys_p1p2.mu], y=[0], z=[0], marker=dict(color="grey", size=7)) ) plot_orbits( diff --git a/contrib/cr3bp_DhruvJ/example_lyapunov_orb_fam.py b/contrib/cr3bp_DhruvJ/example_lyapunov_orb_fam.py index 57cf21514..6ea397f98 100644 --- a/contrib/cr3bp_DhruvJ/example_lyapunov_orb_fam.py +++ b/contrib/cr3bp_DhruvJ/example_lyapunov_orb_fam.py @@ -36,9 +36,7 @@ "vx", ] # All constraints, 'jc' can be added explicity or will be added in npc_fam_fam_cr3bp if to be continued in 'jc' -orb_fam_obj = periodic_orbit_fam_continuation( - sys_p1p2, initial_guess, tf=tf_guess -) +orb_fam_obj = periodic_orbit_fam_continuation(sys_p1p2, initial_guess, tf=tf_guess) # Target Lyapunov orbit using Single Shooter Variable Time setup # Exploits XZ plane symmetry(sym_perioid_targ set to 1/2) diff --git a/contrib/relative.py b/contrib/relative.py index 9c49ad9a9..04637fabd 100644 --- a/contrib/relative.py +++ b/contrib/relative.py @@ -8,7 +8,7 @@ ## FILE DESCRIPTION: ## ## ## ## This file is a prototype file for a newly proposed "Relative Orbit" ## -## object in poliastro. The class 'relative' is defined by 02x instances ## +## object in hapsira. The class 'relative' is defined by 02x instances ## ## of the 'twobody' object - one chief, and one deputy spacecraft, and ## ## it takes in the classical elements from each of them. The class then ## ## automatically computes the states of relative motion by linearizing ## @@ -52,7 +52,7 @@ ############################################################################## ############################################################################## -# Import matplotlib (possibly change to plotly for poliastro?) +# Import matplotlib (possibly change to plotly for hapsira?) # Import the relevant AstroPy libraries. from astropy import units as u @@ -64,9 +64,9 @@ import numpy as np # Import the relevant PoliAstro libraries -from poliastro.bodies import Earth -from poliastro.twobody import Orbit -from poliastro.twobody.angles import E_to_M, nu_to_E +from hapsira.bodies import Earth +from hapsira.twobody import Orbit +from hapsira.twobody.angles import E_to_M, nu_to_E # Below is the definition of the relative orbits class (RelativeOrb). # For the actual example script of how to use the class, scroll to the bottom! @@ -84,7 +84,7 @@ # Let us define a relative orbits class that can be defined by two orbits! class RelativeOrb: def __init__(self, satC, satD): - """When this class is initialized, it requires two poliastro twobody + """When this class is initialized, it requires two hapsira twobody objects: a chief orbiter (satC) and a deputy orbiter (satD). After initialisation, a number of computations must be made. @@ -251,9 +251,7 @@ def _solve_posn(self, a, e, i, w, R, M, mu): # need perform the 313 Euler angle rotation in the following sequence: # Right Angle of Ascending Node -> Inclination -> Argument of Latitude. # Now, let us get us the DCM that converts to the hill-frame. - DCM_HN = np.matmul( - self._dcmZ(w), np.matmul(self._dcmX(i), self._dcmZ(R)) - ) + DCM_HN = np.matmul(self._dcmZ(w), np.matmul(self._dcmX(i), self._dcmZ(R))) # Notice that the hill frame computation does not include a rotation # of the true anomaly, and that's because the true anomaly has already @@ -273,9 +271,7 @@ def _solve_posn(self, a, e, i, w, R, M, mu): ) vel = np.matmul( DCM_NH, - np.array( - [vel_X.to_value(u.km / u.s), vel_Y.to_value(u.km / u.s), 0.0] - ), + np.array([vel_X.to_value(u.km / u.s), vel_Y.to_value(u.km / u.s), 0.0]), ) # Finally, let us not forget to compute the true anomaly. diff --git a/contrib/rv2tle.py b/contrib/rv2tle.py index 37b3c654f..cb9818c0d 100755 --- a/contrib/rv2tle.py +++ b/contrib/rv2tle.py @@ -17,9 +17,9 @@ import numpy as np from sgp4.api import SGP4_ERRORS, WGS84, Satrec -from poliastro.bodies import Earth -from poliastro.examples import iss -from poliastro.twobody import Orbit, angles +from hapsira.bodies import Earth +from hapsira.examples import iss +from hapsira.twobody import Orbit, angles def unitv(v): @@ -121,9 +121,7 @@ def rvel(r, v): x3thm1 = 3 * theta2 - 1 x1mth2 = 1 - theta2 x7thm1 = 7 * theta2 - 1 - r = (rk - 0.5 * temp1 * x1mth2 * cos2u) / ( - 1 - 1.5 * temp2 * betal * x3thm1 - ) + r = (rk - 0.5 * temp1 * x1mth2 * cos2u) / (1 - 1.5 * temp2 * betal * x3thm1) u = uk + 0.25 * temp2 * x7thm1 * sin2u xnodeo = xnodek - 1.5 * temp2 * cosio * sin2u xincl = xinck - 1.5 * temp2 * cosio * sinio * cos2u @@ -283,7 +281,7 @@ def rv2el(rr, vv, epoch): if __name__ == "__main__": # Display some initial data print(f" Orbit: {iss}") - print(" State vector [poliastro]") + print(" State vector [hapsira]") print(f" r = {iss.r}") print(f" v = {iss.v}") print() @@ -291,7 +289,7 @@ def rv2el(rr, vv, epoch): # Reference epoch epoch = Time(iss.epoch, format="datetime", scale="utc") - # Store poliastro orbital elements (osculating) + # Store hapsira orbital elements (osculating) ecc_anomaly = angles.nu_to_E(iss.nu, iss.ecc) mean_anomaly = angles.E_to_M(ecc_anomaly, iss.ecc) @@ -349,7 +347,7 @@ def rv2el(rr, vv, epoch): print(f" v = {sv.v}") print() - print("State vector differences [poliastro - rv2el]") + print("State vector differences [hapsira - rv2el]") print(f" dr = {iss.r - sv.r}") print(f" dv = {iss.v - sv.v}") print() diff --git a/docs/Makefile b/docs/Makefile index 9b94a90e1..121f131ad 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -93,17 +93,17 @@ qthelp: @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/poliastro.qhcp" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/hapsira.qhcp" @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/poliastro.qhc" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/hapsira.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/poliastro" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/poliastro" + @echo "# mkdir -p $$HOME/.local/share/devhelp/hapsira" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/hapsira" @echo "# devhelp" epub: diff --git a/docs/source/_static/logo_readme.png b/docs/source/_static/logo_readme.png index 1da9160766ba75f7d62b7d36689f34f12ea2df7a..17cdda79337dddea84372505c0f942f4dc43d9a0 100644 GIT binary patch literal 375741 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%0Dctp}?h1)ywb(i$cCEV~-dr2+^{&J@B189c zbwS+yVzWA5g2N8$%m5W$jY0!aPKjR6=!|+#17-!l!&-UH@GW4 z$Uq(lqP|Py9Kvob*vWXoRAvJo#{AF>8+BrhXN(^BVi=L!ZClbRUn3n&=RDC+97Hq=xLH$}3vQOu?r?#~ z)QEnf?7*0pt@Dw-p}uN4^Pj7H1u?DCev7c>@4-n}10Umc?M5|!agY|n0z0I7(mHkjoLeieJ`)N4RzOy&l58hKcnEfnjKJUqK! zBQS#BzemNVX*W`eV-$ste6@ilZGu@gfFObLvN9;#4E4Z2N68hg>AyUqOh&qkcxDkc zhfoOyG5*ObcvT0rIJ;&$maSx4uQg)?D{^3^qE zow0$?kHy!Xo}@)5bv64Hc0nfis20Z5{|8M@Ry_P>^YtMBCO00I4$f?T+giouya_uY zqT;)BwY}xj*7D5Zi@9QLNqhUE|6EYh!YQ3grD7!7InyIwXAWb0UidG%?;lS92_dLn z^#9sP@E^}#Dh{(7uMC&of{0D;lw<>Xu}h}iL#?6 zxInXuGH%pX$tmlv>JHa^X3#zx*1~*ve-$}`L-HE?6B$v|G-ht_b+AB4t|Um&;X(C% zlTl&w*&-3(fX^;G%_ykdJ&w$M+Q%K;LAk#)cQs>bVcBqR!w$}T>Ur)IFo|f9h|~a; z!X3U$CYalZS2M|#6}L4_>yEoDg;35+d+-EsJ1zEoXrA=~EItp~qs%GMmQAQHJ&dzm zvc$laGf6lg?{8B@=g>57Y;$;f1X0w)VdX?(Mt)hVS_B?+17v0k5k)Ym)YNdMsIxAh z&JdiI*_Ly2?e_Fk54sZ;^8)V)lX2)cLcjw@v-)oW=%Re;5r>i6bQ8THx?Z~|ULF<_ z&oJAM1G!LPq0*%rcU!SYRe+)ey>$m0dbl0Bdw1|enx7<1Ex(2&h;>MWmh@(7sT2#NRd#+ZO6eR zU0cgJ!Qd*zWW4>~UL7tFm;e+IbX~;V>7=Jq@?Z&9!xb4&<)A`W`M_WmZyHe ziNqzx`E}``a46q5cV~CXoLrdFw?dVYp7VE9Yrwz?QmJXlw5f$nly(7#}0Jf*{4 z_N4281moJ8GE%$(}{ZLcwG?0 z%-7=?GNZCSnagjC0J%*YP!GL%Aptx>3lv6~o%| zXV?MS>rXHLhp-;VYRK;>k3!4B0w-UjU#!y$oBal`g0cwK4Si52lqvI%xA|09IH8yz zV{!U9j`t~AjN3t}c-qZ@8;XYe+wt}f?iv`kVoHaW?-9L_4Gs=Y#88}KJPqC)hl#X4 z?MU57fU<;))QGy2eFxf!8us=ZT^JYfNEc1AL z%J&<;bW(p??r|DP`d zCHxP~)IQF)uAPv(JKL(_dRO-E)-}~!OTf}7Wik~@{29#s>@ev24{S*pZEJ+nD}T`* zb1X@y^k7SCiDgQ%h8NZD*=LUi5N6Iw-7TWmhJtBC#Xg$e?C?`X0Y08o*-~{oM*ogP zQ4ifEl82D|j~M#zTld&i8L-#sx!a_Tc!j?>E?_PYGwAo2JARH=*wu32 z08Rw1sr7bm68bTihrFJV1`$i+a?LxMwYDuYrLpv!!XV%^XN@OVW= zg+=Y_3v~<`L42cJQ(<510I#2pgIqV`K*hNA9q2&uCUR2IF09z6bU#f!UeqFgu{#^i zcE9^meA_N7_N$GqA}$Fq`B!bK%u@Jb^AkZ-EG;JeOd=rqsU{KfRYibZXqSeZxJM_jS@=ZNg^G#c<-96S~8j>-FtS*L|Th?V?g? ztuFAnY29HL0Y1L9?M9jHAIY>tKD)NzQ_|8q+|K!?!VDzXr-IO3xT#z*O%aHu$1Rme^sJlFzoD)P1Z$l-`%cHDFakY>IZX*iI z!2&=S+XPBeDwHmsOH5=(w}p}|)vIu>H8eGY{-OY@dH7!s^AUK|ER@9dXS8W{Ga&g4 z>N6;Fz5@~%sO)f~NHc=^Rz>Qql(<&VA24 zgeU2@nMgSyNRwz4ZAhpjJ>R=Oo%R)Ps}?Fyi`_ZSb+XQl#>&P4?FTZDGOn?6@UISM zNpzYdhSj+WhWSt>1ecQuz~6Ce=`Yh>G-v{QT0s>4nCyWzJk0HrGNz}8+b&#OOwbSo zBGfkj_HCOsq)EO;tgNi4R*;o+V?yw+zI+iRX8ZeJc3+QV zHm*lF$sgKANS-p9_P2k2F}L3st_`|xx@3lc>IAaCanT}fn4AaQjiJ|LO-RZ0 zKKx4kz_4&6kn4$}8B{<8@-7aS7!;vHJw=Z;MFxfEXVc#xZejldFJ8KHnv;Ry4DYz% z8j-fjyj0~|7`e(oa+*C)b0Y?O`V?S2dh9t|Nt9>hrrn1Y^a~zu)cJcEcLm+t)`D&< zbSE+3To1}*scTJC87^I&kiMv0ZjhM2^(@OGTwF6T?2e0Qwc_L>@kEXmR?fJ@Bi-jd zwP#Tc3fh&x&sHj0<_9M>tJ?8P6&j}Bci*c?w{88+UeBUuM|pa_Ux>g3HDrn>DCg>yu|~9x zc{~Ts1E_Qas1%8;REz6F^bo5 zNRZQ3xZV`ki3a;9(*NUWdr{iEB1(Q6IA&VFX81#|+hAWGL=^sW-e{Xv=zAK`6Hw9K zcc15n&!O%_#ZFui!ZCee`zuh`GUx`%9G=Jb1Ul)%1#qMLHDEeu768^a_~%;zbHK(- zE@3kDHu#@M{H}mA3FCL8ZS0wVN#kj2Hp6HmosWg7D4{1?Q!yk@;GnB&N5&n1TK>GF zDPa*GVu{YtT7?z&IDDQus)$6u!bX78E8_HZbpb28Kw(LH?eXI1+6U8^umA%{ZKsFl zu_6%R`t#O)d9lv$_)uHyoe=KEEe?^m>7s$BQ<7p-6cpxb&$7zEoM~zcdJCiP4P&RZ z)Tc^|6GC^%m4|oiS(*i-7;w7lonIYv?mRY)iO(Fn%Szb5JLaJ_Yx4CxwRE3Ppp`{| zx&fEquarsIz@PvO<7N~suxh_Z<{56BM7@ZuW-ui3Nho~s_~zcX*8dVApnnpay*FoF z`ofYWGO>t)0TU2_)75hBJm#8cC>2#XgVGXYY$sY_&Wtb-=H-aw<4Y_({8e++hvFFp zE!yIQuc;(MlwobN7b5H}1ObfI3D_*z9^HbRiBgVsb9Kk5AE$f)VgiKFFek@{prVwJ zKncYG=4{0z3zg%5* z|9E0R)mY|1)Eor~%8;^31RRjS+U`o_;e&fD%d|9`qOJjsKLrM^O9Y@Y-~PILmKdF~ zbXz(e2z8zopj)gf&B?eSYRKKlj27$R5*Qp%Kn4f02IPtm44w3mJ;xorzy^E0NGT~O z9xmpnF$({cb}HgQEBgCgz2?~m>MH+;>1v0 z41Rc82p}6-5V9Y1qqKMpnyDj!gJ0vvF2bxrnnwO`# z@Od#;R>dkavOs-SF*B;qK{Jy_JtofvL)ua&a3lR1*YkT^bl=}!?0|HORIQJX`EW@J zC~57Edrf$~6ie}WOK`Zmv!CqMHMV<@Gy&b)V<6KCyIyE;OM+_vo$`4pwU9;K+`(bv(Su&?7koJ6=ieytuS^an6W8TLOYx*Vm{i_t z1MX8`$^(*^#fhJb>!q@6PH&?14L!#mDJ9t`jhVYF4o7bxp+=_)#9=-H#_)+Fh(y=*+45SRc2$1Kx39J(v!9F4 z_mLD^TRTsTJ#=Ne;e%iQMsqN%;#W|$@gx2NCiPtA0j>M|z0TC%ymq{vNHADSCv6^} zI5c3XX`S?quzb!fJFoP)_2Knl)#k}PFSD`c`>xYiVa%il1I=MuV33=miSedPV{h%v z^`lyQ@3<~+`3w4G>5a)JXkomb!+Re=jY>&GXoJ$BImSv3UHK6#(3-5syeEx<%IcUA zu~tbWG|3^fG1}XMOfHyCjU7kfIhALA*1eI-|6>>7#B#E?$AD<-zhHGv1XiLfii@AI z)&|c$cHDqribuDzI&=G7SnfvfmymzBVzo5vO12+yuPVLjVWLu2Qo3h8s6T zHeTHtUv#p9Gc~7pdw(e4CSjriA5?_$9|_o1I^ znt10r)8etYnd+1`ExaV~F4aRtwllE2_EFCDmc2t#r*_AqeY~!g=zyRINpKgod!t;M z)~h6YQw(&Y4pX}PH0q=uw%?1_*-6w(M$oWm70S3of552x4tM?>8aF5FG3Sf9&7!4# z*eJ{FygFKOAE&nrYv_b;Udd6>^w?b$6{J59&WTVF+8XX{nk=6c9^?oLl!Nr7Nw|O= zo+j=(e%jcr?ULZ(Jr=&1<8wGnZ(Cd~09$AjC`0-l7WVPY7plCIN#QUr)Ouan1 zNJaZD@ZZNJsQ85UL))|r&IUB=$A%$s^YzzrL%fJNPn8=b@L{e8oVMs5PVczeurN^5PQD--tiR|JSbuZy2xS>)1Td(%F=9z(|1;tey@NAmglm68 z&PjADGUUzoL5!!Ov`9GrzV$EA<{pZeQQRKvv6aJcE3gJ2AMPI8JImuS@Jv3;xZRKoJg; z@zn>NyUAbqY!1f7lpR~v*499de>Yy1<+}4T`1+X3gqNkHh*RH0{wI^FbaJSJYxPMZ(i zUK&)gnW#DL2^{K%CFSO#!)O6gs?j3CZ0LqfTTHclc^}+-A7|}}#E)L`QHCUU9wHHF z3#-wZOLzok#4CT*y{I6-pqRVi$BH;gq)8ACIP-4OAtjT+AiiUo?h zXG6bg;3%wp(qEpLn|@N!moMfFW{cDP1CxBL)_cGg{82R<+#@O*6i$|4m;!z@bOMsQ zxFGkSqR}adj9hV?>B4hc$Y7!^GZJ&2;78R`z{zf;5FA=Y>HPCh>yEM{losJwFF-S%XY(g?&VA$bUJv$? zKJJ&HMj?kQM|>AkUr=${9wQYLnx@0V$5BwC8#kIQvXcfj%8!Ndhn5Zu%)N+oFP`G9`Maqo`(+IwE~!Awlcr^6zz@ ziK<*DY@GKG;Ry4XiI6t_7NBq*Ob{Rk?G7Aaz3gcS-ThvFFhELX|dR(?QJRKASzl4Q<}_glOMJez<<8M(oA4<%hn7If4FE;E%X>C5`N zGOxW(dK5le4ze2`yb5cpE}0p5dEa%M7axYDxB;nRbk$ofVvU<1V*YLOhIUu;pR_Fg=>nj7I?7Fov zus{)!7EnS&36XA58U-1;)1ez2dMsK7L8L>vL8Nn3T1vVZ0b$5Na;RaxJv{Gw9z5sc zkN%r|@4fO`*IFx4S^0XW$Qs2xd!DvD(Q1vtsJ_x`nMHDPa@{H%nOBO@s!8rcx*z&7 z1iCsbh&pp`#Qf%wOSxH7Bae4@MJF#5N>ijC5Y~Q?BsVbH-lkr+X=}@kFq2Or!BvR^ z)E*O~TNyldkJ`clK1`*?JwCteF@p0S{*!vm9kfeQ>7106QZeAEXRZ+gt_E4q$191D z&qMt)8AU)cN0WvWI3(^W>P7e8zD4AEw|PeR;2j@vuLOW*7=%LGM40M@Xmcm0o|Fbn z88Ywhn{B=30+O*((rRX7lV`apxjmq64#-7Z;p5n(RTZyOVYzxco%hB(IM6;-ZMMRh z{#va63hmbwgrAK`gmJ@Esbx5n+%3(bG{~|^F)T^#Qwxh(#&ZtttEcayu--GsVwk!@mA})kamH-cw+0a4}dmINYU&Ys~s(yoZ&VStks0Ow)YNh^*UtWYqbfjsA$6IN z>)GtP;Ul{tt~zMCDe-pO23JhEcvi1f6HEBkv34a5Z^S-U^$~(zVQ}kHwzEx$m%aXM zNery-{`cXC5UC+SG)zoP9BQ1I{M-;x9jR<8PV772B)}H&f_Fh|Nds*nNS}7Lm>chJ z7jh-KHC%l;WdQ%aoqgcF%}z4lQ6Hz7?zg8&rADT4=1qy)Y%`FenP7G^pE{Va0HlDNvalE%}_oq+0$|wR#&hfuR$OvhkIiS9e2#TtpHrFiV(81^iL$t%> zX17#qqpEI2>0$0p6kOi=LFDwlw6j_%Uyiw)%Wcy)YX1}`Ff`(@v`?Ffp6s0!B_`F%q_3yr0Slv zH)sh93U$;&oF^@AXLg#h9s9c?dB^$_||A;PG?RpJnv;^(wjByD{Lheb{)u zu1vMi$JA6W%zVe)ZHDR7C*wJj7vNV?3b-}zWNsA*=jKQCSrglcvnh`0h@jhu7N+Tc z={{OW2A=NsLzxxK=gtKN*o5<=ff8MrkDO_YIt}I9P;x##zW=Dg;imo?Qs8KUk9Th) zRK@F-?_(Bs@s;(+W|!_j65j?xE7=o3UuRKBP@721K9@%q^Foti<|ToIE;KbEd zrLSkuSj#r7CN`5hzh-@ztT?#%XrTsyJ^%ReV_O!ptQQ@n@UKg8=5IQpThrXp72=rb zKqf?RaBy;$x1AlQR-xYDMwKtt5!OeN7Z9-IF(R8FtD&h0#$0xLzM?zpv(CU%*Fzf?M znp)+`zMLHACy^K5Yb!xc65TrKy;d)ggxy1@poXe|)-7hl_;g(%1JSfHJX<>>)lSJe z_3vK?318Yzp4aM9*eUO|ji^48RG0G=cB5uo5M@F>lapuT&Mx56eE?n{@=RX_8;1(T z>7VK%{Dq4RmZE;O3f4~tKI_Wh)7Z3nZs_~1dxI1N<%=a`%z)Ta3kK{)=G_96USWfr z?*H}h#X_NXHe&k$2&!N$-@VuLdM-KUjyqTrQh6I~;0|E{0s-QS=_*C~g>`p@(jbwa z>x{S1J}yznTb@(&It98-24d5bg`kHFa8r(>*(5CRQ2LB~M~9`nN8hnYTahXGa#X-| zvtJs%*Vj}!YRCPz%fjwoZqD>u-w#r-R&R%r^8|gUu@OvQr@oV}dv;a$>Dhp zRwNbe=U7Nnv*aHIDQ%=N-TlrDZLJ0ByeQ>dcxeRKJ%cL@J z3FBf4f2jmUZVj7PntzGgFq6IBZ|Y)orFhw&(TST&ujh=S?g+eqWE01CWkJcyN-kay zvO2SAq8_J0{s;@k4?M2{OAcy=8SVM$DBL?8P1+%$R)_*C5JPuYqq~?1J1Z+%Rwtda zKNxM4i+VkhQF0gGN<%HqC5B($i;d{}{P*tzfx9Fr@P1z;*QAgdsGIwQM`qq#;9gpl z$cZFk^5-5c6h%Q=58i@IW^0hQHkHzx>gNp_oiF@yJ*a_=D$8Wg+b`CpCOd|;3_Pa& zxx(q;n7CMvcKKhC=VAtT3Nsc+OrTI`o=g(7RK!a2|0sNT)SYMu9W{r&p5foS~GSQLOiLeCXwNwzW`=@~QCO z$=;a7#kwBh*>^My4ECNA$=-yU7yRs|YeEJr9pruR3YH7h7e2I`W~P?SW(hZ^nE*oKU9I^vffEbPHDc; zL1~-%zDu_{bEYORp{)u^)~2a0@&Jx5Q_UOb1?jWyOTOtffoA7=)49U=k~ePf_9JH=|FE$Yz4>yZ`4+zrkkh*U1r)r z4jiLQCAL<#nMLxE?(<2Y1gb47qoFxyoHJFXVC_k+rCE}&4^gURRWf7{_i*COj1uMC zj0D@SF~+yfn)umqmV&`P(U7Go-6rq{avCA=EM1w(up;FBbI}!3V)h_b0zihB;2Ky# zA&i}H)koo_cAh<1^&1W5vHP7dCK&3G`R70u5fpbi^RL3TaKL};u9CG}Mp<5QvE%bx zJrPUTk7xQ|pF#emx&V-Ng^_s9&D)vywWWGKjoHRxVRhQEadEng*IluK6__x5pBL*R*L~Oow`Jb&5J6O z4lOyVSpNlysu&-0HL5y6tD={a8GQqc9a~te6LOds8L9$?VLk&U{S@HR`Rns;!OVnV z_b>nc^+8*B^nT{DbwuB}F6K{7#Pxa6Fg;**(^#zyjc%SXNv0u}h7}qk{qCacvcDc7 zUvx3=%TYD`8LXZDc-H!hD%mS*u%FFb+pnt78F;9*)xhbwj@jQIR2_gCGQi|qUA_nN z;OHc91wm0u9t)E;bUGQic1rE&69W%l>efwhrXiozgHI2jB(|+*RN9@ztZQZW9JJ;Ln($RNrl1lq83q=kR%l`64lOxwr!sGr0~vbH@z>7|9N{6PQ|j zEd?rUcp=Vmc>8C{5@eDYMS%zp_lBQnjE!wx28n@qYB3OSAm?=#@@+hG^}^&D!!QF{ z-PNl)F%xIyZmmG0f+F}@gm6~(Q3e+iO6dJ;e{tUDZ&*q zT6X}_qS+RZFemuzH4ASI%&PcMbLzny0GMDTM6fdO#shj9kYtxW;+qA`%H^*C*=b{zeZS?F9m z;T%eVB5uqdZu-?nvE;R@>YnQWqIykD&%a(qmXaI*nebpUbP_BXI9>}kH#gnx>bn{k zN)X&1+i16uUG~f}?Z~o9k36LdU&VXbUyD?&WDfwWt-ZbdTaZT)VvkD%`zSQ$6J?AM z`QWc-9kUI%RmaxOCyvPPR@u5T4*X`|c0|?<&a6uCWeTmH&eN4u2QhO3rI*zf{#tylveD^;vffh5K8Xq+?x`= zw5zfm)i)F5Q3Y5i6NZC+Bn>%?&wd=SmGDsbClZYLpWmz!1su5L(H z58BIIx~pZ9q99)$oxty>3Vsj*@4SaxzzpjuSzCW|Ibc&VoJ)+kPKX8VxgQEyp4kkT z7jXTAL?WA#O`T=LA+3j0$raq^Vv5V&Un02VUZj&+$1J9HtpTKsz!-v__lcpZm^FYD z-Wx9W4>jwJLl12KVft%U+f;I%H>NtfSSB^m^>JcZi9_^tPQd&tC&a;3{d63eXCgDY zLaTv^*t_+-%Xa=NXssrDv0t|P&(|j}^EY3lHZ;3M`FRP)1mI6Y*yLcpCm9)8>v1eB zwBEPryqnvaxXVogU`fcJ_HZNolXpz*0H<1ZUfz$pCunjWrDjOG$;GZm1B76>3))Yx z5$U};8o#zZ6e7#26P!Rmpeh)nxEU|<9%7Rf)gm?l<3t3>FU3z^)aNdJFFNT*dbu^k zUb}p=nitb>fJyH51y+JrSa@WkD#o$4J$Nm0Zp}|Mi3~5Mb;3S;9ane%^XnV)Q$~oA zBH<3?NTSDi)NH(Yi$P$xFn5U%i5OcM@xerG2BIN)Q4p_N%sWH8brgceHpK2$&6zRs z_}3s5^#1kgyczyz%FnG1Fi*zlus;~$W!*Y9lzEDmQ<)G!*##$l^<`!D(p-#jx4(@w zm2`(oxALWEv72g3d82k$V21(EG(mhkfBM};g7XDJR~arfFufZwe6(H*Y_$XX^Ef?L0zIj}N6E*s1Y z^3?{{6NTScS+>(&b_5W1CZmFSGY>>NfF$kID79LY?E8RdKCn#toNJVu(gy|vQ>RFF zP*r6SZBf;V5=ri4{o1c*`gm!2Dl1uuS> zcX;rXR&7E6@leL6wulx{zxIX-lAvYqLUxPC0L0|y89i?9tgYFHe*@f$3IQ+$%mHY- z#oiEhaPJS(!p^uqC1IQSfBt?-e7vww(hKni2?zVQx;{tdGy-)Mgj;0wVU{ETu>Zw@BB!i~r;3;PaPIZL_~;(T={3TReIO!;Ow|O*pL+$M`y~4c?mrU6=DLcM%MzxDj#3 z{Ud~KsjLOmU^7^)ZE^MJ+Vd>m_fO3?&O=Irs>i+ECM;~gB5dKzfuJA;_b%tT14#?s za;udPGI>*!XAKVQ$3!0|^w-3U;v3AT*7^V(+mo2={j;V3%~Hv^UwM`C2eQewJy*r z)v}yI++a9-L)*a1bL(=r&ND9I^(7`p+lkdm)YN9Ru}eFfeHg%wmDgwh;JIVUFn-`58_sJZiG9u`ly_DHaZpdq$@f@E?_6J6oi0w8V6VpTi{z5jyb)IxQX zVd%WWTJL&;sfo$2ZJe@wg6tM>x+NV_7Sasa-zc=2fYGt_G)V6a0;xu6wySZymwTeu zQZ84x*kOI^>>oZ=(LKY@hmlxWd|I4IYdCoe$s>@6)AC$2z0!|4-2A#6Hrrr`zNuO_|3RzYSr7Lu zTz1LUcibC~!?qGi$D&wep8B#v=UN9`00oMTAgz-uRq5kWH_-;a#ag2x*KV8;1*qD` zyT7R`t&e`R-i#iFYW?k$Ff)33g(FoTpi_YujDV1l^qkZ0|P&vjp4O zPpt-l^UsuWN7v^wi`N!#9Z%i6H#2OH&WA3^3$Hh(1Su4vc>IP9Va>Z9j#AtX;}u*G zdRLVDva#I4>S)sNM60AB_CkYzyi_*wr+4=|%@fV?$LW`*CPvbvdoEE~vSl+!##v&m zGg}I`m_=i4yq`?^a>^)xzc6mL-lz3x77+j5gBbedL^Q~HLNd|D7N!gb+YI@|M>6`4 zk$YW^J3jk>O%Jg6B1gZ*>a~{T)lOHltvZrr#>Q3GE!T6G2IDGRPQ3n9L40<3&a0@t z*RMhU&?hh&L^E*KRY`I7rl^jLItt)yvm_DAKPNDAVh$jKz)0myeIQp`cJIxkg{w+0;vy>%jS+n%R*34?oCe)US-FJ%}c-$^WKRzhb%R77zG-{+J#dIiF z`f$0VPyePKLYkN+ZuP1TN(9i)f8P84FctfE!!A^ffDH%?T7yt%aPh-xZc@bSazxMv zQDqJRu^TA{jf-}dWf2Mv1LwSU+iy#8ysZWmLa`|!emch*ilccwWXuk>H9j1l(Y*bb zkf#Fc*EckBtQnjCXogYEdOi@z#I2H)cSo|yON@=%uDhkj599UM!w`^R)sJ^xbZ}LY zhD1?ua_Ruq*izA`^(%dcYT42Yq90~X0X5<4ce@~{Ba1M@WNkJ-LrfoeZ1{x$vuv4{(hke6^c|0n6 zTRj(;XXwF^{(>qN(uN&Lxi^%DSy))&Wt}Emx*ro9b_<(QSC^ZfiJcvQltk-3+ftp{ zS~*=NX79OAEYg`vaBK-(^JJ@w#z8@W%Qu#OhLq?4d!=tEFS5uY)eCHfLp7TV#(pgV zP_$*0a_4~2s+K%{D!~`cgS=nnqiS0JI4LbIR_~jF`7P9WeCEU_CPdYZE(@IlmjnPR ziPImoqP)IafFD$JhFFTAq1ggEYbX@EqG%l*is#HHA;-7v+u5)bwsD?knx&JM@zm~Q zJ6kEZJ%x{qM&#s#T!~OEDiuN`IMn2#H{omEsBsWGJJfXp0ak}EIg;F(S#~`XDR0BR z<;b+ozVfdL`PF5FJd@eRV~E9K$-rYBXW1K3iUdmzLI;q()ZB~c-V$KCdip20zpY<+ zC<4IGt6v(#Gb}OUpPfu=u5DoNFWaQZgbS{qvs{^|<}>nHZwB5J^sfP0m1TvvgBNOQ z#Cy$9#m}@u(C9`wz2HUWnSGHXPuT|S--yPGVw5|tW`>TYHPtugd)sf@hpU`l>fP(T z|J=)~#yHaL_v>sVHTn6or#f-;rb7i#43-g89l;Xbgu>CmB=Yq~lbaGa$HO-Oy=Z8g z$*@iM%^~n#E`a3d(9h!w>PH@Kbd1ws`?!ol#ci1=MV;qSxYkEOu|YwO-RnJ^fMX9P z*U`N_0kw3d9Sb#Op3qGQ!h0Qrs`UNJ6L-iQExVwuSzm1-jZC6-RPu-mLUw2BcQt0m z_^{sL*A4;}b$7PAf_9ZAHw}G;s!L|R+_Opg_T{O*If#LQnTd@J8h1q2w|b{t2XA&T zMt9Kn)Y$bE$I9ETn3gZ0+~hJ%mpL-mMULWR8`ul-e!xzyL@v!SI&iI#DT#`t53`nS zpJxUo+HQyv2)+Q!MjOpaJi&9?1R=o8Fv<}ig7S8&bBs++P8M!K?tgj9(!HyXzr&n4 z#)uzNJ=D;jbwJ{FVq;?$7AJZ@rC0|910AzjJ9XE*VH4KtF@9XQBsk|=ZQtDUQl)KJ zNs!+BucI(C=jFxU)o^^6v1L{dVEE^edL1G#A9(|S)4pfraFTry$Z~(!@ijJ^#8{Lw zNQA(6`S$Ibxj=0VFY}cFiC?{&-0w8CjnsR{Lee|TRyN4W1$MF$9G3PDdBAg3wA6bv z8iRz~!0?jj^yIkNXbX&l+3bN=e^55E?Ke9+fc*dciLx1kCuEmRM>2?2j8!N!Ho@ zpGH_*2&Ii@YoVT+Ad*c3*_?9ZqXxFqCf%KY^hN@bjVrA}m3E^Ka8&qqZRVMvjAKc< zzfaAb*R{?)UM4`5?5EW+>(cGK*(HSaInp+8merp%sygan{&Fy_yhzU&>@I~5eeE&$ z+je+BKf8;E9<3zege}^{&^Ii7>8H;kXP;Qj{I{%>1b(hq{MhgDsoyV_mu%0sOy9p29^Y(-gzTz*}YKnYhCzWt=c;xH$_iEOZ92ZV;d*Zo6R` z8ylV1o2e@a&xW5c<5?I$9>L5#27|$2gdj=>=>5PcLRig_sqqU3{lRfE$u#VRlB?~^ z!>9K42}G7I;8$%06K08xm%vdMkgnuDJeM2tkxW?ew<04VBZ+?l`h?A7q^Yl@Jjw(s67 zW(HTk-mtr~cJ)!uyB80HGu?g(AC)5C1yRc|r~$rCt>3gZ3&cyF39UHn^8oOzqFYxd zYlR5#7va$i-8GLNt%J%_+7kc9IHVzh7~E0>uw;%?X|9ASJ6p=V6EB9C1_z@6)wrPR zCKv&_us2CVcmBL}@^I%WM2S#FIDS0)6Q|0zNdG9-n@|{S69J84Ea*cPEH_7HT+r_8 zCS&*S^UAYLWWI+Cb*~gk<|(8GhknvKRNbNrlT*z`+6?CDApLxoi~XT2AP(W-{PQT< z*u}HJj~%I^2eVhQhC3SdMp*#BxM5;pCvK=TpE*P_ z)A5yp2&P$EQ}@y{Ik4FVBrFhuzWrfNL2{q{ln?RIyim{k0PIKW2gLW;vD%C%OlZ(S z=20FYW2?dMr8KaF+plIz0{4D^spWaGx@2Dp3Y-RjFl!&?JG~5tno_&W_uw2s0CHXW z@MA0U3=;bX9kY-46Qq8kcyhlMR1yK5=TU@9olAGT?894tzjL0X?lvfw$Cj2sGrXgF2xO@IScAtxym*<5J{}s=GU_v|?Xx2fyLD9GJa+DDmFyoH z`L95ur5-%E7GvaPt#58zg;C|2Ki$25fTRf>s#gXQR1?)lB9YvvkSh9DgY%8Yl;jbv zk_I^d?O+)ZGEG+&@t&50!kH@9V{vw|Ek*8 zmAs&!>FH@e4ybOAo#OnR=K{M>9s};nIt&2w29Z&Qv5TRPh%OoHV4fs2U?oJhRFoFq zo)#FZ?!dz`@Ndq=aD|h=aWLj>ERqW?RpV#QDS`!MdL!7RyF>~eY%QAs_=~;eEF+H( zu7~s2l_YGBA4`DNyNfejeqx#Yd}Q;ykQ~Hc4L+^U>UXlChFM`&U!Em8c>&TwBJU=hxpKaZ{81&L$HIPI=8n!fD(^$HR6_2QqoVBx)#xJ_u{Ab(5-E_BB?|}MfQN2 zYi^<|h#sfLTY4D6gHW#LrdG;&jtt(_uRV6m7a=P&V8}<|d;htk-sPz`Aj@@brqnJI z*x6eyDz_5*ymc5lQ-H)PzmA<;i?L$XX;b*$87zS^ra-8mP$W?)b6lSC+3doZ%?S@H zmueJ(HF`>E1BTt6s;`FUloTOGo1qVgE>%m|`)rBuZu#_-%)nMHZnH=wXP&lAZ4*6!Lh+pm^s=_2MRlXkd)0b)6w0OaG8@a zj38_2YxaL4>KrYk3-;ELL%>ov*6|{4i1clmSM4w56Oxt7aPqK=*oI0#{tpU6t}~fg zHQzPu#M~nwRJ}e*hVKx@}2X3O5NKUfSdkx->7Fh({MmZ0z()SLr?Nt?){4w^})h?|I2*G)SxX(Z%#;$Pvp zaDWizX1fRzw}$I09T7$mbS|VEpqJ;^lqR35s=~ZxpKEBA>qWYu(^C9YFFXvSj$H0* zMtQ4UsRy-vv8j7*W54cZmPs%-VC*^_RyOj@Cwp+;>ynJ~_GhAc4#O&1rU0*J9jNH` zA&ul#D%o**ex7NP_B^BCS7!UhG1Vit0^Dy^l9`c;?5GBjp82venFzV`64c@em_K%s zo)BE!1=DZ<^@-|UYcA-vjf#Yl4@?1mvoRt_jzI0oXI0cT*lOw`Uyr@{atD>s2fy}c z4U`lR*h?IlF_)gq4JU?~i>+E7WeYE|q{PR#>hCp>HMPa7gIsTp2VM=t~Z5UUf$ z`@=ZvyLNzYA2j8d66V}^1gxs-u#}rJBTz^hdDoZd+oA5b& zh{j&f1{GsS5KmY3#YyK@1{St>FHqbn25nQc*(dhznY@t4SKyAW5vwaHH~(;szpI(k z^z_0Xm7jKk#w(v?P@wcy4vBPYet7ie&iI`RIbnw>{g!FB0zI8>yBHaM>J0VI+O+L% z)At!+0`iaFk!p^F*~bdG>bYQuOSZmq*@xkNXg6FFK_@dc21*@H?@-}@#sKoUZY&p# zuB(#Wp-@V=jg=0K$n^wm5>-P&WlFwGEN+k-hdX)P?`x=o#r|%h=v$W6#2FW4WeDm3IA=Wh(BF zrzr!f5(Y?LBF_%;phZ8?m3W7Ar?g)uz4ba9` zFpU6l1b8G8I0%KwRJtI-)tEC+Hly(ka!`(p5Uu|6rSr_9&lXvB0 z#BX2t*_sdZ8(IodxjL`QeieiO`~#aJ7Q`zo&5lZ^g;l~^ zT3V6J0ehyPwcb`;DR~zGa#_<+o)=3@~GRr98)sei?nh!*h+w34eb$CrD;WL8`Ylc?x=isO%^al z6QTd!=}U9MyTjq||A-~fbx>))Nia^%XTUwXX`9cGG0#v+6G=f-@Z6bJm&}qA5f3hB zHW+&uab(i7%q(~R46oQN*fiT*^SK42EwMkvdr1|ynsY92OxJb&WARo)?;|CSqU!nh zik61m7~^2jAHdnblnNY@-TuT{YosgB)t2>9a&qJ3)=he@t+CCS6OgY5$)FnE0MK(w zM-A=*U(@ZGH}a?`&ouZ^Q`XZ2qm`|4z}dT}Si?bx31yDRB8mLo8uE(lwVK6hA7IOg zZG4c*{Rf#B!ekMxX?)!wT*w1|8og>S6+a`ujV;;vAT>EO0(j$1r9G14o1KCV6EtAq zjx~7m;hJ~2J7)l3wCRXf*#6QRg2y1KMRSEjf>yj`{S?>bSPThoYr?KQZPO;!}10D8(3Gl)IVVDxV71v-wf( zu2nJe>7v8gvOiILGm|NJvv&m|nafhkQL6YSTRc{4vt#AMMq)f0`wQ|?V?$NGs8L4X zd#u0J`+u9eXWjwM`7RljdLMxbM)P1WuFvK69*v1XPDqYZ+i zXPq)k3W;al3Kcanpx(y0NVXsE^ z1u4+L$d`K>Zy!O%HsB>NO@kEi+PkHPO&T~k53A1fPWT)SoC+p?l|#8&@RexlZ$GlV!~ zOgjey>D@^G4T!;?qH>gE$EBEro(%$nU-OUGoy?=_3hTx?{3taz~T5)*-7}6 zda>~0{Gv@Mu<$ye-u}lBTV@pZb*p{>#ngv`r!Peb3K6qY5lv<_kECTjSu4G|s|?F1D|Rk)Dj5XiPt^;Z|l_?J7|S?*$hZ7MG)2GRb4P- z0T8Etnu5+^Z??>XrqLNNEmK{A!uNZf9ORxf(fe_%{m>>4xs04rEn&?g=EG!&u2P>o zt3PMOtk6zKzUI-J@hJF@9L8Z`ceV0M$}Qleuqn@MNUjDF?S!dDFAb=xuJ+m*A8vDz zW<35)$~Cm&h|1`n^1N)iHDTFVV1M(8m8t1;JBBgCSK(KKH}H8JRG_W$@4p+9)5cR% z6tZf3Vi8uoA8GlZ{I#|68bv`euY^Wo9bVlh?O~PMB2K9HES+$;eevcp!!tyKG%2mu z49!_fS*PTx)SewKXg(`0h;5jU{RvP1L<*bROo2#iimwWy1&M8x@InFqxp;K2))Pbu zb{T~mRl;XUynI*ho>L2)Db2FR^js6&OZ0r(>k5k-H9Yg&Y;$8n1(AlRMYg1!U~(QG z8~9Ozbf6g2Cdp+&i(+-Hpj~PMml~abfH>+P1!bSj+C|EwIOD%$uu2n+)-ilu8|l1U zd{t(?8n-iUZc39J;gAG&u08b?U&OO6K94r(`JE*GXby!(wodMvc0Sk6aq6^|@amCa zPK}O^_DjKnDI2+EWo7ckz9l=B5DN+N^A(ZA+BV(c4%*YXvlr6QR}}UGPYHHq%V=0q zhyI_9LWotst?67D3|dNlRJL#hCUsSofv>~X%Bqb`?N@Q1p9}1|>ecf#^$f)$Rhn6A z@6Wz3H;OnI4!*_rG*Q^OE^aQ=F0M--xO6470+Mv| zTpjcJ7hoD+W-``z6{Toi_A@A!27$FJ&;QT(%C9BFfjCd?>#~ja0RmYgMD*t7m)cj5 z+ySR+#8>DZShSHuLKX*{u}LXX ztj-8mvU$#%m2ILC`~!(4d3w}l`CLTAv0Ic~p5ka{&0C{3H&+pWN!oIqXuu$*3~fdn zxSQ(d8`aGYtwef;>RRRUNax8Dm@E6;w~4Ly*-$P&6(Q@vx$oX^T$&- zawBAVEuoGzinh1?bRfj0M5D}y8C;6R-^jgU;*u6Ii$fkoOxbuYfHDIs3LfNi8l>ZNrf($}xZaWV~!!Xt(+J_xtJz z2`ekBShMJ<+oPSyt7zT5nvAN9YRnL)PP#a74*uDG5^7?P;&t@{-jM%wT;@3P$dptjjVlCG&eGy8D{jVG;KA;4 zV+?vWEvnY|o^@CTbF|(5>j{IWbr>f8rL>OiC5rHz&l#36IT+pVmy)8xnFXF_ z8+b&?qt83VaKZd&_^Fz7ZqM~kFYwNfhXQit%axq4Ct!-!mCwmcbV)v~^ zwe5E1yMDi4?~|kgyUs=Uma&dw@uQoVBTq%t^Ab7Bwp~7ci$huoFMDO>Q1G36W|Cle zE_0I04-N^h)#!1D&iJ_`zA_z4pItsW?`Cfc>93cr);q?HHlEqJIyDJ4?x}<;2m)X^R;cXop{HFS)?%fz18EMa8UTWY6n2eCqA5 z@40^~#(=5tbpdkZ_33JTFC~u*0SllcZcf%&R3A+KZ+idFgIQNSg7|0LlKGEPnh??Q zaBy3vv9f?*>?ec#{tLKAI5V!fUR@p^J@9bk=FcQTF?( zPr|RBy}$7G!NKQ`MYe1qr%dH)h$nE1PvU6#Tou9?ez`^pEoT4IbmaI9@rrkeM zV(z^)R){>zFB}6(L;8)$kP* z(zqj;Wbs14d)uKIR#t^`Ow z;ECWz2$T-foS?Y=b8$b*6Tzl!s?b%^#`_^-U@BtFgfHyvT)>Are{T24d`?yYefNe& z*4EbdoYRbdQy<0X#pgedm!tXm(2}XbvuBkh@YI*G&L7Oe2#>pOEZ5&eLKWjX`!M?8 zko~XDoPS`ZH?`Ld+gWg5J-@Te1Dg`fiB|5dx)}dwDm>@+m*y{tH_q9hMutkb=&rxM zNi&DB9(Kkik^T=M^Zr#$EiJ0JQGci)YErq=4lLPI@6kmC)KT~n$td9qH#Rr1{6a$Vkd983 zn`*zpz)EZ*0x706<2(OQVIA14U>!-PcpdjmX}Em27R>__b5#?o=}A?*&kv z<^2=|!pXQNNg{mX%b3B)quB0}Ylt4Oi35x;Ng?llVBN>sl_*jQLc?{T${b((uLWN| zw?5r?r&W1@rJ0WB((k0lV2>1s<45z~SS2eli&!|p!>0cy$T}B!uek0@Mtwal#r?CI zhqUDzdtfzj+t|*P1hD^26?2pcK3b?R1b89T)|a7uH=er zU<_|f;VXp~=I7TY+5h8YM%jc9dA{F&2NEa_4C7T^L?#GdH6iNP%O~oqQd4imXuQJr zbUspqBTR7dPvaMcOT=w)bk)9~A_jIXwEaCi4iRRUX-_?%&D~^*nn-01~y=yrcYBH#U zFL9GnvCy_jd3g;RvBv))&yijSA6NtC(q4{~yq)`ro+r)*iUgw;_E#wZ+vLH;)51S0 z=HfN(mP_}svr)RwvRPIi@XW67{vccf>&0Wk@LpnSpffcsElsg^qK=8M*;i5K9l^-n zS&EJGH*NEG1==^FPF`R<#~SRXT``>y=_h~n>&yP4`*khz5|!b1&LIdw0F91;##Mk6 z1;^2k9_;jEUZjflTJv5lA9m}Jzyb>amWisMlf50njcQkmjPF%1e>_!9>Jo6JzY1oU zy$Sb3{x~|go#b-lvlymIFOAaSUPPUn_W3ANW|;MF$*#>qKtMoRoDpxVDD_dpqplc+ z4OPz_m<^@kihmMMbj9@J$B(F?Z);yjSHCTz=mMrG!0<-(;Nw{*FITSKm|KI%s!epZ zT;;8~@mBgX-*-J0h3g(41jq+sdw>3XuN<|Y3hdu+gL`}V8K+3^7?*`~g;O-XRF8Hz z1;cOpQyYyucsP$`i9BjDTQfu+&hZS6jm4Aqy9{b-w|o6${ni*&F|qUER1EH7e+U1Z zt8uSB1$;m^<&c^(Nig};C|ppXrls?{w6J4(`kiY5(}Ds2Q*3W@13OWULaz7?B_b51 zuZlm@)O4o{KK(w!L;Q%1??6LTU;^g`!>@u?6F<@5ga}%S0iQF2i4X|A z52oD`1-5r|ct3beA91PE?viyHanbb?-vd?qxHY_fUB!y9Vf|&Vo3G z_ZnP_M4=5ZJ5+-q76pgPJ?W@&o^?CgLt_`p#r!G_p29~T+@v8yTt_1h_8B9&RSm4u`6zQjQ?O}`e)72N{TxubA&P9VcCv$P51s4zu zT4Xu6(9slD-)E70m(pOM)_M2ik9S?)BH5HJpoGXpAD-ANLj6usb2j?0aNYo3J3lCy zqX@?;Qijb*-=h7!*13}VP1qdl!i?a5=Z<9n6RxI5{>SoI6dROE|fwsti+%q()>Xrx0mlH@=6j^j2VD zian+QIg8R~6{z*j&oIOs2a_9sIJHUro!N@DPbtu zW{+hWSD=@|GhRbhQ0;78s23QQp#~PU_D|5SbN(*IW_va4^~)y)%J{(_f(17N zPt|N)5e!noRvlJ@{W`ca{IBU0Efu|}({IrUp?pdwBv`UCYijhQuY%l|-f`bguJiFx zP_Jn2jChiUU$RPG)kEU+g?JI{6Mt{*@f;rMgWO>JLCFwcEp; zKiF`|GC)1-`l%cfcO4Y53Ly~}-gDf`#`G0jHf9StwK{PD(J@Rqa?5TWbL6K;!J5?Q zq(FG=arG=T}uR`9w-6$%!1*zW$B9#*Ug);Lz0hh+8j)V9XAfswM) z_p%&+RC?hd1PIbkAV?fwO^z#;17l*(0C=5yhxrFkH!=R=jEE0Rs=G7$f* zmfIA-<+&@WDtLYG)T%z9;6IMVzjTl%$o@v79l==T&@{i`+VfDVYXXSdq>V`>Iu_Vn zFxp!9b+s#4g=}TzA$>k2a?%{*hp?i0MQZk(ehu5AC=iK1Z%ssNT7SJ^_{j}C*)vd8 z5xGU$*iP=#w%zn{3K9+pl*Md zY;9~DigI(O_y4K73v zt4TLu%E%R&*SWIC8Hb7tTKY+7_pehV2#dvoy^;$(*sKDhdQom`+C{TZg!$kB z;Q3WoJ@yTAGbV#&W;$4pwX{AzC&x;LX2%Gx2xB5#BnLOQq%Op9s-(MuShu6|Xlha_ z!G3cUldW7c)LC@7@v{VDI9|HX1*SSMJS^4G_AqPlaH6p@OF7;KT0A^B=<9C*F0zIl zeTQAf^zq}y7mBlezHdObDhHNu^F~ESV;li&0^wJEd)IIJ{}J`oVNrh3)`O%-F1YNe%%T2lIPNX zg3jvX_wobBSnEy>QB!Ia^lL%T?3$!k>GMQ0?i&i5K`(ZvxvIYYQRAGq$>;mS_!zR8!~MiQU1(g3?O^)J#NRhyP+p|d)E%D*^UQINW)!qHtaeY(*8lj1 zc7^=Kw)(^t)61jWX^xsF1>E?_#xvJ|q<+y&SXh`tvNoMtX#w{fTo3}wjj@+aKsqcl zGp9M|wvnUenqa3mhYyDG5%DI;JUKvZ>{pQs~5X>ab_11>;YN?N*6T|oVHa?5bKr+geV-LU7g;`vW> zwt!Q}{V_vYf)jtjeY@9NdbA_N95 z```|LU%Y107_KNU4>SR@zweeN-q!)nAFziHJdYeys57FiWacoh@SP{`BbwNHF+~4v z_8A6azP++nJE?xHZ^&6ww1aqt5fZY3T|>xekA?Iu@6ODffn??65l;laS1@*Tn!0Q5 zHF_GLA^mIY;8nLRzQM!bFJmcNHDa&*M~?`Cg@sDr1em5-{nKyhNGa)jIp7;!)ff$T z{G_ngze&b{`ef4*)^36ewyu>9j9?{czXfJ2NY~aC@+@LgsG45l%K4L{J#pu{t;2-3Uc55sv&4Y~yc1n^9r0~j7S*vHX8Ixq7Tki-kz8+GP# zlep(R0BExSdmS`6Hw@-XJQpbI!~DcP@5Ki}x1+xd49sNSzY(w}Y|drJiKC~dZ!Nfg z<1X7D_yK>DJa`Xk68d9aNN+O*_Ksf6Q*cDs`4~&N*;7Ka$NZ9#k{9%F}ZT*#MY)B$=KwS~%NgtQW?xwaKFejxq((nQto-nx0$)?|DhGXk zq5dhOpAtn#t*M<7-h-O9(2~CXem|kP>&UD%>{{v#iOj+I52h|5+O)StJrqkuDr>G9 zj6Jv8QO7f16%w^>)b{%h2x$rZWEW5u)(kpv!I1uy?I%y0Q6*KU55{O=ns#$sVFCKu zC;w6^-v|IP3m_f_>)d(XnKoFUh>PN%kcI_Zb%3TD9Y?eLJk&x#{0A9( z+(l~RlLBI`-F$)i>Rt=(Cz-}su+Fvx#&k>%(P8zKbvj9U{*Ar>44YXfVHXe1iV^?% z)f5e5C*+`!+{H5VZEgMw5M59*0P`a4E>_D6q6|89mVZn3%tp_B(|jq-LmT%R!Q5xu zR_}Z~07f-jk7eq7_I7A+(2Oaiw~7moqH^xB)f>SDGUH2)B3n}2k3!#!Mmg(($*$s` zF0+nvK;P^#HvI1MwPOJ@i2cJM(4+XS9f`byQ%$(I?^IW;)kp&#BePKZ z?1&?A_xUH^-aay}MQQ<~3}mQ-cT_BVO~>qz4ay0ySnzw$XHiRF>2e?gYHY^&1?@bR zMIJiP{>RD9-3mC|l0$^VH&?b?6#Fom-J zVq@$Zu=2qz3#drT+t$|S+cE^xgSDYj7E5gxna|1lhO(CIK7o@J2u%aEPMfEGa!fFK2R{?|;O-6I9WZDLX{%QAT zM>}tDy&Yx*9l{2UJCgZHvVoXmp9hvueEBQ)bbU&75K83Xw!$~7&L*JBH~Uov5QrB{}cuJG@ytyeZT zH_P(|@fEv^=1t3k!0ir-xW)vU_MvyKgHgB13h1Ff;QWE1rXvvcb7=%FnBm#yJP zU%aFpAc_+_elIhfojBt^@<~e{-2ow21zq$K_jFc1y6tTQMcsMMpv{wu^D`hs4bBuF z_n7xv+rYqvZCCEO`kRmOvdx5+H`ossRO@ct<*CQyh}-bp1t^#2-}2J-_QTU7Fanf$ z^nZ5ldyCJu{jA~~l}01N*wDb>2#N8U2>s#O+sHh)&{u>M6?{VQCUs{{T?5Il+YhLE)Gl8PUwszyBqo4c zIch&@E1z1|8rEzc!8FjRmQq+Z=AzU2A&@ua<c`13e>Xn&I7Ch}^fYUn4=d=*k;(d#s&3!`Dy`bgCOD;M9V&{rm-l zRPN>-c3!E zT2&A5RB=-j%}}bpt*c2oqU%}wIx-?=s%J#>l6`13FL2PQic%`Eui48E042@a?Klaf zzewA@UeYyKbS6vN$~878`syTpO8292==bD5bwVJ{@-y8D;W?PhzN&0wW|rTp_wPVL zdb!ioO&2C6q*TU2H2mumEPN0txzkFH^FjK^f~hhRNK){M2&RlK%t;S=UF-K}OWFvRpVAgetA ze20ApQU`5BZsuz9p|{TkyLM>LZL9Q2z96#=THZX@%zbH|ORVEAejhr&NGso?kH~Hr z27!ia*X8b=u=0i8oLfyeD56m_-oF3uXiD%t_e;I9#GC>!m%_~J+as{6!YP`-#F%r( zOEWX+=2yT0KKAzAJ8g{{>5~V`Jc%G2YttATHoE@r*%y7w4XdqRmxh4c={TFOFwotb zIeHIM{%KB4{b^R+!!duv(KzR&+dlY)Q&k!#dH~wcvawmd4-3#_j^+g^ImUQ4=yi*$ z`b)hIFxmaso0jkdql5^U3v%tf8-1wp{Wms1j(v6NDUy^jD6FNi33txT0ITi9M7IQ} z^oGP}$|1)15jMOOgCne203WUc16f)dfq1~y5Wm2)wH#^U6_A!XI67+Lw7SGt0m!JM z4~!W6rwnLt$*AgqN;ZC-#y|3sGy@5wE-d3yQ!-{_4?o3)b>Z>!-_087H_qX&I(TUo zW6je}X$2Qrv-nAlrAD`E$dcQ9z`)z4G)Z2VW^+J&sf9+f_50y%&_n7CXg#0}EVqHV z-^*w!j-lIdS3{Aq@0bsj2go$j5U>}j#lRy~R8(m4G90W)e!%g8V)TEnbmT6Zv_>WN zFF`1Oqp+h~Fl4__D-LdrDpd;Vv&Ls%0Fc_PHr%=olYcm7gf$ldETv%xi8XTD2>1yk z!ot$`f1Z30ip1npdjS8VrLmV_ghaAQZ!4?)l!?yfR@hL;mkF~O7#wWtsINbGm=&Cz zr3qF*F4h3Qd6YEiFc=wx3VIF??N06wUu2VVJd-PCp2gFM;edXu0$Wep8rARg#Zdj7V#+5d^Are+h` zj34lP-XW1cuov_xy$0Z#$uooG0CM|+EcqY>xr&1N)o@5}mk2gBHHoVFcKPMDkOJ>D zhe5+EE{87;1ON5&aK<$S0DRYBO-R?1$om$26h(WS8pHivdk*wz!ZRu@lEpTwr0RQG z(+vp!#?la$@;zSwU_J%y+rZOpgWz0WN2hb~?$^p}Pl_aHayjT+*f*ygU;J28b0C4| z3gou;Otp<#ed$A(m2sEYDUT-D@&A5oYrv$=vx9>JDiCVq!lAko^YcpPWA?nxTgwP> zpNrjM)r1FjW%v)DmB>qzsQ$54hOubR%4DHo_U&8P3Yw(GR**s@-gs1`>98=nf#oZB z_W9ZxH7^Mi)-*W(SGHf7KQ0fF_M1JE*tL2(Pnu43;se0raI-Ge;O>mH`dGZ zl4QKqdAdeb@Ns!x&c-#+4H-=Kv?gIIK70hj#iFC&&-9lu80eHaR{7#|&w~2_1X7dN z5+V?BLHy^Mk(sF_RU3t3|Ml)jsy02G^Y3L%{FbhBm`MS# z!5~fBq|A?dOg6%jwHRw?<>7=8rQaK*BLV(yPZ`@T>qWU z+{td!2c_zbk6a&k9F@_qYAS#$tWukAQ@D0|d+ZJZN7BDr68yKD1E9;#&zUC811hYm znIkB49kTbuVYo}Wo;Tk*2AKdBB6RC9=zze8V7MlU2t%I{YW|cz|^ekgMu3R|X&N~G(DFCw$EcNnL+854wKZTCMcsO8R0_2$e8 zZdmjBG`jw;762hna?+{*ngE^b6<$0SABP2wz+)2aHJL`+)lq`{m3qe(QSg2yosiSs<1D?}xeXsiWgV5D?5@ zl?LYw4p#%v(;1*0r!cP<_&|{>@!a413M`hU)nF79zdhh`XZ5&EqGAh@awmnjOJ*KN z0fRz`mS;)nH%JHt1D@sOy02-T+;Xs_p5cmeZLCR}q*FaK0>fCNN~?hpaK&p0X%#Cy zGPF>u2!CJB2N#3V3*~byKK7XX)@8Qsk;uz*%!aXD5vU>YTKl*kAMVG$8G4MjU+;oU z^@PIZaDe<;n?1vl4KFDTjaU8eV{}>qMNmgsX(_0Jmfl|l*!1A(@!nN+R`7v!d2kcn z09fowxTQV4EB@{m^o>Rd(@e+#qg?q&Uw_N}=-WSv<+Qq&okg>lncQjK16S^3Q$MT3 zQyuOuuFP}}j^(e}=Mf_l;1=)_bvU%-usM8Nn!p?6%&Bz*@`);ZU9Qcm*FgWY z9emVsO((WXo7W79tfEmp!Z$h-_u=4B75)!3HhK!?u=gMj!(xZ(U7EocEqso);WBZ{ zz1#;Us6nlq<*33wCgG!EAQ%i z;5b>y2Hhwo(`Yk&{P<8Z?(px2vN?>B=*D$~7FwwdFhM8tN9}w*!#NJkzuvy{1V%w3 zCp9^vR6B2)bg(>ACVBX0f4VlTwv}v1RZ&?v1O~Xe)O-*>D{+>|gzLRP2dSa3ptxiK z;VvO0cgibxVA#6EXqaAe0Iik16+Llm3LP z223$<_;8)4QE1t?S3yJW?@IT0oH0K)T9=dM>i};CFzwM2HOHkp{ux}t^1Q-gwXSrk z!yj;^u?-P3_CwG8LP0Lmrv%2X0yp6cU-^Z{mX}hMLzKG^`L$p!)1IOA|2~bS7=nk^ zLaf%rzwERX1Tg8(wii$gk{;*L%$x#y>6uPkJKmUd9WiIlUq`p zz!1L}xcK^^R&7BDqT8w6b|L%I;3)Hxg3PEjqv_8qahI^>*L3p()L}Jyg|B%Av-Gp$ z#z7|msc#b#$gh&1g31e+6T6+F*X$_C0Zgzay~A(P8>;$G2_5je0jRFbQgx;7XGg9a zhifLhZP&lmk*Mq-vY7vO@yxag&4tlP~4z72X_dIo*o zXy@&6Pn0dn!wAu+=8KV6@o15M@v{AMQkv=f_X9>Wb6+CPGBk14gkE09s#aPV!Dt9V zBwNHdH~#_VxvYm2>Pcy@RRFIU*Tx>I>wa#-W>tqdh{=F^haoW|O=|@MMJn1KO1Cxq zW6;jr$#tsVgu>52Ks>$qkmj2am`-#NeXkF=aV_lmGTG~cd;p0^^8E)Zfb~XbfbJaW zXfwf^->$AOp~S#njYv1o2tnVzK4qu^jUafcmklvaj{5aoc%kQr*2>BXNE`%d%DY`{ zOj1M1&KM*Kz*Csa6fLFPe@}&aosi=%B!XCRMpOfEAAFedBpE0Ts5SAi(9Qq|Mxn2QIhTVu zd`)jb?#prag~rpACny^g>c9-%|9b?IJdnkx&7Hk6=U4Ot^GB8u_zhYQntRG9?t`6W zLmjH_MuRt&9>>;;(s(JQ3MS$L|Ku4Gba^gFmFT54xUP?Q;#Jz(Gb$Dw>{ymjW`c1n zyJ-%=uQ~0r2F)$h=+{A7rb8dS^pb{Eln0O>A)3W){`b8bOE*y1U&9+yEk0E)%^R;0 zzpT~_h>ZW;UB1R6WB!h3P`oxE7J41PYy%!3LlbBW!(R-I!r1jwhXEjM3HB%rdH3#J zfbLknuGagOkR6n!$hEHGe>paI1W1Gy5TVqRPQ2M{#?2s@{ymj!?{3Q`@8E+Y3VE0L z3&PRmC%|eF=$k$H4OD}KG z{jo`2hW!J{)4#pS6QExJ>_+-hcg*ImcU4HYMc+D~a^+jdiF>T0(;Xofe+`8g6D&=b zKy$gkf0oVc$L?Q#geFvO@(c^8;S?{56M58I?%aJkFfg_%ZJ#^KdK%bj z?LW3vYqyGOU&9`0o^+s)2j2p!jO#Vh*>s)cFJ^Set(IYB(p# zF#vm>-Jj0KhoFaqmdj5br?#xA>O6G?Z%Vww6hJfQKt^hyDUkByk1`-yO9AIC2XMp< z3@6#E+-XT4<#7zqeerJSBktlO$c>$I+iJu6|B=o{W11-Qto`id3zu89Ag!_n|7jM3 z;NvYGXLtobvgi@Z7^hNnKDaOaNN@Mv3#wbSFW6?9OnsF1q4yG6I8y7nG3U??JD-Ic z4r~&@o9rnqrE@56 zgn#Ao+A$|tLH7PnfW&yijB$22b|8Aa#^>NpO$7M!8p>elH|l!Tl)>JQ`OEf5HW(3u zC}WIMN~tsUoCzVCJIx3)sRa`UD0mW_6wNhW>T!3Au`XjvX4?$M#C$khklpf!(%rLX zBis5E<9Qu~f14?#zRs;-g;9rITQO3AGZmJVmCZXI^WhoTECt-2>KKua@-4FPhjVB9 z$;&fzo;%1@I-V7_W(#>!A;yO`Ha2U)E-ft`Q`N2J8Fk<03W2)wQ3Jd5el(b>x(b>J zI+vo8E{9vzwJ_yPkBE_LlZ6+3uxXPEG-DCCdGy|6RuRjt;XgNLf^m9RTA@Pi1ir5c zO`8(ek-!tbA4gu?9R?}yeZ(?Pruy~KYAWUZ&!>bamFx%QydHG)Od1OO%TU*dW zu+6VP%(dNVsd&TH#if9m=%Xhr?+4bt1!ssT!IYQUgp_t4sR3&W&`|*qk;e+`+PTx- zJ|Shx%t0n=2U$aoq5vdd;byq@focFytnAl_R1gB00++*!rsiUradG)LPeiv|)tox2 zg-X1(yXxV#_mO_D-_v*K-@gr+q*`#`b~gFFcexvS_f&^Q8f0pX)PiC=fCcBh3u>3- zs%BEsJ*|8FJl58@_|zr5OgFub&e*6tzmGplZj}X!T5P*)ntH3yF7>DLPJ3~}6V|Ht zpn8{wF(ET&x^HOnQ~svKS|RTW$Df*R7Qu$iMXx1BAJ?op3(_hkSE*X?^(GK3i-I0f zgj60S?L z((-Aan;BBGi;mhC6?(GD8K-)BDja@hE`KNtdZ=)Ih?ERQ_gi%qt8C2Zd6dk!wp;~L49*LWN7^5u#G ztVL(+6dY)2#)K6P_o12enkYG6!avtyggFp;E-sb8n7=~-x)}xpXuq-At7~gj%hBqd zcIT(Z!~i24=gCCm{=(7?I<=NwmMhh*Yq{_`Wk0!yN$$DJrZgdc0ft-yK*R@O%(pR& zJ?Dc3Nb&Kl4dZ)|TaZj2F5>T!#h5BKST`U5m(lGZtLLp|Dfic|kiHMI+c8ef;%63-W=Q)l{ zPXj-{V>*ySb8Xm&vC_GMI~OR#m>1Yb@!mdXx(ur%fWDtB^W*b&>eSS~t>5C-#;^m_i=DNU`~7?b+O} zQ19K4qY8XuE_q*Js{~j-TMc+p~GWjg4dwQY(T;`q0y-a-6`y^kFP`ulWV(=`f?QYoPXPy4pfnYpgGs1IRxp zaDQwn2-R?nC1%UwFa~;hPxD?s<1udRd2e`lxEj#o9KFvFGsIJKazpaPfwy;Z0Fg*v zTLqEG0!o$wUI!OyA`hPY6|B96-0z*UrKPpt-tUd<&DzPm%LoL^?AdOzw`H(GE!Fc#sBui(+jYvX#CHkWqgPH)8& zYyuWuks+nmBID~KHYB#kIt8>7ai^Gk7D~|ka2qS?J!|P{L$p0DvLVdCz~Ch5R=#^U zj19JfuLPUv>h4;UUhy0TpsJym)71MFxxX3Nb$|)<0RmDoU`~tZKsbIHbtba%5y@FTjh>K7>5$fR9o9`s;qr^>5+DF^3{( zUULmL41#5og_Eos51#iyZW}bHHxFUhIpgO6o&WYC`A0t$i0@@RR(EV&005>A=y8oP zXPS(suCA`iHphQfOqx%6z&ri9wz}#v@iC8R42kS0d-o21J~lYNwDC=LUJ<*> z80N8h^E2?81SM8JW5NJ>DhJdnx7eeXaB{g2ir>o!-=4Ycto;NKj5xgIDmOIoG1|nZ1;>UjE_j;xA;b5Ua8P+rKIAosL3&A!4G(tq&#hoP#A_`8kgq(OJ+p%+ z!T~YgG=dQUulo<*!BU_!dYT*c6ck)yK`c%4ySpCCJYjxz1+ z?1o3Sge#W&rjdu0>Lf|i2LPv@QP5dEix;e9z81ZdC`N8itRmJuXYXlR)ju$TpyaK9 z)vh4Dd-2vkj>Q7@EdM08boidW%Ux)ij7{p=ffrj~k*;kx=Nm&XqU+c4^JD;C#J+j; z0$}kb0F0fI&B=OXXSec$lWg@~jri5>M=4m%6s;SK;s<^UVF!Qu)2Ty-kPqjEROKezNcm zz(AZK4!x3)eM5lOU5$lssX z&AGXXm=s^xeZ|2oPlSRZbuaD8UzrG*Fl-A*eoR2KHLn!3aNJ^-N_}Y+N}wiba9)4Y zkx#KSBjnK-4!2aw5;0TzXD9t}`>}cPZ3Dn2Xv_u$6TSRC*H!?>`CV9h7q)0;?t{XX zH2MVJR$KiNGDI_IkLo}lhJBN{&jky}=Rbk#Tg=X=4;7R$R4Qp(ztQ(7w@T)E+!dzgTHEP8YF`}byd zFut#!0H8%~N5gi%KCS%x8K|b$0T8N?`}{<0iw3^OmfaR%fydBE>#ArET_8nnG(dD~bfxGn|*l)B!pOZiBq z-{Wdp)V!9LzbMI3#`C84>#;d0NOoh8&A9ts3Wl5!N4H$R+i40&*Sf=SdJ60z-!Z{o zzkl~1unf861dfK41iDF$9Qw_-4;=ct+wW z^+M4H03`KS8{@=$GuB(?YHIoNSh;xI`iJ}SJZAZ-ZUc`@LwOdXi&Bf;5HZkGtMi$8 zVL9e}n`(=AEW8Z73K#bFZOAts9^~)+9>D!>wlng0hDm*@DGG4|wFVYe%%2sHkB?!` z<>()Rc5?Z4Mtqn4Iz&?@Iw37J=tDGsMV=H(v?rLg%U!)xwT75!=!NJ=FlzG94ioli zRL2g+Wak{4&NQTO`P@pr9%}h(Zvb2rSBmZ@JjEeDS5|J_gQl@d|4oShuY%lWY7&)4oHC&zN|UBn zO*T+-NIKGxWFeo39@dvyJisl4U03lqlI(wVT}W_)pYV-{ zWg?>l1Px^j>HhvcJ#24%u=o{7Ct@JXTWRgTktCO7lF=!IZm+GFMd?N(00>*bBu=g3 zCar8NR9si*xeU;21L&=$dF^|5K0zZZs3ab(rqJBXr_=pKAITBtJVT>3-gSi$`AP)5 zhw~plez^9$yHlxBk{xt;QNdj1kJ8j(J|vl@itOyC38axTq?1kZR|NaBn4OYe(BgEo zQB+Z<;LDdUYhpK&b6kjaOppba7rA&CkhsBU3Kloel)puw;%+qgM=)pjh6+=|XFf>q z19;Mp`2CUZ-{o|ckY{#3bXBN{RQlM!<=1eUQPLazuzu)#`h^fuNs?N%xEl;%y7b{* zac(K#5OeH|I#PO<*9e(^R!=TOphZdCo^etex-x&Z&>C-r7w58-QUEVRm6GHo1!z~0mHpP!YnbgY-+G2JwtBv_$_}t&k(MMqQ}5rp8_QO$%3xw6gL-+TcoaC6(Hr ziJo1!Cmc8;*4s;~AxCZ|d&8_>Fh?Yp!dSe_I$jqQEmo@Y)ZCc))uO}i3GPJ)Lnk#= z?+|HGZtPo%Zo^L)d~7w`wOmZ|@YVfml5UHg-NFNM5|8FT6HbMp+jzQazU`8Q&Hy`8 z-(0EeG;;{7PSP1;kBFe)9up(uW7<)4gR=p(Zu`JkKGmWS#Qu7;t{Qw2blp@P!+rU# zwBp_1Y(crmglWxJGY^o5yoT*<0DjDipWgp^Cn37;_06X7nK1N+A^>C!iR;Ow&Dd zkvDcdh|~$Y5K}cs;`XY`Cnr{jHbH$bBwIl8`0da0tw?m0ag+PXGQ6%W!J-y|Nb4@V z9=&_->3O?R@zFM-qQ{hQ@d;DA`GblcFmBYp`S$T=XN>zpWoZ+J3wEC5UCc0_Cnx?@yg?{p?36OUP9pKL1Vi<-Bl|%R- z64OvJWz@6f&t3pZ6S=J?-l7~aa0*yMiq4WBkGKq8h-)%IWU^)sM^!wTP%KkKR(Z|C zkTVLUQvu#P;H&Xp!{$>_&57$AKXkL}Md5onO+=l;1hbLB?0tSd4uT4Zk%RlA`A0@0EBo zuE@V~sFWb*zO?u{{sg|3nVo%M;Njt+kZofO1hR%81XInj`*w*rmlz=sDet03d!hnD z4Hr25C9zxVDcM|pds9LDdO~ zW4G8jODLt~1?#)((X^vpz=y_z;~WA6T#tIfyqUyVJ5z-;hCjmh>#UfwpX7S01_iaP z5!rc~U0kC%W9@v=;Ebz%;&B$jnm|3upj5d1y1CNAOi%BRp|f*ETgAOQFGkoKoD0?9 zYbt|LZpqRKkXPa!ePW5Poo3o!y?6m?my+yA@dvdu651Nb9LNl_(17Pd#%?mIywF+K zN47I`VvSOH|HM6!zIjbn{`09~=tB@&gq4Y#R*I2zik<~u^nlZfQs;4@9VPoHnDgp5 zs&dm&pIwNrxUKO(9;`@ppvEc6tM}P7{c9{1TYV*JskwM`JqCrV%_>ols#J=P%_Z-C zVz}PCRK#~5GIrD zmhyUz_A4tMIuHKgZ{?WCp&ZOcb5ovtWAB(}_;Odn9gkG)roKXq^&YEY`qO`R}aXHL0{o$SXgwviB2X&M-Ngy|zrm8x_mGm68v- zvyg(OdGYVYyhl_>t$uupqqSXH*u5TV4Q)1!gi3UU#s8{Wq2qgy5q0UG(WL=$Q6Gp~ z%@vad=ZlvqXDQdNq}P=!Y!?;`h*Lz}A@%X{s+ZU^>!W-TJBUfA-Bbidx&cPMOxrDH zJ}&wDA+$LqRvGm_yA7-lssO)8*TVDR0VOSz@3x!}0YG_w_j=wEUR`K0pp}i(A;XDBV1nMzIl5 zB@I8iN}3n21!|r-AqcpNzSAE2XTZLQ5(w%1rR4TBTYx24m+HCI5<@hHm`v~8r0Kyg z2qet%Yc<@q!k^9lo}Cjw-V$t~x~JW#knN3tVKxV|W|+$=i9RYiZFZV``_ZTVtZnD+ z8(KcZvs7Pw>V_ur_Dhyp9RWvhd9gj)-6tK^)od^-yHzVptM;$87Z?S@*5&F^Y+9jn z@nVfKXIdi_vvll}$oHA33&zlX`mLP%FWI)^lp~eu*sjA0i~A<-Ls31Dqt9|=i>UVC z5HL6T!)9em=T-qVE>H}qYaxv0K+s5`}t7H0~9_oSlembp4lr>=7cypAbfg?Zq^cFsS} z1`(WcA6QJ%#KDD-kNu|HbbxRAP+qp4Gbh5x#WNj+1`cr7r(4YXkH59k%(+a0jVjzz z1&GH?qOJOZwYJ^pVU1CDULcf5f>XrEml1`-N0hL_*wXdzY}n=@e81I-nMxZiVV7!4 zxcy@DI!} zbF_V83n%?+{7io2^%)i}srjtA=2g-oAx16_{_s3p8sDo(&0$P^-GFi8B0;?KOu_5T z6Ao|{_j=gEQ~eqoY9qV4aq@#`*lV3x(Nl;(50sML=So+DuCej=t3?menqX)nx&4dD z0!r&uU5sfzCR<{!5Pgh5x>&C^VOkT>lkQg_3!FD+cW;Fze;sy&l&@VZJ0i`yFs>3F ziD(Y{)jV`lH2SsJUNA<8%`N-(GGo;%pr=cfy3|<#k%}{jq~8wrl_Qo(cv}OAlE{$(b$V)#heiLw2MgLG7~GFjDqTQ2u6?3CgDhw%U&7X)Uc_QlWeV ztasqralTrgH}eTIh`u$*f64;~B|Mb{T-jsv@g3Dwc2@_74XmR9NoV)lF;%$DySHyY zuj&Z_W$+~s=3H4+fe_Y;#a*6hm?`~wMFi=`Lu-`2k^ScF+v_Z3MDtp6#`#*C54s@= z>{p`9CCP0jP5bo$?n2Nl=2GX3qv$J$uY2K;`zwNyuJ)s7S&j6aw5GqI1cdV$v#T;z zkl)c(^a0IuIqE`#VTMTrBiFA)JxF!hyyk7W$^`DG-39WwS?bdcWul#jwuP48hXIyu z4D^&S2&tV1g%b2v%+%n{m_Rt=ja@sLka4MN(YjZQ*gJQGeiJ6#e$B}v`*Hh76f9MM z&VbA%I(Fiw)HGi;8M5G|jG2*m49Yk_UN2J-Onni$;}(!#rwCI9=d1**KFn0Tw!DXo z9eNu+NpvYJ3lwv(;ZKE8gG2F$+S)xjBvyBK5def|pU%3d$gx=hb+HN zLY!@Z0z9p0RRK9Fy?#uf7!1ez&i=_C=!bp5E8eG!O3opn+ax2x z=KbH2spd&{J?VWCU;G$~m4WMwkmSGU%aDEg_09IDlFAkKeH*$XF#0D7h`I(JUH%T* zx{3o)R9yLcbT%Y|dK3+>GoDQ|G6pVBr_QP{R*5#{pCNJ4F*KB+=)?*{H!Bso-U}iB z8`$1U@QES0O|(B#Cc1m+BLKN{p>li)>Br_mj5GW%AG?WPV}f0dx?}&nVJ`fqzy9Mc zOfTURP+_D1oq=UoF-Hj+RF;$O1VCyY=iCz-$fbxPr39BQhqqGKPkw$TO&$K}WW2i) zVonuxr`dpRWOlZdvNKzj`W+X>>3X#IqnZl)9q~Og5M?yxg@ApE?CR<|)W_uylG*&D@Y_gIT!!?03n1QL>hdx(>Q87jlqK-6#VuC9c*+gC4i!w6yAZW z=Ap4ecnOpTu!i2#&mR~i&?tQI9jKX~@G^_+C+3Q9N;muj>J5aUzx2PVbMRo9f;m%! zbf35w0@8r;$0L;~DGg1{4w9YXVu_%~4Y&lfj}?P|3utNuWzp1_wJp%ROLcz0m-x(;5)^GIo+eCM5P)k?jfSZj8{c(+!usd!lEF;rZFzR@;Q1DIo1MRX@pHL#J=Q zUltRfm0~Muq=#3YK_BNKee4Dr$hFSQ-^@^%MA>tZxS(MvIrChSBj_e z4om2A+!F~JVS1kr(KPUk*IlW0MjY|-#2`T7lIDay3cn%>ss|4=-GD;Ql~1w;Xhjv9Ssc=S$f=L7abP&;M(iW!I>ZKxZQjkl}UQAq6s7`>yH#Z zFO<~OjO}H!zk7a{t2mpt5-2SCYjBv^0L)WF;88Mw1E88Z$)KJaY}~%=H{Og z57UsdfzopE-;2AQ{>q_>G~%Q7r~JyTh%Exkd&=!8VA?AaaQi-wnt@zN$JA7aV8~gH z;5o^n8`NKQc1bSdjS_6n08An^5ysNvGoLLm`t&I|gqLL^=a@j%n_VyGQ{YTPtv@V8 zhINR$SPt@1R&1hx58Q1SJcFj1%xp4-^itS`${~mONwyroNyfa+L~N&jw>MXEV2^MM z$kn^0wsv)M=$8^5hx_}inZ!!6#xE)ic(Y%!Dbpyv+4S!#+3t{xvAz|G-V_uRRMTuY z(6`umr5}>$F0?@kf=N#q)!&;GaqiS!rjIwyG zX~IWH!EI$C)N#)fg%z%Ng^2C7V@@5B!Ni?UAuxikoGpwUl8~57e;GovA?3(be`KZA zDqE?3=?jYI?`;(sd}fIQ*43$ludEXP$P@~#W{;GI%xA~TdkPqxH^`{!49+%r9NDjS zGaU35GNv@wi2fkm5ej_~R6ja9o7m7GW$@Aw4FANBbm#4C8n_PWAa)a@QM?O>7XN%e zsq?j6h{oVQgKar;_%i-}P&MdXmLot8+NZT%vP5@@e~$u|@7yWL3Iu1}n7}}hp9a7f z;QgK7{T4$wARQ^o@>V{tyj_S}m*^J5-pz8-D=#l+1sN#8me5OqWq!r=PE2~+R-&6s zt752bJjPjrhqi_!`&uAKF)KG?0)F>A`W>@R9TBKxQP^zNqpVw+&(M4R ze%#1{qWAfXAGJQd%K(Lz3V9Si!h!Zi-Z1OnO6acaEXS9(^~?m_LIY1xO=>FY$}>WY zRz_JUiaAVcFHojk;U(&#`kAhJMV<<(10@S`7LxpZO?72w9Uu;A?BxlEma7A3KT4Fe z#w>{?H1u||ZP-W19SA$odlY)D^t3uX10+iAFP+=;XLqFqHps)v=s&?AfqVtKtj?Cr zki1JRy3cwu>9dnz)|rT?sB2n=>BpYH@3XU~kK{O>Fn@j!c6;#=Bqk2` zEX|7fsB<}wo}!z%%;CEbWCo!Q8wMzvIq7@d7yWdtTPa}tL&->tqSFN>)W5c=Nmisu z$cCJ!IHz(mz<;YPd)2ro$FJ%(Cv`t^SDq_?v-llF_un|*E(Q-`J_29UM=ig@n#X`S z=oU*R*uk+1bVC`r$V~Wd!)eSW)#3z+n7+-u?SY=OZa0BBn1rDcVaiCQ`GMskfKyP1 zF2!SnQ+llP@z?X=^!T_(Og5d4nOU2Sx%s?cYCSWj=7e?R_O-O^Y$ghjg#NgqqRug+ zU?u%zq=*W@O416nG!(2dJCMs^JA@J9nWSWtAY{3-VA$;GaFr&gvgp1eCa^&5SD^~# z6ow3@>*RxAiQF>Cl@>LRmmWX_bDF}?@AMj zZ9SPe?3KO#&L$x~UL;#c&=*3{Y0b^8q*Pd?T0aWFh2Ic` zxS#B;ri-v~$&OT79x`Qh8XCoij~_qgtfV##*Q?fr{@UjCt9|sU0%Xb0V{A&CD0y#@ z3Xv5=qeZ`YwS7t0HrLgy_JF26v0A;$gIZYLsApcX__9W$sHi9%$4A5!5Xnl zJ9jaI0K1FP#7EjoR*q8*6?#I}xWbp}*)kCZQiY1_CJL&D zinCzsEi2k!3_j+!ZL&nD8_674W*xr!!M|=xCB(Mdt{VN&ojlO>zU@A)Ug+u&2Z#Oz z((Bo8Xfh%En%diiOrsE`7~{7_+wk|v=~DH$MV?Oy~%^VE5=^1Au^e>$w0{9NkvtaL3@_N%waub%xv46W^@3; zZnxTkK7J*ezca8o6Gr$n|6#955bA{I$<{FHkRPk0$s z;BSv43Ko~9`dH&RPaWBIQ>~a={5SF+I*NPMFz&f-%4%2kkX?uu82oA$X}o;pPVUZ8 zby2W7{H&lHT1*H`_yjZP+rS4(=2!^G^{s~2_SlFlGkqUZH{=r#lE9^%zk9NWTAh{S z;?TpyJMv6kx6dFCh;}p~F`9L_PeUNm+F?Nk6Lf~qjSAvV#*dY&1g4)8EsC5MxL-VD zF4`#bCENH&vcpJ5v;Tc~bZP}U%VisRytlUf&cXPa$Hh_lbi>)tr5KKRL31xEOgVw? zl}?wSdVCeL0`SL`nlt@;g^6?CGg{%#&pa=ExY`*3|0;~#;n7&#$vK|cUG5!dP5gK7 zWdT+65W-KBX}3zsdfi^}K75=W&8;;)M7opb6kAxiNe77>+j$eE9`B9$1*}3$Q;j!u0=_O~^1DffLOwlb-P2ob-}h;6rCt%8)>tX@dJz6XyW_zBz7 z0kxLs7`jm`Qzz2z(PYp(t~pI=<8>5y7kv%C zRdQcZ)Hnw)(@@x~&Pi&`@MT&YeU>u+(uol*d!P<7#CZVeDo`llm_r?AygdL-21=3} zn>ltDWJN`{Z_hLwk?MTG(CGzSglsueLq~4f=GK=TI{#+;eSGx$Wc8dHWi4~};qQ~= zYk>;`cV6gtNM6s>434~?GXCi38IHHJ&SCr&zBzjHi**zoQi-6`i=84(qB{0AC#N+{ z7u9Iqb&im@&QWV$`rrkW)sp@Do&0 z3n%tX1uIIbNfue50`~@ar!_=H^^lTe1X{ol>1_Y?jjkf-z7>)jEAm)}kq^MVipF|+ zsL`I5uaEdN>_0~g90tILB+-EPFPbXmI zc%K#q9exCFi>G<|DtFoK5K%~atkAQ#n27#zxKMa3W1RGVsqW`D@mro*85tPBNq(_- zUs`HA5l(zn$qM;sugg9=JKJJrc9!+XeEtrV5Masc6xQ&PS9d}MQK?0lm$?(AT5QuHZ6-BOsLT6t2=(gQV= zHmjU8nPPi}|Bt5c4yXG6-+vvmC>%SxQ$|W=A)6x_LL4Jo_Li&?Qg&9$9+6#U+2cr} z93;u!LiXO{_wfFFe}8mc@2jr&#W~OC^D*wnecunH`Y>2n-{2ap9rHJ3)q=!KVoH2C zVUT3BN$*mbm%(XZG}u8znO#J=x)B!Ricg4aa8VJMx83xHt-a~)-ka!dAbJ_>hf?Vs^ilEvUx~Rvbu*`rW{$f?O2$#&;kQZH5f@_&?Q9&isVutfT>2LH?Z)PN9Scv1ZZ!P8g9s8=$T3tmqJGnK z=DPTbdcrSpw@b{Rw8q4mcm|WM9_LN!&w%LAXfpW=im4fV27y!uX#Z=?3|i0lL&lT( zQ?_seD~7&t_N4gQm6zld(;{y9S+=P_L~sWpf|}eP`Qw3HLRJLI#n6u6Zo@KMjeK|S zDz%7v$pKZ5KL|I-O@qZ`H{Fm8!akY5xHf_FIUrgvi+yOfe+7L*Gvy-lLz9oCEo zbG5Rmy2Ta{wXSbjQ=z<0j+e6IhN`Qp3&~w7waWuWFFm0RH?`tst&aCD2VbPKz(ug< zrvIX&!Nd6Uefk@&6HmUDe3*vWUmrrYS$f!mBvFof#;dB_9D}t})^1XvAMU@nzPg#f z8oy(OM1|QrU;Fv>Er~zVE8@q$)1F|3LwHef&nL~ZO=^Dg))D29$`h|noEDoE)x1h? zs08e9Rm75TFk-EO?SQB2KwnrzZj}-;nUyWO7F)kh3hdO({9k|9c3fcBZ^QK3jp))S zCj^c7VbZt0vg+gQi;82@vp{QdduN^FHXq9AvyRX6Hmi45!ZDs z6jtoZF3mkGuQL>4Hk5Lkx-Ga}%!F4&)~`PRyG#1-zhxkE;rBn;`_15;(H;6(szqvWq`P?I&B=~vT2f6*`!bc6LrnzHkQw&Y5=L+W z^Z0UBI1mC88eg5;ao^xKH7`nn94||iz2VX*bVo!@bo^<>CFNBvu4vji)N+ue{u(O_ zi|n1PRv;|yAXDne*EYmq;(HV7YQ6`{G4&`Rnbx43tLUM2!V*oVl+?nfE^}TgqpTnL zk7wOf;3E`aF|HhFqkze_Jf|NM9kiVz8J#xuJ^Z zT26jvttuZ>|9qAssy=g-9b(2NjM?dfeLS;Amg=j)$66qf=$MFv9LDT|&uO>KKv}Dn z+hrA}PLpzn0jF0l&-0lJpof|Xl#T<&5~g_n$U3%{d&2KY6qzz*)rs)GbG5cMc6@k+ z*ZQyzqZ@76D}gD?f^6OB4Sex1-SP1UVyoD#9z?WboXDn9L>1yi5cQj=pMSDW=xYsTx zMD4K_;nt*P183xX_p1PJi6`u9ktWyPaGP#_;xky`%9&X#dxm6G`n)o~$Lo-+2pN<# zGU`e2p?jH*KIt01M$ts{&AnBreRkGNR%DcNWBdoQp(xLf*~ znpKCrHkr|(d^R54$}sd8IOKP*O(?^{=msDd{SnWce;v$Ll#c+f{{7t(jwp(UHgt}@ zRxoad$jk5&5q>A{G;QYu&~|_PCVTxNx?kc@XV%S;kN#R*e24keS_q$kQ^kDS`zXJV zZ{MyL{x%x}y;QsP3KlJ2!?0+< zigmKl8W>%&LaY=(?vTk-Wm+G}b1m~COcla{J&^pNm54$y&o5{E5nlTU#bwj?YkaWb zofzSWyXHPymyl(oh@B>49^d$3(DmujKv|(q?_vrP6{?JAc>f$zj(YEX;}T=FtQNKU z&{g025^Qyq5XXUuMW!)6dd@iy7(`q6ww6NF_UrgmkFJQo+}(|PMm*8+2N#NqeYH%u?5kYj%xiR&fN3bC?FruBE;TU?2{~ix| zTfd@9bBstgl?;DWyr9|+&LtYqAe3n8)H1WfY5&JsisboP-WQD4NY?JACW7+N6NZQM zRWuIQ**=ojug>sEn(^U*Yz6FlJS28 z(`{0hlP_aysUFV6oYO5Z^p<`3nAu3B>W_KI43$-#@*i_)g;Lvua?A0C3+QM`WC|(` zd!Uf@Aq4?$U$VUuvW7z5w}fz=pz6#fR))L@DUgmqFq+I=xnTlcyfQ`GX$MEgA@v%V zE;cW1$+Zz=4n8*$60&TWGAEMbC8OdCk)J0=?}TVzvwG?9&k#moH@(3a-<*_D@{1O#xGfR-GzwQJRRq&HC z$Na&h2JAy`F&3F-$HX0A`(V1n3Nh)mC_~;%-QIMzYCDczu{J^AJR5uLO2QY#-0(6yH?(Y zvbP+LAKhuDS|8o<2=Rp9AO@xsQ=fpt@*Dg(EfS_aX&VoXYSbSP8TF9gyzCaK!S{(= zRLa}5i6?!Jl7eCrD91g{jA1SGP=A^Lov>Q1>yp)!h*jOd)8?ey-r?j1(;|^ZMf6cY z?e1@}HaQ^VMHM;j8D3CRWc-q4TW6YJbw)Jx6>Y6+Kyp=ewIH1*XXe#A{S1!Yg$-r_HD@ZG%FQc z5-NU9skoBLfwF~X+^4?$;k$gV|58PO*gsvD!@~3P-d*OX0WU>f(7wnXb)h6-1}<#4d+~sYhL6 zBX53PoD>N%W4n&6cePVJIqKP9y389dfro3snvg|`B0QWy1B+P+xSvId<}6gf<rP)^xJ}UcU{JoujC5p=xz5Gy zu&8xyim9!ILFu3_60eJ5i=UOsvC7G^B5_)ZrRe7ROSK6I?6ubDjEK9H&4|c=`wO_XSyMLD;V{FPj0XcYeaI(XFe#AkV*6b&AI zf#ghW?FrJVQwF%L>t70p#|@Eqr9D^ZwadR_LD#uQp~k@j7x55A5L*(WTYMtZEm??_ ztbaT!Qgg!eHMZ@|3({pC(W5ueaBPJlZNArft6$Z~p{5L#J(G!xm z%gC6lzX9SyfnSw>Sx34?^^_Y{w!$GBqT}7*C0>i)P6Blrc32m9l7Zm*$ zI6e{NE*0srTZGqKuSbdEDrxbByZ0wLRXCNct+VHTdHlM;YxXq+O>5!&3pGlH?4dO; zpof&PCZPro(xT#OHg1!K4|&`wJVqW*{Mb9qlsEhMPfyR0`n6$iupv}Kv?=Z-|NS#y z=X+wH3^&}edR>UQM*n6YS4Cof|Gm@rMudne?ubf0&^E!3Fp0_n=Q(G!E@?ELlkL%0 zSpe`0@|NI?IFVDHE&GXOj!cPJ{}PmTiuD{a;Qt_VK}6+F1v}L|paoLc&xVnqA)~Q( zhZCI?j%`6dM^-;Eq`4c7wg`vW}fVu0ip?C+-Ic1;x_n~ev$J-C@&-C=UzR4Fg{c@>+OM-~niv+Qi0dN+ z;c|}PL!-qC?qsOh?|#n>7^Q-I5(dFL10^AxTB`!f7ec-CRYi5L{d9hO>y3a~*DOPQ z%Gevc-rFmv8=b4Z=YSq|tN&+W$c%%83&+!VBkske<$DA&s}z>-Ca1TbnH3m7+<}rm z<6p?mmzq6SC96?$=|p?9Yw-z8{{|3?+4?3Voikj@ zx&GiPJQbtZGT0(X*_Evx%k?=DZDg8)oo;%F-M?e)B)-sxh>U)QS%p z{V5J9-mCPMW@d6X5Y+j^B!TDA@~V7AWQ`Kht(u{QhoopP$~RHidf4zT`;e?+Zv^$Tt1Je=2!k5SPtSzAz&6e2oGxe%Pq^| zw6ru*VCNL)ZE74Tz0rH#Mi9KwR`9;gFmMuO#{1(@gqNOe?bcQQHFhBZ@?~}mZRk2+ zL&+hN#uVKf|E@stJw|Z;eyO>Z8q)5De`pD0hgV6NZviC3Sk-mC^Ek>f6_OBOaxT`n z5Zy#LI(9fc{nCK60q3}XPpvBtxfCP&Y1H!W7uRM<(|hr8;8SuS(iHns$D0rPW0$VX zF?`rlobpU zz!EP#nxuCfY8&q4e%|Gn_9 zPq(x~NZwy9y^OfXAo?`xj7rGh$nW9YI!Rw% zv3iBh$SY^bLj85+0z<&4696Uqss-7(Q&O0O*Vpi~{7~tAB=|%SXB`lHp52;V9U)ql zG_CRm-`RH{3i-a^Js{Sm3v$qAt_#-|Phw(Jsr`8Zd0JZmvKvfU1agv=m&*f%ON@Ig z0eKJB1G8+;BCbvDzb_cKByxmzYauC`wpv}ECcc(N{@Jld8BWS`nnomcu}54_C8ohS zcvO2y`+k_@{|scpi^%+_|Gzo-g_hj(^zL>)%{mR*(2g5-7)Z7>!4v1B5|a6i zp}>iFsd2)5t#>BwWhAQHt;%n4gOtPMH;m)ftsdL(cXWqTE6n&Z6zE^i7 z*}F5jb;L36bzw(;moehscE~pYV<`I`9B<=9&uXr&8~@@o$RSAVcO{=K#G26{>sX- z<=^`?xwV%+$iWFrE@BP$!+(F-7?)`c!?J8+iS;ro4s%_U`jhU3qg)qY z;N0bR!PuQtmpE>ilNelNgutC^s_J`-f)F?e7Mb}A!*>%R;<1auT zp2V&3+JAd-X05V9>%S233Wmc;6w2fWAu}tdB0h6!+IEyJP}a~l%5xQo{~p2~rM#v9 zW!{*J1hmd>_;u&>P8-6)Ka*+?$J73mVQqHU*PX;J30Vge^76%f&X-!RX;Qt<%oO}} zimTuUhiLU-8nI};bnkxpBxVD+NrNP5O0IJHR8<$UfEoEY%hvC%jR;ixo=IMRTnm)$ z5)2qDU3OA(ZN#bq;;s3vKCZCfb_X64E213MCd(Od-S6Urpw8!dr71&_hQE-ghREgr zHK<`;LXP1(<~$)41MiCclI;>fUb=wj@QLX!0EE?vU0<6YVJx$tQg&g7e;Fa#eq&x5 z3>1yUseodCI(uQ=_$=EhnF7#o*(7X|U$|l$7{4=(JfiPk-}9-vF@8@$L)}m61!tb! z^LYJNE+^#h)fA4Q@}XROrm!R12)jF*-v^xQjlL45`9;dVmo2D#&5sX`=Ox}QJnW4VwWc!m8YAt=6c7}oKK4Hz1&z(m z_`hz5IuSs`#@J7sXd`)S2f9;toWtxQTV6|h_5alrv%+o4VYfeyz_dd)nFX8^13epN!zgt-d+a{bv#Rhbx73p&w} z554p1UrT5E;K$1#bvQlQ=5XC)ZkC8Ta?>ouS5nUv-zh;xkmqut{LOKh`C{db)5jtb z;tFhWUnEp5YY&FXL$T>JVN{-q$45%}#3nq%jv+A_#Qztk9Y|F8fV*>ogh&(xX~4U+ zY#}>2?k+-uvvF3uDb)B`Xl*6Wp|4EF;6dH!_1j(htfGE7KhN7Hywz;r<^@p6rVP-8 z$7i$PSdpCH?lOFtJWrrJZbDM-I_OM=k~W}ruefM;)6jLM!B*?YXgJvD5l~l2j7~(! zwKEk`C?2fQ@VtW(d#0UR?%>1o|KY7S`RG~5<-4t3w7`;5aSIGP zG!ggh9J0dR!7Q#ycicw*k7?l4_+1f_hK>8Rl=O-F-^vzJ&sJ&<9B-=dpy~We6<5cn zbmJNWUcTvS>dKb|3;pZ0iUy64$fG>$75|Itw>7l057f`o{)?HPI0f|BBUXQ0-aNWf zp{ii%LJF?+_(#*k{7}*(hjVT&TOg<3T8VUfoB(!#m9+91aOB4tNP)`SBTxuYGHmhE z5qyAYqn|ie7tuWNW6Cf@_4u5L>6w_siS*J-YGLaMOU z<)D{Ro+3NcXikpjCGukRAGC-zNFqwZjhS76qP?SYc({%Ut)^w+WaR0&^=iDE@P+UU z^%XfammiUm!tr0Gt#Hkl`z3BgU&-hFy!p?LX;3T%F$SagZw8|n!y9~{Oi;d z5|=an=Mehi9@GenjY4$<0@|y_i4cic3lRovNiwJ%KquK z1I3%SAAv0+&&#zZH;XRi_kXl)>*$ap!XwH%CQe@;Mjz*4D_;%Q5w{OsIx=OB7Y(-V zPd)pZ(XMsx-Y&oYUkbHH=9~OE@Hs~hK-nILs0%atEZ>3OMbYlKiFs`ql zajX6-=6VE6_p`}&Bn%82X0%kGPCO$z<%XE#msk&Ypu6Lw{KgWINvDKPf~9DB8YfQ7O0x1OCfc;w{d6N_NpKcAr*W z@m*~LG^XnhdD5z?cDazeE!n|iC;!aXaqGX1hwt+Gejy=wNHlAg-N5DwMb`y#_N3{h zumy(jTir0)6QRc2DNj+k*dN5Gy{CF9oBeZ=Pw;&;^o=L+WPy%9P%jgAn}Lq|5UIW( zR(TETw?`}UTi)7zNtB{XJRk~o#uGY}7KR!ADN+6au8R_Qb9A2?y+qErcIOh~oF&D_w-D?oXNA$B3;Z?!S=D9EX3wr7}MGGPFkw5U=1I-%;N$o?~C@ms+f?&yqqL^ z?0V~O)Q`6Mi;AnJg93=p_)3zMkiT{OjymCzH*olq-hsseGoo@qWNTx0V=k4h&?;#T z^?dKX>7Nh!UK`!IM)4Jtf;BWCCY*~39SF5qq$Zp@54@ z`YO+e91)033=xw`F}d@I57np|(m`B7_x{sVLq%NqiWd|5(g{5GA|PX0F>H>d5Hr?9g~lO@~z?>@?$Zsc>dy@q3d zsE3ZY&UB;9wWeSn!P5plaq1(PM{+myy3;kyl$D$AjCX%}p7?VT%9!mLK2KkN{|TNUI9e!OLeY ze#eV9RSE0o-)Jw3U4NnIwu99k`&IWmPx7^wf`UT$YoZ2Xg0?>Hp{Hlm4NsyZy>PRs zd?4;x3u?NV3j~E+em(xu7)bH-cBGx}qb{Dv+l!=NVdD4O);l@1T z<1TRFM@R6cv!m#dUUob)q7|JKSI>rzKsXQ@)H1DqEb7z7=BDq^zyRwKOdE?Ywf6h$ zQHl=yk?R~77?Wp`~Q*gOvIy|&cnr@qW~F;j_V@P?qxJA6Q|3!>$qEC3GhHr1OeaCMA z*27ZaD#^U?{7)kzxgz2ZXMP??zg*X4nA#)e=G|b24o~5(zX{I7N)7U4<9OeZZfahV z+Zhwk$O;-WkaWCQ(jI<|E(-RhF6i*D0(8QfL zk~!%?qiKPr*W8xn`@#P#JtQZD;wBdDlF2PPB=cPw%XO~AB0m1Sd@m7+#SN~rtrm$X z{|eUj&P^=!oi|8bESTM?F%dNGnA?bx1ml-lT=}d{G7Ecn(~o%EkH7b%X+sAEFn;9G zOOg{`z**V`HT6sV%S>(Hu&`8Pl%us???f)Ru*GLQ-FE` z&c&==?oz;J+JWzEDjhoCZ4AaGx>tqsn==u!cK zPcCFfb*v-XH6fE9(?UbuqiTBgMyP;9_{MCH*#6CRxubk&*_TllR%?gH6N2@>id^2m zfyH8FJNIZmd>^k3A*4!qE)Mwi7Q)xi?monWqzY41>gwwDWTT|#*LaNVndeUQxHrRM zByP3~*u!y&JKEig&wMefrFUCyiNx>Y-G}6eD!vLi(95gTl|SkKWSgPw{@kqPBcS0m zo;Yl-w%y0Mswm!p`NrMP-(yGrZi2Nj`+5jK3|uW_qM}6(p>$A_wcM9sT#>yP`8gnuDRU=m9xb{G60Kl<9%|Le-;eA8wXe5S3z zn>vsPytF>Ix(|6Ey!v11V$>PUs7$K>!d$#-GvM=~$t#74^k;jFmPQ8>XF)&r>Nao8 ziX>kT0=$$VF3b`$`}?T-uYN{;Fsxj)#9gV5zl6C$;EzcLN<1Ul`#a{(Xu~rVXjRJs z0x>qtk)%cPxMm>+tajM39d~Mop#ww5T1~Z8ds4imRk#u^80AHe=kUW_O>7$vmfJrI zVQ0GffDUc=WTTr|$W;EaS=~8IU8VQHo`zAT8Ruw(EyZ)F>^c#}>&;}0;ar%!SNkdd zp9_HDSHPHW(gf!nwp;IQvQBu#lA0cFsUx09Q_r=6(2>DW{E7g_~BPK!Awn===v;FipEjtA`%!L7wT`k8EN*nDA4DG^&- z6a32ro3)$EF4G}3w0zHuN`;Ix}k1ZC9|hTmSf=UpJJ&4=aY|!p(OZXCANkHZR${2rq^sVY})E6vf7m-jcEGBx?CWB(a80qmhL$bq_0r;5U|^XlWT*z2h0 zPV&azmZcu$3_2SXj>V8qKd#1YJZ$w!nLdcj$lS)hKZ(DZ?-e;gSnoU3-x%2O-R-x| zO@y#uhd7_%aNbTg;D9!-_GDTs-yqF@=k<-^YcKe9aw6L;v)VmfU7|0BY_=*3q-gND zL1$BM^Sm;o+uhP(HYQG*samwWeIe%PGdOUf^z0-KC4;lrjh)mJuP#);us3K5u@ zNDB@jV{%~~&dbTED2SFyRz06W7gK&(X?K<*Y^=7v2gWYCE^!*BR5qBmf*G85TO6nF z5$-IJ#}zi+1_dLDikgCcWXCGJaN_v87%8463|n*YuHtA6INs%$mj1lMBjp%07HM4O zpzmk(rsWQ-3L^LaBXh8K09&zJ8pt_)PUxW$JvvO0HSLYtSpgw8o4|DqW-70hFQHeo zH>?SEodsqjcw!{7gS-8ex@>4O$74e5p4WP(%Ka%q(x28cq(UC+<9>gjMDKZ?tQ^eg zogz zoe{NS!=sfZsZ*xoeT}}mCe^>a7m1w|{MPI%ew29WbI{74Kfiwyrfn|Nfu-(A|Gpj$ zoI8(C$)+(7=LL~`Or~3(0mY(sqh7F3@+Jf`M!eK@-ZQ>~ney5j%8lO}ej*FI`9W?* zb$UhCPnJ$03_&a7gxTg2W5McHcO&1Vm=HIc*+%e=X>lLA4=nafxMZNEshg8%zl*D7 z$Ga-`zURQn$ZmY8ynFUy>WPh-N($!Nk^IQ1{Er_6dS$2z zn&y*M?wwM67u~90v43q)bQar-;9}W2J+mZoTTz>mrsI=HS^&2NVLDg{#wZKXYos5ltl?$pSjr+;dH!Njyg!`t~ZSM@5RbEXN-NTG{T7wofBQ*T<58 zK7dBmwvXQ<6#T7;%*ZObM46h$|KC9=2?Ri6`N6^2d5J{B5frvmc-pI{pCrLr^15Gu zmz>1QXN0G+ARQv5SP$?y-F5<(AU3?U=Y}(=46d&G6H|?jv;WN_!k^1~loH~Cei=e! z4`%JL1~R|X^9-<)x&%AdoLN%DsfGL7|LGFava_3G_qP8E`kevuYUj&mr%)9g!4u1R z2rlT!yX12L0mtrnCzyxao*u-$3<(LzX@Thh^%_(be1ojH+Oucm7OgQcUd`@9&8Q?t z`Uk2|(#rVPZ+~_y?VF#FWJK-DVJCB7sNnbG^@Uf{?a9>%=R$HM413tgOe=8GxMZU+ zZ&(w$XxHPOO6HQ#DeOX22ID&K{z>6)D~I1Y$2pUelih%fru@`w{PE~;=28up{VJAA(!*Bv3^ni1Kh@UIPgdCfkO3pRu_srB&UCJTc-la z@R`iP{f@P~!ydzG&N4qf=d?VXa8*C#F>x=G{II#=_-f@S8^!KdFmbKkQ{6{dsf|&pU zOhDh%tirjo)|XJ)A@vww&xa<=LMMsADEQw{+pCip;GL;i(m*sH!8@3q$3 zyvMonyHzPu-&JLDS9jA>hUB=FVyco!ucCZ=d$qiL0M4 z%BMKJWlQw>xtBFI|@&gW4jOQ@wZ(ZmNAm9R3 z){hTTVsrLiHqR5HH!Yfl*=BADjC-Yce#l$RVp#Z4|M^Ui)B_;@bwla-5f;Qah35@d zm->OabZ^0J^eH)&^|uy1N&oshI{}EbsKn`Od5_M`Gy3Rwcz7Jf#|zvv@TDE#oD%3b zOSV`!%~7-Z<6_-lGpv@FfF+!5R|sz~B|oC}crjMTnb_MGW?+V18EHZn7~kbxNWLB_Ntnz3f}WhRh}G{4wO~JvH+2N0(y6< zaT^T(c5m6fmts~;jgP{~?ACSeau*37pSr8R*J|#cYW!$xXZI*Pqsf!7xR5^^qI&*; zqOhkGJn?f#93hacIlgsK^Yz+ysi3jr@Z10Wy&g&G$fZj-BS-olV2&~@$W>k2Uo=8( zF4(^y>&fO1b#Etk!kWp{g>_Q|DxAG2)$<|=@jR=s5v<|`MA5<&&F1LIa{H*PcS^y& zWkAW(ns;20?pWPv;YWwkyZJ#bmGsxTWS+~v^iG2du3Mzphk(K31``(kcojTP>|JO1 zwN`W7T+XsLx;DbQ`n%J`uK~t~!#2^>i!(D4FVvKzDs61VU;G7rY$zO9E%XZX{!Frq zej{KdzsVx&vwgxUZ1p{bydsVldIfrVfF@E=rkl}))83wHDbkX#>vaE-rG$SoGP!R0 z%j9TR_fuKf?gLJMkdJp!q^D!Dsc*^fVWPHOkD$gULrMG+vLJ_Yd2;(N!rbbs4jtps zoomUmjy=|>=5ka~jTIVK`@3Tg4Ccz@a%Zcg+r{TZ;|ci%bB8v& z>;Lv#wb2ZOm7s|Vu!42I+>Lej@VHF$(=x8GMkb99^R@}&b$Y4ea9hIvO3+zrMmIlb zPd?OzRGQTvY(5T>dA|(o`W|MEb31Tg7V!b2=$Ows#nK%E;wSdzy@y#E^`7;Gd#J;- z#G1L_w~4t(%+1UxV!f2+REZndw-p6@i6GEf&9C~e(z9AC=Z6bROD=b8L7OIK#QovJQ^d=bP{`~~{?|EJQQpFl6UR}S>Ron) z@sZ^I7`5N>f-f`>naskN>;w~#QFS+~c`Gj6TGKg5kH~lyVA`3k9DJ@>QT&LOBCtPR z6N5>Ad0%G+zg9CsZWb)lv6pNqjjo(oZ50$;n>%cWZ8MbqOH(`6yQu9)R}-IzvP2C3 zt6Dr{yNBJeG%PYzxGG5pUlqA&BAtnNb@2Teg;#BUGxYH2{(A7Y9>cn6iFTI8{nPNIWT1%`KehGfLj6|@ zACB6y9rc=Iqc5R`3!AH|2Li%$Fl*?(Yl>eF|8MAaH?6Mc_I8~>#Ix__-g>-bu>C#t z^!;Qbz$T17-FP-6^E$Gx)Vk2TJkwv~@fjoR=7pcVGQ%#3(AquT=6GN>T@Hsgsb!Wg z|B6SgA6B6qCggEAy8O%$PWhnqFIf+E0+dl9pLLA%aLU-%ecUBieD}9w2m1S8BC|&u zM{^_fe%&oG=cq|3mG?PQvbSxzt~v}ReETLa)LU^SqHUmREEh9(p)BjMP*DjR4Hw%3 zp`tvtXS=wxDicYvjY7OEaemxaKR=YPE>4|3=E`ky^iE9PO%TUN2tD#r!TySz*nb@_ z;3f4I6+*miaoKg)XH9K?JzFj?Pfk$%j^tl@m>o)1KA%A?d!tv@l$73*l9of>t8GCm zDvU}*evf^R{kkUYd`9#p7OQ>jk;zP|6@7se8`Tl_iM=7PzDSy@DkR!|uG#V~U$-z4 ziCgG-Qt;tJjd=1Mlar&%(ns2UxC1i(LWpU)xC3SWH}~+J*DdUiAFM^Geks#Q?Bw6O z9r4rNt;&K>W>y zXw2B^x~G~*{Ozg&DNg((e5f=2x1>9&`DjB4&`_m-b86uhxSIyn7Z^A)F)(*&Ii*xTA0_O!7iyGhn_mn6}#nh<2E@#8$>5;*t6q1c(wLjym1 zx|n+zE=q4N8$FUJ^BZ~_@&YXVOyK9;L!U7;Ha7MJ6d~dPTei9%x4C^4x$}p9{~q0s z&2#xzM^o*u726Fl`V^T_iuB3I9pGLE3OOvHButl3%*7^GsN_rq**x&3Y*j~GuLJiU z{-7p~*60?+TCl2cqj%I)RGJ?myn0P*(o5paoPPUz1P6sebrSpm(oW!R2M}?kcIgQ< zxRlimcEDOM8rUUkSzuN`7Zd2~q>hfa(fg3`1XA`88#g@-^wQcJ8<24#{;RQW7_Ipj zV}HE(@)@SgzVvBBel+;4(-THyoJ`>`85jbfG}b$1iv-C=MPi^wD>an zZELI-&bze%{W4g4Lz?kD1|z2ry99gz&^0LqP|0~~u4ieB;Lvb@-~%g3W)>H}!P;(_ z4@T90Vx{!-^+Q2h#sQHE`fYW@bEonwlc2FrPTrz5gE}^4VmXaV183{(%z2-_AmR)+ z2E#9ad5~-NLEfkos`Fs@SdK*(lU#IwINAc;O8I_O2cR_{p_pLCev$%M6XEPwD*&-{02e&6h+`B1`&G=ZP)ntk3B1aIi>T1ob9(n zUWi9vK9pqhc_4KDIbN1Boou;Yv_5VjvV*Et){JKeZ?P(U`h>;{!k~&pX`d*P6uDp$ zJd(Y&oz#)~kv8Te!m~fe7X95~v}*AYBA92FI3Yoab9eUWk~enq)K4D3U7=~h+`D(L z%BTm2z{=)JjK!>%>-Seny7P6ZuOxn0e=0b9&(6WYM}Q^5*9hl_8%^cl#&}wm_DKQP z>IYHhXg_}yIk$HJs9^AeKfD778FKNJA;-bKJlJW-O8w@b# zZ!;)!sH_HQOP=6-A^-BK6z5p(-=)z?-Qni2tsaH&Z3%mIo^Yn&d(V#l$Q>S7K3AfO zJX0xnNBRNtoxMpHwi;)5lYe2*Q`7k`xoFeI0P%(&MEfI*F;B0rXk+WdkD)WG^0Wmn z0e|NyW@1n$itBt>c0Q=OSWrRK7(Bfm6W@*0abfCwzc;%k(Ft&tF~yKVq#}W$H<(Ds zJ6aDX6?a_z{2HrTyn#fDQIwm(Xs1n~|LFKpvPN9z)a@?)a9IlS1PQ+Upk@R(O5y*=|kr*=T0>`E>H^E1}nZ3FYWuFFO8F7 z-lXQE5`FO*%$!z~A{mcXrI*e&yVg;1S-9Nptp;>}Nb{0&=cZo-1eL@xCVwsLBt7nr9_4betmAgm$`AkfG9p#tqF!Uh@ZQs$ zzT0C@i!O$oM0>~T56OgL&EEq06Ft$)x2aK?mvRv^4U>;T52Gz=@PHJDIvm5b;xFKYvrC->ZPSNT8YGZT)der%tgy~WmQ3O3F2+PGK5`FVee zylt3xwBMT8uy;Y%9Hr0wBhh(dX~fSWcWDwX#zczbEtkawwTg9X0k7pyrj`E3O#<{Q zOBN*@Z);Xii^-)V(?c;|1LfkM1*iC+^Lw2CQ9fB=#C@EIK97;J0kc4LEDuY2)GN4x zJ__aj+8b-gV#}3wC2E=H*{Qz$<$K=klGAD6374&n+D;GgVfMc&(;zgM2g8EewirbP zF3d#4w`d43ng0X&jJ6Ezm@f}Qufu>BleS@7dI?4A>KYY%LrxuQR%zQ!2h^lLxiHRE z1q1U{1#?@2=pBMfqaNpa;B&Yt`f|^`i#D$2&7vH7>M|-TcVuu+2>dA_J_XSOoY4BC zB-$`R)qniQ zah|a*^46kL!|_p#beKfq=7`+=PF)-}i85(73UjL;d2YYxNBdE5pDy0vJ0rb2vaf)n z{yTF%-TWSGcRCw6;nOBG`3*{bH>kkuh(B?4RaN`yo^JUWrIe&E+D0+DLPh6NPI5ZvD?46KmJ+p zp#kZtwBUSC@(V0R$*`vuir)HL2ByWDW#B3Xkto`g-5ZSvQqQP)$aSBYp(lG zNI*^?2XNj~U0q$q-*4OE)g9FGGX5#?h?~(?!SSrINe8n!!gh_GA~62Wk5``&r&cJM zK>N@Hnb4Wk%jv-1tilyUZ8M6F)pJ#;h)akO}@xCufSU1u~BIHhzv9qJRFG znZJcCb}5qXj7a^BS&2woaft763;I$GD|J_2zw(4f_m@%c;bT-`C$QrL;>X`~V=$Pt ze4MF`J;c}ZsxOU+f9%K(-}2sM?)Y((-=LNaR390BF88VKd7F_;X780PqUD@C9oN^i zn!*IwNCh>zr*`)TOjh1uoZvL$!$>z4e-&i%6V1S%KS3r3v$}Od9ft>d6R;*($=mx5 zCojm^-Dvu+B;Sb&ZhO{>AZY!TPDPYtR%l-26^fpQ7yki8fC;D*Gn>*ceuN?ZLz*?% zgIT^|Oq_s@34d0!RBGMfTMpAV?bNn4D*71b{Mnm5?pg(NzF`?}X6{E_AwJc(kr|68 zY<92Jp#HFC=N+7e1zA|3DT@n@WqI?nv%3#b;zw*56Z!!%4NTK-Qtl4d!)xUT#nzq0 z6cXDYMS=#&6z7LjqAnOY?50l+mDp%|!rq>1R_-02V1-HEtR!;J=eOJ@+450I-~6qD zIoZEePOwdNRMwxruU&MAN`&!#PDi^LlenTDFRP*POv zOfxs_bo}|F)BZV^o@9#c$LF~5C41RF<~d^Dcr{JTjV}QOCS3`8TUL2d;?C*B5RYT& zR3fUz)T1f?5pC&B3l*Faa)_9w-t8~+>~Z?ydANV6{lNDIlNO$wwT!7Tr{3}Eaj0c2 ze>>Q}&Wy-SsdA^AGs9-WzZml!?jU7|t^!ckO-bBG&PU(Zd!Z|L!ys$DB;&bM8`RN{z)DyBT(JF$VXij&X%`qfKV zk(%NSu!(mSs80U`rvj}~w$p(|uHtU?bIPF^8o@4SCNFhx=D;AP@d*JQgh~j_}5#`QeDG-R9Qu@7xy(i76J3YJTGL9#!J9 zIX1r2Dm>|R@9(Bb>)mXL##pTDso;w!ru#6{Iij7S#=SklW;{nxD7okAar2S&c?Ydr zlCr#iVTUqSx+u7hq3!t{WsuI6k_dNJH^W z;)BV@m^W_(jHNT2fFocup70QJp7xu%`lJkgz`9_>P=3Ovy}Hfmdb zz^~MO)jVaPFlB}KR>a9_V!4&myX=8CW)JbCbkn>%q)1%laUQhKteITvWa184DEj_v zm(QpD0`DK=MV42jWJcK+%9q9wTJhswtccxeA4O;`qoGR}EV^^%M^3!!�z%Om6VR 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 literal 361179 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/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

3xN57A2{8@WKM7hZ@x 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 z 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 z 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 H;ZTn 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


Q>$=O9BA{7CPzen-G4k1n%&i-E7CSVKXEg#vC4Z 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 P_CF%{-t|@ literal 38810 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 T6OY$Su<**27G(BIN}K)z^?cn` diff --git a/docs/source/_static/logo_text_transp.png b/docs/source/_static/logo_text_transp.png index 786abd8f138563626fc312cd4fa0647f4d9c859a..10f5801ea7090afd3168ee039514f83d4bb1d1ca 100644 GIT binary patch literal 41211 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 literal 44416 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 Blog', - "https://www.poliastro.space", - ), + # ( + # ' Blog', + # "https://www.hapsira.space", + # ), ( ' Source code', - "https://github.com/poliastro/poliastro", + "https://github.com/pleiszenburg/hapsira", ), ( ' Issue tracker', - "https://github.com/poliastro/poliastro/issues", + "https://github.com/pleiszenburg/hapsira/issues", ), ( ' Mailing list', - "https://groups.io/g/poliastro-dev", + "https://groups.io/g/hapsira-dev", ), ( ' Chat', - "http://chat.poliastro.space", + "https://matrix.to/#/#hapsira:matrix.org", ), ( - ' Citation', - "https://doi.org/10.5281/zenodo.593610", - ), + ' pleiszenburg.de', + "https://www.pleiszenburg.de/", + ) + # ( + # ' Citation', + # "https://doi.org/10.5281/zenodo.593610", + # ), ], } html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] @@ -156,7 +162,7 @@ # Thumbnail selection for nbsphinx gallery nbsphinx_thumbnails = { - "examples/going-to-mars-with-python-using-poliastro": "_static/thumbnails/going_to_mars_thumbnail.png", + "examples/going-to-mars-with-python-using-hapsira": "_static/thumbnails/going_to_mars_thumbnail.png", "examples/plotting-in-3D": "_static/thumbnails/3d_plotting_thumbnail.png", "examples/propagation-using-cowells-formulation": "_static/thumbnails/cowell_thumbnail.png", "examples/czml-tutorial": "_static/thumbnails/cesium_thumbnail.png", @@ -186,7 +192,7 @@ "*_compat*", # To avoid WARNING: more than one target found for cross-reference '__class__' ] -exclude_patterns.extend(["autoapi/index.rst", "autoapi/poliastro/index.rst"]) +exclude_patterns.extend(["autoapi/index.rst", "autoapi/hapsira/index.rst"]) # Ignore sphinx-autoapi warnings on reimported objects # See https://github.com/readthedocs/sphinx-autoapi/issues/285 diff --git a/docs/source/examples/analyzing-NEOs.myst.md b/docs/source/examples/analyzing-NEOs.myst.md index efac213e9..33e5edbc5 100644 --- a/docs/source/examples/analyzing-NEOs.myst.md +++ b/docs/source/examples/analyzing-NEOs.myst.md @@ -23,10 +23,10 @@ And what does "near" exactly mean? In terms of orbital elements, asteroids and c ```{code-cell} ipython3 from astropy import time -from poliastro.bodies import Earth -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter -from poliastro.twobody.orbit import Orbit +from hapsira.bodies import Earth +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter +from hapsira.twobody.orbit import Orbit ``` ## Small Body Database (SBDB) diff --git a/docs/source/examples/analyzing-the-parker-solar-probe-flybys.myst.md b/docs/source/examples/analyzing-the-parker-solar-probe-flybys.myst.md index 6edd99353..d9cf1e464 100644 --- a/docs/source/examples/analyzing-the-parker-solar-probe-flybys.myst.md +++ b/docs/source/examples/analyzing-the-parker-solar-probe-flybys.myst.md @@ -27,7 +27,7 @@ T_ref ``` ```{code-cell} ipython3 -from poliastro.bodies import Earth, Sun, Venus +from hapsira.bodies import Earth, Sun, Venus ``` ```{code-cell} ipython3 @@ -56,8 +56,8 @@ energy_ref ```{code-cell} ipython3 from astropy.time import Time -from poliastro.ephem import Ephem -from poliastro.util import norm +from hapsira.ephem import Ephem +from hapsira.util import norm ``` ```{code-cell} ipython3 @@ -100,7 +100,7 @@ tof = flyby_1_time - d_launch ``` ```{code-cell} ipython3 -from poliastro import iod +from hapsira import iod ``` ```{code-cell} ipython3 @@ -121,10 +121,10 @@ norm(v1_pre) ## 3. Flyby #1 around Venus -We compute a flyby using poliastro with the default value of the entry angle, just to discover that the results do not match what we expected: +We compute a flyby using hapsira with the default value of the entry angle, just to discover that the results do not match what we expected: ```{code-cell} ipython3 -from poliastro.threebody.flybys import compute_flyby +from hapsira.threebody.flybys import compute_flyby ``` ```{code-cell} ipython3 @@ -153,7 +153,7 @@ norm(V_2_v_) Now we will try to find the value of $\theta$ that satisfies our requirements: ```{code-cell} ipython3 -from poliastro.twobody import Orbit +from hapsira.twobody import Orbit ``` ```{code-cell} ipython3 @@ -232,7 +232,7 @@ orb_1_b ``` ```{code-cell} ipython3 -from poliastro.frames import Planes +from hapsira.frames import Planes ``` ```{code-cell} ipython3 @@ -258,7 +258,7 @@ And, finally, we plot the solution: ```{code-cell} ipython3 :tags: [nbsphinx-thumbnail] -from poliastro.plotting import OrbitPlotter +from hapsira.plotting import OrbitPlotter frame = OrbitPlotter(plane=Planes.EARTH_ECLIPTIC) diff --git a/docs/source/examples/atmospheric-models.myst.md b/docs/source/examples/atmospheric-models.myst.md index 452a9c969..0ab78d705 100644 --- a/docs/source/examples/atmospheric-models.myst.md +++ b/docs/source/examples/atmospheric-models.myst.md @@ -29,7 +29,7 @@ Along history different models have been developed: * COESA 1976: up to 1000 km. * Jacchia-Roberts -Since some of them are implemented in `poliastro`, let us compare the differences among them: +Since some of them are implemented in `hapsira`, let us compare the differences among them: ```{code-cell} from astropy import units as u @@ -37,7 +37,7 @@ from astropy import units as u from matplotlib import pyplot as plt import numpy as np -from poliastro.earth.atmosphere import COESA62, COESA76 +from hapsira.earth.atmosphere import COESA62, COESA76 ``` ## Comparing coesa62 and coesa76 diff --git a/docs/source/examples/catch-that-asteroid.myst.md b/docs/source/examples/catch-that-asteroid.myst.md index 27d2d4a21..a2da06e7a 100644 --- a/docs/source/examples/catch-that-asteroid.myst.md +++ b/docs/source/examples/catch-that-asteroid.myst.md @@ -41,13 +41,13 @@ from astropy.coordinates import solar_system_ephemeris solar_system_ephemeris.set("jpl") -from poliastro.bodies import Sun, Earth, Moon -from poliastro.ephem import Ephem -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.misc import plot_solar_system -from poliastro.twobody import Orbit -from poliastro.util import norm, time_range +from hapsira.bodies import Sun, Earth, Moon +from hapsira.ephem import Ephem +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.misc import plot_solar_system +from hapsira.twobody import Orbit +from hapsira.util import norm, time_range EPOCH = Time("2017-09-01 12:05:50", scale="tdb") C_FLORENCE = "#000" diff --git a/docs/source/examples/comparing-hohmann-and-bielliptic-transfers.myst.md b/docs/source/examples/comparing-hohmann-and-bielliptic-transfers.myst.md index f95b8186e..c1b909995 100644 --- a/docs/source/examples/comparing-hohmann-and-bielliptic-transfers.myst.md +++ b/docs/source/examples/comparing-hohmann-and-bielliptic-transfers.myst.md @@ -21,9 +21,9 @@ import numpy as np from mpl_toolkits.axes_grid1.inset_locator import mark_inset, zoomed_inset_axes -from poliastro.bodies import Earth -from poliastro.maneuver import Maneuver -from poliastro.twobody import Orbit +from hapsira.bodies import Earth +from hapsira.maneuver import Maneuver +from hapsira.twobody import Orbit ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/customising-static-orbit-plots.myst.md b/docs/source/examples/customising-static-orbit-plots.myst.md index cc75723ef..ee08a6b92 100644 --- a/docs/source/examples/customising-static-orbit-plots.myst.md +++ b/docs/source/examples/customising-static-orbit-plots.myst.md @@ -24,11 +24,11 @@ from astropy.time import Time from matplotlib import pyplot as plt -from poliastro.bodies import Earth, Mars, Jupiter, Sun -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Matplotlib2D -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Mars, Jupiter, Sun +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Matplotlib2D +from hapsira.twobody import Orbit ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/czml-tutorial.myst.md b/docs/source/examples/czml-tutorial.myst.md index 5a9cdc233..b179b18a2 100644 --- a/docs/source/examples/czml-tutorial.myst.md +++ b/docs/source/examples/czml-tutorial.myst.md @@ -19,22 +19,22 @@ Poliastro allows users to easily convert orbital data to CZML, a JSON format pri ## Dependencies -You will only need poliastro (obviously) and czml3, a library for easily creating and using CZML packets: +You will only need hapsira (obviously) and czml3, a library for easily creating and using CZML packets: -``pip install poliastro czml3`` +``pip install hapsira czml3`` +++ ## Our first example: The Molniya orbit -We'll start off by using one of the readily usable poliastro examples. Of course, you can use any poliastro ``Orbit`` object: +We'll start off by using one of the readily usable hapsira examples. Of course, you can use any hapsira ``Orbit`` object: ```{code-cell} -from poliastro.czml.extract_czml import CZMLExtractor +from hapsira.czml.extract_czml import CZMLExtractor ``` ```{code-cell} -from poliastro.examples import molniya +from hapsira.examples import molniya ``` To initialize the extractor, you'll only need the starting and ending epoch of the time period you wish to visualize and the number of sample points. The larger the sample point size, the more accurate the trajectory and the bigger your packets. Finding that sweet spot between reasonable package size and visual accuracy depends on the specific orbit. Generally, you'll need a bigger sample for faster satellites. You could also "break" your orbit into different parts and define the sample size individually (for example, this could be useful when the satellite accelerates within a certain time interval). @@ -101,7 +101,7 @@ extractor.add_orbit( ) ``` -You can now export the extractor packets by simply calling ``extractor.packets`` and load it to the Cesium app as described [here](https://github.com/poliastro/cesium-app): +You can now export the extractor packets by simply calling ``extractor.packets`` and load it to the Cesium app as described [here](https://github.com/hapsira/cesium-app): ```{raw-cell} >>> extractor.packets @@ -121,10 +121,10 @@ You can now export the extractor packets by simply calling ``extractor.packets`` ## Landing on Mars -You can customize the attractor of your orbit by defining any valid ellipsoid with the help of poliastro's ``Body`` class. For your convenience, poliastro offers a pre-defined list of all the major planetary bodies of the solar system so you can simply import them: +You can customize the attractor of your orbit by defining any valid ellipsoid with the help of hapsira's ``Body`` class. For your convenience, hapsira offers a pre-defined list of all the major planetary bodies of the solar system so you can simply import them: ```{code-cell} -from poliastro.bodies import Mars +from hapsira.bodies import Mars ``` Of course, when defining a new attractor you want to be able to identify something other than it's shape. For this reason, the extractor allows you to easily set the UV map by simply providing a valid URL: diff --git a/docs/source/examples/detecting-events.myst.md b/docs/source/examples/detecting-events.myst.md index 31db2b729..de3a48447 100644 --- a/docs/source/examples/detecting-events.myst.md +++ b/docs/source/examples/detecting-events.myst.md @@ -23,7 +23,7 @@ critical scientific information and help us formulate efficient space strategies the potentially disastrous ones, like satellite collisions, could help us take further steps to prevent such contingencies. -This notebook gives a glimpse of `poliastro`'s event detection capabilities. The procedure to track +This notebook gives a glimpse of `hapsira`'s event detection capabilities. The procedure to track an event during an orbit's propagation is fairly simple: 1. Instantiate the desired event class/classes. @@ -44,29 +44,29 @@ from astropy.coordinates import ( get_body_barycentric_posvel, ) -from poliastro.bodies import Earth, Sun +from hapsira.bodies import Earth, Sun -from poliastro.twobody.events import ( +from hapsira.twobody.events import ( AltitudeCrossEvent, LatitudeCrossEvent, NodeCrossEvent, PenumbraEvent, UmbraEvent, ) -from poliastro.twobody.orbit import Orbit -from poliastro.twobody.propagation import CowellPropagator -from poliastro.twobody.sampling import EpochsArray +from hapsira.twobody.orbit import Orbit +from hapsira.twobody.propagation import CowellPropagator +from hapsira.twobody.sampling import EpochsArray -from poliastro.util import time_range +from hapsira.util import time_range ``` ## Altitude Crossing Event Let's define some natural perturbation conditions for our orbit so that its altitude decreases with time. ```{code-cell} -from poliastro.constants import H0_earth, rho0_earth -from poliastro.core.perturbations import atmospheric_drag_exponential -from poliastro.core.propagation import func_twobody +from hapsira.constants import H0_earth, rho0_earth +from hapsira.core.perturbations import atmospheric_drag_exponential +from hapsira.core.propagation import func_twobody R = Earth.R.to_value(u.km) @@ -158,7 +158,7 @@ print( Let's plot the latitude varying with time: ```{code-cell} -from poliastro.core.spheroid_location import cartesian_to_ellipsoidal +from hapsira.core.spheroid_location import cartesian_to_ellipsoidal latitudes = [] for r in rr: @@ -179,9 +179,9 @@ Since the attractor is `Earth`, we could use `GroundtrackPlotter` for showing th orbit on Earth. ```{code-cell} -from poliastro.earth import EarthSatellite -from poliastro.earth.plotting import GroundtrackPlotter -from poliastro.plotting import OrbitPlotter +from hapsira.earth import EarthSatellite +from hapsira.earth.plotting import GroundtrackPlotter +from hapsira.plotting import OrbitPlotter es = EarthSatellite(orbit, None) @@ -221,7 +221,7 @@ Users can detect umbra/penumbra crossings using the `UmbraEvent` and `PenumbraEv respectively. As seen from the above examples, the procedure doesn't change much. ```{code-cell} -from poliastro.core.events import eclipse_function +from hapsira.core.events import eclipse_function attractor = Earth tof = 2 * u.d diff --git a/docs/source/examples/exploring-the-new-horizons-launch.myst.md b/docs/source/examples/exploring-the-new-horizons-launch.myst.md index e0971018f..d557acf96 100644 --- a/docs/source/examples/exploring-the-new-horizons-launch.myst.md +++ b/docs/source/examples/exploring-the-new-horizons-launch.myst.md @@ -19,15 +19,15 @@ Main data source: Guo & Farquhar "New Horizons Mission Design" http://www.boulde from astropy import time from astropy import units as u -from poliastro import iod - -from poliastro.bodies import Sun, Earth, Jupiter -from poliastro.ephem import Ephem -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Matplotlib2D -from poliastro.twobody import Orbit -from poliastro.util import norm +from hapsira import iod + +from hapsira.bodies import Sun, Earth, Jupiter +from hapsira.ephem import Ephem +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Matplotlib2D +from hapsira.twobody import Orbit +from hapsira.util import norm ``` ## Parking orbit diff --git a/docs/source/examples/generating-orbit-groundtracks.myst.md b/docs/source/examples/generating-orbit-groundtracks.myst.md index c297894d9..79ec59a70 100644 --- a/docs/source/examples/generating-orbit-groundtracks.myst.md +++ b/docs/source/examples/generating-orbit-groundtracks.myst.md @@ -17,7 +17,7 @@ kernelspec: By definition, a groundtrack is just the projection of the position left by a satellite over its attractor. They are usually applied to Earth orbiting -spacecraft and thus, have been implemented within the `poliastro.earth.plotting` +spacecraft and thus, have been implemented within the `hapsira.earth.plotting` sub-package. Something interesting about these kind of figures is that they take the Earth's rotation into account. @@ -25,7 +25,7 @@ Therefore, it is possible to predict over which locations in the planet will the spacecraft be within the next hours or days. In this notebook, we will show all the possibilities that the -`GrountrackPlotter` class offers to poliastro's users. Let us start by importing +`GrountrackPlotter` class offers to hapsira's users. Let us start by importing some useful modules! ```{code-cell} ipython3 @@ -33,10 +33,10 @@ some useful modules! from astropy import units as u # Earth focused modules, ISS example orbit and time span generator -from poliastro.earth import EarthSatellite -from poliastro.earth.plotting import GroundtrackPlotter -from poliastro.examples import iss -from poliastro.util import time_range +from hapsira.earth import EarthSatellite +from hapsira.earth.plotting import GroundtrackPlotter +from hapsira.examples import iss +from hapsira.util import time_range ``` ## EarthSatellite instance and desired time span diff --git a/docs/source/examples/going-to-jupiter-with-python-using-jupyter-and-poliastro.myst.md b/docs/source/examples/going-to-jupiter-with-python-using-jupyter-and-poliastro.myst.md index e1022976f..61c73e3b0 100644 --- a/docs/source/examples/going-to-jupiter-with-python-using-jupyter-and-poliastro.myst.md +++ b/docs/source/examples/going-to-jupiter-with-python-using-jupyter-and-poliastro.myst.md @@ -11,13 +11,13 @@ kernelspec: name: python3 --- -# Going to Jupiter with Python using Jupyter and poliastro +# Going to Jupiter with Python using Jupyter and hapsira Let us recreate with real data the [Juno NASSA Mission](https://www.jpl.nasa.gov/news/press_kits/juno/overview/). The main objectives of Juno spacecraft is to study the Jupiter planet: how was its formation, its evolution along time, atmospheric characteristics... ![Juno Image](juno_spacecraft.png) -First of all, let us import some of our favourite Python packages: numpy, astropy and poliastro! +First of all, let us import some of our favourite Python packages: numpy, astropy and hapsira! ```{code-cell} ipython3 from astropy import units as u @@ -28,16 +28,16 @@ solar_system_ephemeris.set("jpl") import numpy as np -from poliastro.bodies import Sun, Earth, Jupiter -from poliastro.ephem import Ephem -from poliastro.frames import Planes -from poliastro.maneuver import Maneuver -from poliastro.plotting import OrbitPlotter -from poliastro.twobody import Orbit -from poliastro.util import norm, time_range +from hapsira.bodies import Sun, Earth, Jupiter +from hapsira.ephem import Ephem +from hapsira.frames import Planes +from hapsira.maneuver import Maneuver +from hapsira.plotting import OrbitPlotter +from hapsira.twobody import Orbit +from hapsira.util import norm, time_range ``` -All the data for Juno's mission is sorted [here](https://github.com/poliastro/poliastro/wiki/EuroPython:-Per-Python-ad-Astra). The main maneuvers that the spacecraft will perform are listed down: +All the data for Juno's mission is sorted [here](https://github.com/hapsira/hapsira/wiki/EuroPython:-Per-Python-ad-Astra). The main maneuvers that the spacecraft will perform are listed down: * Inner cruise phase 1: This will set Juno in a new orbit around the sun. * Inner cruise phase 2: Fly-by around Earth. Gravity assist is performed. @@ -178,7 +178,7 @@ ic3, orb_target = ic2_end.apply_maneuver(man_jupiter, intermediate=True) ic3_end = ic3.propagate(date_arrival) ``` -Finally, we can plot all the different phases of the mission. This shows the whole power of the *poliastro* package, since a beautiful image is created showing the whole maneuvering process: +Finally, we can plot all the different phases of the mission. This shows the whole power of the *hapsira* package, since a beautiful image is created showing the whole maneuvering process: ```{code-cell} ipython3 :tags: [nbsphinx-thumbnail] diff --git a/docs/source/examples/going-to-mars-with-python-using-poliastro.myst.md b/docs/source/examples/going-to-mars-with-python-using-poliastro.myst.md index a07731700..676c8ed7a 100644 --- a/docs/source/examples/going-to-mars-with-python-using-poliastro.myst.md +++ b/docs/source/examples/going-to-mars-with-python-using-poliastro.myst.md @@ -11,9 +11,9 @@ kernelspec: name: python3 --- -# Going to Mars with Python using poliastro +# Going to Mars with Python using hapsira -This is an example on how to use [poliastro](https://github.com/poliastro/poliastro), a little library I've been working on to use in my Astrodynamics lessons. It features conversion between **classical orbital elements** and position vectors, propagation of **Keplerian orbits**, initial orbit determination using the solution of the **Lambert's problem** and **orbit plotting**. +This is an example on how to use [hapsira](https://github.com/hapsira/hapsira), a little library I've been working on to use in my Astrodynamics lessons. It features conversion between **classical orbital elements** and position vectors, propagation of **Keplerian orbits**, initial orbit determination using the solution of the **Lambert's problem** and **orbit plotting**. In this example we're going to draw the trajectory of the mission [Mars Science Laboratory (MSL)](http://mars.jpl.nasa.gov/msl/), which carried the rover Curiosity to the surface of Mars in a period of something less than 9 months. @@ -21,7 +21,7 @@ In this example we're going to draw the trajectory of the mission [Mars Science +++ -First of all, we import the necessary modules. Apart from poliastro we will make use of astropy to deal with physical units and time definitions and jplephem to compute the positions and velocities of the planets: +First of all, we import the necessary modules. Apart from hapsira we will make use of astropy to deal with physical units and time definitions and jplephem to compute the positions and velocities of the planets: ```{code-cell} ipython3 from astropy import units as u @@ -29,12 +29,12 @@ from astropy import time import numpy as np -from poliastro import iod -from poliastro.bodies import Earth, Mars, Sun -from poliastro.ephem import Ephem -from poliastro.maneuver import Maneuver -from poliastro.twobody import Orbit -from poliastro.util import time_range +from hapsira import iod +from hapsira.bodies import Earth, Mars, Sun +from hapsira.ephem import Ephem +from hapsira.maneuver import Maneuver +from hapsira.twobody import Orbit +from hapsira.util import time_range ``` We need a binary file from NASA called *SPICE kernel* to compute the position and velocities of the planets. Astropy downloads it for us: @@ -53,7 +53,7 @@ date_launch = time.Time("2011-11-26 15:02", scale="utc").tdb date_arrival = time.Time("2012-08-06 05:17", scale="utc").tdb ``` -To compute the transfer orbit, we have the useful function `lambert` : according to a theorem with the same name, *the transfer orbit between two points in space only depends on those two points and the time it takes to go from one to the other*. We could make use of the raw algorithms available in `poliastro.iod` for solving this but working with the `poliastro.maneuvers` is even easier! +To compute the transfer orbit, we have the useful function `lambert` : according to a theorem with the same name, *the transfer orbit between two points in space only depends on those two points and the time it takes to go from one to the other*. We could make use of the raw algorithms available in `hapsira.iod` for solving this but working with the `hapsira.maneuvers` is even easier! We just need to create the orbits for each one of the planets at the specific departure and arrival dates: @@ -81,8 +81,8 @@ orb_trans, orb_target = orb_earth.apply_maneuver(man_lambert, intermediate=True) Let's plot this transfer orbit in 3D! ```{code-cell} ipython3 -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Plotly3D +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Plotly3D ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/hohmann-bielliptic-transfers.png b/docs/source/examples/hohmann-bielliptic-transfers.png index e3a8473dde543dab67ee1c968694fbb319a5a1df..afa382eaea226f33566f21543508970944f1ddb7 100644 GIT binary patch delta 48 zcmaF5iS_9w)(LJ3=6WVN3K=CO1;tkS`nicE1v&X8Ihjd%`9C>G5(JL E0K!TVwEzGB delta 48 zcmaF5iS_9w)(LJ3W_rdt3K=CO1;tkS`nicE1v&X8Ihjd%`9g7 B5;p(< delta 45 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 literal 40039 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

    8gsy3d+?NmMPMo&B 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 180$ degrees (retrograde orbit.) @@ -98,18 +98,18 @@ The minimum energy transfer orbit is used as a reference point by Lambert's prob +++ -## Exploring the single and multi-revolution scenarios using poliastro +## Exploring the single and multi-revolution scenarios using hapsira -Now, let us present how to use poliastro to solve for the multiple revolutions scenario. The idea is to compute all possible transfer orbits between Earth and Mars. Therefore, we need first to compute the initial position of the Earth and the final position of times for a given desired amount of time. +Now, let us present how to use hapsira to solve for the multiple revolutions scenario. The idea is to compute all possible transfer orbits between Earth and Mars. Therefore, we need first to compute the initial position of the Earth and the final position of times for a given desired amount of time. ```{code-cell} ipython3 from astropy import units as u from astropy.time import Time -from poliastro.bodies import Sun, Earth, Mars -from poliastro.ephem import Ephem -from poliastro.twobody import Orbit -from poliastro.util import time_range +from hapsira.bodies import Sun, Earth, Mars +from hapsira.ephem import Ephem +from hapsira.twobody import Orbit +from hapsira.util import time_range ``` Computing the initial and final position orbits for each planet: @@ -148,7 +148,7 @@ colors_and_styles = [ We now define a function for solving all the possible solutions ```{code-cell} ipython3 -from poliastro.maneuver import Maneuver +from hapsira.maneuver import Maneuver def lambert_solution_orbits(orb_departure, orb_arrival, M): @@ -170,8 +170,8 @@ Finally, we can plot all the different scenarios from $M=0$ up to $M=2$ revoluti ```{code-cell} ipython3 from matplotlib import pyplot as plt -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Matplotlib2D +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Matplotlib2D ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/natural-and-artificial-perturbations.myst.md b/docs/source/examples/natural-and-artificial-perturbations.myst.md index eff9d2f6f..0f80764f2 100644 --- a/docs/source/examples/natural-and-artificial-perturbations.myst.md +++ b/docs/source/examples/natural-and-artificial-perturbations.myst.md @@ -21,27 +21,27 @@ from astropy.coordinates import solar_system_ephemeris from astropy.time import Time, TimeDelta from astropy import units as u -from poliastro.bodies import Earth, Moon -from poliastro.constants import rho0_earth, H0_earth +from hapsira.bodies import Earth, Moon +from hapsira.constants import rho0_earth, H0_earth -from poliastro.core.elements import rv2coe -from poliastro.core.perturbations import ( +from hapsira.core.elements import rv2coe +from hapsira.core.perturbations import ( atmospheric_drag_exponential, third_body, J2_perturbation, ) -from poliastro.core.propagation import func_twobody -from poliastro.ephem import build_ephem_interpolant -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Plotly3D -from poliastro.twobody import Orbit -from poliastro.twobody.propagation import CowellPropagator -from poliastro.twobody.sampling import EpochsArray -from poliastro.util import norm, time_range +from hapsira.core.propagation import func_twobody +from hapsira.ephem import build_ephem_interpolant +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Plotly3D +from hapsira.twobody import Orbit +from hapsira.twobody.propagation import CowellPropagator +from hapsira.twobody.sampling import EpochsArray +from hapsira.util import norm, time_range ``` ## Atmospheric drag ## -The poliastro package now has several commonly used natural perturbations. One of them is atmospheric drag! See how one can monitor decay of the near-Earth orbit over time using our new module `poliastro.twobody.perturbations`! +The hapsira package now has several commonly used natural perturbations. One of them is atmospheric drag! See how one can monitor decay of the near-Earth orbit over time using our new module `hapsira.twobody.perturbations`! ```{code-cell} ipython3 R = Earth.R.to(u.km).value @@ -104,7 +104,7 @@ atmosphere model than the one in `atmospheric_drag` for these sorts of computations. ```{code-cell} ipython3 -from poliastro.twobody.events import LithobrakeEvent +from hapsira.twobody.events import LithobrakeEvent orbit = Orbit.circular( Earth, 230 * u.km, epoch=Time(0.0, format="jd", scale="tdb") @@ -161,7 +161,7 @@ rr, vv = orbit.to_ephem( ).rv() # This will be easier to compute when this is solved: -# https://github.com/poliastro/poliastro/issues/380 +# https://github.com/hapsira/hapsira/issues/380 raans = [ rv2coe(k, r, v)[3] for r, v in zip(rr.to_value(u.km), vv.to_value(u.km / u.s)) @@ -239,7 +239,7 @@ frame.plot_ephem(ephem, label="orbit influenced by Moon") Apart from natural perturbations, there are artificial thrusts aimed at intentional change of orbit parameters. One of such changes is simultaneous change of eccentricity and inclination: ```{code-cell} ipython3 -from poliastro.twobody.thrust import change_ecc_inc +from hapsira.twobody.thrust import change_ecc_inc ecc_0, ecc_f = 0.4, 0.0 a = 42164 # km diff --git a/docs/source/examples/plotting-in-3D.myst.md b/docs/source/examples/plotting-in-3D.myst.md index 98c5a30a1..97c67ac1d 100644 --- a/docs/source/examples/plotting-in-3D.myst.md +++ b/docs/source/examples/plotting-in-3D.myst.md @@ -16,12 +16,12 @@ kernelspec: ```{code-cell} ipython3 import numpy as np -from poliastro.bodies import Earth, Sun -from poliastro.constants import J2000 -from poliastro.examples import churi, iss, molniya -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Plotly3D -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Sun +from hapsira.constants import J2000 +from hapsira.examples import churi, iss, molniya +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Plotly3D +from hapsira.twobody import Orbit ``` ```{code-cell} ipython3 @@ -56,8 +56,8 @@ frame.show() ```{code-cell} ipython3 from astropy.time import Time -from poliastro.ephem import Ephem -from poliastro.util import time_range +from hapsira.ephem import Ephem +from hapsira.util import time_range ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/porkchops-with-poliastro.myst.md b/docs/source/examples/porkchops-with-poliastro.myst.md index 1f8bfc707..005a34026 100644 --- a/docs/source/examples/porkchops-with-poliastro.myst.md +++ b/docs/source/examples/porkchops-with-poliastro.myst.md @@ -11,7 +11,7 @@ kernelspec: name: python3 --- -# Porkchops with poliastro +# Porkchops with hapsira Porkchops are also known as mission design curves since they show different parameters used to design the ballistic trajectories for the targetting problem such as: @@ -19,19 +19,19 @@ Porkchops are also known as mission design curves since they show different para * Launch energy (C3L) * Arrival velocity (VHP) -For the moment, poliastro is only capable of creating these mission plots between `poliastro.bodies` objects. However, it is intended for future versions to make it able for plotting porkchops between NEOs also. +For the moment, hapsira is only capable of creating these mission plots between `hapsira.bodies` objects. However, it is intended for future versions to make it able for plotting porkchops between NEOs also. +++ ## Basic modules -For creating a porkchop plot with poliastro, we need to import the `porkchop` function from the `poliastro.plotting.porkchop` module. Also, two `poliastro.bodies` are necessary for computing the targetting problem associated. Finally by making use of `time_range`, a very useful function available at `poliastro.utils` it is possible to define a span of launching and arrival dates for the problem: +For creating a porkchop plot with hapsira, we need to import the `porkchop` function from the `hapsira.plotting.porkchop` module. Also, two `hapsira.bodies` are necessary for computing the targetting problem associated. Finally by making use of `time_range`, a very useful function available at `hapsira.utils` it is possible to define a span of launching and arrival dates for the problem: ```{code-cell} from astropy import units as u -from poliastro.bodies import Earth, Mars -from poliastro.plotting.porkchop import PorkchopPlotter -from poliastro.util import time_range +from hapsira.bodies import Earth, Mars +from hapsira.plotting.porkchop import PorkchopPlotter +from hapsira.util import time_range launch_span = time_range("2005-04-30", end="2005-10-07") arrival_span = time_range("2005-11-16", end="2006-12-21") @@ -41,8 +41,8 @@ arrival_span = time_range("2005-11-16", end="2006-12-21") All that we must do is pass the two bodies, the two time spans and some extra plotting parameters realted to different information along the figure such us: -* If we want poliastro to plot time of flight lines: `tfl=True/False` -* If we want poliastro to plot arrival velocity: `vhp=True/False` +* If we want hapsira to plot time of flight lines: `tfl=True/False` +* If we want hapsira to plot arrival velocity: `vhp=True/False` * The maximum value for C3 to be ploted: `max_c3=45 * u.km**2 / u.s**2` (by default) ```{code-cell} diff --git a/docs/source/examples/propagation-using-cowells-formulation.myst.md b/docs/source/examples/propagation-using-cowells-formulation.myst.md index 1c104825e..74c87eb21 100644 --- a/docs/source/examples/propagation-using-cowells-formulation.myst.md +++ b/docs/source/examples/propagation-using-cowells-formulation.myst.md @@ -21,11 +21,11 @@ $$\ddot{\mathbb{r}} = -\frac{\mu}{|\mathbb{r}|^3} \mathbb{r} + \mathbb{a}_d$$ +++ -

    For an in-depth exploration of this topic, still to be integrated in poliastro, check out [this Master thesis](https://github.com/Juanlu001/pfc-uc3m).
    +
    For an in-depth exploration of this topic, still to be integrated in hapsira, check out [this Master thesis](https://github.com/Juanlu001/pfc-uc3m).
    +++ -
    An earlier version of this notebook allowed for more flexibility and interactivity, but was considerably more complex. Future versions of poliastro and plotly might bring back part of that functionality, depending on user feedback. You can still download the older version [here](https://github.com/poliastro/poliastro/blob/0.8.x/docs/source/examples/Propagation%20using%20Cowell's%20formulation.ipynb).
    +
    An earlier version of this notebook allowed for more flexibility and interactivity, but was considerably more complex. Future versions of hapsira and plotly might bring back part of that functionality, depending on user feedback. You can still download the older version [here](https://github.com/hapsira/hapsira/blob/0.8.x/docs/source/examples/Propagation%20using%20Cowell's%20formulation.ipynb).
    +++ @@ -39,15 +39,15 @@ from astropy import units as u import numpy as np -from poliastro.bodies import Earth -from poliastro.core.propagation import func_twobody -from poliastro.examples import iss -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Plotly3D -from poliastro.twobody import Orbit -from poliastro.twobody.propagation import CowellPropagator -from poliastro.twobody.sampling import EpochsArray -from poliastro.util import norm +from hapsira.bodies import Earth +from hapsira.core.propagation import func_twobody +from hapsira.examples import iss +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Plotly3D +from hapsira.twobody import Orbit +from hapsira.twobody.propagation import CowellPropagator +from hapsira.twobody.sampling import EpochsArray +from hapsira.util import norm ``` To provide an acceleration depending on an extra parameter, we can use **closures** like this one: diff --git a/docs/source/examples/revisiting-lamberts-problem-in-python.myst.md b/docs/source/examples/revisiting-lamberts-problem-in-python.myst.md index 843869960..d931ea226 100644 --- a/docs/source/examples/revisiting-lamberts-problem-in-python.myst.md +++ b/docs/source/examples/revisiting-lamberts-problem-in-python.myst.md @@ -13,7 +13,7 @@ kernelspec: # Revisiting Lambert's problem in Python -The Izzo algorithm to solve the Lambert problem is available in poliastro and was implemented from [this paper](https://arxiv.org/abs/1403.2705). +The Izzo algorithm to solve the Lambert problem is available in hapsira and was implemented from [this paper](https://arxiv.org/abs/1403.2705). ```{code-cell} from cycler import cycler @@ -21,8 +21,8 @@ from cycler import cycler from matplotlib import pyplot as plt import numpy as np -from poliastro.core import iod -from poliastro.iod import izzo +from hapsira.core import iod +from hapsira.iod import izzo ``` ## Part 1: Reproducing the original figure @@ -120,7 +120,7 @@ fig ```{code-cell} from astropy import units as u -from poliastro.bodies import Earth +from hapsira.bodies import Earth ``` ### Single revolution diff --git a/docs/source/examples/studying-hohmann-transfers.myst.md b/docs/source/examples/studying-hohmann-transfers.myst.md index bca013a8c..d70c22bc5 100644 --- a/docs/source/examples/studying-hohmann-transfers.myst.md +++ b/docs/source/examples/studying-hohmann-transfers.myst.md @@ -19,10 +19,10 @@ from astropy import units as u from matplotlib import pyplot as plt import numpy as np -from poliastro.bodies import Earth -from poliastro.maneuver import Maneuver -from poliastro.twobody import Orbit -from poliastro.util import norm +from hapsira.bodies import Earth +from hapsira.maneuver import Maneuver +from hapsira.twobody import Orbit +from hapsira.util import norm ``` ```{code-cell} ipython3 diff --git a/docs/source/examples/tisserand.myst.md b/docs/source/examples/tisserand.myst.md index 43280f8b5..9a9b2bf63 100644 --- a/docs/source/examples/tisserand.myst.md +++ b/docs/source/examples/tisserand.myst.md @@ -34,7 +34,7 @@ bodies for a variety of $V_{\infty}$ and $\alpha$, $\alpha$ being the pump angle * Phasing is not taken into account. That means only orbits are taken into account, not rendezvous between departure and target body. -Please, note that **poliastro solves `mean orbital elements` for Solar System bodies. Although their orbital parameters do not have great variations among time, planet orbits are assumed not to be perfectly circular or coplanar.** However, Tisserand figures are still useful for quick-design gravity assisted maneuvers. +Please, note that **hapsira solves `mean orbital elements` for Solar System bodies. Although their orbital parameters do not have great variations among time, planet orbits are assumed not to be perfectly circular or coplanar.** However, Tisserand figures are still useful for quick-design gravity assisted maneuvers. +++ @@ -55,9 +55,9 @@ from astropy import units as u from matplotlib import pyplot as plt import numpy as np -from poliastro.bodies import Venus, Earth, Mars -from poliastro.plotting.tisserand import TisserandPlotter, TisserandKind -from poliastro.plotting.util import BODY_COLORS +from hapsira.bodies import Venus, Earth, Mars +from hapsira.plotting.tisserand import TisserandPlotter, TisserandKind +from hapsira.plotting.util import BODY_COLORS ``` Notice that we imported the `TisserandKind` class, which will help us to indicate the kind of Tisserand plot we want to generate: @@ -115,7 +115,7 @@ More complex tisserand graphs can be developed, for example for the whole Solar ```{code-cell} # Let us import the rest of the planets -from poliastro.bodies import Mercury, Jupiter, Saturn, Uranus, Neptune +from hapsira.bodies import Mercury, Jupiter, Saturn, Uranus, Neptune SS_BODIES_INNER = [ Mercury, diff --git a/docs/source/examples/visualizing-the-spacex-tesla-roadster-trip-to-mars.myst.md b/docs/source/examples/visualizing-the-spacex-tesla-roadster-trip-to-mars.myst.md index c4ba2e509..9083a9adf 100644 --- a/docs/source/examples/visualizing-the-spacex-tesla-roadster-trip-to-mars.myst.md +++ b/docs/source/examples/visualizing-the-spacex-tesla-roadster-trip-to-mars.myst.md @@ -17,12 +17,12 @@ kernelspec: from astropy.time import Time from astropy import units as u -from poliastro.bodies import Earth, Mars, Sun -from poliastro.ephem import Ephem -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import Plotly3D -from poliastro.util import time_range +from hapsira.bodies import Earth, Mars, Sun +from hapsira.ephem import Ephem +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import Plotly3D +from hapsira.util import time_range EPOCH = Time("2018-02-18 12:00:00", scale="tdb") ``` @@ -39,7 +39,7 @@ roadster ``` ```{code-cell} -from poliastro.plotting.misc import plot_solar_system +from hapsira.plotting.misc import plot_solar_system ``` ```{code-cell} diff --git a/docs/source/gallery.md b/docs/source/gallery.md index 86702e938..bd4ce8bd9 100644 --- a/docs/source/gallery.md +++ b/docs/source/gallery.md @@ -1,9 +1,7 @@ (gallery)= # Gallery -The following page contains a collection of practical examples and problems solved with **poliastro**. From interplanetary transfers, to asteroid-catching missions or even propagation under external perturbations. -In addition, the user might come across tutorials related on how to use and customize -the plotting utilities, insight on the {ref}`API ` capabilities and many other topics related to orbital mechanics. +The following page contains a collection of practical examples and problems solved with **hapsira**. From interplanetary transfers, to asteroid-catching missions or even propagation under external perturbations. In addition, the user might come across tutorials related on how to use and customize the plotting utilities, insight on the {ref}`API ` capabilities and many other topics related to orbital mechanics. ```{eval-rst} .. nbgallery:: @@ -14,16 +12,16 @@ the plotting utilities, insight on the {ref}`API ` capabilities a /examples/customising-static-orbit-plots.myst.md /examples/czml-tutorial.myst.md /examples/exploring-the-new-horizons-launch.myst.md - /examples/going-to-mars-with-python-using-poliastro.myst.md - /examples/going-to-jupiter-with-python-using-jupyter-and-poliastro.myst.md + /examples/going-to-mars-with-python-using-hapsira.myst.md + /examples/going-to-jupiter-with-python-using-jupyter-and-hapsira.myst.md /examples/generating-orbit-groundtracks.myst.md /examples/plotting-in-3D.myst.md /examples/analyzing-NEOs.myst.md /examples/visualizing-the-spacex-tesla-roadster-trip-to-mars.myst.md /examples/natural-and-artificial-perturbations.myst.md - /examples/porkchops-with-poliastro.myst.md + /examples/porkchops-with-hapsira.myst.md /examples/tisserand.myst.md /examples/detecting-events.myst.md /examples/loading-OMM-and-TLE-satellite-data.myst.md - + ``` diff --git a/docs/source/history.md b/docs/source/history.md index be595a98f..fe5433c38 100644 --- a/docs/source/history.md +++ b/docs/source/history.md @@ -1,39 +1,23 @@ # History -## Creation +## Creation of `hapsira`, by Sebastian M. Ernst -I started poliastro as a wrapper of some MATLAB and Fortran algorithms -that I needed for a University project: having good performance was a -must, so pure Python was not an option. As a three language project, it -was only known to work in my computer, and I had to fight against [oct2py](https://pypi.org/project/oct2py/) -and [f2py](https://numpy.org/doc/stable/f2py/) for long hours. +`hapsira` began as a fork of the then unmaintained and archived `poliastro` in October 2023. Its aim is the continuation of `poliastro`'s development with an emphasis on speed and package structure. -Later on, I enhanced the plotting capabilities of poliastro to serve me in -additional university tasks. I removed the MATLAB (Octave) code and kept -only the Fortran algorithms. Finally, when numba was mature enough, I -implemented everything in pure Python and poliastro 0.3 was born. +## Creation of `poliastro`, by Juan Luis Cano Rodríguez + +I started `poliastro` as a wrapper of some MATLAB and Fortran algorithms that I needed for a University project: having good performance was a must, so pure Python was not an option. As a three language project, it was only known to work in my computer, and I had to fight against [oct2py](https://pypi.org/project/oct2py/) and [f2py](https://numpy.org/doc/stable/f2py/) for long hours. + +Later on, I enhanced the plotting capabilities of `poliastro` to serve me in additional university tasks. I removed the MATLAB (Octave) code and kept only the Fortran algorithms. Finally, when numba was mature enough, I implemented everything in pure Python and `poliastro` 0.3 was born. + +I am Juan Luis Cano Rodríguez (two names and two surnames, it\'s the Spanish way!), an Aerospace Engineer with a passion for Astrodynamics and the Open Source world. Before hapsira started to be a truly community project, I started it when I was an Erasmus student at Politecnico di Milano, an important technical university in Italy which deeply influenced my life and ambitions and gave name to the library itself. It is and always will be my tiny tribute to a country that will always be in my heart and to people that never ceased to inspire me. *Grazie mille!* ## Future ideas -poliastro has been historically focused on interplanetary applications, -so we would like to improve its Earth-specific capabilities in the future, -for example: +`hapsira`/`poliastro` has been historically focused on interplanetary applications, so we would like to improve its Earth-specific capabilities in the future, for example: - High order gravitational model for the Earth - Input/output of TLE and other GP data format - Attitude & dynamics -And in general, we would like to stabilize the API -and release a 1.0 version at some point! - -## Acknowledgement from the original author - -I am Juan Luis Cano Rodríguez (two names and two surnames, it\'s the -Spanish way!), an Aerospace Engineer with a passion for Astrodynamics -and the Open Source world. Before poliastro started to be a truly -community project, I started it when I was an Erasmus student at -Politecnico di Milano, an important technical university in Italy which -deeply influenced my life and ambitions and gave name to the library -itself. It is and always will be my tiny tribute to a country that will -always be in my heart and to people that never ceased to inspire me. -*Grazie mille!* +And in general, we would like to stabilize the API and release a 1.0 version at some point! diff --git a/docs/source/index.md b/docs/source/index.md index f3b9d57e7..581eba39d 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -1,24 +1,19 @@ -# poliastro - Astrodynamics in Python +# hapsira - Astrodynamics in Python ```{image} _static/logo_text.png ---- +--- width: 675px align: center --- ``` -**poliastro** is an open source ([MIT](https://opensource.org/licenses/MIT)) pure Python library -for interactive Astrodynamics and Orbital Mechanics, -with a focus on ease of use, speed, and quick visualization. -It provides a simple and intuitive {ref}`API `, -and handles physical quantities with units. +**hapsira** is an open source ([MIT](https://opensource.org/licenses/MIT)) pure Python library for interactive Astrodynamics and Orbital Mechanics, with a focus on ease of use, speed, and quick visualization. It provides a simple and intuitive {ref}`API `, and handles physical quantities with units. It's a fork of [poliastro](http://github.com/poliastro/poliastro), aiming at continuing its development. -View the [source code](https://github.com/poliastro/poliastro) of poliastro! +View the [source code](https://github.com/pleiszenburg/hapsira) of `hapsira`! Some of its awesome features are: - Analytical and numerical orbit propagation -- Conversion between position and velocity vectors and classical - orbital elements +- Conversion between position and velocity vectors and classical orbital elements - Coordinate frame transformations - Hohmann and bielliptic maneuvers computation - Trajectory plotting @@ -28,55 +23,59 @@ Some of its awesome features are: And more to come! -poliastro is developed by an open, international community. Release -announcements and general discussion take place on our [mailing -list](https://groups.io/g/poliastro-dev) and -[chat](http://chat.poliastro.space/). +`hapsira` is developed by an open, international community. Release announcements and general discussion take place on our [mailing list](https://groups.io/g/hapsira-dev) and [chat](https://matrix.to/#/#hapsira:matrix.org). ```{eval-rst} .. raw:: html
    - -
    -
    -
    - - - -

    - -
    -
    -
    + +
    +
    +
    + + + +
    + +
    +
    +
    ``` + ```{figure} _static/molniya.png --- align: right @@ -87,27 +86,18 @@ Plot of a [Molniya orbit](https://en.wikipedia.org/wiki/Molniya_orbit) around th ({math}`a = 26600~\mathrm{km}, e = 0.75, i = 63.4\mathrm{^\circ}`). ``` -The [source code](https://github.com/poliastro/poliastro), [issue -tracker](https://github.com/poliastro/poliastro/issues) and -[wiki](https://github.com/poliastro/poliastro/wiki/) are hosted on -GitHub, and all contributions and feedback are more than welcome. You -can test poliastro in your browser using [Binder](https://mybinder.org/), a cloud Jupyter -notebook server: - -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/poliastro/poliastro/main?labpath=index.ipynb) +The [source code](https://github.com/pleiszenburg/hapsira) and [issue tracker](https://github.com/pleiszenburg/hapsira/issues) are hosted on GitHub, and all contributions and feedback are more than welcome. -See [benchmarks](https://benchmarks.poliastro.space/) for the -performance analysis of poliastro. + -poliastro works on the recent Python versions and is released under the -MIT license, allowing commercial use of the library. +`hapsira` works on the recent Python versions and is released under the MIT license, allowing commercial use of the library. ```python -from poliastro.examples import molniya +from hapsira.examples import molniya molniya.plot() ``` -## Success stories +## Success stories from the original `poliastro` > *\"My team and I used Poliastro for our final project in our Summer > App Space program. This module helped us in plotting asteroids by @@ -126,8 +116,8 @@ molniya.plot() > Urbana-Champaign, United States. We are currently working on a student > AIAA/AAS satellite competition to design a satellite perform some > science missions on asteroid (469219) 2016 HO3. We are using your -> poliastro python package in designing and visualizing the trajectory -> from GEO into asteroid's orbit. Thank you for your work on poliastro, +> hapsira python package in designing and visualizing the trajectory +> from GEO into asteroid's orbit. Thank you for your work on hapsira, > especially the APIs that are very clear and informational, which helps > us significantly.\"* > @@ -164,7 +154,7 @@ installation quickstart ``` -```{toctree} +```{toctree} --- maxdepth: 2 caption: How-to guides & Examples @@ -173,9 +163,9 @@ gallery contributing ``` -```{toctree} +```{toctree} --- -maxdepth: 2 +maxdepth: 2 caption: Reference --- api @@ -194,10 +184,5 @@ background ``` ```{note} -Older versions of poliastro relied on some Fortran subroutines written -by David A. Vallado for his book \"Fundamentals of Astrodynamics and -Applications\" and available on the Internet as the [companion software -of the book](http://celestrak.com/software/vallado-sw.asp). The author -explicitly gave permission to redistribute these subroutines in this -project under a permissive license. +Older versions of `poliastro`, from which `hapsira` was forked, relied on some Fortran subroutines written by David A. Vallado for his book \"Fundamentals of Astrodynamics and Applications\" and available on the Internet as the [companion software of the book](http://celestrak.com/software/vallado-sw.asp). The author explicitly gave permission to redistribute these subroutines in this project under a permissive license. ``` diff --git a/docs/source/installation.md b/docs/source/installation.md index 323afce8f..07fb7f670 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -2,7 +2,7 @@ ## Requirements -poliastro requires a number of Python packages, notably: +`hapsira` requires a number of Python packages, notably: - [Astropy](https://www.astropy.org/), for physical units and time handling - [NumPy](https://numpy.org/), for basic numerical routines @@ -12,84 +12,61 @@ poliastro requires a number of Python packages, notably: - [Plotly](https://plotly.com/), for interactive orbit plotting - [SciPy](https://www.scipy.org/), for root finding and numerical propagation -poliastro is supported on Linux, macOS and Windows on Python 3.8 to 3.10. +`hapsira` is supported on Linux, macOS and Windows on Python 3.8 to 3.11. ## Using conda -The easiest and fastest way to get the package up and running is to -install poliastro using [conda](https://conda.io/docs/): +The easiest and fastest way to get the package up and running is to install `hapsira` using [conda](https://conda.io/docs/): ```bash -$ conda install -c conda-forge poliastro +$ conda install -c conda-forge hapsira ``` -or, better yet, using [mamba](https://mamba.readthedocs.io/), -which is a super fast replacement for `conda`: +or, better yet, using [mamba](https://mamba.readthedocs.io/), which is a super fast replacement for `conda`: ```bash $ conda install -c conda-forge mamba -$ mamba install -c conda-forge poliastro +$ mamba install -c conda-forge hapsira ``` ```{note} -We encourage users to use conda or mamba -and the [conda-forge](https://conda-forge.org/) packages -for convenience, -especially when developing on Windows. -It is recommended to create a new environment. +We encourage users to use conda or mamba and the [conda-forge](https://conda-forge.org/) packages for convenience, especially when developing on Windows. It is recommended to create a new environment. ``` -If the installation fails for any reason, please open an issue in the -[issue tracker](https://github.com/poliastro/poliastro/issues). +If the installation fails for any reason, please open an issue in the [issue tracker](https://github.com/pleiszenburg/hapsira/issues). ## Alternative installation methods -You can also [install poliastro from PyPI](https://pypi.python.org/pypi/poliastro/) using pip: +You can also [install hapsira from PyPI](https://pypi.python.org/pypi/hapsira/) using pip: ```bash -$ pip install poliastro +$ pip install hapsira ``` -Finally, you can also install the latest development version of poliastro -[directly from GitHub](http://github.com/poliastro/poliastro): +Finally, you can also install the latest development version of `hapsira` [directly from GitHub](http://github.com/pleiszenburg/hapsira): ```bash -$ pip install https://github.com/poliastro/poliastro/archive/main.zip +$ pip install https://github.com/pleiszenburg/hapsira/archive/main.zip ``` -This is useful if there is some feature that you want to try, -but we did not release it yet as a stable version. -Although you might find some unpolished details, -these development installations should work without problems. -If you find any, please open an issue in the [issue tracker](https://github.com/poliastro/poliastro/issues). +This is useful if there is some feature that you want to try, but we did not release it yet as a stable version. Although you might find some unpolished details, these development installations should work without problems. If you find any, please open an issue in the [issue tracker](https://github.com/pleiszenburg/hapsira/issues). ```{warning} -It is recommended that you -**never ever use sudo** with distutils, pip, setuptools and friends in Linux -because you might seriously break your system -\[[1](http://wiki.python.org/moin/CheeseShopTutorial#Distutils_Installation)\]\[[2](http://stackoverflow.com/questions/4314376/how-can-i-install-a-python-egg-file/4314446#comment4690673_4314446)\]\[[3](http://workaround.org/easy-install-debian)\]\[[4](http://matplotlib.1069221.n5.nabble.com/Why-is-pip-not-mentioned-in-the-Installation-Documentation-tp39779p39812.html)\]. -Use [virtual environments](https://docs.python.org/3/library/venv.html) instead. +It is recommended that you **never ever use sudo** with distutils, pip, setuptools and friends in Linux because you might seriously break your system \[[1](http://wiki.python.org/moin/CheeseShopTutorial#Distutils_Installation)\]\[[2](http://stackoverflow.com/questions/4314376/how-can-i-install-a-python-egg-file/4314446#comment4690673_4314446)\]\[[3](http://workaround.org/easy-install-debian)\]\[[4](http://matplotlib.1069221.n5.nabble.com/Why-is-pip-not-mentioned-in-the-Installation-Documentation-tp39779p39812.html)\]. Use [virtual environments](https://docs.python.org/3/library/venv.html) instead. ``` -## Making poliastro work in your editor +## Making `hapsira` work in your editor ### Jupyter notebook and JupyterLab To install the extra dependencies needed to make the interactive plots work on Jupyter, do ```bash -$ pip install poliastro[jupyter] +$ pip install hapsira[jupyter] ``` -With Plotly versions older than 5 on JupyterLab, -you will also need to install Node.js -to enable the browser extensions. -Check out [their troubleshooting guide](https://plotly.com/python/troubleshooting/#jupyterlab-problems) -for further information. +With Plotly versions older than 5 on JupyterLab, you will also need to install Node.js to enable the browser extensions. Check out [their troubleshooting guide](https://plotly.com/python/troubleshooting/#jupyterlab-problems) for further information. ## Problems and suggestions -If for any reason you get an unexpected error message or an incorrect result, -or you want to let the developers know about your use case, -please open a new issue in the [issue tracker](https://github.com/poliastro/poliastro/issues) -and we will try to answer promptly. +If for any reason you get an unexpected error message or an incorrect result, or you want to let the developers know about your use case, please open a new issue in the [issue tracker](https://github.com/pleiszenburg/hapsira/issues) and we will try to answer promptly. diff --git a/docs/source/logo/logo.svg b/docs/source/logo/logo.svg index c10a8ee78..d5e51fa81 100644 --- a/docs/source/logo/logo.svg +++ b/docs/source/logo/logo.svg @@ -16,7 +16,7 @@ version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="logo.svg" - inkscape:export-filename="/home/juanlu/Development/Python/poliastro/logo.png" + inkscape:export-filename="/home/juanlu/Development/Python/hapsira/logo.png" inkscape:export-xdpi="72" inkscape:export-ydpi="72"> + width="338.66666mm" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + units="mm" + inkscape:pagecheckerboard="0" + showguides="true" + inkscape:guide-bbox="true" /> - - - - - - - - - - + id="defs7427" /> @@ -98,7 +55,7 @@ image/svg+xml - + @@ -108,140 +65,135 @@ inkscape:groupmode="layer" inkscape:label="Layer 1"> + id="g7316" + transform="translate(0.4394713,2.2654799)"> + + + + + + + + + - - - - - + transform="translate(55.55839,-14.142136)" + inkscape:export-ydpi="72" + inkscape:export-xdpi="72" + id="g18902"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#3873a3;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.02466;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path7973" + cx="336.1431" + cy="684.40381" + r="19.488455" /> - - - - - - + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path8021-6" + cx="341.93665" + cy="682.64636" + r="5.5558391" /> - poli - Astrodynamics in Python - astro + hapsira + Astrodynamics in Python + A poliastro fork diff --git a/docs/source/quickstart.md b/docs/source/quickstart.md index 8c52ad73a..10033448e 100644 --- a/docs/source/quickstart.md +++ b/docs/source/quickstart.md @@ -3,12 +3,9 @@ ## Defining the orbit: {{ Orbit }} objects -The core of poliastro are the {{ Orbit }} objects -inside the {py:class}`poliastro.twobody` module. They store all the required -information to define an orbit: +The core of `hapsira` are the {{ Orbit }} objects inside the {py:class}`hapsira.twobody` module. They store all the required information to define an orbit: -- The body acting as the central body of the orbit, for example the - Earth. +- The body acting as the central body of the orbit, for example the Earth. - The position and velocity vectors or the orbital elements. - The time at which the orbit is defined. @@ -17,15 +14,13 @@ First of all, you have to import the relevant modules and classes: ```python from astropy import units as u -from poliastro.bodies import Earth, Mars, Sun -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Mars, Sun +from hapsira.twobody import Orbit ``` ## From position and velocity -There are several methods available to create {{ Orbit }} objects. -For example, if you have the position and velocity vectors you can use -{py:meth}`~poliastro.twobody.orbit.scalar.Orbit.from_vectors`: +There are several methods available to create {{ Orbit }} objects. For example, if you have the position and velocity vectors you can use {py:meth}`~hapsira.twobody.orbit.scalar.Orbit.from_vectors`: ```python # Data from Curtis, example 4.3 @@ -44,7 +39,7 @@ And that's it! Notice a couple of things: - If you display the orbit you just created, you get a string with the radius of pericenter, radius of apocenter, inclination, reference frame and attractor: - ```python + ```python >>> orb 7283 x 10293 km x 153.2 deg (GCRS) orbit around Earth (♁) at epoch J2000.000 (TT) ``` @@ -58,7 +53,7 @@ And that's it! Notice a couple of things: ``` - The reference frame of the orbit will be one pseudo-inertial frame around the attractor. - You can retrieve it using the {py:attr}`~poliastro.twobody.orbit.scalar.Orbit.frame` property: + You can retrieve it using the {py:attr}`~hapsira.twobody.orbit.scalar.Orbit.frame` property: ```python >>> orb.get_frame() @@ -74,8 +69,7 @@ alt: Plot of the orbit --- ``` -If you're working on interactive mode (for example, using JupyterLab) -you can immediately plot the current orbit: +If you're working on interactive mode (for example, using JupyterLab) you can immediately plot the current orbit: orb.plot() @@ -88,18 +82,12 @@ This plot is made in the so called *perifocal frame*, which means: The dotted line represents the *osculating orbit*: the instantaneous Keplerian orbit at that point. This is relevant in the context of perturbations, when the object shall deviate from its Keplerian orbit. ```{note} -This visualization uses Plotly under interactive environments like Jupyter -Notebook or Jupyter Lab while it switches to Matplotlib otherwise. Nevertheless, -you can select the drawing backend. Check out the -{py:class}`poliastro.plotting.orbit.OrbitPlotter` documentation for more -information. +This visualization uses Plotly under interactive environments like Jupyter Notebook or Jupyter Lab while it switches to Matplotlib otherwise. Nevertheless, you can select the drawing backend. Check out the {py:class}`hapsira.plotting.orbit.OrbitPlotter` documentation for more information. ``` ## From classical orbital elements -You can also define an {{ Orbit }} using a set of six parameters called **orbital elements**. -Although there are several of these element sets, each one with its advantages and drawbacks, -right now poliastro supports the *classical orbital elements*: +You can also define an {{ Orbit }} using a set of six parameters called **orbital elements**. Although there are several of these element sets, each one with its advantages and drawbacks, right now hapsira supports the *classical orbital elements*: - Semimajor axis $(a)$. - Eccentricity $(e)$. @@ -108,8 +96,7 @@ right now poliastro supports the *classical orbital elements*: - Argument of pericenter $(\omega)$. - True anomaly $(\nu)$. -In this case, you'd use the method -{py:meth}`~poliastro.twobody.orbit.Orbit.from_classical`: +In this case, you'd use the method {py:meth}`~hapsira.twobody.orbit.Orbit.from_classical`: ```python # Data for Mars at J2000 from JPL HORIZONS @@ -123,8 +110,7 @@ nu = 23.33 << u.deg orb = Orbit.from_classical(Sun, a, ecc, inc, raan, argp, nu) ``` -Notice that whether you create an {{ Orbit }} from $(r)$ and $(v)$ or from -elements you can access many mathematical properties of the orbit: +Notice that whether you create an {{ Orbit }} from $(r)$ and $(v)$ or from elements you can access many mathematical properties of the orbit: ```python >>> orb.period.to(u.day) @@ -136,14 +122,12 @@ To see a complete list of properties, check out the {{ Orbit }} class on the API ## Moving forward in time: propagation -Now that you have defined an orbit, you might be interested in computing -how is it going to evolve in the future. In the context of orbital mechanics, -this process is known as **propagation**. +Now that you have defined an orbit, you might be interested in computing how is it going to evolve in the future. In the context of orbital mechanics, this process is known as **propagation**. For example, start by importing an example orbit from the International Space Station: -```python ->>> from poliastro.examples import iss +```python +>>> from hapsira.examples import iss >>> iss 6772 x 6790 km x 51.6 deg (GCRS) orbit around Earth (♁) >>> iss.epoch @@ -154,8 +138,7 @@ For example, start by importing an example orbit from the International Space St ``` -Using the {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.propagate` method -you can now retrieve the position of the ISS after some time: +Using the {py:meth}`~hapsira.twobody.orbit.scalar.Orbit.propagate` method you can now retrieve the position of the ISS after some time: ```python >>> iss_30m = iss.propagate(30 << u.min) @@ -165,19 +148,15 @@ you can now retrieve the position of the ISS after some time: ``` -To explore different propagation algorithms, check out the -{py:mod}`poliastro.twobody.propagation` module. +To explore different propagation algorithms, check out the {py:mod}`hapsira.twobody.propagation` module. -## Studying trajectories: {py:class}`~poliastro.ephem.Ephem` objects +## Studying trajectories: {py:class}`~hapsira.ephem.Ephem` objects -The `propagate` method gives you the final orbit at the epoch you designated. -To retrieve the whole trajectory instead, you can use -{py:meth}`poliastro.twobody.orbit.scalar.Orbit.to_ephem`, which returns an -{{ Ephem }} instance: +The `propagate` method gives you the final orbit at the epoch you designated. To retrieve the whole trajectory instead, you can use {py:meth}`hapsira.twobody.orbit.scalar.Orbit.to_ephem`, which returns an {{ Ephem }} instance: ```python -from poliastro.twobody.sampling import EpochsArray, TrueAnomalyBounds, EpochBounds -from poliastro.util import time_range +from hapsira.twobody.sampling import EpochsArray, TrueAnomalyBounds, EpochBounds +from hapsira.util import time_range start_date = Time("2022-07-11 05:05", scale="utc") end_date = Time("2022-07-11 07:05", scale="utc") @@ -195,8 +174,7 @@ ephem3 = iss.to_ephem(strategy=TrueAnomalyBounds(min_nu=0 << u.deg, max_nu=180 < ephem4 = iss.to_ephem(strategy=EpochBounds(min_epoch=start_date, max_epoch=end_date)) ``` -`Ephem` objects contain the coordinates of an object sampled at specific times. -You can access both: +`Ephem` objects contain the coordinates of an object sampled at specific times. You can access both: ```python >>> ephem1.epochs[:3] @@ -212,15 +190,13 @@ You can access both: ## Studying non-keplerian orbits: perturbations -Apart from the Keplerian propagators, poliastro also allows you to -define custom perturbation accelerations to study non Keplerian orbits, -thanks to Cowell's method: +Apart from the Keplerian propagators, hapsira also allows you to define custom perturbation accelerations to study non Keplerian orbits, thanks to Cowell's method: ```python >>> from numba import njit >>> import numpy as np ->>> from poliastro.core.propagation import func_twobody ->>> from poliastro.twobody.propagation import CowellPropagator +>>> from hapsira.core.propagation import func_twobody +>>> from hapsira.twobody.propagation import CowellPropagator >>> r0 = [-2384.46, 5729.01, 3050.46] << u.km >>> v0 = [-7.36138, -2.98997, 1.64354] << (u.km / u.s) >>> initial = Orbit.from_vectors(Earth, r0, v0) @@ -241,11 +217,10 @@ thanks to Cowell's method: 18255 x 21848 km x 28.0 deg (GCRS) orbit around Earth (♁) at epoch J2000.008 (TT) ``` -Some natural perturbations are available in poliastro to be used -directly in this way. For instance, to examine the effect of J2 perturbation: +Some natural perturbations are available in hapsira to be used directly in this way. For instance, to examine the effect of J2 perturbation: ```python ->>> from poliastro.core.perturbations import J2_perturbation +>>> from hapsira.core.perturbations import J2_perturbation >>> tofs = [48.0] << u.h >>> def f(t0, u_, k): ... du_kep = func_twobody(t0, u_, k) @@ -269,9 +244,7 @@ The J2 perturbation changes the orbit parameters (from Curtis example 12.2): ## Studying artificial perturbations: thrust -In addition to natural perturbations, poliastro also has built-in -artificial perturbations (thrust guidance laws) aimed at intentional change of some -orbital elements. For example, to simultaneously change eccentricity and inclination: +In addition to natural perturbations, hapsira also has built-in artificial perturbations (thrust guidance laws) aimed at intentional change of some orbital elements. For example, to simultaneously change eccentricity and inclination: ```python >>> ecc_0, ecc_f = [0.4, 0.0] << u.one @@ -310,22 +283,16 @@ The thrust changes orbit parameters as desired (within errors): (, ) ``` -For more available thrust guidance laws options, see the -{py:mod}`poliastro.twobody.thrust` module. +For more available thrust guidance laws options, see the {py:mod}`hapsira.twobody.thrust` module. -### Changing the orbit: {py:class}`~poliastro.maneuver.Maneuver` objects +### Changing the orbit: {py:class}`~hapsira.maneuver.Maneuver` objects -poliastro helps defining several in-plane and general out-of-plane -maneuvers with the {py:class}`~poliastro.maneuver.Maneuver` class. +`hapsira` helps defining several in-plane and general out-of-plane maneuvers with the {py:class}`~hapsira.maneuver.Maneuver` class. -Each `Maneuver` consists on a list of impulses $\Delta v_i$ (changes in velocity), -each one applied at a certain instant $t_i$. The simplest maneuver is -a single change of velocity without delay: -you can recreate it either using the {py:meth}`~poliastro.maneuver.Maneuver.impulse` method -or instantiating it directly. +Each `Maneuver` consists on a list of impulses $\Delta v_i$ (changes in velocity), each one applied at a certain instant $t_i$. The simplest maneuver is a single change of velocity without delay: you can recreate it either using the {py:meth}`~hapsira.maneuver.Maneuver.impulse` method or instantiating it directly. ```python -from poliastro.maneuver import Maneuver +from hapsira.maneuver import Maneuver dv = [5, 0, 0] << (u.m / u.s) @@ -333,13 +300,7 @@ imp = Maneuver.impulse(dv) imp = Maneuver((0 << u.s, dv)) # Equivalent ``` -There are other useful methods you can use to compute common in-plane maneuvers, -notably {py:meth} `~poliastro.maneuver.Maneuver.hohmann` and -{py:meth}`~poliastro.maneuver.Maneuver.bielliptic` for -[Hohmann](https://en.wikipedia.org/wiki/Hohmann_transfer_orbit) -and [bielliptic](https://en.wikipedia.org/wiki/Bi-elliptic_transfer) transfers respectively. -Both return the corresponding `Maneuver` object, which in turn you can use to calculate -the total cost in terms of velocity change $\sum |\Delta v_i|$ and the transfer time: +There are other useful methods you can use to compute common in-plane maneuvers, notably {py:meth} `~hapsira.maneuver.Maneuver.hohmann` and {py:meth}`~hapsira.maneuver.Maneuver.bielliptic` for [Hohmann](https://en.wikipedia.org/wiki/Hohmann_transfer_orbit) and [bielliptic](https://en.wikipedia.org/wiki/Bi-elliptic_transfer) transfers respectively. Both return the corresponding `Maneuver` object, which in turn you can use to calculate the total cost in terms of velocity change $\sum |\Delta v_i|$ and the transfer time: ```python >>> orb_i = Orbit.circular(Earth, alt=700 << u.km) @@ -363,8 +324,7 @@ You can also retrieve the individual vectorial impulses: (, ) ``` -To actually retrieve the resulting {{ Orbit }} after performing a maneuver, use -the method {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.apply_maneuver`: +To actually retrieve the resulting {{ Orbit }} after performing a maneuver, use the method {py:meth}`~hapsira.twobody.orbit.scalar.Orbit.apply_maneuver`: ```python >>> orb_f = orb_i.apply_maneuver(hoh) @@ -374,28 +334,18 @@ the method {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.apply_maneuver`: ### More advanced plotting: `OrbitPlotter` objects -You previously saw the {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.plot` -method to easily plot orbits. Now you might want to plot several orbits in one -graph (for example, the maneuver you computed in the previous section). For this -purpose, poliastro has an `OrbitPlotter` object in the -{py:mod}`~poliastro.plotting` module. +You previously saw the {py:meth}`~hapsira.twobody.orbit.scalar.Orbit.plot` method to easily plot orbits. Now you might want to plot several orbits in one graph (for example, the maneuver you computed in the previous section). For this purpose, hapsira has an `OrbitPlotter` object in the {py:mod}`~hapsira.plotting` module. -The advantage of this object is that it allows you to select the desired drawing -backend. All the supported backends are specified in the dictionary -{py:class}`~poliastro.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS`. +The advantage of this object is that it allows you to select the desired drawing backend. All the supported backends are specified in the dictionary {py:class}`~hapsira.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS`. -If you would like to know which 2D check the -{py:class}`~poliastro.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS_2D`. -For 3D backends, refer to -{py:class}`~poliastro.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS_3D`. +If you would like to know which 2D check the {py:class}`~hapsira.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS_2D`. For 3D backends, refer to {py:class}`~hapsira.plotting.orbit.backens.SUPPORTED_ORBIT_PLOTTER_BACKENDS_3D`. -Note that some backends are interactive, meaning that you can move the scene or -even rotate the three-dimensional view in a dynamic way. +Note that some backends are interactive, meaning that you can move the scene or even rotate the three-dimensional view in a dynamic way. To easily visualize several orbits in two dimensions, you can run this code: ```python -from poliastro.plotting import OrbitPlotter +from hapsira.plotting import OrbitPlotter op = OrbitPlotter(backend_name="matplotlib2D") orb_a, orb_f = orb_i.apply_maneuver(hoh, intermediate=True) @@ -411,7 +361,7 @@ which produces this beautiful plot: --- align: center alt: Hohmann transfer ---- +--- Plot of a Hohmann transfer. ``` @@ -421,24 +371,20 @@ Plot of a Hohmann transfer. .. versionadded:: 0.14.0 ``` -Thanks to Astropy and jplephem, poliastro can read Satellite Planet Kernel (SPK) files, -part of NASA's SPICE toolkit. This means that you can query the position and velocity -of the planets of the Solar system. +Thanks to Astropy and jplephem, hapsira can read Satellite Planet Kernel (SPK) files, part of NASA's SPICE toolkit. This means that you can query the position and velocity of the planets of the Solar system. -The {py:class}`poliastro.ephem.Ephem` class allows you to retrieve a planetary orbit -using low precision ephemerides available in Astropy: +The {py:class}`hapsira.ephem.Ephem` class allows you to retrieve a planetary orbit using low precision ephemerides available in Astropy: ```python >>> from astropy.time import Time >>> epoch = time.Time("2020-04-29 10:43") # UTC by default ->>> from poliastro.ephem import Ephem +>>> from hapsira.ephem import Ephem >>> earth = Ephem.from_body(Earth, epoch.tdb) >>> earth Ephemerides at 1 epochs from 2020-04-29 10:44:09.186 (TDB) to 2020-04-29 10:44:09.186 (TDB) ``` -This does not require any external download. If on the other hand you -want to use higher precision ephemerides, you can tell Astropy to do so: +This does not require any external download. If on the other hand you want to use higher precision ephemerides, you can tell Astropy to do so: ```python >>> from astropy.coordinates import solar_system_ephemeris @@ -447,12 +393,9 @@ Downloading http://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430. |==========>-------------------------------| 23M/119M (19.54%) ETA 59s22ss23 ``` -This in turn will download the ephemerides files from NASA and use them for future computations. -For more information, check out -[Astropy documentation on ephemerides](https://docs.astropy.org/en/stable/coordinates/solarsystem.html). +This in turn will download the ephemerides files from NASA and use them for future computations. For more information, check out [Astropy documentation on ephemerides](https://docs.astropy.org/en/stable/coordinates/solarsystem.html). -If you want to retrieve the **osculating orbit** at a given epoch, -you can do so using {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.from_ephem`: +If you want to retrieve the **osculating orbit** at a given epoch, you can do so using {py:meth}`~hapsira.twobody.orbit.scalar.Orbit.from_ephem`: ```python >>> Orbit.from_ephem(Sun, earth, epoch) @@ -460,18 +403,12 @@ you can do so using {py:meth}`~poliastro.twobody.orbit.scalar.Orbit.from_ephem`: ``` ```{note} -Notice that the position and velocity vectors are given with respect to the -**Heliocentric Celestial Reference System** (HCRS) -which means equatorial coordinates centered on the Sun. +Notice that the position and velocity vectors are given with respect to the **Heliocentric Celestial Reference System** (HCRS) which means equatorial coordinates centered on the Sun. ``` -In addition, poliastro supports fetching orbital information from 2 online databases: -Small Body Database Browser (SBDB) and JPL HORIZONS. +In addition, hapsira supports fetching orbital information from 2 online databases: Small Body Database Browser (SBDB) and JPL HORIZONS. -HORIZONS can be used to generate ephemerides for solar-system bodies, -while SBDB provides model orbits for all known asteroids and many comets. -The data is fetched using the wrappers to these services provided by -[astroquery](https://astroquery.readthedocs.io/): +HORIZONS can be used to generate ephemerides for solar-system bodies, while SBDB provides model orbits for all known asteroids and many comets. The data is fetched using the wrappers to these services provided by [astroquery](https://astroquery.readthedocs.io/): ```python epoch = Time("2020-04-29 10:43") @@ -482,18 +419,11 @@ orbit_apophis = Orbit.from_sbdb("Apophis") ## Traveling through space: solving the Lambert problem -The determination of an orbit given two position vectors and the time of flight -is known in celestial mechanics as **Lambert's problem**, also known as the -two body boundary value problem. This contrasts with Kepler's problem or propagation, -which is rather an initial value problem. +The determination of an orbit given two position vectors and the time of flight is known in celestial mechanics as **Lambert's problem**, also known as the two body boundary value problem. This contrasts with Kepler's problem or propagation, which is rather an initial value problem. -poliastro allows you to solve Lambert's problem by passing the initial and final orbits -to {py:meth}`poliastro.maneuver.Maneuver.lambert` instance. -The time of flight is computed internally since orbits epochs are known. +`hapsira` allows you to solve Lambert's problem by passing the initial and final orbits to {py:meth}`hapsira.maneuver.Maneuver.lambert` instance. The time of flight is computed internally since orbits epochs are known. -For instance, this is a simplified version of the example -"Going to Mars with Python using poliastro", where the orbit of the -Mars Science Laboratory mission (rover Curiosity) is determined: +For instance, this is a simplified version of the example "Going to Mars with Python using hapsira", where the orbit of the Mars Science Laboratory mission (rover Curiosity) is determined: ```python date_launch = Time('2011-11-26 15:02', scale='tdb') @@ -525,18 +455,16 @@ alt: Plot of the orbit ## Creating a CZML document -You can create CZML documents which can then be visualized with the help of -[Cesium](https://cesium.com/platform/cesiumjs/). +You can create CZML documents which can then be visualized with the help of [Cesium](https://cesium.com/platform/cesiumjs/). First, load the orbital data and the CZML Extractor: ```python -from poliastro.examples import molniya, iss -from poliastro.czml.extract_czml import CZMLExtractor +from hapsira.examples import molniya, iss +from hapsira.czml.extract_czml import CZMLExtractor ``` -Then, specify the starting and ending epoch, as well as the number of -sample points (the higher the number, the more accurate the trajectory): +Then, specify the starting and ending epoch, as well as the number of sample points (the higher the number, the more accurate the trajectory): ```python start_epoch = iss.epoch @@ -549,8 +477,6 @@ extractor.add_orbit(molniya, label_text="Molniya") extractor.add_orbit(iss, label_text="ISS") ``` -Finaly, generate the CZML file by calling `extractor.packets`. -There is more information in -[this sample Cesium application](https://github.com/poliastro/cesium-app/blob/master/README.md). +Finaly, generate the CZML file by calling `extractor.packets`. There is more information in [this sample Cesium application](https://github.com/poliastro/cesium-app/blob/master/README.md). *Per Python ad astra* ;) diff --git a/docs/source/related.md b/docs/source/related.md index 8ba68a283..b78b56cc1 100644 --- a/docs/source/related.md +++ b/docs/source/related.md @@ -1,13 +1,12 @@ # Related software -These are some projects which share similarities with poliastro or which -served as inspiration: +These are some projects which share similarities with `hapsira` or which served as inspiration: - [astropy](http://www.astropy.org/): According to its website, \"The Astropy Project is a community effort to develop a single core package for Astronomy in Python and foster interoperability between Python astronomy packages\". Not only does it provide important core - features for poliastro like [time](https://docs.astropy.org/en/stable/time/) and physical [units](https://docs.astropy.org/en/stable/units/) handling, but + features for hapsira like [time](https://docs.astropy.org/en/stable/time/) and physical [units](https://docs.astropy.org/en/stable/units/) handling, but also sets a [high bar](https://docs.astropy.org/en/stable/index.html) for code quality and documentation standards. A truly inspiring project. - [Skyfield](https://rhodesmill.org/skyfield/): Another Astronomy @@ -18,10 +17,10 @@ served as inspiration: - [Plyades](https://plyades.readthedocs.io/): A pioneering astrodynamics library written in Python by [Helgee Eichhorn](https://helgeeichhorn.de/). Its clean and user-friendly API inspired me to completely refactor - poliastro 0.2 so it could be much easier to use. It is now deprecated by the author, with [Astrodynamics.jl](https://juliaastrodynamics.github.io/) being its successor (poliastro, too!) + hapsira 0.2 so it could be much easier to use. It is now deprecated by the author, with [Astrodynamics.jl](https://juliaastrodynamics.github.io/) being its successor (hapsira, too!) - [orbital](https://pythonhosted.org/OrbitalPy/): Yet another orbital mechanics Python library written by [Frazer McLean](https://www.frazermclean.co.uk/). It is very - similar to poliastro (orbital plotting module was inspired by mine) + similar to hapsira (orbital plotting module was inspired by mine) but its internal structure is way smarter. It is more focused in plotting and it even provides 3D plots and animations. - [orekit-python-wrapper](https://www.orekit.org/forge/projects/orekit-python-wrapper/wiki): @@ -33,7 +32,7 @@ served as inspiration: - [beyond](https://github.com/galactics/beyond/): A young flight dynamics library written in Python with a focus on developing \"a simple API for space observations\". Some parts overlap with - poliastro, but it also introduces many interesting features, and the + hapsira, but it also introduces many interesting features, and the examples look promising. Worth checking! - [SpiceyPy](https://github.com/andrewannex/SpiceyPy): This Python library wraps the [SPICE Toolkit](https://naif.jpl.nasa.gov/naif/toolkit.html), a huge software collection diff --git a/index.ipynb b/index.ipynb index 68175fa76..838f0fca4 100644 --- a/index.ipynb +++ b/index.ipynb @@ -8,7 +8,7 @@ "\n", "![logo_text.png](docs/source/examples/logo_text.png)\n", "\n", - "Here you can browse a gallery of examples using poliastro in the form of Jupyter notebooks." + "Here you can browse a gallery of examples using hapsira in the form of Jupyter notebooks." ] }, { diff --git a/pyproject.toml b/pyproject.toml index bad880e7a..0417fb060 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,16 +7,15 @@ requires = [ build-backend = "flit_core.buildapi" [project] -name = "poliastro" +name = "hapsira" readme = "README.md" requires-python = ">=3.8" -license = {file = "COPYING"} +license = {file = "LICENSE"} authors = [ - {name = "Juan Luis Cano Rodríguez", email = "hello@juanlu.space"} + {name = "Sebastian M. Ernst", email = "ernst@pleiszenburg.de"} ] maintainers = [ - {name = "Juan Luis Cano Rodríguez", email = "hello@juanlu.space"}, - {name = "Jorge Martinez Garrido", email = "contact@jorgemartinez.space"} + {name = "Sebastian M. Ernst", email = "ernst@pleiszenburg.de"} ] keywords = [ "aero", @@ -46,59 +45,59 @@ classifiers = [ "Topic :: Scientific/Engineering :: Astronomy", ] dependencies = [ - "astropy >=5.0,<6", - "astroquery >=0.3.9", + "astropy", # >=5.0,<6", + "astroquery", # >=0.3.9", "jplephem", - "matplotlib >=2.0,!=3.0.1", - "numba >=0.46 ; python_version<'3.9'", - "numba >=0.53.0 ; python_version>='3.9'", + "matplotlib<3.8", # >=2.0,!=3.0.1,<3.8", # https://github.com/librosa/librosa/issues/1763 + "numba", # >=0.46 ; python_version<'3.9'", + # "numba >=0.53.0 ; python_version>='3.9'", "numpy", "pandas", - "plotly >=4.0,<6", + "plotly", # >=4.0,<6", "pyerfa", - "scipy >=1.4.0", + "scipy", # >=1.4.0", ] dynamic = ["version", "description"] [project.urls] -Homepage = "https://www.poliastro.space" -Documentation = "https://docs.poliastro.space" -Source = "https://github.com/poliastro/poliastro" -Tracker = "https://github.com/poliastro/poliastro/issues" -Funding = "https://opencollective.com/poliastro" -Changelog = "https://docs.poliastro.space/en/stable/changelog.html" +Homepage = "https://hapsira.readthedocs.io" +Documentation = "https://hapsira.readthedocs.io" +Source = "https://github.com/pleiszenburg/hapsira" +Tracker = "https://github.com/pleiszenburg/hapsira/issues" +Changelog = "https://hapsira.readthedocs.io/en/stable/changelog.html" [project.optional-dependencies] jupyter = ["notebook", "ipywidgets>=7.6"] cesium = ["czml3 ~=0.5.3"] doc = [ "httpx", - "ipython>=5.0", - "ipywidgets>=7.6", + "ipython", # >=5.0", + "ipykernel", # https://github.com/pandas-dev/pandas/issues/18041#issuecomment-340701027 + "ipywidgets",# >=7.6", "jupyter-client", "jupytext", - "myst-parser>=0.13.1", - "nbsphinx>=0.8.6", - "nbconvert>=5.5", + "myst-parser", # >=0.13.1", + "nbsphinx", # >=0.8.6", + "nbconvert", # >=5.5", "sgp4", - "sphinx!=3.5,!=4.0,<5.1", # https://github.com/readthedocs/sphinx-hoverxref/issues/119 - "sphinx-autoapi", + "sphinx", # !=3.5,!=4.0,<5.1", # https://github.com/readthedocs/sphinx-hoverxref/issues/119 + "sphinx-autoapi>=3", "sphinx-gallery<=0.7.0", # Just to avoid the jupytext warning - "sphinx_rtd_theme~=1.0.0", - "sphinx-hoverxref==0.7b1", + "sphinx_rtd_theme", # ~=1.0.0", + "sphinx-hoverxref", # ==0.7b1", "sphinx-notfound-page", - "sphinx-copybutton>0.2.9", - "sphinx-github-role~=0.1.0", + "sphinx-copybutton", # >0.2.9", + "sphinx-github-role", # ~=0.1.0", ] test = [ "coverage", "hypothesis", "import-linter[toml]", - "mypy>=0.740", + "mypy", # >=0.740", "pre-commit", - "pytest>=3.2", - "pytest-cov<2.6.0", # https://github.com/pytest-dev/pytest-cov/issues/222 - "pytest-doctestplus>=0.8", # https://github.com/astropy/pytest-doctestplus/issues/118 + "pytest", # >=3.2", + "pytest-cov", # <2.6.0", # https://github.com/pytest-dev/pytest-cov/issues/222 + "pytest-doctestplus", # >=0.8", # https://github.com/astropy/pytest-doctestplus/issues/118 "pytest-mpl", "pytest-mypy", "pytest-remotedata", @@ -107,19 +106,16 @@ test = [ [tool.flit.sdist] include = [ - "src/poliastro/atmosphere/data/coesa62.dat", - "src/poliastro/atmosphere/data/coesa76.dat", - "src/poliastro/atmosphere/data/coesa76_p.dat", - "src/poliastro/atmosphere/data/coesa76_rho.dat", + "src/hapsira/atmosphere/data/coesa62.dat", + "src/hapsira/atmosphere/data/coesa76.dat", + "src/hapsira/atmosphere/data/coesa76_p.dat", + "src/hapsira/atmosphere/data/coesa76_rho.dat", "setup.cfg" ] exclude = [ "docs/" ] -[tool.black] -line-length = 79 - [tool.ruff] select = [ "E", # pycodestyle, see https://github.com/charliermarsh/ruff#pycodestyle-e-w @@ -143,7 +139,7 @@ exclude = [ [tool.ruff.isort] combine-as-imports = true force-sort-within-sections = true -known-first-party = ["poliastro"] +known-first-party = ["hapsira"] [tool.ruff.mccabe] max-complexity = 18 @@ -167,13 +163,13 @@ show_missing = true [tool.importlinter] # Include Astropy to properly analyze external submodules, # see https://github.com/seddonym/import-linter/issues/111 -root_packages = ["poliastro", "astropy"] +root_packages = ["hapsira", "astropy"] include_external_packages = true [[tool.importlinter.contracts]] -name = "poliastro.core does not import astropy.units" +name = "hapsira.core does not import astropy.units" type = "forbidden" -source_modules = ["poliastro.core"] +source_modules = ["hapsira.core"] forbidden_modules = ["astropy.units"] [tool.pytest.ini_options] diff --git a/src/poliastro/__init__.py b/src/hapsira/__init__.py similarity index 100% rename from src/poliastro/__init__.py rename to src/hapsira/__init__.py diff --git a/src/poliastro/_math/__init__.py b/src/hapsira/_math/__init__.py similarity index 100% rename from src/poliastro/_math/__init__.py rename to src/hapsira/_math/__init__.py diff --git a/src/poliastro/_math/integrate.py b/src/hapsira/_math/integrate.py similarity index 100% rename from src/poliastro/_math/integrate.py rename to src/hapsira/_math/integrate.py diff --git a/src/poliastro/_math/interpolate.py b/src/hapsira/_math/interpolate.py similarity index 100% rename from src/poliastro/_math/interpolate.py rename to src/hapsira/_math/interpolate.py diff --git a/src/poliastro/_math/ivp.py b/src/hapsira/_math/ivp.py similarity index 100% rename from src/poliastro/_math/ivp.py rename to src/hapsira/_math/ivp.py diff --git a/src/poliastro/_math/linalg.py b/src/hapsira/_math/linalg.py similarity index 100% rename from src/poliastro/_math/linalg.py rename to src/hapsira/_math/linalg.py diff --git a/src/poliastro/_math/optimize.py b/src/hapsira/_math/optimize.py similarity index 100% rename from src/poliastro/_math/optimize.py rename to src/hapsira/_math/optimize.py diff --git a/src/poliastro/_math/special.py b/src/hapsira/_math/special.py similarity index 100% rename from src/poliastro/_math/special.py rename to src/hapsira/_math/special.py diff --git a/src/poliastro/bodies.py b/src/hapsira/bodies.py similarity index 94% rename from src/poliastro/bodies.py rename to src/hapsira/bodies.py index 47ffc3107..f5ce40c68 100644 --- a/src/poliastro/bodies.py +++ b/src/hapsira/bodies.py @@ -26,7 +26,7 @@ and a way to define new bodies (:py:class:`~Body` class). -Data references can be found in :py:mod:`~poliastro.constants` +Data references can be found in :py:mod:`~hapsira.constants` """ from collections import namedtuple import math @@ -35,8 +35,8 @@ from astropy.constants import G from astropy.units import Quantity -from poliastro import constants -from poliastro.frames import Planes +from hapsira import constants +from hapsira.frames import Planes # HACK: Constants cannot be hashed @@ -121,9 +121,7 @@ def from_parameters(cls, parent, k, name, symbol, R, **kwargs): return cls(parent, k, name, symbol, R, **kwargs) @classmethod - def from_relative( - cls, reference, parent, k, name, symbol=None, R=0, **kwargs - ): + def from_relative(cls, reference, parent, k, name, symbol=None, R=0, **kwargs): k = k * reference.k R = R * reference.R return cls(parent, k, name, symbol, R, **kwargs) @@ -145,15 +143,15 @@ def plot( Epoch of current position. label : str, optional Label for the orbit, defaults to empty. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Reference plane of the coordinates. - backend : ~poliastro.plotting.orbit.backends._base.OrbitPlotterBackend + backend : ~hapsira.plotting.orbit.backends._base.OrbitPlotterBackend An instance of ``OrbitPlotterBackend`` for rendendering the scene. """ # HACK: import here the OrbitPlotter to avoid a circular dependency # between bodies.py and misc.py - from poliastro.plotting.orbit.plotter import OrbitPlotter + from hapsira.plotting.orbit.plotter import OrbitPlotter return OrbitPlotter(backend=backend, plane=plane).plot_body_orbit( self, epoch=epoch, label=label diff --git a/src/poliastro/constants/__init__.py b/src/hapsira/constants/__init__.py similarity index 96% rename from src/poliastro/constants/__init__.py rename to src/hapsira/constants/__init__.py index 1bc595e45..bd8052bc7 100644 --- a/src/poliastro/constants/__init__.py +++ b/src/hapsira/constants/__init__.py @@ -1,4 +1,4 @@ -from poliastro.constants.general import ( +from hapsira.constants.general import ( J2000, J2000_TDB, J2000_TT, @@ -67,7 +67,7 @@ Wdivc_sun, rho0_earth, ) -from poliastro.constants.mean_elements import ( +from hapsira.constants.mean_elements import ( mean_a_charon, mean_a_deimos, mean_a_earth, @@ -87,7 +87,7 @@ mean_a_uranus, mean_a_venus, ) -from poliastro.constants.rotational_elements import ( +from hapsira.constants.rotational_elements import ( rotational_period_earth, rotational_period_jupiter, rotational_period_mars, diff --git a/src/poliastro/constants/general.py b/src/hapsira/constants/general.py similarity index 100% rename from src/poliastro/constants/general.py rename to src/hapsira/constants/general.py diff --git a/src/poliastro/constants/mean_elements.py b/src/hapsira/constants/mean_elements.py similarity index 100% rename from src/poliastro/constants/mean_elements.py rename to src/hapsira/constants/mean_elements.py diff --git a/src/poliastro/constants/rotational_elements.py b/src/hapsira/constants/rotational_elements.py similarity index 100% rename from src/poliastro/constants/rotational_elements.py rename to src/hapsira/constants/rotational_elements.py diff --git a/src/poliastro/core/__init__.py b/src/hapsira/core/__init__.py similarity index 100% rename from src/poliastro/core/__init__.py rename to src/hapsira/core/__init__.py diff --git a/src/poliastro/core/angles.py b/src/hapsira/core/angles.py similarity index 100% rename from src/poliastro/core/angles.py rename to src/hapsira/core/angles.py diff --git a/src/poliastro/core/czml_utils.py b/src/hapsira/core/czml_utils.py similarity index 98% rename from src/poliastro/core/czml_utils.py rename to src/hapsira/core/czml_utils.py index 8e15e894d..54313646b 100644 --- a/src/poliastro/core/czml_utils.py +++ b/src/hapsira/core/czml_utils.py @@ -1,7 +1,7 @@ from numba import njit as jit import numpy as np -from poliastro._math.linalg import norm +from hapsira._math.linalg import norm @jit diff --git a/src/poliastro/core/earth_atmosphere/__init__.py b/src/hapsira/core/earth_atmosphere/__init__.py similarity index 100% rename from src/poliastro/core/earth_atmosphere/__init__.py rename to src/hapsira/core/earth_atmosphere/__init__.py diff --git a/src/poliastro/core/earth_atmosphere/jacchia.py b/src/hapsira/core/earth_atmosphere/jacchia.py similarity index 89% rename from src/poliastro/core/earth_atmosphere/jacchia.py rename to src/hapsira/core/earth_atmosphere/jacchia.py index 007d8d3ab..e1c93cfec 100644 --- a/src/poliastro/core/earth_atmosphere/jacchia.py +++ b/src/hapsira/core/earth_atmosphere/jacchia.py @@ -45,12 +45,8 @@ @jit def _O_and_O2_correction(alt, Texo, Z, CN2, CO2, CO, CAr, CHe, CH, CM, WM): for iz in range(90, alt): - CO2[iz] = CO2[iz] * ( - 10.0 ** (-0.07 * (1.0 + np.tanh(0.18 * (Z[iz] - 111.0)))) - ) - CO[iz] = CO[iz] * ( - 10.0 ** (-0.24 * np.exp(-0.009 * (Z[iz] - 97.7) ** 2)) - ) + CO2[iz] = CO2[iz] * (10.0 ** (-0.07 * (1.0 + np.tanh(0.18 * (Z[iz] - 111.0))))) + CO[iz] = CO[iz] * (10.0 ** (-0.24 * np.exp(-0.009 * (Z[iz] - 97.7) ** 2))) CM[iz] = CN2[iz] + CO2[iz] + CO[iz] + CAr[iz] + CHe[iz] + CH[iz] WM[iz] = ( wmN2 * CN2[iz] @@ -112,13 +108,9 @@ def _H_correction(alt, Texo, x, y, Z, CN2, CO2, CO, CAr, CHe, CH, CM, WM, T): def _altitude_profile(alt, Texo, x, y, E5M, E6P): # Raise Value Error if alt < 90 km or alt > 2500 km. if alt < 90 or 2500 < alt: - raise ValueError( - "Jacchia77 has been implemented in range 90km - 2500km." - ) + raise ValueError("Jacchia77 has been implemented in range 90km - 2500km.") - alt = int( - alt + 1 - ) # in fortran the upper limits are included. in python are not. + alt = int(alt + 1) # in fortran the upper limits are included. in python are not. Texo = int(Texo) Z = [0.0 for _ in range(alt)] @@ -173,10 +165,7 @@ def _altitude_profile(alt, Texo, x, y, E5M, E6P): G1 = (1 + Z[iz] / R0) ** (-2) E6P[iz - 90] = E6P[iz - 91] * np.exp( -0.5897446 - * ( - G1 * E5M[iz - 90] / T[iz] - + G0 * E5M[iz - 91] / T[iz - 1] - ) + * (G1 * E5M[iz - 90] / T[iz] + G0 * E5M[iz - 91] / T[iz - 1]) ) x = E5M[iz - 90] / wm0 @@ -204,9 +193,7 @@ def _altitude_profile(alt, Texo, x, y, E5M, E6P): _O_and_O2_correction(alt, Texo, Z, CN2, CO2, CO, CAr, CHe, CH, CM, WM) if 500 <= alt: - _H_correction( - alt, Texo, x, y, Z, CN2, CO2, CO, CAr, CHe, CH, CM, WM, T - ) + _H_correction(alt, Texo, x, y, Z, CN2, CO2, CO, CAr, CHe, CH, CM, WM, T) return ( Z, diff --git a/src/poliastro/core/earth_atmosphere/util.py b/src/hapsira/core/earth_atmosphere/util.py similarity index 100% rename from src/poliastro/core/earth_atmosphere/util.py rename to src/hapsira/core/earth_atmosphere/util.py diff --git a/src/poliastro/core/elements.py b/src/hapsira/core/elements.py similarity index 96% rename from src/poliastro/core/elements.py rename to src/hapsira/core/elements.py index 19d7ece0c..a9be9bd08 100644 --- a/src/poliastro/core/elements.py +++ b/src/hapsira/core/elements.py @@ -8,9 +8,9 @@ import numpy as np from numpy import cos, cross, sin, sqrt -from poliastro._math.linalg import norm -from poliastro.core.angles import E_to_nu, F_to_nu -from poliastro.core.util import rotation_matrix +from hapsira._math.linalg import norm +from hapsira.core.angles import E_to_nu, F_to_nu +from hapsira.core.util import rotation_matrix @jit @@ -97,7 +97,7 @@ def rv_pqw(k, p, ecc, nu): Examples -------- - >>> from poliastro.constants import GM_earth + >>> from hapsira.constants import GM_earth >>> k = GM_earth.value # Earth gravitational parameter >>> ecc = 0.3 # Eccentricity >>> h = 60000e6 # Angular momentum of the orbit (m**2 / s) @@ -109,9 +109,9 @@ def rv_pqw(k, p, ecc, nu): v = [-5753.30180931 -1328.66813933 0] [m]/[s] """ - pqw = np.array( - [[cos(nu), sin(nu), 0], [-sin(nu), ecc + cos(nu), 0]] - ) * np.array([[p / (1 + ecc * cos(nu))], [sqrt(k / p)]]) + pqw = np.array([[cos(nu), sin(nu), 0], [-sin(nu), ecc + cos(nu), 0]]) * np.array( + [[p / (1 + ecc * cos(nu))], [sqrt(k / p)]] + ) return pqw @@ -196,9 +196,7 @@ def coe2rv_many(k, p, ecc, inc, raan, argp, nu): # Disabling pylint warning, see https://github.com/PyCQA/pylint/issues/2910 for i in prange(n): # pylint: disable=not-an-iterable - rr[i, :], vv[i, :] = coe2rv( - k[i], p[i], ecc[i], inc[i], raan[i], argp[i], nu[i] - ) + rr[i, :], vv[i, :] = coe2rv(k[i], p[i], ecc[i], inc[i], raan[i], argp[i], nu[i]) return rr, vv @@ -360,7 +358,7 @@ def rv2coe(k, r, v, tol=1e-8): Examples -------- - >>> from poliastro.bodies import Earth + >>> from hapsira.bodies import Earth >>> from astropy import units as u >>> k = Earth.k.to_value(u.km ** 3 / u.s ** 2) >>> r = np.array([-6045., -3490., 2500.]) @@ -555,10 +553,6 @@ def mee2rv(p, f, g, h, k, L): + alpha2 * f ) ) - vz = ( - (2 / s2) - * (np.sqrt(k / p)) - * (h * np.cos(L) + k * np.sin(L) + f * h + g * k) - ) + vz = (2 / s2) * (np.sqrt(k / p)) * (h * np.cos(L) + k * np.sin(L) + f * h + g * k) return np.array([rx, ry, rz]), np.array([vx, vy, vz]) diff --git a/src/poliastro/core/events.py b/src/hapsira/core/events.py similarity index 93% rename from src/poliastro/core/events.py rename to src/hapsira/core/events.py index 27404ad47..921ba0c80 100644 --- a/src/poliastro/core/events.py +++ b/src/hapsira/core/events.py @@ -1,9 +1,9 @@ from numba import njit as jit import numpy as np -from poliastro._math.linalg import norm -from poliastro.core.elements import coe_rotation_matrix, rv2coe -from poliastro.core.util import planetocentric_to_AltAz +from hapsira._math.linalg import norm +from hapsira.core.elements import coe_rotation_matrix, rv2coe +from hapsira.core.util import planetocentric_to_AltAz @jit @@ -51,10 +51,7 @@ def eclipse_function(k, u_, r_sec, R_sec, R_primary, umbra=True): ((R_primary**2) * (1 + ecc * np.cos(nu)) ** 2) + (p**2) * (cos_psi**2) - p**2 - + pm - * (2 * p * R_primary * cos_psi) - * (1 + ecc * np.cos(nu)) - * sin_delta_shadow + + pm * (2 * p * R_primary * cos_psi) * (1 + ecc * np.cos(nu)) * sin_delta_shadow ) return shadow_function diff --git a/src/poliastro/core/fixed.py b/src/hapsira/core/fixed.py similarity index 100% rename from src/poliastro/core/fixed.py rename to src/hapsira/core/fixed.py diff --git a/src/poliastro/core/flybys.py b/src/hapsira/core/flybys.py similarity index 98% rename from src/poliastro/core/flybys.py rename to src/hapsira/core/flybys.py index f4c82e053..be8e8d656 100644 --- a/src/poliastro/core/flybys.py +++ b/src/hapsira/core/flybys.py @@ -4,7 +4,7 @@ import numpy as np from numpy import cross -from poliastro._math.linalg import norm +from hapsira._math.linalg import norm @jit diff --git a/src/poliastro/core/iod.py b/src/hapsira/core/iod.py similarity index 93% rename from src/poliastro/core/iod.py rename to src/hapsira/core/iod.py index e9ae9f414..601705ff2 100644 --- a/src/poliastro/core/iod.py +++ b/src/hapsira/core/iod.py @@ -2,8 +2,8 @@ import numpy as np from numpy import cross, pi -from poliastro._math.linalg import norm -from poliastro._math.special import hyp2f1b, stumpff_c2 as c2, stumpff_c3 as c3 +from hapsira._math.linalg import norm +from hapsira._math.special import hyp2f1b, stumpff_c2 as c2, stumpff_c3 as c3 @jit @@ -29,7 +29,7 @@ def vallado(k, r0, r, tof, M, prograde, lowpath, numiter, rtol): \dot{g} = 1 - \frac{y}{r} \\ \end{align} - Where y(z) is a function that depends on the :py:mod:`poliastro.core.stumpff` coefficients: + Where y(z) is a function that depends on the :py:mod:`hapsira.core.stumpff` coefficients: .. math:: @@ -80,10 +80,10 @@ def vallado(k, r0, r, tof, M, prograde, lowpath, numiter, rtol): Examples -------- - >>> from poliastro.core.iod import vallado + >>> from hapsira.core.iod import vallado >>> from astropy import units as u >>> import numpy as np - >>> from poliastro.bodies import Earth + >>> from hapsira.bodies import Earth >>> k = Earth.k.to(u.km ** 3 / u.s ** 2) >>> r1 = np.array([5000, 10000, 2100]) * u.km # Initial position vector >>> r2 = np.array([-14600, 2500, 7000]) * u.km # Final position vector @@ -102,10 +102,10 @@ def vallado(k, r0, r, tof, M, prograde, lowpath, numiter, rtol): """ # TODO: expand for the multi-revolution case. - # Issue: https://github.com/poliastro/poliastro/issues/858 + # Issue: https://github.com/hapsira/hapsira/issues/858 if M > 0: raise NotImplementedError( - "Multi-revolution scenario not supported for Vallado. See issue https://github.com/poliastro/poliastro/issues/858" + "Multi-revolution scenario not supported for Vallado. See issue https://github.com/hapsira/hapsira/issues/858" ) t_m = 1 if prograde else -1 @@ -140,10 +140,7 @@ def vallado(k, r0, r, tof, M, prograde, lowpath, numiter, rtol): * (1.0 / c3(psi)) * (1.0 - norm_r0_times_norm_r * np.sqrt(c2(psi)) / A) ) - y = ( - norm_r0_plus_norm_r - + A * (psi * c3(psi) - 1) / c2(psi) ** 0.5 - ) + y = norm_r0_plus_norm_r + A * (psi * c3(psi) - 1) / c2(psi) ** 0.5 xi = np.sqrt(y / c2(psi)) tof_new = (xi**3 * c3(psi) + A * np.sqrt(y)) / np.sqrt(k) @@ -212,9 +209,7 @@ def izzo(k, r1, r2, tof, M, prograde, lowpath, numiter, rtol): # Check collinearity of r1 and r2 if not cross(r1, r2).any(): - raise ValueError( - "Lambert solution cannot be computed for collinear vectors" - ) + raise ValueError("Lambert solution cannot be computed for collinear vectors") # Chord c = r2 - r1 @@ -253,9 +248,7 @@ def izzo(k, r1, r2, tof, M, prograde, lowpath, numiter, rtol): sigma = np.sqrt(1 - rho**2) # Compute the radial and tangential components at r0 and r - V_r1, V_r2, V_t1, V_t2 = _reconstruct( - x, y, r1_norm, r2_norm, ll, gamma, rho, sigma - ) + V_r1, V_r2, V_t1, V_t2 = _reconstruct(x, y, r1_norm, r2_norm, ll, gamma, rho, sigma) # Solve for the initial and final velocity v1 = V_r1 * (r1 / r1_norm) + V_t1 * i_t1 @@ -364,16 +357,14 @@ def _tof_equation_p(x, y, T, ll): @jit def _tof_equation_p2(x, y, T, dT, ll): - return (3 * T + 5 * x * dT + 2 * (1 - ll**2) * ll**3 / y**3) / ( - 1 - x**2 - ) + return (3 * T + 5 * x * dT + 2 * (1 - ll**2) * ll**3 / y**3) / (1 - x**2) @jit def _tof_equation_p3(x, y, _, dT, ddT, ll): - return ( - 7 * x * ddT + 8 * dT - 6 * (1 - ll**2) * ll**5 * x / y**5 - ) / (1 - x**2) + return (7 * x * ddT + 8 * dT - 6 * (1 - ll**2) * ll**5 * x / y**5) / ( + 1 - x**2 + ) @jit @@ -412,7 +403,7 @@ def _initial_guess(T, ll, M, lowpath): # elif T_1 < T < T_0 # Corrected initial guess, # piecewise equation right after expression (30) in the original paper is incorrect - # See https://github.com/poliastro/poliastro/issues/1362 + # See https://github.com/hapsira/hapsira/issues/1362 x_0 = np.exp(np.log(2) * np.log(T / T_0) / np.log(T_1 / T_0)) - 1 return x_0 diff --git a/src/poliastro/core/maneuver.py b/src/hapsira/core/maneuver.py similarity index 96% rename from src/poliastro/core/maneuver.py rename to src/hapsira/core/maneuver.py index 7ce6b20e8..548e5aea6 100644 --- a/src/poliastro/core/maneuver.py +++ b/src/hapsira/core/maneuver.py @@ -4,8 +4,8 @@ import numpy as np from numpy import cross -from poliastro._math.linalg import norm -from poliastro.core.elements import coe_rotation_matrix, rv2coe, rv_pqw +from hapsira._math.linalg import norm +from hapsira.core.elements import coe_rotation_matrix, rv2coe, rv_pqw @jit @@ -122,9 +122,7 @@ def bielliptic(k, r_b, r_f, rv): a_trans2 = (r_b + r_f) / 2 dv_a = np.sqrt(2 * k / r_i - k / a_trans1) - v_i - dv_b = np.sqrt(2 * k / r_b - k / a_trans2) - np.sqrt( - 2 * k / r_b - k / a_trans1 - ) + dv_b = np.sqrt(2 * k / r_b - k / a_trans2) - np.sqrt(2 * k / r_b - k / a_trans1) dv_c = np.sqrt(k / r_f) - np.sqrt(2 * k / r_f - k / a_trans2) dv_a = np.array([0, dv_a, 0]) diff --git a/src/poliastro/core/perturbations.py b/src/hapsira/core/perturbations.py similarity index 95% rename from src/poliastro/core/perturbations.py rename to src/hapsira/core/perturbations.py index e37ca354e..eb76a3582 100644 --- a/src/poliastro/core/perturbations.py +++ b/src/hapsira/core/perturbations.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro._math.linalg import norm -from poliastro.core.events import line_of_sight as line_of_sight_fast +from hapsira._math.linalg import norm +from hapsira.core.events import line_of_sight as line_of_sight_fast @jit @@ -66,7 +66,7 @@ def J3_perturbation(t0, state, k, J3, R): ----- The J3 accounts for the oblateness of the attractor. The formula is given in Howard Curtis, problem 12.8 - This perturbation has not been fully validated, see https://github.com/poliastro/poliastro/pull/398 + This perturbation has not been fully validated, see https://github.com/hapsira/hapsira/pull/398 """ r_vec = state[:3] @@ -156,7 +156,7 @@ def atmospheric_drag(t0, state, k, C_D, A_over_m, rho): Notes ----- This function provides the acceleration due to atmospheric drag, as - computed by a model from poliastro.earth.atmosphere + computed by a model from hapsira.earth.atmosphere """ v_vec = state[3:] @@ -195,10 +195,7 @@ def third_body(t0, state, k, k_third, perturbation_body): """ body_r = perturbation_body(t0) delta_r = body_r - state[:3] - return ( - k_third * delta_r / norm(delta_r) ** 3 - - k_third * body_r / norm(body_r) ** 3 - ) + return k_third * delta_r / norm(delta_r) ** 3 - k_third * body_r / norm(body_r) ** 3 def radiation_pressure(t0, state, k, R, C_R, A_over_m, Wdivc_s, star): diff --git a/src/hapsira/core/propagation/__init__.py b/src/hapsira/core/propagation/__init__.py new file mode 100644 index 000000000..5460386d5 --- /dev/null +++ b/src/hapsira/core/propagation/__init__.py @@ -0,0 +1,35 @@ +"""Low level propagation algorithms.""" + +from hapsira.core.propagation.base import func_twobody +from hapsira.core.propagation.cowell import cowell +from hapsira.core.propagation.danby import danby, danby_coe +from hapsira.core.propagation.farnocchia import ( + farnocchia_coe, + farnocchia_rv as farnocchia, +) +from hapsira.core.propagation.gooding import gooding, gooding_coe +from hapsira.core.propagation.markley import markley, markley_coe +from hapsira.core.propagation.mikkola import mikkola, mikkola_coe +from hapsira.core.propagation.pimienta import pimienta, pimienta_coe +from hapsira.core.propagation.recseries import recseries, recseries_coe +from hapsira.core.propagation.vallado import vallado + +__all__ = [ + "cowell", + "func_twobody", + "farnocchia_coe", + "farnocchia", + "vallado", + "mikkola_coe", + "mikkola", + "markley_coe", + "markley", + "pimienta_coe", + "pimienta", + "gooding_coe", + "gooding", + "danby_coe", + "danby", + "recseries_coe", + "recseries", +] diff --git a/src/poliastro/core/propagation/base.py b/src/hapsira/core/propagation/base.py similarity index 100% rename from src/poliastro/core/propagation/base.py rename to src/hapsira/core/propagation/base.py diff --git a/src/poliastro/core/propagation/cowell.py b/src/hapsira/core/propagation/cowell.py similarity index 92% rename from src/poliastro/core/propagation/cowell.py rename to src/hapsira/core/propagation/cowell.py index 196bb19e6..876545b11 100644 --- a/src/poliastro/core/propagation/cowell.py +++ b/src/hapsira/core/propagation/cowell.py @@ -1,7 +1,7 @@ import numpy as np -from poliastro._math.ivp import DOP853, solve_ivp -from poliastro.core.propagation.base import func_twobody +from hapsira._math.ivp import DOP853, solve_ivp +from hapsira.core.propagation.base import func_twobody def cowell(k, r, v, tofs, rtol=1e-11, *, events=None, f=func_twobody): diff --git a/src/poliastro/core/propagation/danby.py b/src/hapsira/core/propagation/danby.py similarity index 92% rename from src/poliastro/core/propagation/danby.py rename to src/hapsira/core/propagation/danby.py index 6762a5fc5..f6a71c2cc 100644 --- a/src/poliastro/core/propagation/danby.py +++ b/src/hapsira/core/propagation/danby.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import E_to_M, F_to_M, nu_to_E, nu_to_F -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.angles import E_to_M, F_to_M, nu_to_E, nu_to_F +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -62,9 +62,7 @@ def danby_coe(k, p, ecc, inc, raan, argp, nu, tof, numiter=20, rtol=1e-8): else: delta = -f / fp delta_star = -f / (fp + 0.5 * delta * fpp) - deltak = -f / ( - fp + 0.5 * delta_star * fpp + delta_star**2 * fppp / 6 - ) + deltak = -f / (fp + 0.5 * delta_star * fpp + delta_star**2 * fppp / 6) E = E + deltak n += 1 else: diff --git a/src/poliastro/core/propagation/farnocchia.py b/src/hapsira/core/propagation/farnocchia.py similarity index 96% rename from src/poliastro/core/propagation/farnocchia.py rename to src/hapsira/core/propagation/farnocchia.py index ba5295bab..d20e7124b 100644 --- a/src/poliastro/core/propagation/farnocchia.py +++ b/src/hapsira/core/propagation/farnocchia.py @@ -1,7 +1,7 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import ( +from hapsira.core.angles import ( D_to_M, D_to_nu, E_to_M, @@ -15,7 +15,7 @@ nu_to_E, nu_to_F, ) -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -28,10 +28,7 @@ def _kepler_equation_prime_near_parabolic(D, M, ecc): x = (ecc - 1.0) / (ecc + 1.0) * (D**2) assert abs(x) < 1 S = dS_x_alt(ecc, x) - return ( - np.sqrt(2.0 / (1.0 + ecc)) - + np.sqrt(2.0 / (1.0 + ecc) ** 3) * (D**2) * S - ) + return np.sqrt(2.0 / (1.0 + ecc)) + np.sqrt(2.0 / (1.0 + ecc) ** 3) * (D**2) * S @jit @@ -88,8 +85,7 @@ def D_to_M_near_parabolic(D, ecc): assert abs(x) < 1 S = S_x(ecc, x) return ( - np.sqrt(2.0 / (1.0 + ecc)) * D - + np.sqrt(2.0 / (1.0 + ecc) ** 3) * (D**3) * S + np.sqrt(2.0 / (1.0 + ecc)) * D + np.sqrt(2.0 / (1.0 + ecc) ** 3) * (D**3) * S ) diff --git a/src/poliastro/core/propagation/gooding.py b/src/hapsira/core/propagation/gooding.py similarity index 94% rename from src/poliastro/core/propagation/gooding.py rename to src/hapsira/core/propagation/gooding.py index 9d0185e9c..59f53bc0b 100644 --- a/src/poliastro/core/propagation/gooding.py +++ b/src/hapsira/core/propagation/gooding.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import E_to_M, E_to_nu, nu_to_E -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.angles import E_to_M, E_to_nu, nu_to_E +from hapsira.core.elements import coe2rv, rv2coe @jit diff --git a/src/poliastro/core/propagation/markley.py b/src/hapsira/core/propagation/markley.py similarity index 90% rename from src/poliastro/core/propagation/markley.py rename to src/hapsira/core/propagation/markley.py index 8c5d30e2d..2cedb5352 100644 --- a/src/poliastro/core/propagation/markley.py +++ b/src/hapsira/core/propagation/markley.py @@ -1,14 +1,14 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import ( +from hapsira.core.angles import ( E_to_M, E_to_nu, _kepler_equation, _kepler_equation_prime, nu_to_E, ) -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -22,9 +22,7 @@ def markley_coe(k, p, ecc, inc, raan, argp, nu, tof): M = (M + np.pi) % (2 * np.pi) - np.pi # Equation (20) - alpha = (3 * np.pi**2 + 1.6 * (np.pi - np.abs(M)) / (1 + ecc)) / ( - np.pi**2 - 6 - ) + alpha = (3 * np.pi**2 + 1.6 * (np.pi - np.abs(M)) / (1 + ecc)) / (np.pi**2 - 6) # Equation (5) d = 3 * (1 - ecc) + alpha * ecc @@ -52,10 +50,7 @@ def markley_coe(k, p, ecc, inc, raan, argp, nu, tof): delta3 = -f0 / (f1 - 0.5 * f0 * f2 / f1) delta4 = -f0 / (f1 + 0.5 * delta3 * f2 + 1 / 6 * delta3**2 * f3) delta5 = -f0 / ( - f1 - + 0.5 * delta4 * f2 - + 1 / 6 * delta4**2 * f3 - + 1 / 24 * delta4**3 * f4 + f1 + 0.5 * delta4 * f2 + 1 / 6 * delta4**2 * f3 + 1 / 24 * delta4**3 * f4 ) E += delta5 diff --git a/src/poliastro/core/propagation/mikkola.py b/src/hapsira/core/propagation/mikkola.py similarity index 93% rename from src/poliastro/core/propagation/mikkola.py rename to src/hapsira/core/propagation/mikkola.py index c42ee73bb..f40d18412 100644 --- a/src/poliastro/core/propagation/mikkola.py +++ b/src/hapsira/core/propagation/mikkola.py @@ -1,7 +1,7 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import ( +from hapsira.core.angles import ( D_to_nu, E_to_M, E_to_nu, @@ -10,7 +10,7 @@ nu_to_E, nu_to_F, ) -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -69,10 +69,7 @@ def mikkola_coe(k, p, ecc, inc, raan, argp, nu, tof): u2 = -f / (f1 + 0.5 * f2 * u1) u3 = -f / (f1 + 0.5 * f2 * u2 + (1.0 / 6.0) * f3 * u2**2) u4 = -f / ( - f1 - + 0.5 * f2 * u3 - + (1.0 / 6.0) * f3 * u3**2 - + (1.0 / 24.0) * f4 * (u3**3) + f1 + 0.5 * f2 * u3 + (1.0 / 6.0) * f3 * u3**2 + (1.0 / 24.0) * f4 * (u3**3) ) u5 = -f / ( f1 diff --git a/src/poliastro/core/propagation/pimienta.py b/src/hapsira/core/propagation/pimienta.py similarity index 96% rename from src/poliastro/core/propagation/pimienta.py rename to src/hapsira/core/propagation/pimienta.py index a61e91a80..3914466ad 100644 --- a/src/poliastro/core/propagation/pimienta.py +++ b/src/hapsira/core/propagation/pimienta.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import E_to_M, E_to_nu, nu_to_E -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.angles import E_to_M, E_to_nu, nu_to_E +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -135,11 +135,7 @@ def pimienta_coe(k, p, ecc, inc, raan, argp, nu, tof): + 1.0378368e9 * c13 * x_bar3 + 39916800 * c11 * x_bar ) - f11 = ( - 5.4486432e10 * c15 * x_bar4 - + 3.1135104e9 * c13 * x_bar2 - + 39916800 * c11 - ) + f11 = 5.4486432e10 * c15 * x_bar4 + 3.1135104e9 * c13 * x_bar2 + 39916800 * c11 f12 = 2.17945728e11 * c15 * x_bar3 + 6.2270208e9 * c13 * x_bar f13 = 6.53837184 * c15 * x_bar2 + 6.2270208e9 * c13 f14 = 1.307674368e12 * c15 * x_bar @@ -173,13 +169,7 @@ def pimienta_coe(k, p, ecc, inc, raan, argp, nu, tof): h4 = f1 + g1 * u3 * f2 + g2 * u3**2 * f3 + g3 * u3**3 * f4 u4 = -f / h4 - h5 = ( - f1 - + g1 * u4 * f2 - + g2 * u4**2 * f3 - + g3 * u4**3 * f4 - + g4 * u4**4 * f5 - ) + h5 = f1 + g1 * u4 * f2 + g2 * u4**2 * f3 + g3 * u4**3 * f4 + g4 * u4**4 * f5 u5 = -f / h5 h6 = ( diff --git a/src/poliastro/core/propagation/recseries.py b/src/hapsira/core/propagation/recseries.py similarity index 93% rename from src/poliastro/core/propagation/recseries.py rename to src/hapsira/core/propagation/recseries.py index 1602828af..ae99feba2 100644 --- a/src/poliastro/core/propagation/recseries.py +++ b/src/hapsira/core/propagation/recseries.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro.core.angles import E_to_M, E_to_nu, nu_to_E -from poliastro.core.elements import coe2rv, rv2coe +from hapsira.core.angles import E_to_M, E_to_nu, nu_to_E +from hapsira.core.elements import coe2rv, rv2coe @jit @@ -53,9 +53,7 @@ def recseries_coe( elif method == "order": Niter = order else: - raise ValueError( - "Unknown recursion termination method ('rtol','order')." - ) + raise ValueError("Unknown recursion termination method ('rtol','order').") # compute eccentric anomaly through recursive series E = M + ecc # Using initial guess from vallado to improve convergence diff --git a/src/poliastro/core/propagation/vallado.py b/src/hapsira/core/propagation/vallado.py similarity index 94% rename from src/poliastro/core/propagation/vallado.py rename to src/hapsira/core/propagation/vallado.py index 6ac61be93..d52fc3a97 100644 --- a/src/poliastro/core/propagation/vallado.py +++ b/src/hapsira/core/propagation/vallado.py @@ -1,8 +1,8 @@ from numba import njit as jit import numpy as np -from poliastro._math.linalg import norm -from poliastro._math.special import stumpff_c2 as c2, stumpff_c3 as c3 +from hapsira._math.linalg import norm +from hapsira._math.special import stumpff_c2 as c2, stumpff_c3 as c3 @jit @@ -90,9 +90,7 @@ def vallado(k, r0, v0, tof, numiter): (-2 * k * alpha * tof) / ( dot_r0v0 - + np.sign(tof) - * np.sqrt(-k / alpha) - * (1 - norm_r0 * alpha) + + np.sign(tof) * np.sqrt(-k / alpha) * (1 - norm_r0 * alpha) ) ) ) diff --git a/src/poliastro/core/sensors.py b/src/hapsira/core/sensors.py similarity index 100% rename from src/poliastro/core/sensors.py rename to src/hapsira/core/sensors.py diff --git a/src/poliastro/core/spheroid_location.py b/src/hapsira/core/spheroid_location.py similarity index 94% rename from src/poliastro/core/spheroid_location.py rename to src/hapsira/core/spheroid_location.py index 895291624..dd6b54651 100644 --- a/src/poliastro/core/spheroid_location.py +++ b/src/hapsira/core/spheroid_location.py @@ -3,7 +3,7 @@ from numba import njit as jit import numpy as np -from poliastro._math.linalg import norm +from hapsira._math.linalg import norm @jit @@ -179,12 +179,8 @@ def cartesian_to_ellipsoidal(a, c, x, y, z): e2_ = e2 / (1 - e2) p = np.sqrt(x**2 + y**2) th = np.arctan(z * a / (p * c)) - lon = np.arctan2( - y, x - ) # Use `arctan2` so that lon lies in the range: [-pi, +pi] - lat = np.arctan( - (z + e2_ * c * np.sin(th) ** 3) / (p - e2 * a * np.cos(th) ** 3) - ) + lon = np.arctan2(y, x) # Use `arctan2` so that lon lies in the range: [-pi, +pi] + lat = np.arctan((z + e2_ * c * np.sin(th) ** 3) / (p - e2 * a * np.cos(th) ** 3)) v = a / np.sqrt(1 - e2 * np.sin(lat) ** 2) h = ( diff --git a/src/poliastro/core/threebody/__init__.py b/src/hapsira/core/threebody/__init__.py similarity index 100% rename from src/poliastro/core/threebody/__init__.py rename to src/hapsira/core/threebody/__init__.py diff --git a/src/poliastro/core/threebody/cr3bp_quantities_calculations.py b/src/hapsira/core/threebody/cr3bp_quantities_calculations.py similarity index 100% rename from src/poliastro/core/threebody/cr3bp_quantities_calculations.py rename to src/hapsira/core/threebody/cr3bp_quantities_calculations.py diff --git a/src/hapsira/core/thrust/__init__.py b/src/hapsira/core/thrust/__init__.py new file mode 100644 index 000000000..873a4c3f7 --- /dev/null +++ b/src/hapsira/core/thrust/__init__.py @@ -0,0 +1,5 @@ +from hapsira.core.thrust.change_a_inc import change_a_inc +from hapsira.core.thrust.change_argp import change_argp +from hapsira.core.thrust.change_ecc_inc import change_ecc_inc + +__all__ = ["change_a_inc", "change_argp", "change_ecc_inc"] diff --git a/src/poliastro/core/thrust/change_a_inc.py b/src/hapsira/core/thrust/change_a_inc.py similarity index 96% rename from src/poliastro/core/thrust/change_a_inc.py rename to src/hapsira/core/thrust/change_a_inc.py index b3e951a4b..2dbb3abed 100644 --- a/src/poliastro/core/thrust/change_a_inc.py +++ b/src/hapsira/core/thrust/change_a_inc.py @@ -2,8 +2,8 @@ import numpy as np from numpy import cross -from poliastro._math.linalg import norm -from poliastro.core.elements import circular_velocity +from hapsira._math.linalg import norm +from hapsira.core.elements import circular_velocity @jit diff --git a/src/poliastro/core/thrust/change_argp.py b/src/hapsira/core/thrust/change_argp.py similarity index 94% rename from src/poliastro/core/thrust/change_argp.py rename to src/hapsira/core/thrust/change_argp.py index 4bfa22e4b..ffaf7d888 100644 --- a/src/poliastro/core/thrust/change_argp.py +++ b/src/hapsira/core/thrust/change_argp.py @@ -2,8 +2,8 @@ import numpy as np from numpy import cross -from poliastro._math.linalg import norm -from poliastro.core.elements import circular_velocity, rv2coe +from hapsira._math.linalg import norm +from hapsira.core.elements import circular_velocity, rv2coe @jit diff --git a/src/poliastro/core/thrust/change_ecc_inc.py b/src/hapsira/core/thrust/change_ecc_inc.py similarity index 84% rename from src/poliastro/core/thrust/change_ecc_inc.py rename to src/hapsira/core/thrust/change_ecc_inc.py index b014c4c5f..dfa97c86b 100644 --- a/src/poliastro/core/thrust/change_ecc_inc.py +++ b/src/hapsira/core/thrust/change_ecc_inc.py @@ -9,8 +9,8 @@ import numpy as np from numpy import cross -from poliastro._math.linalg import norm -from poliastro.core.elements import ( +from hapsira._math.linalg import norm +from hapsira.core.elements import ( circular_velocity, eccentricity_vector, rv2coe, @@ -34,11 +34,7 @@ def beta(ecc_0, ecc_f, inc_0, inc_f, argp): * ( ecc_0 - ecc_f - + np.log( - (1 + ecc_f) - * (-1 + ecc_0) - / ((1 + ecc_0) * (-1 + ecc_f)) - ) + + np.log((1 + ecc_f) * (-1 + ecc_0) / ((1 + ecc_0) * (-1 + ecc_f))) ) ) ) @@ -48,12 +44,7 @@ def beta(ecc_0, ecc_f, inc_0, inc_f, argp): @jit def delta_V(V_0, ecc_0, ecc_f, beta_): """Compute required increment of velocity.""" - return ( - 2 - * V_0 - * np.abs(np.arcsin(ecc_0) - np.arcsin(ecc_f)) - / (3 * np.cos(beta_)) - ) + return 2 * V_0 * np.abs(np.arcsin(ecc_0) - np.arcsin(ecc_f)) / (3 * np.cos(beta_)) @jit diff --git a/src/poliastro/core/thrust/change_ecc_quasioptimal.py b/src/hapsira/core/thrust/change_ecc_quasioptimal.py similarity index 88% rename from src/poliastro/core/thrust/change_ecc_quasioptimal.py rename to src/hapsira/core/thrust/change_ecc_quasioptimal.py index f94ceb30d..c78d2487c 100644 --- a/src/poliastro/core/thrust/change_ecc_quasioptimal.py +++ b/src/hapsira/core/thrust/change_ecc_quasioptimal.py @@ -1,7 +1,7 @@ from numba import njit as jit import numpy as np -from poliastro.core.elements import circular_velocity +from hapsira.core.elements import circular_velocity @jit diff --git a/src/poliastro/core/util.py b/src/hapsira/core/util.py similarity index 100% rename from src/poliastro/core/util.py rename to src/hapsira/core/util.py diff --git a/src/poliastro/czml/__init__.py b/src/hapsira/czml/__init__.py similarity index 100% rename from src/poliastro/czml/__init__.py rename to src/hapsira/czml/__init__.py diff --git a/src/poliastro/czml/extract_czml.py b/src/hapsira/czml/extract_czml.py similarity index 89% rename from src/poliastro/czml/extract_czml.py rename to src/hapsira/czml/extract_czml.py index 7fc23004f..9b696397f 100644 --- a/src/poliastro/czml/extract_czml.py +++ b/src/hapsira/czml/extract_czml.py @@ -19,8 +19,8 @@ from erfa import gd2gce import numpy as np -from poliastro.bodies import Earth -from poliastro.core.czml_utils import ( +from hapsira.bodies import Earth +from hapsira.core.czml_utils import ( project_point_on_ellipsoid as project_point_on_ellipsoid_fast, ) @@ -66,7 +66,7 @@ def __init__( N : int Default number of sample points. Unless otherwise specified, the number of sampled data points will be N when calling add_orbit() - attractor : poliastro.bodies.Body + attractor : hapsira.bodies.Body Attractor of the orbits pr_map : str A URL to the projection of the defined ellipsoid (UV map). @@ -137,9 +137,7 @@ def _init_orbit_packet_cords_(self, i, rtol): # FIXME: Unused rtol with default propagation method, # should we just get rid of it? cords = ( - self.orbits[i][0] - .propagate(TimeDelta(k * h)) - .r.to_value(u.m)[..., None] + self.orbits[i][0].propagate(TimeDelta(k * h)).r.to_value(u.m)[..., None] ) cords = np.insert(cords, 0, h.value * k, axis=0) @@ -177,9 +175,7 @@ def _init_groundtrack_packet_cords_(self, i, rtol): # FIXME: Unused rtol with default propagation method, # should we just get rid of it? cords = ( - self.orbits[i][0] - .propagate(TimeDelta(k * h)) - .r.to_value(u.m)[..., None] + self.orbits[i][0].propagate(TimeDelta(k * h)).r.to_value(u.m)[..., None] ) cords = np.insert(cords, 0, h.value * k, axis=0) @@ -208,9 +204,7 @@ def _init_czml_(self): start=self.start_epoch, end=self.end_epoch, value=Clock( - currentTime=self.start_epoch.datetime.replace( - tzinfo=timezone.utc - ), + currentTime=self.start_epoch.datetime.replace(tzinfo=timezone.utc), multiplier=60, ), ), @@ -306,16 +300,12 @@ def add_ground_station( pckt = Packet( id="GS" + str(self.gs_n), description=id_description, - availability=TimeInterval( - start=self.start_epoch, end=self.end_epoch - ), + availability=TimeInterval(start=self.start_epoch, end=self.end_epoch), position=Position(cartesian=pos), label=Label( show=label_show, text=label_text, - font=label_font - if label_font is not None - else "11pt Lucida Console", + font=label_font if label_font is not None else "11pt Lucida Console", fillColor=Color(rgba=label_fill_color) if label_fill_color is not None else None, @@ -354,7 +344,7 @@ def add_orbit( Parameters ---------- - orbit : poliastro.twobody.orbit.Orbit + orbit : hapsira.twobody.orbit.Orbit Orbit to be added rtol : float Maximum relative error permitted @@ -410,17 +400,13 @@ def add_orbit( self.orbits.append([orbit, N, orbit.epoch]) cartesian_cords = self._init_orbit_packet_cords_(self.i, rtol=rtol) - start_epoch = Time( - min(self.orbits[self.i][2], self.start_epoch), format="isot" - ) + start_epoch = Time(min(self.orbits[self.i][2], self.start_epoch), format="isot") pckt = Packet( id=self.i, name=id_name, description=id_description, - availability=TimeInterval( - start=self.start_epoch, end=self.end_epoch - ), + availability=TimeInterval(start=self.start_epoch, end=self.end_epoch), position=Position( interpolationDegree=5, interpolationAlgorithm=InterpolationAlgorithms.LAGRANGE, @@ -433,23 +419,17 @@ def add_orbit( show=path_show, width=path_width, material=Material( - solidColor=SolidColorMaterial( - color=Color.from_list(path_color) - ) + solidColor=SolidColorMaterial(color=Color.from_list(path_color)) ) if path_color is not None else Material( - solidColor=SolidColorMaterial( - color=Color.from_list([255, 255, 0]) - ) + solidColor=SolidColorMaterial(color=Color.from_list([255, 255, 0])) ), resolution=120, ), label=Label( text=label_text, - font=label_font - if label_font is not None - else "11pt Lucida Console", + font=label_font if label_font is not None else "11pt Lucida Console", show=label_show, fillColor=Color(rgba=label_fill_color) if label_fill_color is not None @@ -466,14 +446,10 @@ def add_orbit( if groundtrack_show: groundtrack_color = path_color - groundtrack_cords = self._init_groundtrack_packet_cords_( - self.i, rtol=rtol - ) + groundtrack_cords = self._init_groundtrack_packet_cords_(self.i, rtol=rtol) pckt = Packet( id="groundtrack" + str(self.i), - availability=TimeInterval( - start=self.start_epoch, end=self.end_epoch - ), + availability=TimeInterval(start=self.start_epoch, end=self.end_epoch), position=Position( interpolationDegree=5, interpolationAlgorithm=InterpolationAlgorithms.LAGRANGE, @@ -497,12 +473,8 @@ def add_orbit( ), resolution=60, width=groundtrack_width, - leadTime=groundtrack_lead_time - if groundtrack_lead_time - else 100, - trailTime=groundtrack_trail_time - if groundtrack_trail_time - else 100, + leadTime=groundtrack_lead_time if groundtrack_lead_time else 100, + trailTime=groundtrack_trail_time if groundtrack_trail_time else 100, ), ) self.packets.append(pckt) @@ -571,9 +543,7 @@ def add_trajectory( """ positions = ( - positions.represent_as(CartesianRepresentation) - .get_xyz(1) - .to_value(u.m) + positions.represent_as(CartesianRepresentation).get_xyz(1).to_value(u.m) ) epochs = Time(epochs, format="isot") @@ -598,9 +568,7 @@ def add_trajectory( id=self.i, name=id_name, description=id_description, - availability=TimeInterval( - start=self.start_epoch, end=self.end_epoch - ), + availability=TimeInterval(start=self.start_epoch, end=self.end_epoch), position=Position( interpolationDegree=5, interpolationAlgorithm=InterpolationAlgorithms.LAGRANGE, @@ -613,23 +581,17 @@ def add_trajectory( show=path_show, width=path_width, material=Material( - solidColor=SolidColorMaterial( - color=Color.from_list(path_color) - ) + solidColor=SolidColorMaterial(color=Color.from_list(path_color)) ) if path_color is not None else Material( - solidColor=SolidColorMaterial( - color=Color.from_list([255, 255, 0]) - ) + solidColor=SolidColorMaterial(color=Color.from_list([255, 255, 0])) ), resolution=120, ), label=Label( text=label_text, - font=label_font - if label_font is not None - else "11pt Lucida Console", + font=label_font if label_font is not None else "11pt Lucida Console", show=label_show, fillColor=Color(rgba=label_fill_color) if label_fill_color is not None diff --git a/src/poliastro/earth/__init__.py b/src/hapsira/earth/__init__.py similarity index 86% rename from src/poliastro/earth/__init__.py rename to src/hapsira/earth/__init__.py index ef8bc912d..55865dcff 100644 --- a/src/poliastro/earth/__init__.py +++ b/src/hapsira/earth/__init__.py @@ -5,11 +5,11 @@ from astropy import units as u import numpy as np -from poliastro.bodies import Earth -from poliastro.core.perturbations import J2_perturbation -from poliastro.core.propagation import func_twobody -from poliastro.earth.enums import EarthGravity -from poliastro.twobody.propagation import CowellPropagator +from hapsira.bodies import Earth +from hapsira.core.perturbations import J2_perturbation +from hapsira.core.propagation import func_twobody +from hapsira.earth.enums import EarthGravity +from hapsira.twobody.propagation import CowellPropagator class EarthSatellite: @@ -61,7 +61,7 @@ def propagate(self, tof, atmosphere=None, gravity=None, *args): tof : ~astropy.units.Quantity, ~astropy.time.Time, ~astropy.time.TimeDelta Scalar time to propagate. atmosphere: - a callable model from poliastro.earth.atmosphere + a callable model from hapsira.earth.atmosphere gravity : EarthGravity There are two possible values, SPHERICAL and J2. Only J2 is implemented at the moment. Default value is None. *args: @@ -79,10 +79,7 @@ def propagate(self, tof, atmosphere=None, gravity=None, *args): def ad(t0, state, k, perturbations): if perturbations: return np.sum( - [ - f(t0=t0, state=state, k=k, **p) - for f, p in perturbations.items() - ], + [f(t0=t0, state=state, k=k, **p) for f, p in perturbations.items()], axis=0, ) else: diff --git a/src/hapsira/earth/atmosphere/__init__.py b/src/hapsira/earth/atmosphere/__init__.py new file mode 100644 index 000000000..f659f7951 --- /dev/null +++ b/src/hapsira/earth/atmosphere/__init__.py @@ -0,0 +1,4 @@ +from hapsira.earth.atmosphere.coesa62 import COESA62 +from hapsira.earth.atmosphere.coesa76 import COESA76 + +__all__ = ["COESA62", "COESA76"] diff --git a/src/poliastro/earth/atmosphere/base.py b/src/hapsira/earth/atmosphere/base.py similarity index 97% rename from src/poliastro/earth/atmosphere/base.py rename to src/hapsira/earth/atmosphere/base.py index 4cef9ae26..dc5eeb2f7 100644 --- a/src/poliastro/earth/atmosphere/base.py +++ b/src/hapsira/earth/atmosphere/base.py @@ -2,7 +2,7 @@ import astropy.units as u -from poliastro.core.earth_atmosphere.util import ( +from hapsira.core.earth_atmosphere.util import ( _check_altitude as _check_altitude_fast, _get_index as _get_index_fast, ) diff --git a/src/poliastro/earth/atmosphere/coesa62.py b/src/hapsira/earth/atmosphere/coesa62.py similarity index 98% rename from src/poliastro/earth/atmosphere/coesa62.py rename to src/hapsira/earth/atmosphere/coesa62.py index b7bcf7c34..ee6f5dcc4 100644 --- a/src/poliastro/earth/atmosphere/coesa62.py +++ b/src/hapsira/earth/atmosphere/coesa62.py @@ -58,8 +58,8 @@ from astropy.utils.data import get_pkg_data_filename import numpy as np -from poliastro._math.integrate import quad -from poliastro.earth.atmosphere.base import COESA +from hapsira._math.integrate import quad +from hapsira.earth.atmosphere.base import COESA # Constants come from the original paper to achieve pure implementation r0 = 6356.766 * u.km @@ -179,8 +179,7 @@ def pressure(self, alt, geometric=True): # Putting g = (g0*(r0/(r0 +z))**2) in (g * dz / z - zb + Tb/Lb) # and integrating it. integrand = quad( - lambda x: (g0_v * (r0_v / (r0_v + x)) ** 2) - / (x - zb_v + Tb_v / Lb_v), + lambda x: (g0_v * (r0_v / (r0_v + x)) ** 2) / (x - zb_v + Tb_v / Lb_v), zb_v, z_v, ) diff --git a/src/poliastro/earth/atmosphere/coesa76.py b/src/hapsira/earth/atmosphere/coesa76.py similarity index 98% rename from src/poliastro/earth/atmosphere/coesa76.py rename to src/hapsira/earth/atmosphere/coesa76.py index 6b3f7b79c..465d5d435 100644 --- a/src/poliastro/earth/atmosphere/coesa76.py +++ b/src/hapsira/earth/atmosphere/coesa76.py @@ -48,7 +48,7 @@ from astropy.utils.data import get_pkg_data_filename import numpy as np -from poliastro.earth.atmosphere.base import COESA +from hapsira.earth.atmosphere.base import COESA # Following constants come from original U.S Atmosphere 1962 paper so a pure # model of this atmosphere can be implemented @@ -175,9 +175,7 @@ def temperature(self, alt, geometric=True): else: T10 = 360.0 * u.K _gamma = self.Lb_levels[9] / (Tinf - T10) - epsilon = ( - (z - self.zb_levels[10]) * (r0 + self.zb_levels[10]) / (r0 + z) - ) + epsilon = (z - self.zb_levels[10]) * (r0 + self.zb_levels[10]) / (r0 + z) T = Tinf - (Tinf - T10) * np.exp(-_gamma * epsilon) return T.to(u.K) diff --git a/src/poliastro/earth/atmosphere/data/coesa62.dat b/src/hapsira/earth/atmosphere/data/coesa62.dat similarity index 100% rename from src/poliastro/earth/atmosphere/data/coesa62.dat rename to src/hapsira/earth/atmosphere/data/coesa62.dat diff --git a/src/poliastro/earth/atmosphere/data/coesa76.dat b/src/hapsira/earth/atmosphere/data/coesa76.dat similarity index 100% rename from src/poliastro/earth/atmosphere/data/coesa76.dat rename to src/hapsira/earth/atmosphere/data/coesa76.dat diff --git a/src/poliastro/earth/atmosphere/data/coesa76_p.dat b/src/hapsira/earth/atmosphere/data/coesa76_p.dat similarity index 100% rename from src/poliastro/earth/atmosphere/data/coesa76_p.dat rename to src/hapsira/earth/atmosphere/data/coesa76_p.dat diff --git a/src/poliastro/earth/atmosphere/data/coesa76_rho.dat b/src/hapsira/earth/atmosphere/data/coesa76_rho.dat similarity index 100% rename from src/poliastro/earth/atmosphere/data/coesa76_rho.dat rename to src/hapsira/earth/atmosphere/data/coesa76_rho.dat diff --git a/src/poliastro/earth/atmosphere/jacchia.py b/src/hapsira/earth/atmosphere/jacchia.py similarity index 98% rename from src/poliastro/earth/atmosphere/jacchia.py rename to src/hapsira/earth/atmosphere/jacchia.py index 5496cf19b..c2695248b 100644 --- a/src/poliastro/earth/atmosphere/jacchia.py +++ b/src/hapsira/earth/atmosphere/jacchia.py @@ -1,7 +1,7 @@ from astropy import units as u import numpy as np -from poliastro.core.earth_atmosphere.jacchia import ( +from hapsira.core.earth_atmosphere.jacchia import ( _altitude_profile as _altitude_profile_fast, _H_correction as _H_correction_fast, _O_and_O2_correction as _O_and_O2_correction_fast, diff --git a/src/poliastro/earth/enums.py b/src/hapsira/earth/enums.py similarity index 100% rename from src/poliastro/earth/enums.py rename to src/hapsira/earth/enums.py diff --git a/src/poliastro/earth/plotting/__init__.py b/src/hapsira/earth/plotting/__init__.py similarity index 56% rename from src/poliastro/earth/plotting/__init__.py rename to src/hapsira/earth/plotting/__init__.py index 2e4b187e3..54c16833e 100644 --- a/src/poliastro/earth/plotting/__init__.py +++ b/src/hapsira/earth/plotting/__init__.py @@ -1,5 +1,5 @@ """Plotting routines focused on Earth capabilities.""" -from poliastro.earth.plotting.groundtrack import GroundtrackPlotter +from hapsira.earth.plotting.groundtrack import GroundtrackPlotter __all__ = ["GroundtrackPlotter"] diff --git a/src/poliastro/earth/plotting/groundtrack.py b/src/hapsira/earth/plotting/groundtrack.py similarity index 95% rename from src/poliastro/earth/plotting/groundtrack.py rename to src/hapsira/earth/plotting/groundtrack.py index a089f7096..b078f9508 100644 --- a/src/poliastro/earth/plotting/groundtrack.py +++ b/src/hapsira/earth/plotting/groundtrack.py @@ -10,9 +10,9 @@ ) import plotly.graph_objects as go -from poliastro.bodies import Earth -from poliastro.earth.plotting.utils import EARTH_PALETTE -from poliastro.twobody.sampling import EpochsArray +from hapsira.bodies import Earth +from hapsira.earth.plotting.utils import EARTH_PALETTE +from hapsira.twobody.sampling import EpochsArray class GroundtrackPlotter: @@ -82,7 +82,7 @@ def _get_raw_coords(self, orb, t_deltas): Parameters ---------- - orb : ~poliastro.twobody.Orbit + orb : ~hapsira.twobody.Orbit Orbit to be propagated t_deltas : ~astropy.time.DeltaTime Desired observation time @@ -137,7 +137,7 @@ def _trace_groundtrack(self, orb, t_deltas, label, line_style): Parameters ---------- - orb : ~poliastro.twobody.Orbit + orb : ~hapsira.twobody.Orbit EarthSatellite's associated Orbit t_deltas : ~astropy.time.DeltaTime Collection of epochs @@ -173,7 +173,7 @@ def _trace_position(self, ss, label, marker): Parameters ---------- - ss : ~poliastro.twobody.Orbit + ss : ~hapsira.twobody.Orbit EarthSatellite's orbit label : string Label for the orbit @@ -211,7 +211,7 @@ def plot(self, earth_orb, t_span, label, color, line_style={}, marker={}): Parameters ---------- - earth_orb : ~poliastro.earth.EarthSatellite + earth_orb : ~hapsira.earth.EarthSatellite Desired Earth's satellite to who's grountrack will be plotted t_span : ~astropy.time.TimeDelta A collection of epochs diff --git a/src/poliastro/earth/plotting/utils.py b/src/hapsira/earth/plotting/utils.py similarity index 100% rename from src/poliastro/earth/plotting/utils.py rename to src/hapsira/earth/plotting/utils.py diff --git a/src/poliastro/earth/util.py b/src/hapsira/earth/util.py similarity index 97% rename from src/poliastro/earth/util.py rename to src/hapsira/earth/util.py index b30a4d782..a89d5f983 100644 --- a/src/poliastro/earth/util.py +++ b/src/hapsira/earth/util.py @@ -3,8 +3,8 @@ from astropy.time import Time import numpy as np -from poliastro import constants -from poliastro.util import wrap_angle +from hapsira import constants +from hapsira.util import wrap_angle @u.quantity_input(ltan=u.hourangle) diff --git a/src/poliastro/ephem.py b/src/hapsira/ephem.py similarity index 86% rename from src/poliastro/ephem.py rename to src/hapsira/ephem.py index bdc6d170c..5f46772ef 100644 --- a/src/poliastro/ephem.py +++ b/src/hapsira/ephem.py @@ -10,14 +10,16 @@ ) from astroquery.jplhorizons import Horizons -from poliastro._math.interpolate import interp1d, sinc_interp, spline_interp -from poliastro.bodies import Earth -from poliastro.frames import Planes -from poliastro.frames.util import get_frame -from poliastro.twobody.sampling import EpochsArray -from poliastro.warnings import TimeScaleWarning - -EPHEM_FORMAT = "Ephemerides at {num} epochs from {start} ({start_scale}) to {end} ({end_scale})" +from hapsira._math.interpolate import interp1d, sinc_interp, spline_interp +from hapsira.bodies import Earth +from hapsira.frames import Planes +from hapsira.frames.util import get_frame +from hapsira.twobody.sampling import EpochsArray +from hapsira.warnings import TimeScaleWarning + +EPHEM_FORMAT = ( + "Ephemerides at {num} epochs from {start} ({start_scale}) to {end} ({end_scale})" +) def build_ephem_interpolant(body, epochs, attractor=Earth): @@ -28,8 +30,8 @@ def build_ephem_interpolant(body, epochs, attractor=Earth): body : Body Source body. epochs : ~astropy.time.Time - Array of time values, can be generated with poliastro.util.time_range. - attractor : ~poliastro.bodies.Body, optional + Array of time values, can be generated with hapsira.util.time_range. + attractor : ~hapsira.bodies.Body, optional Attractor, default to Earth. Returns @@ -65,15 +67,9 @@ def _interp_1d(arr): y = _interp_1d(coordinates.y.value) << xyz_unit z = _interp_1d(coordinates.z.value) << xyz_unit - d_x = ( - _interp_1d(coordinates.differentials["s"].d_x.value) << d_xyz_unit - ) - d_y = ( - _interp_1d(coordinates.differentials["s"].d_y.value) << d_xyz_unit - ) - d_z = ( - _interp_1d(coordinates.differentials["s"].d_z.value) << d_xyz_unit - ) + d_x = _interp_1d(coordinates.differentials["s"].d_x.value) << d_xyz_unit + d_y = _interp_1d(coordinates.differentials["s"].d_y.value) << d_xyz_unit + d_z = _interp_1d(coordinates.differentials["s"].d_z.value) << d_xyz_unit return CartesianRepresentation( x, y, z, differentials=CartesianDifferential(d_x, d_y, d_z) @@ -134,7 +130,7 @@ class Ephem: Coordinates with velocities. epochs : astropy.time.Time Epochs corresponding to the coordinates. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Reference plane of the coordinates. """ @@ -172,21 +168,19 @@ def plane(self): return self._plane @classmethod - def from_body( - cls, body, epochs, *, attractor=None, plane=Planes.EARTH_EQUATOR - ): + def from_body(cls, body, epochs, *, attractor=None, plane=Planes.EARTH_EQUATOR): """Return `Ephem` for a `SolarSystemPlanet` at certain epochs. Parameters ---------- - body : ~poliastro.bodies.SolarSystemPlanet + body : ~hapsira.bodies.SolarSystemPlanet Body. epochs : ~astropy.time.Time Epochs to sample the body positions. - attractor : ~poliastro.bodies.SolarSystemPlanet, optional + attractor : ~hapsira.bodies.SolarSystemPlanet, optional Body to use as central location, if not given the Solar System Barycenter will be used. - plane : ~poliastro.frames.Planes, optional + plane : ~hapsira.frames.Planes, optional Fundamental plane of the frame, default to Earth Equator. """ @@ -203,9 +197,7 @@ def from_body( ) r, v = get_body_barycentric_posvel(body.name, epochs) - coordinates = r.with_differentials( - v.represent_as(CartesianDifferential) - ) + coordinates = r.with_differentials(v.represent_as(CartesianDifferential)) destination_frame = _get_destination_frame(attractor, plane, epochs) @@ -236,10 +228,10 @@ def from_horizons( Name of the body to query for. epochs : ~astropy.time.Time Epochs to sample the body positions. - attractor : ~poliastro.bodies.SolarSystemPlanet, optional + attractor : ~hapsira.bodies.SolarSystemPlanet, optional Body to use as central location, if not given the Solar System Barycenter will be used. - plane : ~poliastro.frames.Planes, optional + plane : ~hapsira.frames.Planes, optional Fundamental plane of the frame, default to Earth Equator. id_type : NoneType or str, optional Use "smallbody" for Asteroids and Comets and None (default) to first @@ -298,11 +290,11 @@ def from_orbit( Parameters ---------- - orbit : ~poliastro.twobody.orbit.Orbit + orbit : ~hapsira.twobody.orbit.Orbit Orbit. epochs : ~astropy.time.Time Epochs to sample the orbit positions. - plane : ~poliastro.frames.Planes, optional + plane : ~hapsira.frames.Planes, optional Fundamental plane of the frame, default to Earth Equator. """ @@ -319,7 +311,7 @@ def sample(self, epochs=None, *, interpolator=SplineInterpolator()): epochs : ~astropy.time.Time, optional Epochs to sample the ephemerides, if not given the original one from the object will be used. - interpolator : ~poliastro.ephem.BaseInterpolator, optional + interpolator : ~hapsira.ephem.BaseInterpolator, optional Interpolation method to use for epochs outside of the original ones, default to splines. diff --git a/src/poliastro/examples.py b/src/hapsira/examples.py similarity index 94% rename from src/poliastro/examples.py rename to src/hapsira/examples.py index 2948d965b..f4d18cf48 100644 --- a/src/poliastro/examples.py +++ b/src/hapsira/examples.py @@ -1,8 +1,8 @@ """Example data.""" from astropy import time, units as u -from poliastro.bodies import Earth, Sun -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Sun +from hapsira.twobody import Orbit iss = Orbit.from_vectors( Earth, diff --git a/src/hapsira/frames/__init__.py b/src/hapsira/frames/__init__.py new file mode 100644 index 000000000..733ee07ab --- /dev/null +++ b/src/hapsira/frames/__init__.py @@ -0,0 +1,5 @@ +from hapsira.frames.enums import Planes + +__all__ = [ + "Planes", +] diff --git a/src/poliastro/frames/ecliptic.py b/src/hapsira/frames/ecliptic.py similarity index 90% rename from src/poliastro/frames/ecliptic.py rename to src/hapsira/frames/ecliptic.py index 0f5f95825..65c229162 100644 --- a/src/poliastro/frames/ecliptic.py +++ b/src/hapsira/frames/ecliptic.py @@ -19,7 +19,7 @@ import erfa import numpy as np -from poliastro.frames.equatorial import GCRS +from hapsira.frames.equatorial import GCRS __all__ = [ "GeocentricSolarEcliptic", @@ -44,9 +44,7 @@ class GeocentricSolarEcliptic(BaseEclipticFrame): obstime = TimeAttribute(default=DEFAULT_OBSTIME) -@frame_transform_graph.transform( - DynamicMatrixTransform, GCRS, GeocentricSolarEcliptic -) +@frame_transform_graph.transform(DynamicMatrixTransform, GCRS, GeocentricSolarEcliptic) def gcrs_to_geosolarecliptic(gcrs_coo, to_frame): if not to_frame.obstime.isscalar: raise ValueError( @@ -76,9 +74,7 @@ def gcrs_to_geosolarecliptic(gcrs_coo, to_frame): return matrix_product(rot_matrix, _earth_detilt_matrix) -@frame_transform_graph.transform( - DynamicMatrixTransform, GeocentricSolarEcliptic, GCRS -) +@frame_transform_graph.transform(DynamicMatrixTransform, GeocentricSolarEcliptic, GCRS) def geosolarecliptic_to_gcrs(from_coo, gcrs_frame): return matrix_transpose(gcrs_to_geosolarecliptic(gcrs_frame, from_coo)) @@ -104,7 +100,5 @@ def _make_rotation_matrix_from_reprs(start_representation, end_representation): ) # Negation is required # This line works around some input/output quirks of Astropy's rotation_matrix() - matrix = np.array( - rotation_matrix(rotation_angle, rotation_axis.xyz.value.tolist()) - ) + matrix = np.array(rotation_matrix(rotation_angle, rotation_axis.xyz.value.tolist())) return matrix diff --git a/src/poliastro/frames/enums.py b/src/hapsira/frames/enums.py similarity index 100% rename from src/poliastro/frames/enums.py rename to src/hapsira/frames/enums.py diff --git a/src/poliastro/frames/equatorial.py b/src/hapsira/frames/equatorial.py similarity index 91% rename from src/poliastro/frames/equatorial.py rename to src/hapsira/frames/equatorial.py index 7934829c7..92a6c8c15 100644 --- a/src/poliastro/frames/equatorial.py +++ b/src/hapsira/frames/equatorial.py @@ -16,7 +16,7 @@ from astropy.coordinates.builtin_frames.utils import DEFAULT_OBSTIME import numpy as np -from poliastro.bodies import ( +from hapsira.bodies import ( Jupiter, Mars, Mercury, @@ -50,12 +50,8 @@ class _PlanetaryICRS(BaseRADecFrame): obstime = TimeAttribute(default=DEFAULT_OBSTIME) def __new__(cls, *args, **kwargs): - frame_transform_graph.transform(AffineTransform, cls, ICRS)( - cls.to_icrs - ) - frame_transform_graph.transform(AffineTransform, ICRS, cls)( - cls.from_icrs - ) + frame_transform_graph.transform(AffineTransform, cls, ICRS)(cls.to_icrs) + frame_transform_graph.transform(AffineTransform, ICRS, cls)(cls.from_icrs) frame_transform_graph.transform( FunctionTransformWithFiniteDifference, cls, cls )(cls.self_transform) @@ -66,9 +62,7 @@ def __new__(cls, *args, **kwargs): def to_icrs(planet_coo, _): # This is just an origin translation so without a distance it cannot go ahead if isinstance(planet_coo.data, UnitSphericalRepresentation): - raise u.UnitsError( - _NEED_ORIGIN_HINT.format(planet_coo.__class__.__name__) - ) + raise u.UnitsError(_NEED_ORIGIN_HINT.format(planet_coo.__class__.__name__)) if planet_coo.data.differentials: bary_sun_pos, bary_sun_vel = get_body_barycentric_posvel( @@ -90,9 +84,7 @@ def to_icrs(planet_coo, _): def from_icrs(icrs_coo, planet_frame): # This is just an origin translation so without a distance it cannot go ahead if isinstance(icrs_coo.data, UnitSphericalRepresentation): - raise u.UnitsError( - _NEED_ORIGIN_HINT.format(icrs_coo.__class__.__name__) - ) + raise u.UnitsError(_NEED_ORIGIN_HINT.format(icrs_coo.__class__.__name__)) if icrs_coo.data.differentials: bary_sun_pos, bary_sun_vel = get_body_barycentric_posvel( diff --git a/src/poliastro/frames/fixed.py b/src/hapsira/frames/fixed.py similarity index 92% rename from src/poliastro/frames/fixed.py rename to src/hapsira/frames/fixed.py index 91ea90b36..5c2501579 100644 --- a/src/poliastro/frames/fixed.py +++ b/src/hapsira/frames/fixed.py @@ -10,7 +10,7 @@ from astropy.coordinates.builtin_frames.utils import DEFAULT_OBSTIME from astropy.coordinates.matrix_utilities import rotation_matrix -from poliastro.bodies import ( +from hapsira.bodies import ( Jupiter, Mars, Mercury, @@ -21,8 +21,8 @@ Uranus, Venus, ) -from poliastro.constants import J2000 -from poliastro.core.fixed import ( +from hapsira.constants import J2000 +from hapsira.core.fixed import ( jupiter_rot_elements_at_epoch as jupiter_rot_elements_at_epoch_fast, mars_rot_elements_at_epoch as mars_rot_elements_at_epoch_fast, mercury_rot_elements_at_epoch as mercury_rot_elements_at_epoch_fast, @@ -33,7 +33,7 @@ uranus_rot_elements_at_epoch as uranus_rot_elements_at_epoch_fast, venus_rot_elements_at_epoch as venus_rot_elements_at_epoch_fast, ) -from poliastro.frames.equatorial import ( +from hapsira.frames.equatorial import ( JupiterICRS, MarsICRS, MercuryICRS, @@ -64,12 +64,12 @@ class _PlanetaryFixed(BaseRADecFrame): obstime = TimeAttribute(default=DEFAULT_OBSTIME) def __new__(cls, *args, **kwargs): - frame_transform_graph.transform( - FunctionTransform, cls, cls.equatorial - )(cls.to_equatorial) - frame_transform_graph.transform( - FunctionTransform, cls.equatorial, cls - )(cls.from_equatorial) + frame_transform_graph.transform(FunctionTransform, cls, cls.equatorial)( + cls.to_equatorial + ) + frame_transform_graph.transform(FunctionTransform, cls.equatorial, cls)( + cls.from_equatorial + ) return super().__new__(cls) @@ -103,9 +103,7 @@ def from_equatorial(equatorial_coo, fixed_frame): raise ValueError( f"Equatorial coordinates must be of type `HCRS`, got `{type(equatorial_coo)}` instead." ) - elif ( - fixed_frame.body != Sun and equatorial_coo.body != fixed_frame.body - ): + elif fixed_frame.body != Sun and equatorial_coo.body != fixed_frame.body: raise ValueError( "Fixed and equatorial coordinates must have the same body if the fixed frame body is not Sun" ) diff --git a/src/poliastro/frames/util.py b/src/hapsira/frames/util.py similarity index 88% rename from src/poliastro/frames/util.py rename to src/hapsira/frames/util.py index 2f25f6795..e110dd013 100644 --- a/src/poliastro/frames/util.py +++ b/src/hapsira/frames/util.py @@ -1,4 +1,4 @@ -from poliastro.bodies import ( +from hapsira.bodies import ( Earth, Jupiter, Mars, @@ -9,13 +9,13 @@ Uranus, Venus, ) -from poliastro.constants import J2000 -from poliastro.frames.ecliptic import ( +from hapsira.constants import J2000 +from hapsira.frames.ecliptic import ( GeocentricMeanEcliptic, HeliocentricEclipticJ2000, ) -from poliastro.frames.enums import Planes -from poliastro.frames.equatorial import ( +from hapsira.frames.enums import Planes +from hapsira.frames.equatorial import ( GCRS, HCRS, JupiterICRS, @@ -26,7 +26,7 @@ UranusICRS, VenusICRS, ) -from poliastro.frames.fixed import ( +from hapsira.frames.fixed import ( ITRS, JupiterFixed, MarsFixed, @@ -75,9 +75,9 @@ def get_frame(attractor, plane, obstime=J2000): Parameters ---------- - attractor : ~poliastro.bodies.Body + attractor : ~hapsira.bodies.Body Body that serves as the center of the frame. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. obstime : ~astropy.time.Time Time of the frame. diff --git a/src/poliastro/io.py b/src/hapsira/io.py similarity index 81% rename from src/poliastro/io.py rename to src/hapsira/io.py index 462d4629c..bc2f38a31 100644 --- a/src/poliastro/io.py +++ b/src/hapsira/io.py @@ -3,9 +3,9 @@ from astroquery.jplsbdb import SBDB import numpy as np -from poliastro.bodies import Sun -from poliastro.frames import Planes -from poliastro.twobody.angles import ( +from hapsira.bodies import Sun +from hapsira.frames import Planes +from hapsira.twobody.angles import ( D_to_nu, E_to_nu, F_to_nu, @@ -13,7 +13,7 @@ M_to_E, M_to_F, ) -from poliastro.twobody.orbit import Orbit +from hapsira.twobody.orbit import Orbit def orbit_from_sbdb(name, **kwargs): @@ -23,16 +23,12 @@ def orbit_from_sbdb(name, **kwargs): # No error till now ---> more than one object has been found # Contains all the name of the objects objects_name = obj["list"]["name"] - objects_name_in_str = ( - "" # Used to store them in string form each in new line - ) + objects_name_in_str = "" # Used to store them in string form each in new line for i in objects_name: objects_name_in_str += i + "\n" raise ValueError( - str(obj["count"]) - + " different objects found: \n" - + objects_name_in_str + str(obj["count"]) + " different objects found: \n" + objects_name_in_str ) if "object" not in obj.keys(): diff --git a/src/poliastro/iod/__init__.py b/src/hapsira/iod/__init__.py similarity index 56% rename from src/poliastro/iod/__init__.py rename to src/hapsira/iod/__init__.py index 303de4305..8c695591e 100644 --- a/src/poliastro/iod/__init__.py +++ b/src/hapsira/iod/__init__.py @@ -1,4 +1,4 @@ # Select default algorithm -from poliastro.iod.izzo import lambert +from hapsira.iod.izzo import lambert __all__ = ["lambert"] diff --git a/src/poliastro/iod/izzo.py b/src/hapsira/iod/izzo.py similarity index 90% rename from src/poliastro/iod/izzo.py rename to src/hapsira/iod/izzo.py index d3a7ad1dd..42af60b85 100644 --- a/src/poliastro/iod/izzo.py +++ b/src/hapsira/iod/izzo.py @@ -1,14 +1,12 @@ """Izzo's algorithm for Lambert's problem.""" from astropy import units as u -from poliastro.core.iod import izzo as izzo_fast +from hapsira.core.iod import izzo as izzo_fast kms = u.km / u.s -def lambert( - k, r0, r, tof, M=0, prograde=True, lowpath=True, numiter=35, rtol=1e-8 -): +def lambert(k, r0, r, tof, M=0, prograde=True, lowpath=True, numiter=35, rtol=1e-8): """Solves the Lambert problem using the Izzo algorithm. .. versionadded:: 0.5.0 diff --git a/src/poliastro/iod/vallado.py b/src/hapsira/iod/vallado.py similarity index 85% rename from src/poliastro/iod/vallado.py rename to src/hapsira/iod/vallado.py index dc9468dcd..a267d744e 100644 --- a/src/poliastro/iod/vallado.py +++ b/src/hapsira/iod/vallado.py @@ -1,14 +1,12 @@ """Initial orbit determination.""" from astropy import units as u -from poliastro.core.iod import vallado as vallado_fast +from hapsira.core.iod import vallado as vallado_fast kms = u.km / u.s -def lambert( - k, r0, r, tof, M=0, prograde=True, lowpath=True, numiter=35, rtol=1e-8 -): +def lambert(k, r0, r, tof, M=0, prograde=True, lowpath=True, numiter=35, rtol=1e-8): """Solves the Lambert problem. .. versionadded:: 0.3.0 @@ -57,8 +55,6 @@ def lambert( r_ = r.to_value(u.km) tof_ = tof.to_value(u.s) - v0, v = vallado_fast( - k_, r0_, r_, tof_, M, prograde, lowpath, numiter, rtol - ) + v0, v = vallado_fast(k_, r0_, r_, tof_, M, prograde, lowpath, numiter, rtol) return v0 << kms, v << kms diff --git a/src/poliastro/maneuver.py b/src/hapsira/maneuver.py similarity index 93% rename from src/poliastro/maneuver.py rename to src/hapsira/maneuver.py index 5729fd34d..224162b84 100644 --- a/src/poliastro/maneuver.py +++ b/src/hapsira/maneuver.py @@ -1,13 +1,13 @@ """Orbital maneuvers.""" from astropy import units as u -from poliastro.core.maneuver import ( +from hapsira.core.maneuver import ( bielliptic as bielliptic_fast, correct_pericenter as correct_pericenter_fast, hohmann as hohmann_fast, ) -from poliastro.iod.izzo import lambert as lambert_izzo -from poliastro.util import norm +from hapsira.iod.izzo import lambert as lambert_izzo +from hapsira.util import norm class Maneuver: @@ -36,9 +36,7 @@ def __init__(self, *impulses): """ # Validate units of the impulses provided - self.impulses = [ - self.impulse_has_valid_units(*impulse) for impulse in impulses - ] + self.impulses = [self.impulse_has_valid_units(*impulse) for impulse in impulses] self._dts, self._dvs = zip(*self.impulses) # Validate that all delta-V are three-dimensional vectors. Note that the @@ -79,7 +77,7 @@ def hohmann(cls, orbit_i, r_f): Parameters ---------- - orbit_i : poliastro.twobody.orbit.Orbit + orbit_i : hapsira.twobody.orbit.Orbit Initial orbit r_f : astropy.unit.Quantity Final orbital radius @@ -114,7 +112,7 @@ def bielliptic(cls, orbit_i, r_b, r_f): Parameters ---------- - orbit_i : poliastro.twobody.orbit.Orbit + orbit_i : hapsira.twobody.orbit.Orbit Initial orbit r_b : astropy.unit.Quantity Altitude of the intermediate orbit @@ -164,9 +162,9 @@ def lambert(cls, orbit_i, orbit_f, method=lambert_izzo, **kwargs): Parameters ---------- - orbit_i : ~poliastro.twobody.Orbit + orbit_i : ~hapsira.twobody.Orbit Initial orbit - orbit_f : ~poliastro.twobody.Orbit + orbit_f : ~hapsira.twobody.Orbit Final orbit method : function Method for solving Lambert's problem @@ -248,9 +246,7 @@ def correct_pericenter(cls, orbit, max_delta_r): ecc = orbit.ecc.value max_delta_r = max_delta_r.value - delta_t, vf_ = correct_pericenter_fast( - k, R, J2, max_delta_r, v, a, inc, ecc - ) + delta_t, vf_ = correct_pericenter_fast(k, R, J2, max_delta_r, v, a, inc, ecc) delta_t = delta_t * u.s vf_ = vf_ * u.km / u.s diff --git a/src/hapsira/plotting/__init__.py b/src/hapsira/plotting/__init__.py new file mode 100644 index 000000000..6ba5d7a09 --- /dev/null +++ b/src/hapsira/plotting/__init__.py @@ -0,0 +1,11 @@ +from hapsira.plotting.gabbard import GabbardPlotter +from hapsira.plotting.orbit.plotter import OrbitPlotter +from hapsira.plotting.porkchop import PorkchopPlotter +from hapsira.plotting.tisserand import TisserandPlotter + +__all__ = [ + "OrbitPlotter", + "GabbardPlotter", + "PorkchopPlotter", + "TisserandPlotter", +] diff --git a/src/poliastro/plotting/gabbard.py b/src/hapsira/plotting/gabbard.py similarity index 91% rename from src/poliastro/plotting/gabbard.py rename to src/hapsira/plotting/gabbard.py index 6df0d481a..4a353863c 100644 --- a/src/poliastro/plotting/gabbard.py +++ b/src/hapsira/plotting/gabbard.py @@ -1,15 +1,13 @@ from astropy import units as u from matplotlib import pyplot as plt -from poliastro.plotting.util import generate_label +from hapsira.plotting.util import generate_label class GabbardPlotter: """GabbardPlotter class.""" - def __init__( - self, ax=None, dark=False, altitude_unit=u.km, period_unit=u.min - ): + def __init__(self, ax=None, dark=False, altitude_unit=u.km, period_unit=u.min): self._ax = ax if not self._ax: if dark: @@ -39,7 +37,7 @@ def _static_gabbard_plot(self, orbits): Parameters ---------- - orbits : ~poliastro.twobody.orbit.Orbit List + orbits : ~hapsira.twobody.orbit.Orbit List The Orbits whose perigee and apogee will be plotted. """ diff --git a/src/poliastro/plotting/misc.py b/src/hapsira/plotting/misc.py similarity index 89% rename from src/poliastro/plotting/misc.py rename to src/hapsira/plotting/misc.py index 4806108c2..5575619ce 100644 --- a/src/poliastro/plotting/misc.py +++ b/src/hapsira/plotting/misc.py @@ -4,7 +4,7 @@ import astropy.units as u import erfa -from poliastro.bodies import ( +from hapsira.bodies import ( Earth, Jupiter, Mars, @@ -14,8 +14,8 @@ Uranus, Venus, ) -from poliastro.frames import Planes -from poliastro.plotting import OrbitPlotter +from hapsira.frames import Planes +from hapsira.plotting import OrbitPlotter def plot_solar_system( @@ -37,14 +37,14 @@ def plot_solar_system( A list of strings containing the labels of the bodies. outer : bool, optional Whether to print the outer Solar System, default to True. - backend : ~poliastro.plotting.orbit.backends._base.OrbitPlotterBackend + backend : ~hapsira.plotting.orbit.backends._base.OrbitPlotterBackend An instance of ``OrbitPlotterBackend`` for rendendering the scene. length_scale_units : ~astropy.units.Unit Desired units of lenght used for representing distances. Returns ------- - ~poliastro.plotting.orbit.plotter.OrbitPlotter + ~hapsira.plotting.orbit.plotter.OrbitPlotter An object for plotting orbits. """ diff --git a/src/poliastro/plotting/orbit/__init__.py b/src/hapsira/plotting/orbit/__init__.py similarity index 60% rename from src/poliastro/plotting/orbit/__init__.py rename to src/hapsira/plotting/orbit/__init__.py index 3bac98913..7dce971e7 100644 --- a/src/poliastro/plotting/orbit/__init__.py +++ b/src/hapsira/plotting/orbit/__init__.py @@ -1,5 +1,5 @@ """A sub-package holding all orbit plotting utilities.""" -from poliastro.plotting.orbit.plotter import OrbitPlotter +from hapsira.plotting.orbit.plotter import OrbitPlotter __all__ = ["OrbitPlotter"] diff --git a/src/poliastro/plotting/orbit/backends/__init__.py b/src/hapsira/plotting/orbit/backends/__init__.py similarity index 89% rename from src/poliastro/plotting/orbit/backends/__init__.py rename to src/hapsira/plotting/orbit/backends/__init__.py index d269541bd..83924615e 100644 --- a/src/poliastro/plotting/orbit/backends/__init__.py +++ b/src/hapsira/plotting/orbit/backends/__init__.py @@ -1,8 +1,8 @@ """A sub-package collecting all support orbit plotter backends.""" -from poliastro.plotting.orbit.backends.matplotlib import Matplotlib2D -from poliastro.plotting.orbit.backends.plotly import Plotly2D, Plotly3D +from hapsira.plotting.orbit.backends.matplotlib import Matplotlib2D +from hapsira.plotting.orbit.backends.plotly import Plotly2D, Plotly3D DEFAULT_ORBIT_PLOTTER_BACKENDS_2D = { "matplotlib2D": Matplotlib2D, diff --git a/src/poliastro/plotting/orbit/backends/_base.py b/src/hapsira/plotting/orbit/backends/_base.py similarity index 100% rename from src/poliastro/plotting/orbit/backends/_base.py rename to src/hapsira/plotting/orbit/backends/_base.py diff --git a/src/poliastro/plotting/orbit/backends/matplotlib.py b/src/hapsira/plotting/orbit/backends/matplotlib.py similarity index 98% rename from src/poliastro/plotting/orbit/backends/matplotlib.py rename to src/hapsira/plotting/orbit/backends/matplotlib.py index 67e090f57..1f489bab9 100644 --- a/src/poliastro/plotting/orbit/backends/matplotlib.py +++ b/src/hapsira/plotting/orbit/backends/matplotlib.py @@ -5,7 +5,7 @@ from matplotlib.colors import LinearSegmentedColormap, to_rgba import numpy as np -from poliastro.plotting.orbit.backends._base import OrbitPlotterBackend +from hapsira.plotting.orbit.backends._base import OrbitPlotterBackend def _segments_from_arrays(x, y): @@ -242,9 +242,7 @@ def draw_coordinates(self, coordinates, *, colors, dashed, label): cmap = LinearSegmentedColormap.from_list( f"{colors[0]}_to_alpha", colors # Useless name ) - lc = LineCollection( - segments, linestyles=linestyle, cmap=cmap, label=label - ) + lc = LineCollection(segments, linestyles=linestyle, cmap=cmap, label=label) lc.set_array(np.linspace(1, 0, len(x))) self.ax.add_collection(lc) diff --git a/src/poliastro/plotting/orbit/backends/plotly.py b/src/hapsira/plotting/orbit/backends/plotly.py similarity index 98% rename from src/poliastro/plotting/orbit/backends/plotly.py rename to src/hapsira/plotting/orbit/backends/plotly.py index 33e403c9c..45a8d84b0 100644 --- a/src/poliastro/plotting/orbit/backends/plotly.py +++ b/src/hapsira/plotting/orbit/backends/plotly.py @@ -6,8 +6,8 @@ import plotly import plotly.graph_objects as go -from poliastro.plotting.orbit.backends._base import OrbitPlotterBackend -from poliastro.plotting.util import generate_sphere +from hapsira.plotting.orbit.backends._base import OrbitPlotterBackend +from hapsira.plotting.util import generate_sphere class BasePlotly(OrbitPlotterBackend): @@ -110,9 +110,7 @@ def draw_position(self, position, *, color, label, size): An object representing the trace of the coordinates in the scene. """ - return self.draw_sphere( - position, color=color, label=label, radius=size - ) + return self.draw_sphere(position, color=color, label=label, radius=size) def draw_impulse(self, position, *, color, label, size): """Draw an impulse into the scene. diff --git a/src/poliastro/plotting/orbit/plotter.py b/src/hapsira/plotting/orbit/plotter.py similarity index 89% rename from src/poliastro/plotting/orbit/plotter.py rename to src/hapsira/plotting/orbit/plotter.py index 64439f720..8af74a7cd 100644 --- a/src/poliastro/plotting/orbit/plotter.py +++ b/src/hapsira/plotting/orbit/plotter.py @@ -7,19 +7,17 @@ import astropy.units as u import numpy as np -from poliastro.ephem import Ephem -from poliastro.frames import Planes -import poliastro.plotting.orbit.backends as orbit_plotter_backends -from poliastro.plotting.util import BODY_COLORS, generate_label -from poliastro.twobody.mean_elements import get_mean_elements -from poliastro.twobody.sampling import EpochBounds -from poliastro.util import norm, time_range +from hapsira.ephem import Ephem +from hapsira.frames import Planes +import hapsira.plotting.orbit.backends as orbit_plotter_backends +from hapsira.plotting.util import BODY_COLORS, generate_label +from hapsira.twobody.mean_elements import get_mean_elements +from hapsira.twobody.sampling import EpochBounds +from hapsira.util import norm, time_range class Trajectory( - namedtuple( - "Trajectory", ["coordinates", "position", "colors", "dashed", "label"] - ) + namedtuple("Trajectory", ["coordinates", "position", "colors", "dashed", "label"]) ): """A class for collecting all information of a body within a plotter. @@ -47,11 +45,11 @@ def __init__( Parameters ---------- - backend : ~poliastro.plotting.orbit.backends._base.OrbitPlotterBackend + backend : ~hapsira.plotting.orbit.backends._base.OrbitPlotterBackend An instance of ``OrbitPlotterBackend`` for rendendering the scene. num_points : int, optional Number of points to use when drawing trajectories. Default to 150. - plane : ~poliastro.frames.Plane, optional + plane : ~hapsira.frames.Plane, optional Reference plane to be used when drawing the scene. Default to `EARTH_EQUATOR`. length_scale_units : ~astropy.units.Unit, optional @@ -82,7 +80,7 @@ def backend(self): Returns ------- - ~poliastro.plotting.orbit.backends._base.OrbitPlotterBackend + ~hapsira.plotting.orbit.backends._base.OrbitPlotterBackend An instance of ``OrbitPlotterBackend`` used for rendendering the scene. """ @@ -94,7 +92,7 @@ def plane(self): Returns ------- - ~poliastro.frames.Plane, optional + ~hapsira.frames.Plane, optional Reference plane to be used when drawing the scene. Default to """ @@ -129,7 +127,7 @@ def set_attractor(self, attractor): Parameters ---------- - attractor : ~poliastro.bodies.Body + attractor : ~hapsira.bodies.Body Central body. Raises @@ -150,7 +148,7 @@ def set_orbit_frame(self, orbit): Parameters ---------- - orbit : ~poliastro.twobody.Orbit + orbit : ~hapsira.twobody.Orbit Orbit to use as frame. """ @@ -161,9 +159,7 @@ def set_orbit_frame(self, orbit): if not np.allclose([norm(v) for v in (p_vec, q_vec, w_vec)], 1): raise ValueError("Vectors must be unit.") - elif not np.allclose( - [p_vec @ q_vec, q_vec @ w_vec, w_vec @ p_vec], 0 - ): + elif not np.allclose([p_vec @ q_vec, q_vec @ w_vec, w_vec @ p_vec], 0): raise ValueError("Vectors must be mutually orthogonal.") else: self._frame = p_vec, q_vec, w_vec @@ -176,7 +172,7 @@ def set_body_frame(self, body, epoch=None): Parameters ---------- - body : poliastro.bodies.SolarSystemPlanet + body : hapsira.bodies.SolarSystemPlanet Body. epoch : astropy.time.Time, optional Epoch of current position. @@ -187,9 +183,9 @@ def set_body_frame(self, body, epoch=None): from astropy import time # HACK: avoid circular dependency with ``Body.plot()`` - from poliastro.bodies import Sun - from poliastro.twobody import Orbit - from poliastro.warnings import TimeScaleWarning + from hapsira.bodies import Sun + from hapsira.twobody import Orbit + from hapsira.warnings import TimeScaleWarning if not epoch: epoch = time.Time.now().tdb @@ -338,9 +334,7 @@ def _add_trajectory(self, trajectory): if position is not None: position = ( np.asarray( - self._project( - [position.to_value(self.length_scale_units)] - ) + self._project([position.to_value(self.length_scale_units)]) ).flatten() * self.length_scale_units ) @@ -353,10 +347,7 @@ def _add_trajectory(self, trajectory): # Add the coordinates to the scene trace_coordinates = self.backend.draw_coordinates( - [ - coords.to_value(self.length_scale_units) - for coords in coordinates - ], + [coords.to_value(self.length_scale_units) for coords in coordinates], colors=colors, dashed=dashed, label=coordinates_label, @@ -388,9 +379,7 @@ def _add_trajectory(self, trajectory): self.backend.resize_limits() # Update the axis legends using the desired length scale units - self.backend.draw_axes_labels_with_length_scale_units( - self.length_scale_units - ) + self.backend.draw_axes_labels_with_length_scale_units(self.length_scale_units) return ( (trace_coordinates, trace_position) @@ -403,7 +392,7 @@ def plot(self, orbit, *, color=None, label=None, trail=False, dashed=True): Parameters ---------- - orbit : ~poliastro.twobody.orbit.Orbit + orbit : ~hapsira.twobody.orbit.Orbit Orbit to plot. color : str, optional Color of the line and the position. @@ -454,7 +443,7 @@ def plot_body_orbit( Parameters ---------- - body : poliastro.bodies.SolarSystemPlanet + body : hapsira.bodies.SolarSystemPlanet Body. epoch : astropy.time.Time Epoch of current position. @@ -478,27 +467,21 @@ def plot_body_orbit( epochs = time_range( epoch, num_values=self._num_points, end=epoch + period, scale="tdb" ) - ephem = Ephem.from_body( - body, epochs, attractor=body.parent, plane=self.plane - ) + ephem = Ephem.from_body(body, epochs, attractor=body.parent, plane=self.plane) # Get body color and label if color is None: color = BODY_COLORS.get(body.name) label = generate_label(epoch, label or str(body)) - return self.plot_ephem( - ephem, epoch, label=label, color=color, trail=trail - ) + return self.plot_ephem(ephem, epoch, label=label, color=color, trail=trail) - def plot_ephem( - self, ephem, epoch=None, *, label=None, color=None, trail=False - ): + def plot_ephem(self, ephem, epoch=None, *, label=None, color=None, trail=False): """Plot ``Ephem`` object over its sampling period. Parameters ---------- - ephem : ~poliastro.ephem.Ephem + ephem : ~hapsira.ephem.Ephem Ephemerides to plot. epoch : astropy.time.Time, optional Epoch of the current position, `None` is used if not given. @@ -551,9 +534,9 @@ def plot_maneuver( Parameters ---------- - initial_orbit : ~poliastro.twobody.orbit.Orbit + initial_orbit : ~hapsira.twobody.orbit.Orbit The base orbit for which the maneuver will be applied. - maneuver : ~poliastro.maneuver.Maneuver + maneuver : ~hapsira.maneuver.Maneuver The maneuver to be plotted. label : str, optional Label of the trajectory. @@ -579,9 +562,7 @@ def plot_maneuver( if self.backend.is_2D: final_phase_position = ( np.asarray( - self._project( - [final_phase.r.to_value(self.length_scale_units)] - ) + self._project([final_phase.r.to_value(self.length_scale_units)]) ).flatten() * self.length_scale_units ) @@ -594,9 +575,7 @@ def plot_maneuver( impulse_lines = ( [ self.backend.draw_impulse( - position=final_phase_position.to_value( - self.length_scale_units - ), + position=final_phase_position.to_value(self.length_scale_units), color=color, label=impulse_label, size=None, @@ -615,11 +594,7 @@ def plot_maneuver( orbit_phase_r = ( np.asarray( self._project( - [ - orbit_phase.r.to_value( - self.length_scale_units - ) - ] + [orbit_phase.r.to_value(self.length_scale_units)] ) ).flatten() * self.length_scale_units @@ -639,9 +614,7 @@ def plot_maneuver( # HACK: if no color is provided, get the one randomly generated # for previous impulse lines - color = ( - impulse_lines[0][0].get_color() if color is None else color - ) + color = impulse_lines[0][0].get_color() if color is None else color # Get the propagation time required before next impulse time_to_next_impulse, _ = maneuver.impulses[ith_impulse + 1] @@ -668,9 +641,7 @@ def plot_maneuver( # Finally, draw the impulse at the very beginning of the final phase impulse_label = f"Impulse {ith_impulse + 2} - {label}" impulse_lines = self.backend.draw_impulse( - position=final_phase_position.to_value( - self.length_scale_units - ), + position=final_phase_position.to_value(self.length_scale_units), color=color, label=impulse_label, size=None, diff --git a/src/poliastro/plotting/porkchop.py b/src/hapsira/plotting/porkchop.py similarity index 89% rename from src/poliastro/plotting/porkchop.py rename to src/hapsira/plotting/porkchop.py index a06ff9819..314d8c37e 100644 --- a/src/poliastro/plotting/porkchop.py +++ b/src/hapsira/plotting/porkchop.py @@ -3,7 +3,7 @@ from matplotlib import pyplot as plt import numpy as np -from poliastro.bodies import ( +from hapsira.bodies import ( Earth, Jupiter, Mars, @@ -16,9 +16,9 @@ Uranus, Venus, ) -from poliastro.maneuver import Maneuver -from poliastro.twobody.orbit import Orbit -from poliastro.util import norm +from hapsira.maneuver import Maneuver +from hapsira.twobody.orbit import Orbit +from hapsira.util import norm def _get_state(body, time): @@ -37,7 +37,7 @@ def _get_state(body, time): Pluto, ] - # We check if body belongs to poliastro.bodies + # We check if body belongs to hapsira.bodies if body in solar_system_bodies: rr, vv = coord.get_body_barycentric_posvel(body.name, time) else: @@ -56,12 +56,8 @@ def _targetting(departure_body, target_body, t_launch, t_arrival): # Transform into Orbit objects attractor = departure_body.parent - orb_dpt = Orbit.from_vectors( - attractor, rr_dpt_body, vv_dpt_body, epoch=t_launch - ) - orb_arr = Orbit.from_vectors( - attractor, rr_arr_body, vv_arr_body, epoch=t_arrival - ) + orb_dpt = Orbit.from_vectors(attractor, rr_dpt_body, vv_dpt_body, epoch=t_launch) + orb_arr = Orbit.from_vectors(attractor, rr_arr_body, vv_arr_body, epoch=t_arrival) # Define time of flight tof = orb_arr.epoch - orb_dpt.epoch @@ -106,9 +102,9 @@ class PorkchopPlotter: Parameters ---------- - departure_body: poliastro.bodies.Body + departure_body: hapsira.bodies.Body Body from which departure is done - target_body: poliastro.bodies.Body + target_body: hapsira.bodies.Body Body for targetting launch_span: astropy.time.Time Time span for launch @@ -167,9 +163,9 @@ def porkchop(self): Examples -------- - >>> from poliastro.plotting.porkchop import PorkchopPlotter - >>> from poliastro.bodies import Earth, Mars - >>> from poliastro.util import time_range + >>> from hapsira.plotting.porkchop import PorkchopPlotter + >>> from hapsira.bodies import Earth, Mars + >>> from hapsira.util import time_range >>> launch_span = time_range("2005-04-30", end="2005-10-07") >>> arrival_span = time_range("2005-11-16", end="2006-12-21") >>> porkchop_plot = PorkchopPlotter(Earth, Mars, launch_span, arrival_span) @@ -190,9 +186,7 @@ def porkchop(self): else: fig = self.ax.figure - c3_levels = np.linspace( - 0, self.max_c3.to_value(u.km**2 / u.s**2), 30 - ) + c3_levels = np.linspace(0, self.max_c3.to_value(u.km**2 / u.s**2), 30) c = self.ax.contourf( [D.to_datetime() for D in self.launch_span], @@ -227,9 +221,7 @@ def porkchop(self): linewidths=3.5, ) - self.ax.clabel( - tfl_contour, inline=1, fmt="%1.1f", colors="r", fontsize=14 - ) + self.ax.clabel(tfl_contour, inline=1, fmt="%1.1f", colors="r", fontsize=14) if self.vhp: vhp_levels = np.linspace(0, self.max_vhp.to_value(u.km / u.s), 5) diff --git a/src/poliastro/plotting/tisserand.py b/src/hapsira/plotting/tisserand.py similarity index 92% rename from src/poliastro/plotting/tisserand.py rename to src/hapsira/plotting/tisserand.py index bb2311145..3f77de6df 100644 --- a/src/poliastro/plotting/tisserand.py +++ b/src/hapsira/plotting/tisserand.py @@ -5,9 +5,9 @@ from matplotlib import pyplot as plt import numpy as np -from poliastro.plotting.util import BODY_COLORS -from poliastro.twobody.mean_elements import get_mean_elements -from poliastro.util import norm +from hapsira.plotting.util import BODY_COLORS +from hapsira.twobody.mean_elements import get_mean_elements +from hapsira.util import norm class TisserandKind(Enum): @@ -53,7 +53,7 @@ def _solve_tisserand( Parameters ---------- - body : ~poliastro.bodies.Body + body : ~hapsira.bodies.Body Body to be plotted Tisserand vinf_array : ~astropy.units.Quantity Desired Vinf for the flyby @@ -85,9 +85,7 @@ def _solve_tisserand( # Solving for non-dimensional a_sc and ecc_sc A_SC = 1 / np.abs(1 - V_INF**2 - 2 * V_INF * np.cos(ALPHA)) - ECC_SC = np.sqrt( - 1 - 1 / A_SC * ((3 - 1 / A_SC - V_INF**2) / (2)) ** 2 - ) + ECC_SC = np.sqrt(1 - 1 / A_SC * ((3 - 1 / A_SC - V_INF**2) / (2)) ** 2) # Compute main Tisserand variables RR_P = A_SC * R_body * (1 - ECC_SC) @@ -131,7 +129,7 @@ def plot_line(self, body, vinf, alpha_lim=(0, np.pi), color=None): Parameters ---------- - body : ~poliastro.bodies.Body + body : ~hapsira.bodies.Body Body to be plotted Tisserand vinf : ~astropy.units.Quantity Vinf velocity line @@ -168,7 +166,7 @@ def plot(self, body, vinf_span, num_contours=10, color=None): Parameters ---------- - body : ~poliastro.bodies.Body + body : ~hapsira.bodies.Body Body to be plotted Tisserand vinf_span : tuple Minimum and maximum Vinf velocities @@ -184,9 +182,7 @@ def plot(self, body, vinf_span, num_contours=10, color=None): """ # Solve Tisserand parameters - RR_P, RR_A, EE, TT = self._solve_tisserand( - body, vinf_span, num_contours - ) + RR_P, RR_A, EE, TT = self._solve_tisserand(body, vinf_span, num_contours) # Check if color defined if not color: diff --git a/src/poliastro/plotting/util.py b/src/hapsira/plotting/util.py similarity index 100% rename from src/poliastro/plotting/util.py rename to src/hapsira/plotting/util.py diff --git a/src/poliastro/sensors.py b/src/hapsira/sensors.py similarity index 98% rename from src/poliastro/sensors.py rename to src/hapsira/sensors.py index 633b6aedb..8d6568de0 100644 --- a/src/poliastro/sensors.py +++ b/src/hapsira/sensors.py @@ -1,6 +1,6 @@ from astropy import units as u -from poliastro.core.sensors import ( +from hapsira.core.sensors import ( ground_range_diff_at_azimuth as ground_range_diff_at_azimuth_fast, min_and_max_ground_range as min_and_max_ground_range_fast, ) diff --git a/src/poliastro/spacecraft/__init__.py b/src/hapsira/spacecraft/__init__.py similarity index 100% rename from src/poliastro/spacecraft/__init__.py rename to src/hapsira/spacecraft/__init__.py diff --git a/src/poliastro/spheroid_location.py b/src/hapsira/spheroid_location.py similarity index 91% rename from src/poliastro/spheroid_location.py rename to src/hapsira/spheroid_location.py index 3f040fb83..c1a9f5073 100644 --- a/src/poliastro/spheroid_location.py +++ b/src/hapsira/spheroid_location.py @@ -1,7 +1,7 @@ import astropy.units as u import numpy as np -from poliastro.core.spheroid_location import ( +from hapsira.core.spheroid_location import ( N as N_fast, cartesian_cords as cartesian_cords_fast, cartesian_to_ellipsoidal as cartesian_to_ellipsoidal_fast, @@ -25,7 +25,7 @@ def __init__(self, lon, lat, h, body): Geodetic latitude h : ~astropy.units.quantity.Quantity Geodetic height - body : ~poliastro.bodies.Body + body : ~hapsira.bodies.Body Planetary body the spheroid location lies on """ @@ -71,9 +71,7 @@ def N(self): self._b.to_value(u.m), self._c.to_value(u.m), ) - cartesian_cords = np.array( - [coord.value for coord in self.cartesian_cords] - ) + cartesian_cords = np.array([coord.value for coord in self.cartesian_cords]) return N_fast(a, b, c, cartesian_cords) @property @@ -108,9 +106,7 @@ def distance(self, px, py, pz): """ px, py, pz = px.to_value(u.m), py.to_value(u.m), pz.to_value(u.m) - cartesian_cords = np.array( - [coord.value for coord in self.cartesian_cords] - ) + cartesian_cords = np.array([coord.value for coord in self.cartesian_cords]) return ( distance_fast(cartesian_cords, px, py, pz) * u.m ) # body.R and body.R_polar has u.m as units @@ -130,9 +126,7 @@ def is_visible(self, px, py, pz): """ px, py, pz = px.to_value(u.m), py.to_value(u.m), pz.to_value(u.m) - cartesian_cords = np.array( - [coord.value for coord in self.cartesian_cords] - ) + cartesian_cords = np.array([coord.value for coord in self.cartesian_cords]) return is_visible_fast(cartesian_cords, px, py, pz, self.N) diff --git a/src/poliastro/threebody/__init__.py b/src/hapsira/threebody/__init__.py similarity index 100% rename from src/poliastro/threebody/__init__.py rename to src/hapsira/threebody/__init__.py diff --git a/src/poliastro/threebody/cr3bp_char_quant.py b/src/hapsira/threebody/cr3bp_char_quant.py similarity index 90% rename from src/poliastro/threebody/cr3bp_char_quant.py rename to src/hapsira/threebody/cr3bp_char_quant.py index 86c353bc0..92bd215ef 100644 --- a/src/poliastro/threebody/cr3bp_char_quant.py +++ b/src/hapsira/threebody/cr3bp_char_quant.py @@ -1,7 +1,7 @@ """@author: Dhruv Jain, Multi-Body Dynamics Research Group, Purdue University.""" from astropy import units as u -from poliastro.core.threebody.cr3bp_quantities_calculations import ( +from hapsira.core.threebody.cr3bp_quantities_calculations import ( calculate_mu, calculate_tstar, ) @@ -40,8 +40,8 @@ def from_primaries(cls, p1, p2): Parameters ---------- - p1: ~poliastro.bodies.Body - p2: ~poliastro.bodies.Body + p1: ~hapsira.bodies.Body + p2: ~hapsira.bodies.Body """ name, mu, lstar, tstar = cls.bodies_char_compute(p1, p2) return cls(name, mu, lstar, tstar) @@ -54,8 +54,8 @@ def bodies_char_compute(self, p1, p2): Parameters ---------- - p1: ~poliastro.bodies.Body - p2: ~poliastro.bodies.Body + p1: ~hapsira.bodies.Body + p2: ~hapsira.bodies.Body Returns ------- @@ -70,9 +70,7 @@ def bodies_char_compute(self, p1, p2): """ assert ( p1 == p2.parent or p2 == p1.parent - ) is True, ( - "P1 and P2 are not part of the same system. Recheck body.parent" - ) + ) is True, "P1 and P2 are not part of the same system. Recheck body.parent" if p1.k < p2.k: # swap p1 and p2, as p1 should be the more massive body diff --git a/src/poliastro/threebody/flybys.py b/src/hapsira/threebody/flybys.py similarity index 87% rename from src/poliastro/threebody/flybys.py rename to src/hapsira/threebody/flybys.py index 27c4573af..74ecbecab 100644 --- a/src/poliastro/threebody/flybys.py +++ b/src/hapsira/threebody/flybys.py @@ -1,6 +1,6 @@ from astropy import units as u -from poliastro.core.flybys import compute_flyby as compute_flyby_fast +from hapsira.core.flybys import compute_flyby as compute_flyby_fast @u.quantity_input( @@ -40,8 +40,6 @@ def compute_flyby(v_spacecraft, v_body, k, r_p, theta=0 * u.deg): r_p = r_p.to_value(u.km) theta = theta.to_value(u.rad) - v_spacecraft_out, delta = compute_flyby_fast( - v_spacecraft, v_body, k, r_p, theta - ) + v_spacecraft_out, delta = compute_flyby_fast(v_spacecraft, v_body, k, r_p, theta) return v_spacecraft_out * u.km / u.s, delta * u.rad diff --git a/src/poliastro/threebody/restricted.py b/src/hapsira/threebody/restricted.py similarity index 97% rename from src/poliastro/threebody/restricted.py rename to src/hapsira/threebody/restricted.py index 6e2be8af0..76c5e1d10 100644 --- a/src/poliastro/threebody/restricted.py +++ b/src/hapsira/threebody/restricted.py @@ -7,8 +7,8 @@ from astropy import units as u import numpy as np -from poliastro._math.optimize import brentq -from poliastro.util import norm +from hapsira._math.optimize import brentq +from hapsira.util import norm @u.quantity_input(r12=u.km, m1=u.kg, m2=u.kg) diff --git a/src/poliastro/threebody/soi.py b/src/hapsira/threebody/soi.py similarity index 95% rename from src/poliastro/threebody/soi.py rename to src/hapsira/threebody/soi.py index 36b102acd..29dc155cf 100644 --- a/src/poliastro/threebody/soi.py +++ b/src/hapsira/threebody/soi.py @@ -31,7 +31,7 @@ a\\left(\\frac{m}{3M}\\right)^{\\frac{1}{3}} """ -from poliastro.twobody.mean_elements import get_mean_elements +from hapsira.twobody.mean_elements import get_mean_elements def laplace_radius(body): @@ -39,7 +39,7 @@ def laplace_radius(body): Parameters ---------- - body : `~poliastro.bodies.Body` + body : `~hapsira.bodies.Body` Astronomical body which the SOI's radius is computed for. Returns @@ -59,7 +59,7 @@ def hill_radius(body): Parameters ---------- - body : `~poliastro.bodies.Body` + body : `~hapsira.bodies.Body` Astronomical body which the SOI's radius is computed for. Returns diff --git a/src/hapsira/twobody/__init__.py b/src/hapsira/twobody/__init__.py new file mode 100644 index 000000000..a0d46c591 --- /dev/null +++ b/src/hapsira/twobody/__init__.py @@ -0,0 +1,3 @@ +from hapsira.twobody.orbit import Orbit + +__all__ = ["Orbit"] diff --git a/src/poliastro/twobody/angles.py b/src/hapsira/twobody/angles.py similarity index 99% rename from src/poliastro/twobody/angles.py rename to src/hapsira/twobody/angles.py index 02fd00187..a07091be4 100644 --- a/src/poliastro/twobody/angles.py +++ b/src/hapsira/twobody/angles.py @@ -1,7 +1,7 @@ """Angles and anomalies.""" from astropy import units as u -from poliastro.core.angles import ( +from hapsira.core.angles import ( D_to_M as D_to_M_fast, D_to_nu as D_to_nu_fast, E_to_M as E_to_M_fast, diff --git a/src/poliastro/twobody/elements.py b/src/hapsira/twobody/elements.py similarity index 96% rename from src/poliastro/twobody/elements.py rename to src/hapsira/twobody/elements.py index 729e425aa..7b14f08d3 100644 --- a/src/poliastro/twobody/elements.py +++ b/src/hapsira/twobody/elements.py @@ -1,13 +1,13 @@ from astropy import units as u import numpy as np -from poliastro.core.elements import ( +from hapsira.core.elements import ( circular_velocity as circular_velocity_fast, coe2rv as coe2rv_fast, coe2rv_many as coe2rv_many_fast, eccentricity_vector as eccentricity_vector_fast, ) -from poliastro.core.propagation.farnocchia import ( +from hapsira.core.propagation.farnocchia import ( delta_t_from_nu as delta_t_from_nu_fast, ) @@ -18,9 +18,7 @@ @u.quantity_input(k=u_km3s2, a=u.km) def circular_velocity(k, a): """Circular velocity for a given body (k) and semimajor axis (a).""" - return ( - circular_velocity_fast(k.to_value(u_km3s2), a.to_value(u.km)) * u_kms - ) + return circular_velocity_fast(k.to_value(u_km3s2), a.to_value(u.km)) * u_kms @u.quantity_input(k=u_km3s2, a=u.km) diff --git a/src/poliastro/twobody/events.py b/src/hapsira/twobody/events.py similarity index 93% rename from src/poliastro/twobody/events.py rename to src/hapsira/twobody/events.py index d247208a6..e0604b934 100644 --- a/src/poliastro/twobody/events.py +++ b/src/hapsira/twobody/events.py @@ -4,12 +4,12 @@ from astropy.coordinates import get_body_barycentric_posvel import numpy as np -from poliastro._math.linalg import norm -from poliastro.core.events import ( +from hapsira._math.linalg import norm +from hapsira.core.events import ( eclipse_function as eclipse_function_fast, line_of_sight as line_of_sight_fast, ) -from poliastro.core.spheroid_location import ( +from hapsira.core.spheroid_location import ( cartesian_to_ellipsoidal as cartesian_to_ellipsoidal_fast, ) @@ -99,7 +99,7 @@ class LatitudeCrossEvent(Event): Parameters ---------- - orbit: ~poliastro.twobody.orbit.Orbit + orbit: ~hapsira.twobody.orbit.Orbit Orbit. lat: astropy.quantity.Quantity Threshold latitude. @@ -122,9 +122,7 @@ def __init__(self, orbit, lat, terminal=False, direction=0): def __call__(self, t, u_, k): self._last_t = t pos_on_body = (u_[:3] / norm(u_[:3])) * self._R - _, lat_, _ = cartesian_to_ellipsoidal_fast( - self._R, self._R_polar, *pos_on_body - ) + _, lat_, _ = cartesian_to_ellipsoidal_fast(self._R, self._R_polar, *pos_on_body) return np.rad2deg(lat_) - self._lat @@ -134,7 +132,7 @@ class EclipseEvent(Event): Parameters ---------- - orbit: poliastro.twobody.orbit.Orbit + orbit: hapsira.twobody.orbit.Orbit Orbit of the satellite. terminal: bool, optional Whether to terminate integration when the event occurs, defaults to False. @@ -169,7 +167,7 @@ class PenumbraEvent(EclipseEvent): Parameters ---------- - orbit: poliastro.twobody.orbit.Orbit + orbit: hapsira.twobody.orbit.Orbit Orbit of the satellite. terminal: bool, optional Whether to terminate integration when the event occurs, defaults to False. @@ -203,7 +201,7 @@ class UmbraEvent(EclipseEvent): Parameters ---------- - orbit: poliastro.twobody.orbit.Orbit + orbit: hapsira.twobody.orbit.Orbit Orbit of the satellite. terminal: bool, optional Whether to terminate integration when the event occurs, defaults to False. @@ -255,7 +253,7 @@ class LosEvent(Event): Parameters ---------- - attractor: ~poliastro.bodies.body + attractor: ~hapsira.bodies.body The central attractor with respect to which the position vectors of the satellites are defined. pos_coords: ~astropy.quantity.Quantity A list of position coordinates for the secondary body. These coordinates @@ -280,9 +278,7 @@ def __call__(self, t, u_, k): "The norm of the position vector of the primary body is less than the radius of the attractor." ) - pos_coord = ( - self._pos_coords.pop(0) if self._pos_coords else self._last_coord - ) + pos_coord = self._pos_coords.pop(0) if self._pos_coords else self._last_coord # Need to cast `pos_coord` to array since `norm` inside numba only works for arrays, not lists. delta_angle = line_of_sight_fast(u_[:3], np.array(pos_coord), self._R) diff --git a/src/poliastro/twobody/mean_elements.py b/src/hapsira/twobody/mean_elements.py similarity index 76% rename from src/poliastro/twobody/mean_elements.py rename to src/hapsira/twobody/mean_elements.py index fccf3e345..0b5910d5e 100644 --- a/src/poliastro/twobody/mean_elements.py +++ b/src/hapsira/twobody/mean_elements.py @@ -2,9 +2,9 @@ from astropy.coordinates.solar_system import PLAN94_BODY_NAME_TO_PLANET_INDEX import erfa -from poliastro.constants import J2000 -from poliastro.frames import Planes -from poliastro.twobody.states import RVState +from hapsira.constants import J2000 +from hapsira.frames import Planes +from hapsira.twobody.states import RVState def get_mean_elements(body, epoch=J2000): @@ -12,7 +12,7 @@ def get_mean_elements(body, epoch=J2000): Parameters ---------- - body : ~poliastro.bodies.SolarSystemPlanet + body : ~hapsira.bodies.SolarSystemPlanet Body. epoch : astropy.time.Time Epoch. @@ -36,9 +36,7 @@ def get_mean_elements(body, epoch=J2000): except KeyError as e: raise ValueError( - f"No available mean elements for {body}. It must be an instance of `poliastro.bodies.SolarSystemPlanet`" + f"No available mean elements for {body}. It must be an instance of `hapsira.bodies.SolarSystemPlanet`" ) from e - return RVState( - body.parent, (r, v), plane=Planes.EARTH_ECLIPTIC - ).to_classical() + return RVState(body.parent, (r, v), plane=Planes.EARTH_ECLIPTIC).to_classical() diff --git a/src/hapsira/twobody/orbit/__init__.py b/src/hapsira/twobody/orbit/__init__.py new file mode 100644 index 000000000..bb583decb --- /dev/null +++ b/src/hapsira/twobody/orbit/__init__.py @@ -0,0 +1,3 @@ +from hapsira.twobody.orbit.scalar import Orbit + +__all__ = ["Orbit"] diff --git a/src/poliastro/twobody/orbit/creation.py b/src/hapsira/twobody/orbit/creation.py similarity index 91% rename from src/poliastro/twobody/orbit/creation.py rename to src/hapsira/twobody/orbit/creation.py index ee7cad33e..16d24ad9d 100644 --- a/src/poliastro/twobody/orbit/creation.py +++ b/src/hapsira/twobody/orbit/creation.py @@ -3,22 +3,22 @@ from astropy import units as u import numpy as np -from poliastro.constants import J2000 -from poliastro.frames import Planes -from poliastro.frames.util import get_frame -from poliastro.twobody.elements import ( +from hapsira.constants import J2000 +from hapsira.frames import Planes +from hapsira.frames.util import get_frame +from hapsira.twobody.elements import ( get_eccentricity_critical_argp, get_eccentricity_critical_inc, get_inclination_critical_argp, heliosynchronous, ) -from poliastro.twobody.mean_elements import get_mean_elements -from poliastro.twobody.states import ( +from hapsira.twobody.mean_elements import get_mean_elements +from hapsira.twobody.states import ( ClassicalState, ModifiedEquinoctialState, RVState, ) -from poliastro.util import find_closest_value +from hapsira.util import find_closest_value class OrbitCreationMixin: @@ -29,9 +29,7 @@ def __init__(self, *_, **__): # HACK stub to make mypy happy @classmethod @u.quantity_input(r=u.m, v=u.m / u.s) - def from_vectors( - cls, attractor, r, v, epoch=J2000, plane=Planes.EARTH_EQUATOR - ): + def from_vectors(cls, attractor, r, v, epoch=J2000, plane=Planes.EARTH_EQUATOR): """Return `Orbit` from position and velocity vectors. Parameters @@ -44,7 +42,7 @@ def from_vectors( Velocity vector. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -77,7 +75,7 @@ def from_coords(cls, attractor, coord, plane=Planes.EARTH_EQUATOR): coord : ~astropy.coordinates.SkyCoord or ~astropy.coordinates.BaseCoordinateFrame Position and velocity vectors in any reference frame. Note that coord must have a representation and its differential with respect to time. - plane : ~poliastro.frames.Planes, optional + plane : ~hapsira.frames.Planes, optional Final orbit plane, default to Earth Equator. """ @@ -96,9 +94,7 @@ def from_coords(cls, attractor, coord, plane=Planes.EARTH_EQUATOR): # Get an inertial reference frame parallel to ICRS and centered at # attractor - inertial_frame_at_body_centre = get_frame( - attractor, plane, coord.obstime - ) + inertial_frame_at_body_centre = get_frame(attractor, plane, coord.obstime) if not coord.is_equivalent_frame(inertial_frame_at_body_centre): coord_in_irf = coord.transform_to(inertial_frame_at_body_centre) @@ -108,14 +104,10 @@ def from_coords(cls, attractor, coord, plane=Planes.EARTH_EQUATOR): pos = coord_in_irf.cartesian.xyz vel = coord_in_irf.cartesian.differentials["s"].d_xyz - return cls.from_vectors( - attractor, pos, vel, epoch=coord.obstime, plane=plane - ) + return cls.from_vectors(attractor, pos, vel, epoch=coord.obstime, plane=plane) @classmethod - @u.quantity_input( - a=u.m, ecc=u.one, inc=u.rad, raan=u.rad, argp=u.rad, nu=u.rad - ) + @u.quantity_input(a=u.m, ecc=u.one, inc=u.rad, raan=u.rad, argp=u.rad, nu=u.rad) def from_classical( cls, attractor, @@ -148,7 +140,7 @@ def from_classical( True anomaly. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -157,9 +149,7 @@ def from_classical( raise ValueError(f"Elements must be scalar, got {element}") if ecc == 1.0 * u.one: - raise ValueError( - "For parabolic orbits use Orbit.parabolic instead" - ) + raise ValueError("For parabolic orbits use Orbit.parabolic instead") if not 0 * u.deg <= inc <= 180 * u.deg: raise ValueError("Inclination must be between 0 and 180 degrees") @@ -169,9 +159,9 @@ def from_classical( if not -np.pi * u.rad <= nu < np.pi * u.rad: warn("Wrapping true anomaly to -π <= nu < π", stacklevel=2) - nu = ( - (nu + np.pi * u.rad) % (2 * np.pi * u.rad) - np.pi * u.rad - ).to(nu.unit) + nu = ((nu + np.pi * u.rad) % (2 * np.pi * u.rad) - np.pi * u.rad).to( + nu.unit + ) ss = ClassicalState( attractor, (a * (1 - ecc**2), ecc, inc, raan, argp, nu), plane @@ -212,7 +202,7 @@ def from_equinoctial( True longitude. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -228,17 +218,15 @@ def from_ephem(cls, attractor, ephem, epoch): Parameters ---------- - ephem : ~poliastro.ephem.Ephem + ephem : ~hapsira.ephem.Ephem Ephemerides object to use. - attractor : ~poliastro.bodies.Body + attractor : ~hapsira.bodies.Body Body to use as attractor. epoch : ~astropy.time.Time Epoch to retrieve the osculating orbit at. """ - return cls.from_vectors( - attractor, *ephem.rv(epoch), epoch, ephem.plane - ) + return cls.from_vectors(attractor, *ephem.rv(epoch), epoch, ephem.plane) @classmethod def from_sbdb(cls, name, **kwargs): @@ -253,16 +241,16 @@ def from_sbdb(cls, name, **kwargs): Returns ------- - ss: poliastro.twobody.orbit.Orbit + ss: hapsira.twobody.orbit.Orbit Orbit corresponding to body_name Examples -------- - >>> from poliastro.twobody.orbit import Orbit + >>> from hapsira.twobody.orbit import Orbit >>> apophis_orbit = Orbit.from_sbdb('apophis') # doctest: +REMOTE_DATA """ - from poliastro.io import orbit_from_sbdb + from hapsira.io import orbit_from_sbdb return orbit_from_sbdb(name, **kwargs) @@ -294,7 +282,7 @@ def circular( Argument of latitude, default to 0 deg. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -382,7 +370,7 @@ def synchronous( Argument of latitude, default to 0 deg. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. Returns @@ -413,9 +401,7 @@ def synchronous( nu = arglat - argp r_pericenter = (1 - ecc) * a_sync if r_pericenter < attractor.R: - raise ValueError( - "The orbit for the given parameters doesn't exist" - ) + raise ValueError("The orbit for the given parameters doesn't exist") return cls.from_classical( attractor=attractor, @@ -460,7 +446,7 @@ def heliosynchronous( Parameters ---------- - attractor : ~poliastro.bodies.SolarSystemPlanet + attractor : ~hapsira.bodies.SolarSystemPlanet Attractor. a : ~astropy.units.Quantity Semi-major axis. @@ -476,15 +462,14 @@ def heliosynchronous( True anomaly. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ mean_elements = get_mean_elements(attractor) n_sunsync = ( - np.sqrt(mean_elements.attractor.k / abs(mean_elements.a**3)) - * u.one + np.sqrt(mean_elements.attractor.k / abs(mean_elements.a**3)) * u.one ).to(1 / u.s) try: @@ -492,9 +477,7 @@ def heliosynchronous( attractor.k, attractor.R, attractor.J2, n_sunsync, a, ecc, inc ) except FloatingPointError: - raise ValueError( - "No SSO orbit with given parameters can be found." - ) + raise ValueError("No SSO orbit with given parameters can be found.") ss = cls.from_classical( attractor=attractor, @@ -541,13 +524,11 @@ def parabolic( True anomaly. epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ - ss = ClassicalState( - attractor, (p, 1.0 * u.one, inc, raan, argp, nu), plane - ) + ss = ClassicalState(attractor, (p, 1.0 * u.one, inc, raan, argp, nu), plane) return cls(ss, epoch) @classmethod @@ -627,7 +608,7 @@ def frozen( Eccentricity, default to the eccentricity of the Moon's orbit around the Earth epoch : ~astropy.time.Time, optional Epoch, default to J2000. - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -681,9 +662,7 @@ def frozen( ) inc = critical_inclinations[0] if inc is None else inc - critical_inclination = find_closest_value( - inc, critical_inclinations - ) + critical_inclination = find_closest_value(inc, critical_inclinations) if np.isclose(inc, critical_inclination, 1e-8, 1e-5 * u.rad): ecc = get_eccentricity_critical_inc(ecc) return cls.from_classical( diff --git a/src/poliastro/twobody/orbit/scalar.py b/src/hapsira/twobody/orbit/scalar.py similarity index 92% rename from src/poliastro/twobody/orbit/scalar.py rename to src/hapsira/twobody/orbit/scalar.py index abf704e08..c7e27949a 100644 --- a/src/poliastro/twobody/orbit/scalar.py +++ b/src/hapsira/twobody/orbit/scalar.py @@ -10,21 +10,23 @@ ) import numpy as np -from poliastro.bodies import Earth -from poliastro.core.events import elevation_function as elevation_function_fast -from poliastro.frames.util import get_frame -from poliastro.threebody.soi import laplace_radius -from poliastro.twobody.elements import eccentricity_vector, energy, t_p -from poliastro.twobody.orbit.creation import OrbitCreationMixin -from poliastro.twobody.propagation import FarnocchiaPropagator, PropagatorKind -from poliastro.twobody.sampling import TrueAnomalyBounds -from poliastro.util import norm, wrap_angle -from poliastro.warnings import PatchedConicsWarning +from hapsira.bodies import Earth +from hapsira.core.events import elevation_function as elevation_function_fast +from hapsira.frames.util import get_frame +from hapsira.threebody.soi import laplace_radius +from hapsira.twobody.elements import eccentricity_vector, energy, t_p +from hapsira.twobody.orbit.creation import OrbitCreationMixin +from hapsira.twobody.propagation import FarnocchiaPropagator, PropagatorKind +from hapsira.twobody.sampling import TrueAnomalyBounds +from hapsira.util import norm, wrap_angle +from hapsira.warnings import PatchedConicsWarning ORBIT_FORMAT = "{r_p:.0f} x {r_a:.0f} x {inc:.1f} ({frame}) orbit around {body} at epoch {epoch} ({scale})" # String representation for orbits around bodies without predefined # Reference frame -ORBIT_NO_FRAME_FORMAT = "{r_p:.0f} x {r_a:.0f} x {inc:.1f} orbit around {body} at epoch {epoch} ({scale})" +ORBIT_NO_FRAME_FORMAT = ( + "{r_p:.0f} x {r_a:.0f} x {inc:.1f} orbit around {body} at epoch {epoch} ({scale})" +) class Orbit(OrbitCreationMixin): @@ -209,14 +211,14 @@ def change_attractor(self, new_attractor, force=False): Parameters ---------- - new_attractor : poliastro.bodies.Body + new_attractor : hapsira.bodies.Body Desired new attractor. force : bool If `True`, changes attractor even if physically has no-sense. Returns ------- - ss: poliastro.twobody.orbit.Orbit + ss: hapsira.twobody.orbit.Orbit Orbit with new attractor """ @@ -224,9 +226,7 @@ def change_attractor(self, new_attractor, force=False): return self elif self.attractor == new_attractor.parent: # "Sun -> Earth" r_soi = laplace_radius(new_attractor) - barycentric_position = get_body_barycentric( - new_attractor.name, self.epoch - ) + barycentric_position = get_body_barycentric(new_attractor.name, self.epoch) # Transforming new_attractor's frame into frame of attractor new_attractor_r = ( ICRS(barycentric_position) @@ -246,9 +246,7 @@ def change_attractor(self, new_attractor, force=False): "Orbit is out of new attractor's SOI. If required, use 'force=True'." ) elif self.ecc < 1.0 and not force: - raise ValueError( - "Orbit will never leave the SOI of its current attractor" - ) + raise ValueError("Orbit will never leave the SOI of its current attractor") else: warn( "Leaving the SOI of the current attractor", @@ -269,7 +267,7 @@ def change_plane(self, plane): Parameters ---------- - plane : ~poliastro.frames.Planes + plane : ~hapsira.frames.Planes Fundamental plane of the frame. """ @@ -301,7 +299,7 @@ def represent_as(self, representation, differential_class=None): Examples -------- - >>> from poliastro.examples import iss + >>> from hapsira.examples import iss >>> from astropy.coordinates import SphericalRepresentation >>> iss.represent_as(CartesianRepresentation) >> from astropy import units as u - >>> from poliastro.examples import iss + >>> from hapsira.examples import iss >>> iss.sample() # doctest: +ELLIPSIS >> iss.sample(10) # doctest: +ELLIPSIS @@ -622,20 +616,20 @@ def plot(self, backend=None, label=None): Parameters ---------- - backend : ~poliastro.plotting.orbit.backends._base.OrbitPlotterBackend + backend : ~hapsira.plotting.orbit.backends._base.OrbitPlotterBackend An instance of ``OrbitPlotterBackend`` for rendendering the scene. label : str, optional Label for the orbit, defaults to empty. Returns ------- - ~poliastro.plotting.orbit.OrbitPlotter + ~hapsira.plotting.orbit.OrbitPlotter An object for plotting orbits. """ # HACK: avoid circular dependency - from poliastro.plotting.orbit.backends import Matplotlib2D, Plotly2D - from poliastro.plotting.orbit.plotter import OrbitPlotter + from hapsira.plotting.orbit.backends import Matplotlib2D, Plotly2D + from hapsira.plotting.orbit.plotter import OrbitPlotter # Select the best backend depending if it is an interactive or batch # session @@ -681,7 +675,7 @@ def elevation(self, lat, theta, h): Notes ----- Local sideral time needs to be precomputed. If Earth is the attractor, it can - be computed using `poliastro.earth.util.get_local_sidereal_time`. + be computed using `hapsira.earth.util.get_local_sidereal_time`. """ if self.attractor != Earth: raise NotImplementedError( diff --git a/src/poliastro/twobody/propagation/__init__.py b/src/hapsira/twobody/propagation/__init__.py similarity index 75% rename from src/poliastro/twobody/propagation/__init__.py rename to src/hapsira/twobody/propagation/__init__.py index 064d21053..f3e790730 100644 --- a/src/poliastro/twobody/propagation/__init__.py +++ b/src/hapsira/twobody/propagation/__init__.py @@ -1,5 +1,5 @@ """The following script holds the different high level functions for the -different propagators available at poliastro: +different propagators available at hapsira: +-------------+------------+-----------------+-----------------+ | Propagator | Elliptical | Parabolic | Hyperbolic | @@ -24,16 +24,16 @@ +-------------+------------+-----------------+-----------------+ """ -from poliastro.twobody.propagation.cowell import CowellPropagator -from poliastro.twobody.propagation.danby import DanbyPropagator -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.propagation.farnocchia import FarnocchiaPropagator -from poliastro.twobody.propagation.gooding import GoodingPropagator -from poliastro.twobody.propagation.markley import MarkleyPropagator -from poliastro.twobody.propagation.mikkola import MikkolaPropagator -from poliastro.twobody.propagation.pimienta import PimientaPropagator -from poliastro.twobody.propagation.recseries import RecseriesPropagator -from poliastro.twobody.propagation.vallado import ValladoPropagator +from hapsira.twobody.propagation.cowell import CowellPropagator +from hapsira.twobody.propagation.danby import DanbyPropagator +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.propagation.farnocchia import FarnocchiaPropagator +from hapsira.twobody.propagation.gooding import GoodingPropagator +from hapsira.twobody.propagation.markley import MarkleyPropagator +from hapsira.twobody.propagation.mikkola import MikkolaPropagator +from hapsira.twobody.propagation.pimienta import PimientaPropagator +from hapsira.twobody.propagation.recseries import RecseriesPropagator +from hapsira.twobody.propagation.vallado import ValladoPropagator from ._compat import propagate diff --git a/src/poliastro/twobody/propagation/_compat.py b/src/hapsira/twobody/propagation/_compat.py similarity index 94% rename from src/poliastro/twobody/propagation/_compat.py rename to src/hapsira/twobody/propagation/_compat.py index a45e2ca5f..074f50325 100644 --- a/src/poliastro/twobody/propagation/_compat.py +++ b/src/hapsira/twobody/propagation/_compat.py @@ -18,5 +18,5 @@ def propagate(*args, **kwargs): "or Orbit.to_ephem if you want to compute all the trajectory. " "This error message will be removed in a future release " "and you will get a 'ImportError: cannot import name 'propagate' " - "from 'poliastro.twobody.propagation''." + "from 'hapsira.twobody.propagation''." ) diff --git a/src/poliastro/twobody/propagation/cowell.py b/src/hapsira/twobody/propagation/cowell.py similarity index 80% rename from src/poliastro/twobody/propagation/cowell.py rename to src/hapsira/twobody/propagation/cowell.py index 26b8af2df..693369ecb 100644 --- a/src/poliastro/twobody/propagation/cowell.py +++ b/src/hapsira/twobody/propagation/cowell.py @@ -2,10 +2,10 @@ from astropy import units as u -from poliastro.core.propagation import cowell -from poliastro.core.propagation.base import func_twobody -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import RVState +from hapsira.core.propagation import cowell +from hapsira.core.propagation.base import func_twobody +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import RVState from ._compat import OldPropagatorModule @@ -24,9 +24,7 @@ class CowellPropagator: """ kind = ( - PropagatorKind.ELLIPTIC - | PropagatorKind.PARABOLIC - | PropagatorKind.HYPERBOLIC + PropagatorKind.ELLIPTIC | PropagatorKind.PARABOLIC | PropagatorKind.HYPERBOLIC ) def __init__(self, rtol=1e-11, events=None, f=func_twobody): @@ -65,7 +63,7 @@ def propagate_many(self, state, tofs): ) # TODO: This should probably return a RVStateArray instead, - # see discussion at https://github.com/poliastro/poliastro/pull/1492 + # see discussion at https://github.com/hapsira/hapsira/pull/1492 return ( rrs << u.km, vvs << (u.km / u.s), diff --git a/src/poliastro/twobody/propagation/danby.py b/src/hapsira/twobody/propagation/danby.py similarity index 83% rename from src/poliastro/twobody/propagation/danby.py rename to src/hapsira/twobody/propagation/danby.py index b5266c573..e8c4c3d43 100644 --- a/src/poliastro/twobody/propagation/danby.py +++ b/src/hapsira/twobody/propagation/danby.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import danby_coe as danby_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import danby_coe as danby_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/enums.py b/src/hapsira/twobody/propagation/enums.py similarity index 100% rename from src/poliastro/twobody/propagation/enums.py rename to src/hapsira/twobody/propagation/enums.py diff --git a/src/poliastro/twobody/propagation/farnocchia.py b/src/hapsira/twobody/propagation/farnocchia.py similarity index 82% rename from src/poliastro/twobody/propagation/farnocchia.py rename to src/hapsira/twobody/propagation/farnocchia.py index 23892028a..4b26f57d6 100644 --- a/src/poliastro/twobody/propagation/farnocchia.py +++ b/src/hapsira/twobody/propagation/farnocchia.py @@ -3,12 +3,12 @@ from astropy import units as u import numpy as np -from poliastro.core.propagation.farnocchia import ( +from hapsira.core.propagation.farnocchia import ( farnocchia_coe as farnocchia_coe_fast, farnocchia_rv as farnocchia_rv_fast, ) -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule @@ -27,9 +27,7 @@ class FarnocchiaPropagator: """ kind = ( - PropagatorKind.ELLIPTIC - | PropagatorKind.PARABOLIC - | PropagatorKind.HYPERBOLIC + PropagatorKind.ELLIPTIC | PropagatorKind.PARABOLIC | PropagatorKind.HYPERBOLIC ) def propagate(self, state, tof): @@ -55,7 +53,7 @@ def propagate_many(self, state, tofs): rv0 = state.to_value() # TODO: This should probably return a ClassicalStateArray instead, - # see discussion at https://github.com/poliastro/poliastro/pull/1492 + # see discussion at https://github.com/hapsira/hapsira/pull/1492 results = np.array( [farnocchia_rv_fast(k, *rv0, tof) for tof in tofs.to_value(u.s)] ) diff --git a/src/poliastro/twobody/propagation/gooding.py b/src/hapsira/twobody/propagation/gooding.py similarity index 86% rename from src/poliastro/twobody/propagation/gooding.py rename to src/hapsira/twobody/propagation/gooding.py index 9eb5dc314..3c0da8fcd 100644 --- a/src/poliastro/twobody/propagation/gooding.py +++ b/src/hapsira/twobody/propagation/gooding.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import gooding_coe as gooding_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import gooding_coe as gooding_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/markley.py b/src/hapsira/twobody/propagation/markley.py similarity index 83% rename from src/poliastro/twobody/propagation/markley.py rename to src/hapsira/twobody/propagation/markley.py index e00f1b3e7..ed99efec2 100644 --- a/src/poliastro/twobody/propagation/markley.py +++ b/src/hapsira/twobody/propagation/markley.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import markley_coe as markley_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import markley_coe as markley_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/mikkola.py b/src/hapsira/twobody/propagation/mikkola.py similarity index 83% rename from src/poliastro/twobody/propagation/mikkola.py rename to src/hapsira/twobody/propagation/mikkola.py index 64b963245..1f5233af7 100644 --- a/src/poliastro/twobody/propagation/mikkola.py +++ b/src/hapsira/twobody/propagation/mikkola.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import mikkola_coe as mikkola_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import mikkola_coe as mikkola_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/pimienta.py b/src/hapsira/twobody/propagation/pimienta.py similarity index 85% rename from src/poliastro/twobody/propagation/pimienta.py rename to src/hapsira/twobody/propagation/pimienta.py index 2a4ff6010..0e21908db 100644 --- a/src/poliastro/twobody/propagation/pimienta.py +++ b/src/hapsira/twobody/propagation/pimienta.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import pimienta_coe as pimienta_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import pimienta_coe as pimienta_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/recseries.py b/src/hapsira/twobody/propagation/recseries.py similarity index 88% rename from src/poliastro/twobody/propagation/recseries.py rename to src/hapsira/twobody/propagation/recseries.py index 6e7f4ebe9..cff5a0c23 100644 --- a/src/poliastro/twobody/propagation/recseries.py +++ b/src/hapsira/twobody/propagation/recseries.py @@ -2,9 +2,9 @@ from astropy import units as u -from poliastro.core.propagation import recseries_coe as recseries_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import ClassicalState +from hapsira.core.propagation import recseries_coe as recseries_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import ClassicalState from ._compat import OldPropagatorModule diff --git a/src/poliastro/twobody/propagation/vallado.py b/src/hapsira/twobody/propagation/vallado.py similarity index 83% rename from src/poliastro/twobody/propagation/vallado.py rename to src/hapsira/twobody/propagation/vallado.py index 9e14e3c3f..06d203929 100644 --- a/src/poliastro/twobody/propagation/vallado.py +++ b/src/hapsira/twobody/propagation/vallado.py @@ -3,9 +3,9 @@ from astropy import units as u import numpy as np -from poliastro.core.propagation import vallado as vallado_fast -from poliastro.twobody.propagation.enums import PropagatorKind -from poliastro.twobody.states import RVState +from hapsira.core.propagation import vallado as vallado_fast +from hapsira.twobody.propagation.enums import PropagatorKind +from hapsira.twobody.states import RVState from ._compat import OldPropagatorModule @@ -40,9 +40,7 @@ class ValladoPropagator: """ kind = ( - PropagatorKind.ELLIPTIC - | PropagatorKind.PARABOLIC - | PropagatorKind.HYPERBOLIC + PropagatorKind.ELLIPTIC | PropagatorKind.PARABOLIC | PropagatorKind.HYPERBOLIC ) def __init__(self, numiter=350): diff --git a/src/poliastro/twobody/sampling.py b/src/hapsira/twobody/sampling.py similarity index 90% rename from src/poliastro/twobody/sampling.py rename to src/hapsira/twobody/sampling.py index c793038c1..89f4bcf73 100644 --- a/src/poliastro/twobody/sampling.py +++ b/src/hapsira/twobody/sampling.py @@ -2,10 +2,10 @@ from astropy.coordinates import CartesianDifferential, CartesianRepresentation import numpy as np -from poliastro.twobody.angles import E_to_nu, nu_to_E -from poliastro.twobody.elements import coe2rv_many, hyp_nu_limit, t_p -from poliastro.twobody.propagation import FarnocchiaPropagator -from poliastro.util import alinspace, wrap_angle +from hapsira.twobody.angles import E_to_nu, nu_to_E +from hapsira.twobody.elements import coe2rv_many, hyp_nu_limit, t_p +from hapsira.twobody.propagation import FarnocchiaPropagator +from hapsira.util import alinspace, wrap_angle @u.quantity_input(ecc=u.one, min_nu=u.rad, max_nu=u.rad) @@ -45,9 +45,7 @@ def sample_closed(ecc, min_nu, max_nu=None, num_values=100): @u.quantity_input(min_nu=u.rad, ecc=u.one, max_nu=u.rad, nu_limit=u.rad) -def sample_open( - ecc, min_nu=None, max_nu=None, num_values=100, *, nu_limit=None -): +def sample_open(ecc, min_nu=None, max_nu=None, num_values=100, *, nu_limit=None): """Sample an open orbit. Notes @@ -93,7 +91,7 @@ def sample(self, orbit): # However, we are also returning the epochs # (since computing them here is more efficient than doing it from the outside) # but there are open questions around StateArrays and epochs. - # See discussion at https://github.com/poliastro/poliastro/pull/1492 + # See discussion at https://github.com/hapsira/hapsira/pull/1492 cartesian = CartesianRepresentation( rr, differentials=CartesianDifferential(vv, xyz_axis=1), xyz_axis=1 ) @@ -101,9 +99,7 @@ def sample(self, orbit): class TrueAnomalyBounds(SamplingStrategy): - def __init__( - self, min_nu=None, max_nu=None, num_values=100, hyp_r_factor=3.0 - ): + def __init__(self, min_nu=None, max_nu=None, num_values=100, hyp_r_factor=3.0): self._min_nu = min_nu self._max_nu = max_nu self._hyp_r_factor = hyp_r_factor @@ -144,9 +140,7 @@ def sample(self, orbit): ] # Unwrap time increments to return monotonic increasing epochs # Notice that astropy.units does not support the period kwarg for np.unwrap - delta_ts = ( - np.unwrap(delta_ts, period=orbit.period.to_value(u.s)) << u.s - ) + delta_ts = np.unwrap(delta_ts, period=orbit.period.to_value(u.s)) << u.s epochs = orbit.epoch + (delta_ts - orbit.t_p) n = nu_values.shape[0] @@ -166,7 +160,7 @@ def sample(self, orbit): # However, we are also returning the epochs # (since computing them here is more efficient than doing it from the outside) # but there are open questions around StateArrays and epochs. - # See discussion at https://github.com/poliastro/poliastro/pull/1492 + # See discussion at https://github.com/hapsira/hapsira/pull/1492 cartesian = CartesianRepresentation( rr, differentials=CartesianDifferential(vv, xyz_axis=1), xyz_axis=1 ) diff --git a/src/poliastro/twobody/states.py b/src/hapsira/twobody/states.py similarity index 93% rename from src/poliastro/twobody/states.py rename to src/hapsira/twobody/states.py index af6744023..53899ca37 100644 --- a/src/poliastro/twobody/states.py +++ b/src/hapsira/twobody/states.py @@ -2,8 +2,8 @@ from astropy import units as u -from poliastro.core.elements import coe2mee, coe2rv, mee2coe, mee2rv, rv2coe -from poliastro.twobody.elements import mean_motion, period, t_p +from hapsira.core.elements import coe2mee, coe2rv, mee2coe, mee2rv, rv2coe +from hapsira.twobody.elements import mean_motion, period, t_p class BaseState: @@ -18,7 +18,7 @@ def __init__(self, attractor, elements, plane): Main attractor. elements : tuple Six-tuple of orbital elements for this state. - plane : ~poliastro.frames.enums.Planes + plane : ~hapsira.frames.enums.Planes Reference plane for the elements. """ @@ -171,13 +171,9 @@ def to_value(self): def to_vectors(self): """Converts to position and velocity vector representation.""" - r, v = coe2rv( - self.attractor.k.to_value(u.km**3 / u.s**2), *self.to_value() - ) + r, v = coe2rv(self.attractor.k.to_value(u.km**3 / u.s**2), *self.to_value()) - return RVState( - self.attractor, (r << u.km, v << u.km / u.s), self.plane - ) + return RVState(self.attractor, (r << u.km, v << u.km / u.s), self.plane) def to_classical(self): """Converts to classical orbital elements representation.""" @@ -334,6 +330,4 @@ def to_classical(self): def to_vectors(self): """Converts to position and velocity vector representation.""" r, v = mee2rv(*self.to_value()) - return RVState( - self.attractor, (r << u.km, v << u.km / u.s), self.plane - ) + return RVState(self.attractor, (r << u.km, v << u.km / u.s), self.plane) diff --git a/src/hapsira/twobody/thrust/__init__.py b/src/hapsira/twobody/thrust/__init__.py new file mode 100644 index 000000000..924fcb10a --- /dev/null +++ b/src/hapsira/twobody/thrust/__init__.py @@ -0,0 +1,13 @@ +from hapsira.twobody.thrust.change_a_inc import change_a_inc +from hapsira.twobody.thrust.change_argp import change_argp +from hapsira.twobody.thrust.change_ecc_inc import change_ecc_inc +from hapsira.twobody.thrust.change_ecc_quasioptimal import ( + change_ecc_quasioptimal, +) + +__all__ = [ + "change_a_inc", + "change_argp", + "change_ecc_quasioptimal", + "change_ecc_inc", +] diff --git a/src/poliastro/twobody/thrust/change_a_inc.py b/src/hapsira/twobody/thrust/change_a_inc.py similarity index 96% rename from src/poliastro/twobody/thrust/change_a_inc.py rename to src/hapsira/twobody/thrust/change_a_inc.py index 97c8775ae..fb391255f 100644 --- a/src/poliastro/twobody/thrust/change_a_inc.py +++ b/src/hapsira/twobody/thrust/change_a_inc.py @@ -1,6 +1,6 @@ from astropy import units as u -from poliastro.core.thrust.change_a_inc import ( +from hapsira.core.thrust.change_a_inc import ( change_a_inc as change_a_inc_fast, ) diff --git a/src/poliastro/twobody/thrust/change_argp.py b/src/hapsira/twobody/thrust/change_argp.py similarity index 94% rename from src/poliastro/twobody/thrust/change_argp.py rename to src/hapsira/twobody/thrust/change_argp.py index 4ef827723..cc574234e 100644 --- a/src/poliastro/twobody/thrust/change_argp.py +++ b/src/hapsira/twobody/thrust/change_argp.py @@ -9,7 +9,7 @@ """ from astropy import units as u -from poliastro.core.thrust.change_argp import change_argp as change_a_inc_fast +from hapsira.core.thrust.change_argp import change_argp as change_a_inc_fast def change_argp(k, a, ecc, argp_0, argp_f, f): diff --git a/src/poliastro/twobody/thrust/change_ecc_inc.py b/src/hapsira/twobody/thrust/change_ecc_inc.py similarity index 96% rename from src/poliastro/twobody/thrust/change_ecc_inc.py rename to src/hapsira/twobody/thrust/change_ecc_inc.py index 206c81573..4c3ca0c45 100644 --- a/src/poliastro/twobody/thrust/change_ecc_inc.py +++ b/src/hapsira/twobody/thrust/change_ecc_inc.py @@ -1,6 +1,6 @@ from astropy import units as u -from poliastro.core.thrust.change_ecc_inc import ( +from hapsira.core.thrust.change_ecc_inc import ( change_ecc_inc as change_ecc_inc_fast, ) diff --git a/src/poliastro/twobody/thrust/change_ecc_quasioptimal.py b/src/hapsira/twobody/thrust/change_ecc_quasioptimal.py similarity index 92% rename from src/poliastro/twobody/thrust/change_ecc_quasioptimal.py rename to src/hapsira/twobody/thrust/change_ecc_quasioptimal.py index 1bf7a3f55..c7f13305b 100644 --- a/src/poliastro/twobody/thrust/change_ecc_quasioptimal.py +++ b/src/hapsira/twobody/thrust/change_ecc_quasioptimal.py @@ -11,8 +11,8 @@ import numpy as np from numpy import cross -from poliastro.core.thrust.change_ecc_quasioptimal import extra_quantities -from poliastro.util import norm +from hapsira.core.thrust.change_ecc_quasioptimal import extra_quantities +from hapsira.util import norm def change_ecc_quasioptimal(orb_0, ecc_f, f): diff --git a/src/poliastro/util.py b/src/hapsira/util.py similarity index 92% rename from src/poliastro/util.py rename to src/hapsira/util.py index 016c39e53..d1886867a 100644 --- a/src/poliastro/util.py +++ b/src/hapsira/util.py @@ -4,8 +4,8 @@ from astropy.time import Time import numpy as np -from poliastro._math.linalg import norm as norm_fast -from poliastro.core.util import alinspace as alinspace_fast +from hapsira._math.linalg import norm as norm_fast +from hapsira.core.util import alinspace as alinspace_fast def norm(vec, axis=None): @@ -93,9 +93,7 @@ def alinspace(start, stop=None, *, num=50, endpoint=True): stop = start + 2 * np.pi * u.rad return ( - alinspace_fast( - start.to_value(u.rad), stop.to_value(u.rad), num, endpoint - ) + alinspace_fast(start.to_value(u.rad), stop.to_value(u.rad), num, endpoint) * u.rad ) diff --git a/src/poliastro/warnings.py b/src/hapsira/warnings.py similarity index 100% rename from src/poliastro/warnings.py rename to src/hapsira/warnings.py diff --git a/src/poliastro/core/propagation/__init__.py b/src/poliastro/core/propagation/__init__.py deleted file mode 100644 index ac23044af..000000000 --- a/src/poliastro/core/propagation/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -"""Low level propagation algorithms.""" - -from poliastro.core.propagation.base import func_twobody -from poliastro.core.propagation.cowell import cowell -from poliastro.core.propagation.danby import danby, danby_coe -from poliastro.core.propagation.farnocchia import ( - farnocchia_coe, - farnocchia_rv as farnocchia, -) -from poliastro.core.propagation.gooding import gooding, gooding_coe -from poliastro.core.propagation.markley import markley, markley_coe -from poliastro.core.propagation.mikkola import mikkola, mikkola_coe -from poliastro.core.propagation.pimienta import pimienta, pimienta_coe -from poliastro.core.propagation.recseries import recseries, recseries_coe -from poliastro.core.propagation.vallado import vallado - -__all__ = [ - "cowell", - "func_twobody", - "farnocchia_coe", - "farnocchia", - "vallado", - "mikkola_coe", - "mikkola", - "markley_coe", - "markley", - "pimienta_coe", - "pimienta", - "gooding_coe", - "gooding", - "danby_coe", - "danby", - "recseries_coe", - "recseries", -] diff --git a/src/poliastro/core/thrust/__init__.py b/src/poliastro/core/thrust/__init__.py deleted file mode 100644 index f257ea2ed..000000000 --- a/src/poliastro/core/thrust/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from poliastro.core.thrust.change_a_inc import change_a_inc -from poliastro.core.thrust.change_argp import change_argp -from poliastro.core.thrust.change_ecc_inc import change_ecc_inc - -__all__ = ["change_a_inc", "change_argp", "change_ecc_inc"] diff --git a/src/poliastro/earth/atmosphere/__init__.py b/src/poliastro/earth/atmosphere/__init__.py deleted file mode 100644 index 858140e6a..000000000 --- a/src/poliastro/earth/atmosphere/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from poliastro.earth.atmosphere.coesa62 import COESA62 -from poliastro.earth.atmosphere.coesa76 import COESA76 - -__all__ = ["COESA62", "COESA76"] diff --git a/src/poliastro/frames/__init__.py b/src/poliastro/frames/__init__.py deleted file mode 100644 index ab06c3af3..000000000 --- a/src/poliastro/frames/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from poliastro.frames.enums import Planes - -__all__ = [ - "Planes", -] diff --git a/src/poliastro/plotting/__init__.py b/src/poliastro/plotting/__init__.py deleted file mode 100644 index 17d10e83f..000000000 --- a/src/poliastro/plotting/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from poliastro.plotting.gabbard import GabbardPlotter -from poliastro.plotting.orbit.plotter import OrbitPlotter -from poliastro.plotting.porkchop import PorkchopPlotter -from poliastro.plotting.tisserand import TisserandPlotter - -__all__ = [ - "OrbitPlotter", - "GabbardPlotter", - "PorkchopPlotter", - "TisserandPlotter", -] diff --git a/src/poliastro/twobody/__init__.py b/src/poliastro/twobody/__init__.py deleted file mode 100644 index 9cf3285c3..000000000 --- a/src/poliastro/twobody/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from poliastro.twobody.orbit import Orbit - -__all__ = ["Orbit"] diff --git a/src/poliastro/twobody/orbit/__init__.py b/src/poliastro/twobody/orbit/__init__.py deleted file mode 100644 index ccfc0f1db..000000000 --- a/src/poliastro/twobody/orbit/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from poliastro.twobody.orbit.scalar import Orbit - -__all__ = ["Orbit"] diff --git a/src/poliastro/twobody/thrust/__init__.py b/src/poliastro/twobody/thrust/__init__.py deleted file mode 100644 index 5b77eeee7..000000000 --- a/src/poliastro/twobody/thrust/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from poliastro.twobody.thrust.change_a_inc import change_a_inc -from poliastro.twobody.thrust.change_argp import change_argp -from poliastro.twobody.thrust.change_ecc_inc import change_ecc_inc -from poliastro.twobody.thrust.change_ecc_quasioptimal import ( - change_ecc_quasioptimal, -) - -__all__ = [ - "change_a_inc", - "change_argp", - "change_ecc_quasioptimal", - "change_ecc_inc", -] diff --git a/tests/conftest.py b/tests/conftest.py index a7c710108..e99c92396 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,8 +3,8 @@ from astropy.time import Time import pytest -from poliastro.bodies import Earth, Sun -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Sun +from hapsira.twobody import Orbit solar_system_ephemeris.set("builtin") diff --git a/tests/test_bodies.py b/tests/test_bodies.py index 14076d4ef..4e6143460 100644 --- a/tests/test_bodies.py +++ b/tests/test_bodies.py @@ -4,8 +4,8 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Body, Earth, Jupiter, Sun -from poliastro.examples import iss +from hapsira.bodies import Body, Earth, Jupiter, Sun +from hapsira.examples import iss def test_body_has_k_given_in_constructor(): diff --git a/tests/test_czml.py b/tests/test_czml.py index b967cf4ca..653750b7f 100644 --- a/tests/test_czml.py +++ b/tests/test_czml.py @@ -7,19 +7,17 @@ # TODO: Should we have way to handle this configuration without importing numba? import pytest -from poliastro.bodies import Mars -from poliastro.examples import iss, molniya +from hapsira.bodies import Mars +from hapsira.examples import iss, molniya try: from czml3.core import Document - from poliastro.czml.extract_czml import CZMLExtractor + from hapsira.czml.extract_czml import CZMLExtractor except ImportError: pass -pytestmark = pytest.mark.skipif( - "czml3" not in sys.modules, reason="requires czml3" -) +pytestmark = pytest.mark.skipif("czml3" not in sys.modules, reason="requires czml3") def test_czml_get_document(): @@ -41,7 +39,9 @@ def test_czml_custom_packet(): sample_points = 10 - pr_map_url = "https://upload.wikimedia.org/wikipedia/commons/c/c4/Earthmap1000x500compac.jpg" + pr_map_url = ( + "https://upload.wikimedia.org/wikipedia/commons/c/c4/Earthmap1000x500compac.jpg" + ) scene = False expected_packet = """{ "id": "custom_properties", @@ -471,9 +471,7 @@ def test_czml_add_trajectory(expected_doc_add_trajectory): extractor = CZMLExtractor(start_epoch, end_epoch, sample_points) - extractor.add_trajectory( - positions, epochs, label_text="Test", path_color=color - ) + extractor.add_trajectory(positions, epochs, label_text="Test", path_color=color) assert repr(extractor.packets) == expected_doc_add_trajectory @@ -495,9 +493,7 @@ def test_czml_raises_error_if_length_of_points_and_epochs_not_same(): extractor = CZMLExtractor(start_epoch, end_epoch, sample_points) with pytest.raises(ValueError) as excinfo: - extractor.add_trajectory( - positions, epochs, label_text="Test", path_color=color - ) + extractor.add_trajectory(positions, epochs, label_text="Test", path_color=color) assert "Number of Points and Epochs must be equal." in excinfo.exconly() @@ -820,9 +816,7 @@ def test_czml_ground_station(): label_text="GS test", ) - extractor.add_ground_station( - [0.70930 * u.rad, 0.40046 * u.rad], label_show=False - ) + extractor.add_ground_station([0.70930 * u.rad, 0.40046 * u.rad], label_show=False) assert repr(extractor.packets) == expected_doc @@ -924,7 +918,4 @@ def test_czml_add_trajectory_raises_error_for_groundtrack_show(): with pytest.raises(NotImplementedError) as excinfo: extractor.add_trajectory(positions, epochs, groundtrack_show=True) - assert ( - "Ground tracking for trajectory not implemented yet" - in excinfo.exconly() - ) + assert "Ground tracking for trajectory not implemented yet" in excinfo.exconly() diff --git a/tests/test_ephem.py b/tests/test_ephem.py index 7dd060482..a940b36f2 100644 --- a/tests/test_ephem.py +++ b/tests/test_ephem.py @@ -12,19 +12,17 @@ import numpy as np import pytest -from poliastro.bodies import Earth, Venus -from poliastro.ephem import Ephem, SincInterpolator, SplineInterpolator -from poliastro.frames import Planes -from poliastro.twobody.orbit import Orbit -from poliastro.warnings import TimeScaleWarning +from hapsira.bodies import Earth, Venus +from hapsira.ephem import Ephem, SincInterpolator, SplineInterpolator +from hapsira.frames import Planes +from hapsira.twobody.orbit import Orbit +from hapsira.warnings import TimeScaleWarning AVAILABLE_INTERPOLATORS = [SincInterpolator(), SplineInterpolator()] AVAILABLE_PLANES = Planes.__members__.values() -def assert_coordinates_allclose( - actual, desired, rtol=1e-7, atol_scale=None, **kwargs -): +def assert_coordinates_allclose(actual, desired, rtol=1e-7, atol_scale=None, **kwargs): if atol_scale is None: atol_scale = 0 @@ -83,8 +81,7 @@ def test_ephem_fails_if_dimensions_are_not_correct(epochs, coordinates): with pytest.raises(ValueError) as excinfo: Ephem(epochs[0], coordinates, unused_plane) assert ( - "Coordinates and epochs must have dimension 1, got 0 and 1" - in excinfo.exconly() + "Coordinates and epochs must have dimension 1, got 0 and 1" in excinfo.exconly() ) @@ -142,18 +139,14 @@ def test_ephem_sample_scalar_epoch_and_coordinates_returns_exactly_same_input( @pytest.mark.parametrize("interpolator", AVAILABLE_INTERPOLATORS) -def test_ephem_sample_same_epochs_returns_same_input( - epochs, coordinates, interpolator -): +def test_ephem_sample_same_epochs_returns_same_input(epochs, coordinates, interpolator): unused_plane = Planes.EARTH_EQUATOR ephem = Ephem(coordinates, epochs, unused_plane) result_coordinates = ephem.sample(epochs, interpolator=interpolator) # TODO: Should it return exactly the same? - assert_coordinates_allclose( - result_coordinates, coordinates, atol_scale=1e-17 - ) + assert_coordinates_allclose(result_coordinates, coordinates, atol_scale=1e-17) @pytest.mark.parametrize("interpolator", AVAILABLE_INTERPOLATORS) @@ -166,9 +159,7 @@ def test_ephem_sample_existing_epochs_returns_corresponding_input( result_coordinates = ephem.sample(epochs[::2], interpolator=interpolator) # Exactly the same - assert_coordinates_allclose( - result_coordinates, coordinates[::2], atol_scale=1e-17 - ) + assert_coordinates_allclose(result_coordinates, coordinates[::2], atol_scale=1e-17) def test_rv_no_parameters_returns_input_vectors(coordinates, epochs): @@ -205,9 +196,7 @@ def test_rv_scalar_epoch_returns_scalar_vectors(coordinates, epochs): (Planes.EARTH_ECLIPTIC, BarycentricMeanEcliptic, 1e-5), ], ) -def test_ephem_from_body_has_expected_properties( - interpolator, plane, FrameClass, rtol -): +def test_ephem_from_body_has_expected_properties(interpolator, plane, FrameClass, rtol): epochs = Time( [ "2020-03-01 12:00:00", @@ -267,7 +256,7 @@ def test_from_body_scalar_epoch_uses_reshaped_epochs(): assert ephem.epochs == expected_epochs -@mock.patch("poliastro.ephem.Horizons") +@mock.patch("hapsira.ephem.Horizons") @pytest.mark.parametrize( "attractor,location_str", [(None, "@ssb"), (Earth, "500@399"), (Venus, "500@299")], @@ -294,9 +283,7 @@ def test_ephem_from_horizons_calls_horizons_with_correct_parameters( expected_coordinates = CartesianRepresentation( [(1, 0, 0)] * u.au, xyz_axis=1, - differentials=CartesianDifferential( - [(0, 1, 0)] * (u.au / u.day), xyz_axis=1 - ), + differentials=CartesianDifferential([(0, 1, 0)] * (u.au / u.day), xyz_axis=1), ) ephem = Ephem.from_horizons( @@ -320,7 +307,7 @@ def test_ephem_from_horizons_calls_horizons_with_correct_parameters( assert_coordinates_allclose(coordinates, expected_coordinates) -@mock.patch("poliastro.ephem.Horizons") +@mock.patch("hapsira.ephem.Horizons") def test_from_horizons_scalar_epoch_uses_reshaped_epochs(horizons_mock): unused_name = "Strange Object" unused_id_type = "id_type" diff --git a/tests/test_examples.py b/tests/test_examples.py index 8ab5fb1a5..34e2c07d7 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,2 +1,2 @@ # This line tests all the statements so far -from poliastro import examples # noqa +from hapsira import examples # noqa diff --git a/tests/test_frames.py b/tests/test_frames.py index 3863fb70a..405e61487 100644 --- a/tests/test_frames.py +++ b/tests/test_frames.py @@ -5,7 +5,7 @@ import numpy as np import pytest -from poliastro.bodies import ( +from hapsira.bodies import ( Earth, Jupiter, Mars, @@ -17,9 +17,9 @@ Uranus, Venus, ) -from poliastro.constants import J2000 -from poliastro.frames.ecliptic import GeocentricSolarEcliptic -from poliastro.frames.equatorial import ( +from hapsira.constants import J2000 +from hapsira.frames.ecliptic import GeocentricSolarEcliptic +from hapsira.frames.equatorial import ( GCRS, HCRS, ICRS, @@ -31,7 +31,7 @@ UranusICRS, VenusICRS, ) -from poliastro.frames.fixed import ( +from hapsira.frames.fixed import ( ITRS, JupiterFixed, MarsFixed, @@ -115,9 +115,7 @@ def test_icrs_body_position_to_planetary_frame_yields_zeros(body, frame): .represent_as(CartesianRepresentation) ) - assert_quantity_allclose( - vector_result.xyz, [0, 0, 0] * u.km, atol=1e-7 * u.km - ) + assert_quantity_allclose(vector_result.xyz, [0, 0, 0] * u.km, atol=1e-7 * u.km) @pytest.mark.parametrize( @@ -134,9 +132,7 @@ def test_icrs_body_position_to_planetary_frame_yields_zeros(body, frame): (Neptune, NeptuneFixed, NeptuneICRS), ], ) -def test_planetary_fixed_inertial_conversion( - body, fixed_frame, inertial_frame -): +def test_planetary_fixed_inertial_conversion(body, fixed_frame, inertial_frame): epoch = J2000 fixed_position = fixed_frame( 0 * u.deg, @@ -145,9 +141,7 @@ def test_planetary_fixed_inertial_conversion( obstime=epoch, representation_type="spherical", ) - inertial_position = fixed_position.transform_to( - inertial_frame(obstime=epoch) - ) + inertial_position = fixed_position.transform_to(inertial_frame(obstime=epoch)) assert_quantity_allclose( fixed_position.spherical.distance, body.R, atol=1e-7 * u.km ) @@ -170,9 +164,7 @@ def test_planetary_fixed_inertial_conversion( (Neptune, NeptuneFixed, NeptuneICRS), ], ) -def test_planetary_inertial_fixed_conversion( - body, fixed_frame, inertial_frame -): +def test_planetary_inertial_fixed_conversion(body, fixed_frame, inertial_frame): epoch = J2000 inertial_position = inertial_frame( 0 * u.deg, @@ -204,9 +196,7 @@ def test_planetary_inertial_fixed_conversion( (Neptune, NeptuneFixed, NeptuneICRS), ], ) -def test_planetary_inertial_roundtrip_vector( - body, fixed_frame, inertial_frame -): +def test_planetary_inertial_roundtrip_vector(body, fixed_frame, inertial_frame): epoch = J2000 sampling_time = 10 * u.s fixed_position = fixed_frame( @@ -249,9 +239,7 @@ def test_GeocentricSolarEcliptic_against_data(): def test_GeocentricSolarEcliptic_raises_error_nonscalar_obstime(): with pytest.raises(ValueError) as excinfo: gcrs = GCRS(ra="02h31m49.09s", dec="+89d15m50.8s", distance=200 * u.km) - gcrs.transform_to( - GeocentricSolarEcliptic(obstime=Time(["J3200", "J2000"])) - ) + gcrs.transform_to(GeocentricSolarEcliptic(obstime=Time(["J3200", "J2000"]))) assert ( "To perform this transformation the " "obstime Attribute must be a scalar." in str(excinfo.value) @@ -300,9 +288,7 @@ def test_GeocentricSolarEcliptic_raises_error_nonscalar_obstime(): ), ], ) -def test_fixed_frame_calculation_gives_expected_result( - body, fixed_frame, radecW -): +def test_fixed_frame_calculation_gives_expected_result(body, fixed_frame, radecW): epoch = J2000 fixed_position = fixed_frame( 0 * u.deg, diff --git a/tests/test_hyper.py b/tests/test_hyper.py index aa0fa3e46..1caf64fe7 100644 --- a/tests/test_hyper.py +++ b/tests/test_hyper.py @@ -3,7 +3,7 @@ import pytest from scipy import special -from poliastro._math.special import hyp2f1b as hyp2f1 +from hapsira._math.special import hyp2f1b as hyp2f1 @pytest.mark.parametrize("x", np.linspace(0, 1, num=11)) diff --git a/tests/test_iod.py b/tests/test_iod.py index 1dfe82ffa..ba44a1f37 100644 --- a/tests/test_iod.py +++ b/tests/test_iod.py @@ -2,9 +2,9 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Earth -from poliastro.core import iod -from poliastro.iod import izzo, vallado +from hapsira.bodies import Earth +from hapsira.core import iod +from hapsira.iod import izzo, vallado @pytest.mark.parametrize("lambert", [vallado.lambert, izzo.lambert]) @@ -119,9 +119,7 @@ def test_collinear_vectors_input(lambert): @pytest.mark.parametrize("M", [1, 2, 3]) def test_minimum_time_of_flight_convergence(M): ll = -1 - x_T_min_expected, T_min_expected = iod._compute_T_min( - ll, M, numiter=10, rtol=1e-8 - ) + x_T_min_expected, T_min_expected = iod._compute_T_min(ll, M, numiter=10, rtol=1e-8) y = iod._compute_y(x_T_min_expected, ll) T_min = iod._tof_equation_y(x_T_min_expected, y, 0.0, ll, M) assert T_min_expected == T_min @@ -173,6 +171,6 @@ def test_vallado_not_implemented_multirev(): with pytest.raises(NotImplementedError) as excinfo: vallado.lambert(k, r0, r, tof, M=1) assert ( - "Multi-revolution scenario not supported for Vallado. See issue https://github.com/poliastro/poliastro/issues/858" + "Multi-revolution scenario not supported for Vallado. See issue https://github.com/hapsira/hapsira/issues/858" in excinfo.exconly() ) diff --git a/tests/test_maneuver.py b/tests/test_maneuver.py index c36d9218d..41f2cb456 100644 --- a/tests/test_maneuver.py +++ b/tests/test_maneuver.py @@ -7,10 +7,10 @@ from numpy.testing import assert_allclose import pytest -from poliastro.bodies import Earth, Mercury, Moon -from poliastro.frames import Planes -from poliastro.maneuver import Maneuver -from poliastro.twobody import Orbit +from hapsira.bodies import Earth, Mercury, Moon +from hapsira.frames import Planes +from hapsira.maneuver import Maneuver +from hapsira.twobody import Orbit def test_maneuver_constructor_raises_error_if_invalid_delta_v(): @@ -19,9 +19,7 @@ def test_maneuver_constructor_raises_error_if_invalid_delta_v(): with pytest.raises(ValueError) as excinfo: with warnings.catch_warnings(): # Different length numpy arrays generate a deprecation warning. - warnings.simplefilter( - "ignore", category=np.VisibleDeprecationWarning - ) + warnings.simplefilter("ignore", category=np.VisibleDeprecationWarning) Maneuver((0 * u.s, dv1), (2 * u.s, dv2)) assert "Delta-V must be three dimensions vectors" in excinfo.exconly() @@ -95,9 +93,7 @@ def test_hohmann_maneuver(nu): man = Maneuver.hohmann(orb_i, Earth.R + alt_f) assert_quantity_allclose(man.get_total_cost(), expected_dv, rtol=1e-5) - assert_quantity_allclose( - man.get_total_time(), expected_total_time, rtol=1e-5 - ) + assert_quantity_allclose(man.get_total_time(), expected_total_time, rtol=1e-5) assert_quantity_allclose( orb_i.apply_maneuver(man).ecc, 0 * u.one, atol=1e-14 * u.one @@ -129,13 +125,9 @@ def test_bielliptic_maneuver(nu): man = Maneuver.bielliptic(orb_i, Earth.R + alt_b, Earth.R + alt_f) - assert_allclose( - orb_i.apply_maneuver(man).ecc, 0 * u.one, atol=1e-12 * u.one - ) + assert_allclose(orb_i.apply_maneuver(man).ecc, 0 * u.one, atol=1e-12 * u.one) assert_quantity_allclose(man.get_total_cost(), expected_dv, rtol=1e-5) - assert_quantity_allclose( - man.get_total_time(), expected_total_time, rtol=1e-6 - ) + assert_quantity_allclose(man.get_total_time(), expected_total_time, rtol=1e-6) def test_apply_maneuver_correct_dimensions(): @@ -161,17 +153,10 @@ def test_repr_maneuver(): alt_fi = 376310.0 * u.km orb_i = Orbit.from_vectors(Earth, r, v) - expected_hohmann_maneuver = ( - "Number of impulses: 2, Total cost: 3.060548 km / s" - ) - expected_bielliptic_maneuver = ( - "Number of impulses: 3, Total cost: 3.122556 km / s" - ) + expected_hohmann_maneuver = "Number of impulses: 2, Total cost: 3.060548 km / s" + expected_bielliptic_maneuver = "Number of impulses: 3, Total cost: 3.122556 km / s" - assert ( - repr(Maneuver.hohmann(orb_i, Earth.R + alt_f)) - == expected_hohmann_maneuver - ) + assert repr(Maneuver.hohmann(orb_i, Earth.R + alt_f)) == expected_hohmann_maneuver assert ( repr(Maneuver.bielliptic(orb_i, Earth.R + alt_b, Earth.R + alt_fi)) == expected_bielliptic_maneuver @@ -189,8 +174,7 @@ def test_repr_maneuver(): 0.001 * u.one, 0.7855682278773197 * u.rad, 2224141.03634 * u.s, - np.array([0, 0.0083290328315531, 0.00833186625871848]) - * (u.km / u.s), + np.array([0, 0.0083290328315531, 0.00833186625871848]) * (u.km / u.s), ), ], ) @@ -209,9 +193,7 @@ def test_correct_pericenter( maneuver = Maneuver.correct_pericenter(ss0, max_delta_r) assert_quantity_allclose(maneuver[0][0], expected_t) - assert_quantity_allclose( - maneuver[0][1].value.tolist(), expected_v.value.tolist() - ) + assert_quantity_allclose(maneuver[0][1].value.tolist(), expected_v.value.tolist()) def test_correct_pericenter_J2_exception(): diff --git a/tests/test_sensors.py b/tests/test_sensors.py index 61057bb45..02b7615f5 100644 --- a/tests/test_sensors.py +++ b/tests/test_sensors.py @@ -2,8 +2,8 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Earth -from poliastro.sensors import ( +from hapsira.bodies import Earth +from hapsira.sensors import ( ground_range_diff_at_azimuth, min_and_max_ground_range, ) @@ -33,9 +33,7 @@ def test_max_and_min_ground_range( altitude, fov, boresight, expected_lat_lon_max, expected_lat_lon_min ): R = Earth.R.to(u.km) - lat_lon_min, lat_lon_max = min_and_max_ground_range( - altitude, fov, boresight, R - ) + lat_lon_min, lat_lon_max = min_and_max_ground_range(altitude, fov, boresight, R) assert_quantity_allclose(lat_lon_max, expected_lat_lon_max, rtol=1e-4) assert_quantity_allclose(lat_lon_min, expected_lat_lon_min, rtol=1e-4) @@ -72,9 +70,7 @@ def test_ground_range_diff_at_azimuth( ground_range_diff, target_lat, target_lon = ground_range_diff_at_azimuth( altitude, fov, boresight, azimuth, nadir_lat, nadir_lon, R ) - assert_quantity_allclose( - ground_range_diff, expected_ground_range_diff, rtol=1e-5 - ) + assert_quantity_allclose(ground_range_diff, expected_ground_range_diff, rtol=1e-5) assert_quantity_allclose(target_lat, expected_target_lat, rtol=1e-6) assert_quantity_allclose(target_lon, expected_target_lon, rtol=1e-6) diff --git a/tests/test_spheroid_location.py b/tests/test_spheroid_location.py index 9f4e6bfb5..5babcbce0 100644 --- a/tests/test_spheroid_location.py +++ b/tests/test_spheroid_location.py @@ -2,8 +2,8 @@ from astropy.tests.helper import assert_quantity_allclose from hypothesis import given, settings, strategies as st -from poliastro.bodies import Earth -from poliastro.spheroid_location import SpheroidLocation +from hapsira.bodies import Earth +from hapsira.spheroid_location import SpheroidLocation @st.composite @@ -110,9 +110,7 @@ def test_cartesian_conversion_approximate(): @settings(deadline=None) @given( - lat=with_units( - elements=st.floats(min_value=-1e-2, max_value=1e-2), unit=u.rad - ), + lat=with_units(elements=st.floats(min_value=-1e-2, max_value=1e-2), unit=u.rad), ) def test_h_calculation_near_lat_singularity(lat): body = Earth diff --git a/tests/test_stumpff.py b/tests/test_stumpff.py index 6f889bed3..4ee7b0be5 100644 --- a/tests/test_stumpff.py +++ b/tests/test_stumpff.py @@ -1,7 +1,7 @@ from numpy import cos, cosh, sin, sinh from numpy.testing import assert_allclose -from poliastro._math.special import stumpff_c2 as c2, stumpff_c3 as c3 +from hapsira._math.special import stumpff_c2 as c2, stumpff_c3 as c3 def test_stumpff_functions_near_zero(): diff --git a/tests/test_util.py b/tests/test_util.py index e44c8ce2b..b264d79f6 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -3,7 +3,7 @@ from astropy.time import Time import pytest -from poliastro.util import time_range +from hapsira.util import time_range def test_time_range_spacing_num_values(): @@ -17,37 +17,26 @@ def test_time_range_spacing_num_values(): result_1 = time_range(start_time, spacing=spacing, num_values=num_values) result_2 = time_range(start_time, end=end_time, num_values=num_values) - result_3 = time_range( - Time(start_time), end=Time(end_time), num_values=num_values - ) + result_3 = time_range(Time(start_time), end=Time(end_time), num_values=num_values) assert len(result_1) == len(result_2) == len(result_3) == num_values assert result_1.scale == result_2.scale == result_3.scale == expected_scale - assert_quantity_allclose( - (result_1[-1] - result_1[0]).to(u.s), expected_duration - ) - assert_quantity_allclose( - (result_2[-1] - result_2[0]).to(u.s), expected_duration - ) - assert_quantity_allclose( - (result_3[-1] - result_3[0]).to(u.s), expected_duration - ) + assert_quantity_allclose((result_1[-1] - result_1[0]).to(u.s), expected_duration) + assert_quantity_allclose((result_2[-1] - result_2[0]).to(u.s), expected_duration) + assert_quantity_allclose((result_3[-1] - result_3[0]).to(u.s), expected_duration) def test_time_range_requires_keyword_arguments(): with pytest.raises(TypeError) as excinfo: time_range(0, 0) # type: ignore assert ( - "TypeError: time_range() takes 1 positional argument but" - in excinfo.exconly() + "TypeError: time_range() takes 1 positional argument but" in excinfo.exconly() ) def test_time_range_raises_error_wrong_arguments(): - exception_message = ( - "ValueError: Either 'end' or 'spacing' must be specified" - ) + exception_message = "ValueError: Either 'end' or 'spacing' must be specified" with pytest.raises(ValueError) as excinfo_1: time_range("2017-10-12 00:00") diff --git a/tests/tests_core/test_core_propagation.py b/tests/tests_core/test_core_propagation.py index 410d51e2a..3c9f7e100 100644 --- a/tests/tests_core/test_core_propagation.py +++ b/tests/tests_core/test_core_propagation.py @@ -2,15 +2,15 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.core.propagation import ( +from hapsira.core.propagation import ( danby_coe, gooding_coe, markley_coe, mikkola_coe, pimienta_coe, ) -from poliastro.core.propagation.farnocchia import farnocchia_coe -from poliastro.examples import iss +from hapsira.core.propagation.farnocchia import farnocchia_coe +from hapsira.examples import iss @pytest.mark.parametrize( diff --git a/tests/tests_core/test_core_util.py b/tests/tests_core/test_core_util.py index 13faff0ae..cc613dc58 100644 --- a/tests/tests_core/test_core_util.py +++ b/tests/tests_core/test_core_util.py @@ -8,22 +8,22 @@ from numpy.testing import assert_allclose, assert_array_equal import pytest -from poliastro.core.util import ( +from hapsira.core.util import ( alinspace, - rotation_matrix as rotation_matrix_poliastro, + rotation_matrix as rotation_matrix_hapsira, spherical_to_cartesian, ) def _test_rotation_matrix_with_v(v, angle, axis): exp = rotation_matrix_astropy(np.degrees(-angle), "xyz"[axis]) @ v - res = rotation_matrix_poliastro(angle, axis) @ v + res = rotation_matrix_hapsira(angle, axis) @ v assert_allclose(exp, res) def _test_rotation_matrix(angle, axis): expected = rotation_matrix_astropy(-np.rad2deg(angle), "xyz"[axis]) - result = rotation_matrix_poliastro(angle, axis) + result = rotation_matrix_hapsira(angle, axis) assert_allclose(expected, result) @@ -37,15 +37,15 @@ def test_rotation_matrix(): # These tests are adapted from astropy: # https://github.com/astropy/astropy/blob/main/astropy/coordinates/tests/test_matrix_utilities.py def test_rotation_matrix_astropy(): - assert_array_equal(rotation_matrix_poliastro(0, 0), np.eye(3)) + assert_array_equal(rotation_matrix_hapsira(0, 0), np.eye(3)) assert_allclose( - rotation_matrix_poliastro(np.deg2rad(-90), 1), + rotation_matrix_hapsira(np.deg2rad(-90), 1), [[0, 0, -1], [0, 1, 0], [1, 0, 0]], atol=1e-12, ) assert_allclose( - rotation_matrix_poliastro(np.deg2rad(90), 2), + rotation_matrix_hapsira(np.deg2rad(90), 2), [[0, -1, 0], [1, 0, 0], [0, 0, 1]], atol=1e-12, ) @@ -53,7 +53,7 @@ def test_rotation_matrix_astropy(): # make sure it also works for very small angles assert_allclose( rotation_matrix_astropy(-0.000001, "x"), - rotation_matrix_poliastro(np.deg2rad(0.000001), 0), + rotation_matrix_hapsira(np.deg2rad(0.000001), 0), ) @@ -81,9 +81,7 @@ def test_spherical_to_cartesian(): result = spherical_to_cartesian( np.array([[0.5, np.pi / 4, -np.pi / 4], [0.5, -np.pi / 4, np.pi / 4]]) ) - expected = np.array( - [[0.25, -0.25, 0.35355339], [-0.25, -0.25, 0.35355339]] - ) + expected = np.array([[0.25, -0.25, 0.35355339], [-0.25, -0.25, 0.35355339]]) assert np.allclose(expected, result) diff --git a/tests/tests_core/tests_threebody/test_cr3bp_quantities_calculations.py b/tests/tests_core/tests_threebody/test_cr3bp_quantities_calculations.py index 01a80041f..0421659c1 100644 --- a/tests/tests_core/tests_threebody/test_cr3bp_quantities_calculations.py +++ b/tests/tests_core/tests_threebody/test_cr3bp_quantities_calculations.py @@ -2,8 +2,8 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Earth, Moon -from poliastro.core.threebody.cr3bp_quantities_calculations import ( +from hapsira.bodies import Earth, Moon +from hapsira.core.threebody.cr3bp_quantities_calculations import ( calculate_mu, calculate_tstar, ) diff --git a/tests/tests_earth/test_earth_util.py b/tests/tests_earth/test_earth_util.py index 80b499015..aad204577 100644 --- a/tests/tests_earth/test_earth_util.py +++ b/tests/tests_earth/test_earth_util.py @@ -2,7 +2,7 @@ from astropy.tests.helper import assert_quantity_allclose from astropy.time import Time -from poliastro.earth.util import get_local_sidereal_time, raan_from_ltan +from hapsira.earth.util import get_local_sidereal_time, raan_from_ltan def test_raan_from_ltan_metopb(): @@ -21,9 +21,7 @@ def test_raan_from_ltan_metopb(): raan = raan_from_ltan(epoch, ltan) - assert_quantity_allclose( - raan.wrap_at(360 * u.deg), expected_raan, atol=0.3 * u.deg - ) + assert_quantity_allclose(raan.wrap_at(360 * u.deg), expected_raan, atol=0.3 * u.deg) def test_raan_from_ltan_sentinel5p(): @@ -41,9 +39,7 @@ def test_raan_from_ltan_sentinel5p(): raan = raan_from_ltan(epoch, ltan) - assert_quantity_allclose( - raan.wrap_at(360 * u.deg), expected_raan, atol=0.3 * u.deg - ) + assert_quantity_allclose(raan.wrap_at(360 * u.deg), expected_raan, atol=0.3 * u.deg) def test_local_sidereal_time(): diff --git a/tests/tests_earth/test_earthsatellite.py b/tests/tests_earth/test_earthsatellite.py index f61af884d..cf656c919 100644 --- a/tests/tests_earth/test_earthsatellite.py +++ b/tests/tests_earth/test_earthsatellite.py @@ -2,11 +2,11 @@ import numpy as np import pytest -from poliastro.bodies import Earth, Mars -from poliastro.earth import EarthSatellite -from poliastro.earth.enums import EarthGravity -from poliastro.spacecraft import Spacecraft -from poliastro.twobody.orbit import Orbit +from hapsira.bodies import Earth, Mars +from hapsira.earth import EarthSatellite +from hapsira.earth.enums import EarthGravity +from hapsira.spacecraft import Spacecraft +from hapsira.twobody.orbit import Orbit def test_earth_satellite_orbit(): diff --git a/tests/tests_earth/tests_atmosphere/test_coesa62.py b/tests/tests_earth/tests_atmosphere/test_coesa62.py index cb7f8d73c..9f1ce7c16 100644 --- a/tests/tests_earth/tests_atmosphere/test_coesa62.py +++ b/tests/tests_earth/tests_atmosphere/test_coesa62.py @@ -3,7 +3,7 @@ from astropy.units import imperial import pytest -from poliastro.earth.atmosphere import COESA62 +from hapsira.earth.atmosphere import COESA62 coesa62 = COESA62() @@ -29,36 +29,21 @@ def test_get_index_coesa62(): coesa62_solutions = { 0.5 * u.km: [284.900 * u.K, 9.54612e2 * u.mbar, 1.1673 * u.kg / u.m**3], 1.0 * u.km: [281.651 * u.K, 8.98762e2 * u.mbar, 1.1117 * u.kg / u.m**3], - 10.0 - * u.km: [223.252 * u.K, 2.64999e2 * u.mbar, 4.1351e-1 * u.kg / u.m**3], - 77.0 - * u.km: [192.340 * u.K, 1.7725e-2 * u.mbar, 3.210e-5 * u.kg / u.m**3], - 86.0 - * u.km: [180.65 * u.K, 3.4313e-3 * u.mbar, 6.617e-6 * u.kg / u.m**3], - 97.0 - * u.km: [201.65 * u.K, 4.8709e-4 * u.mbar, 8.415e-7 * u.kg / u.m**3], - 103.0 - * u.km: [225.65 * u.K, 1.9074e-4 * u.mbar, 2.945e-7 * u.kg / u.m**3], - 115.0 - * u.km: [310.65 * u.K, 4.1224e-5 * u.mbar, 4.623e-8 * u.kg / u.m**3], - 132.0 - * u.km: [600.65 * u.K, 1.0909e-5 * u.mbar, 6.327e-9 * u.kg / u.m**3], - 157.0 - * u.km: [1065.65 * u.K, 4.0409e-6 * u.mbar, 1.321e-9 * u.kg / u.m**3], - 183.0 - * u.km: [1301.65 * u.K, 1.9979e-6 * u.mbar, 5.347e-10 * u.kg / u.m**3], - 201.0 - * u.km: [1405.65 * u.K, 1.3037e-6 * u.mbar, 3.231e-10 * u.kg / u.m**3], - 258.0 - * u.km: [1662.65 * u.K, 4.0061e-7 * u.mbar, 8.394e-11 * u.kg / u.m**3], - 340.0 - * u.km: [1962.65 * u.K, 9.8014e-8 * u.mbar, 1.740e-11 * u.kg / u.m**3], - 482.0 - * u.km: [2373.85 * u.K, 1.3667e-8 * u.mbar, 2.006e-12 * u.kg / u.m**3], - 576.0 - * u.km: [2549.85 * u.K, 4.5072e-9 * u.mbar, 6.158e-13 * u.kg / u.m**3], - 698.0 - * u.km: [2698.45 * u.K, 1.2165e-9 * u.mbar, 1.570e-13 * u.kg / u.m**3], + 10.0 * u.km: [223.252 * u.K, 2.64999e2 * u.mbar, 4.1351e-1 * u.kg / u.m**3], + 77.0 * u.km: [192.340 * u.K, 1.7725e-2 * u.mbar, 3.210e-5 * u.kg / u.m**3], + 86.0 * u.km: [180.65 * u.K, 3.4313e-3 * u.mbar, 6.617e-6 * u.kg / u.m**3], + 97.0 * u.km: [201.65 * u.K, 4.8709e-4 * u.mbar, 8.415e-7 * u.kg / u.m**3], + 103.0 * u.km: [225.65 * u.K, 1.9074e-4 * u.mbar, 2.945e-7 * u.kg / u.m**3], + 115.0 * u.km: [310.65 * u.K, 4.1224e-5 * u.mbar, 4.623e-8 * u.kg / u.m**3], + 132.0 * u.km: [600.65 * u.K, 1.0909e-5 * u.mbar, 6.327e-9 * u.kg / u.m**3], + 157.0 * u.km: [1065.65 * u.K, 4.0409e-6 * u.mbar, 1.321e-9 * u.kg / u.m**3], + 183.0 * u.km: [1301.65 * u.K, 1.9979e-6 * u.mbar, 5.347e-10 * u.kg / u.m**3], + 201.0 * u.km: [1405.65 * u.K, 1.3037e-6 * u.mbar, 3.231e-10 * u.kg / u.m**3], + 258.0 * u.km: [1662.65 * u.K, 4.0061e-7 * u.mbar, 8.394e-11 * u.kg / u.m**3], + 340.0 * u.km: [1962.65 * u.K, 9.8014e-8 * u.mbar, 1.740e-11 * u.kg / u.m**3], + 482.0 * u.km: [2373.85 * u.K, 1.3667e-8 * u.mbar, 2.006e-12 * u.kg / u.m**3], + 576.0 * u.km: [2549.85 * u.K, 4.5072e-9 * u.mbar, 6.158e-13 * u.kg / u.m**3], + 698.0 * u.km: [2698.45 * u.K, 1.2165e-9 * u.mbar, 1.570e-13 * u.kg / u.m**3], } diff --git a/tests/tests_earth/tests_atmosphere/test_coesa76.py b/tests/tests_earth/tests_atmosphere/test_coesa76.py index 7e8ddb3ff..774a70498 100644 --- a/tests/tests_earth/tests_atmosphere/test_coesa76.py +++ b/tests/tests_earth/tests_atmosphere/test_coesa76.py @@ -2,8 +2,8 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.earth.atmosphere import COESA76 -from poliastro.earth.atmosphere.coesa76 import p_coeff, rho_coeff +from hapsira.earth.atmosphere import COESA76 +from hapsira.earth.atmosphere.coesa76 import p_coeff, rho_coeff coesa76 = COESA76() @@ -42,13 +42,8 @@ def test_coefficients_over_86km(): -12.89844, ] - assert ( - coesa76._get_coefficients_avobe_86(350 * u.km, p_coeff) == expected_p - ) - assert ( - coesa76._get_coefficients_avobe_86(350 * u.km, rho_coeff) - == expected_rho - ) + assert coesa76._get_coefficients_avobe_86(350 * u.km, p_coeff) == expected_p + assert coesa76._get_coefficients_avobe_86(350 * u.km, rho_coeff) == expected_rho # SOLUTIONS DIRECTLY TAKEN FROM COESA76 REPORT @@ -56,14 +51,11 @@ def test_coefficients_over_86km(): 0.5 * u.km: [284.90 * u.K, 9.5461e2 * u.mbar, 1.1673 * u.kg / u.m**3], 1.0 * u.km: [281.651 * u.K, 8.9876e2 * u.mbar, 1.1117 * u.kg / u.m**3], 10 * u.km: [223.252 * u.K, 2.6499e2 * u.mbar, 4.1351e-1 * u.kg / u.m**3], - 77 - * u.km: [204.493 * u.K, 1.7286e-2 * u.mbar, 2.9448e-5 * u.kg / u.m**3], + 77 * u.km: [204.493 * u.K, 1.7286e-2 * u.mbar, 2.9448e-5 * u.kg / u.m**3], 86 * u.km: [186.87 * u.K, 3.7338e-3 * u.mbar, 6.958e-6 * u.kg / u.m**3], 92 * u.km: [186.96 * u.K, 1.2887e-3 * u.mbar, 2.393e-6 * u.kg / u.m**3], - 230 - * u.km: [915.78 * u.K, 3.9276e-7 * u.mbar, 1.029e-10 * u.kg / u.m**3], - 1000 - * u.km: [1000.0 * u.K, 7.5138e-11 * u.mbar, 3.561e-15 * u.kg / u.m**3], + 230 * u.km: [915.78 * u.K, 3.9276e-7 * u.mbar, 1.029e-10 * u.kg / u.m**3], + 1000 * u.km: [1000.0 * u.K, 7.5138e-11 * u.mbar, 3.561e-15 * u.kg / u.m**3], } diff --git a/tests/tests_earth/tests_atmosphere/test_jacchia77.py b/tests/tests_earth/tests_atmosphere/test_jacchia77.py index e8ae11289..584854f5d 100644 --- a/tests/tests_earth/tests_atmosphere/test_jacchia77.py +++ b/tests/tests_earth/tests_atmosphere/test_jacchia77.py @@ -3,7 +3,7 @@ import numpy as np import pytest -from poliastro.earth.atmosphere.jacchia import Jacchia77 +from hapsira.earth.atmosphere.jacchia import Jacchia77 # SOLUTIONS DIRECTLY TAKEN FROM JACCHIA77 REPORT AND # https://git.mysmce.com/ccmc-share/modelwebarchive/-/raw/main/Jacchi-Reference-Atmosphere/t1000.out diff --git a/tests/tests_plotting/test_gabbard.py b/tests/tests_plotting/test_gabbard.py index 335416e6d..ee399212f 100644 --- a/tests/tests_plotting/test_gabbard.py +++ b/tests/tests_plotting/test_gabbard.py @@ -2,10 +2,10 @@ from matplotlib import pyplot as plt import pytest -from poliastro.bodies import Earth -from poliastro.examples import iss -from poliastro.plotting.gabbard import GabbardPlotter -from poliastro.twobody import Orbit +from hapsira.bodies import Earth +from hapsira.examples import iss +from hapsira.plotting.gabbard import GabbardPlotter +from hapsira.twobody import Orbit def test_axes_labels_and_title(): diff --git a/tests/tests_plotting/test_misc.py b/tests/tests_plotting/test_misc.py index 983016926..f6e919983 100644 --- a/tests/tests_plotting/test_misc.py +++ b/tests/tests_plotting/test_misc.py @@ -1,9 +1,9 @@ from matplotlib import pyplot as plt import pytest -from poliastro.plotting.misc import plot_solar_system -from poliastro.plotting.orbit.backends import DEFAULT_ORBIT_PLOTTER_BACKENDS -from poliastro.plotting.orbit.backends._base import OrbitPlotterBackend +from hapsira.plotting.misc import plot_solar_system +from hapsira.plotting.orbit.backends import DEFAULT_ORBIT_PLOTTER_BACKENDS +from hapsira.plotting.orbit.backends._base import OrbitPlotterBackend @pytest.mark.parametrize("outer, expected", [(True, 8), (False, 4)]) diff --git a/tests/tests_plotting/test_orbit_plotter.py b/tests/tests_plotting/test_orbit_plotter.py index 82195b0e3..b769979f8 100644 --- a/tests/tests_plotting/test_orbit_plotter.py +++ b/tests/tests_plotting/test_orbit_plotter.py @@ -6,21 +6,21 @@ from matplotlib import pyplot as plt import pytest -from poliastro.bodies import Earth, Jupiter, Mars, Sun -from poliastro.constants import J2000_TDB -from poliastro.ephem import Ephem -from poliastro.examples import churi, iss, molniya -from poliastro.frames import Planes -from poliastro.maneuver import Maneuver -from poliastro.plotting import OrbitPlotter -from poliastro.plotting.orbit.backends import ( +from hapsira.bodies import Earth, Jupiter, Mars, Sun +from hapsira.constants import J2000_TDB +from hapsira.ephem import Ephem +from hapsira.examples import churi, iss, molniya +from hapsira.frames import Planes +from hapsira.maneuver import Maneuver +from hapsira.plotting import OrbitPlotter +from hapsira.plotting.orbit.backends import ( DEFAULT_ORBIT_PLOTTER_BACKENDS, DEFAULT_ORBIT_PLOTTER_BACKENDS_2D, DEFAULT_ORBIT_PLOTTER_BACKENDS_3D, Matplotlib2D, ) -from poliastro.twobody import Orbit -from poliastro.util import time_range +from hapsira.twobody import Orbit +from hapsira.util import time_range # @pytest.mark.parametrize("backend", SUPPORTED_ORBIT_PLOTTER_BACKENDS) # def test_get_figure_has_expected_properties(backend): @@ -159,9 +159,7 @@ def test_set_view(Backend): [(True, (0.0, 0.0, 0.0, 1.0)), (False, (1.0, 1.0, 1.0, 1))], ) @pytest.mark.parametrize("MatplotlibBackend", [Matplotlib2D]) -def test_dark_theme_backend_matplotlib( - MatplotlibBackend, is_dark, expected_bg -): +def test_dark_theme_backend_matplotlib(MatplotlibBackend, is_dark, expected_bg): backend = MatplotlibBackend(use_dark_theme=is_dark) plotter = OrbitPlotter(backend=backend) assert plotter.backend.scene.get_facecolor() == expected_bg @@ -244,7 +242,7 @@ def test_set_frame_plots_same_colors(): def test_redraw_keeps_trajectories(): - # See https://github.com/poliastro/poliastro/issues/518 + # See https://github.com/hapsira/hapsira/issues/518 op = OrbitPlotter() trajectory = churi.sample() op.plot_body_orbit(Mars, J2000_TDB, label="Mars") @@ -262,18 +260,14 @@ def test_plot_ephem_different_plane_raises_error(): unused_coordinates = CartesianRepresentation( [(1, 0, 0)] * u.au, xyz_axis=1, - differentials=CartesianDifferential( - [(0, 1, 0)] * (u.au / u.day), xyz_axis=1 - ), + differentials=CartesianDifferential([(0, 1, 0)] * (u.au / u.day), xyz_axis=1), ) op = OrbitPlotter(plane=Planes.EARTH_ECLIPTIC) op.set_attractor(Sun) op.set_body_frame(Earth) with pytest.raises(ValueError) as excinfo: - op.plot_ephem( - Ephem(unused_epochs, unused_coordinates, Planes.EARTH_EQUATOR) - ) + op.plot_ephem(Ephem(unused_epochs, unused_coordinates, Planes.EARTH_EQUATOR)) assert ( "sample the ephemerides using a different plane or create a new plotter" @@ -348,9 +342,7 @@ def test_plot_ephem_epoch(): epoch = Time("2020-02-14 00:00:00") ephem = Ephem.from_horizons( "2020 CD3", - time_range( - Time("2020-02-13 12:00:00"), end=Time("2020-02-14 12:00:00") - ), + time_range(Time("2020-02-13 12:00:00"), end=Time("2020-02-14 12:00:00")), attractor=Earth, ) @@ -371,9 +363,7 @@ def test_plot_ephem_no_epoch(): epoch = Time("2020-02-14 00:00:00") ephem = Ephem.from_horizons( "2020 CD3", - time_range( - Time("2020-02-13 12:00:00"), end=Time("2020-02-14 12:00:00") - ), + time_range(Time("2020-02-13 12:00:00"), end=Time("2020-02-14 12:00:00")), attractor=Earth, ) @@ -391,7 +381,7 @@ def test_plot_ephem_no_epoch(): def test_body_frame_raises_warning_if_time_is_not_tdb_with_proper_time( recwarn, ): - from poliastro.warnings import TimeScaleWarning + from hapsira.warnings import TimeScaleWarning body = Jupiter epoch = Time("2017-09-29 07:31:26", scale="utc") @@ -405,9 +395,7 @@ def test_body_frame_raises_warning_if_time_is_not_tdb_with_proper_time( assert expected_epoch_string in str(w.message) -@pytest.mark.xfail( - sys.maxsize < 2**32, reason="not supported for 32 bit systems" -) +@pytest.mark.xfail(sys.maxsize < 2**32, reason="not supported for 32 bit systems") @pytest.mark.mpl_image_compare def test_plot_maneuver_using_matplotlib2D_backend(): # Data from Vallado, example 6.1 diff --git a/tests/tests_plotting/test_porkchop.py b/tests/tests_plotting/test_porkchop.py index 95fb915e5..f501e94ff 100644 --- a/tests/tests_plotting/test_porkchop.py +++ b/tests/tests_plotting/test_porkchop.py @@ -1,9 +1,9 @@ from matplotlib import pyplot as plt import pytest -from poliastro.bodies import Earth, Mars -from poliastro.plotting.porkchop import PorkchopPlotter -from poliastro.util import time_range +from hapsira.bodies import Earth, Mars +from hapsira.plotting.porkchop import PorkchopPlotter +from hapsira.util import time_range @pytest.mark.mpl_image_compare @@ -12,9 +12,7 @@ def test_porkchop_plotting(): launch_span = time_range("2005-04-30", end="2005-10-07") arrival_span = time_range("2005-11-16", end="2006-12-21") - porkchop_plot = PorkchopPlotter( - Earth, Mars, launch_span, arrival_span, ax=ax - ) + porkchop_plot = PorkchopPlotter(Earth, Mars, launch_span, arrival_span, ax=ax) dv_dpt, dv_arr, c3dpt, c3arr, tof = porkchop_plot.porkchop() return fig diff --git a/tests/tests_plotting/test_tisserand.py b/tests/tests_plotting/test_tisserand.py index 44ff0a5b7..db4d3fcfb 100644 --- a/tests/tests_plotting/test_tisserand.py +++ b/tests/tests_plotting/test_tisserand.py @@ -2,9 +2,9 @@ from matplotlib import pyplot as plt import pytest -from poliastro.bodies import Earth, Mars, Venus -from poliastro.plotting.tisserand import TisserandKind, TisserandPlotter -from poliastro.plotting.util import BODY_COLORS +from hapsira.bodies import Earth, Mars, Venus +from hapsira.plotting.tisserand import TisserandKind, TisserandPlotter +from hapsira.plotting.util import BODY_COLORS @pytest.mark.mpl_image_compare diff --git a/tests/tests_spacecraft/test_spacecraft.py b/tests/tests_spacecraft/test_spacecraft.py index 27ad06122..befc0e2c3 100644 --- a/tests/tests_spacecraft/test_spacecraft.py +++ b/tests/tests_spacecraft/test_spacecraft.py @@ -2,7 +2,7 @@ from astropy.tests.helper import assert_quantity_allclose import numpy as np -from poliastro.spacecraft import Spacecraft +from hapsira.spacecraft import Spacecraft def test_spacecraft_init(): diff --git a/tests/tests_threebody/test_cr3bp_char_quant.py b/tests/tests_threebody/test_cr3bp_char_quant.py index df0bd8e2b..322a04fea 100644 --- a/tests/tests_threebody/test_cr3bp_char_quant.py +++ b/tests/tests_threebody/test_cr3bp_char_quant.py @@ -2,12 +2,12 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Earth, Moon -from poliastro.core.threebody.cr3bp_quantities_calculations import ( +from hapsira.bodies import Earth, Moon +from hapsira.core.threebody.cr3bp_quantities_calculations import ( calculate_mu, calculate_tstar, ) -from poliastro.threebody.cr3bp_char_quant import SystemChars +from hapsira.threebody.cr3bp_char_quant import SystemChars @pytest.mark.parametrize( diff --git a/tests/tests_threebody/test_flybys.py b/tests/tests_threebody/test_flybys.py index fdd657774..d565a4a88 100644 --- a/tests/tests_threebody/test_flybys.py +++ b/tests/tests_threebody/test_flybys.py @@ -2,8 +2,8 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import Venus -from poliastro.threebody.flybys import compute_flyby +from hapsira.bodies import Venus +from hapsira.threebody.flybys import compute_flyby @pytest.mark.parametrize( @@ -21,11 +21,7 @@ def test_flyby_curtis(theta, expected_V_2_v): expected_delta = 103.6 * u.deg - V_2_v, delta = compute_flyby( - V_1_v, V, Venus.k, Venus.R + periapsis_h, theta - ) + V_2_v, delta = compute_flyby(V_1_v, V, Venus.k, Venus.R + periapsis_h, theta) - assert_quantity_allclose( - V_2_v, expected_V_2_v, rtol=1e-3, atol=1e-15 * u.km / u.s - ) + assert_quantity_allclose(V_2_v, expected_V_2_v, rtol=1e-3, atol=1e-15 * u.km / u.s) assert_quantity_allclose(delta, expected_delta, rtol=1e-3) diff --git a/tests/tests_threebody/test_restricted.py b/tests/tests_threebody/test_restricted.py index 68749851c..fd85d74c3 100644 --- a/tests/tests_threebody/test_restricted.py +++ b/tests/tests_threebody/test_restricted.py @@ -3,8 +3,8 @@ from astropy import units as u from astropy.tests.helper import assert_quantity_allclose -from poliastro.bodies import Earth, Moon -from poliastro.threebody.restricted import lagrange_points_vec +from hapsira.bodies import Earth, Moon +from hapsira.threebody.restricted import lagrange_points_vec def test_lagrange_points_vec(): diff --git a/tests/tests_threebody/test_soi.py b/tests/tests_threebody/test_soi.py index f44b10b88..9879393c8 100644 --- a/tests/tests_threebody/test_soi.py +++ b/tests/tests_threebody/test_soi.py @@ -2,7 +2,7 @@ from astropy.tests.helper import assert_quantity_allclose import pytest -from poliastro.bodies import ( +from hapsira.bodies import ( Earth, Jupiter, Mars, @@ -12,7 +12,7 @@ Uranus, Venus, ) -from poliastro.threebody.soi import hill_radius, laplace_radius +from hapsira.threebody.soi import hill_radius, laplace_radius @pytest.mark.parametrize( @@ -38,9 +38,7 @@ def test_laplace_radius(body, expected_r_SOI): @pytest.mark.parametrize( "body, expected_r_SOI", [ - pytest.param( - Mercury, 2.21e8 * u.m, marks=pytest.mark.xfail - ), # Chebotarev + pytest.param(Mercury, 2.21e8 * u.m, marks=pytest.mark.xfail), # Chebotarev (Mercury, 1.75e8 * u.m), # Our result (Venus, 1.03e9 * u.m), (Earth, 1.49e9 * u.m), diff --git a/tests/tests_twobody/test_angles.py b/tests/tests_twobody/test_angles.py index 9157ca88d..45da70fc3 100644 --- a/tests/tests_twobody/test_angles.py +++ b/tests/tests_twobody/test_angles.py @@ -4,9 +4,9 @@ from numpy.testing import assert_allclose import pytest -from poliastro.bodies import Earth -from poliastro.core.elements import coe2mee, coe2rv, mee2coe, rv2coe -from poliastro.twobody.angles import ( +from hapsira.bodies import Earth +from hapsira.core.elements import coe2mee, coe2rv, mee2coe, rv2coe +from hapsira.twobody.angles import ( E_to_M, E_to_nu, F_to_M, diff --git a/tests/tests_twobody/test_elements.py b/tests/tests_twobody/test_elements.py index 68532a450..192e1530e 100644 --- a/tests/tests_twobody/test_elements.py +++ b/tests/tests_twobody/test_elements.py @@ -1,7 +1,7 @@ from astropy import units as u from astropy.tests.helper import assert_quantity_allclose -from poliastro.twobody.elements import circular_velocity +from hapsira.twobody.elements import circular_velocity def test_simple_circular_velocity(): diff --git a/tests/tests_twobody/test_events.py b/tests/tests_twobody/test_events.py index 19c9116b5..b24e7cb01 100644 --- a/tests/tests_twobody/test_events.py +++ b/tests/tests_twobody/test_events.py @@ -5,13 +5,13 @@ from numpy.linalg import norm import pytest -from poliastro.bodies import Earth -from poliastro.constants import H0_earth, rho0_earth -from poliastro.core.events import line_of_sight -from poliastro.core.perturbations import atmospheric_drag_exponential -from poliastro.core.propagation import func_twobody -from poliastro.twobody import Orbit -from poliastro.twobody.events import ( +from hapsira.bodies import Earth +from hapsira.constants import H0_earth, rho0_earth +from hapsira.core.events import line_of_sight +from hapsira.core.perturbations import atmospheric_drag_exponential +from hapsira.core.propagation import func_twobody +from hapsira.twobody import Orbit +from hapsira.twobody.events import ( AltitudeCrossEvent, LatitudeCrossEvent, LithobrakeEvent, @@ -20,7 +20,7 @@ PenumbraEvent, UmbraEvent, ) -from poliastro.twobody.propagation import CowellPropagator +from hapsira.twobody.propagation import CowellPropagator @pytest.mark.slow @@ -141,9 +141,7 @@ def test_umbra_event_not_triggering_is_ok(): def test_umbra_event_crossing(): - expected_umbra_t = Time( - "2020-01-01 00:04:51.328", scale="utc" - ) # From Orekit. + expected_umbra_t = Time("2020-01-01 00:04:51.328", scale="utc") # From Orekit. attractor = Earth tof = 2 * u.d epoch = Time("2020-01-01", scale="utc") @@ -170,9 +168,7 @@ def test_umbra_event_crossing(): def test_penumbra_event_crossing(): - expected_penumbra_t = Time( - "2020-01-01 00:04:26.060", scale="utc" - ) # From Orekit. + expected_penumbra_t = Time("2020-01-01 00:04:26.060", scale="utc") # From Orekit. attractor = Earth tof = 2 * u.d epoch = Time("2020-01-01", scale="utc") @@ -194,9 +190,7 @@ def test_penumbra_event_crossing(): [tof] * u.s, ) - assert expected_penumbra_t.isclose( - epoch + penumbra_event.last_t, atol=1 * u.s - ) + assert expected_penumbra_t.isclose(epoch + penumbra_event.last_t, atol=1 * u.s) def test_node_cross_event(): @@ -241,9 +235,7 @@ def test_orbit_propagation_continues_if_events_terminal_is_False(): thresh_lat = 60 * u.deg # Event occurs at ~1701.7 s. - latitude_cross_event = LatitudeCrossEvent( - orbit, thresh_lat, terminal=False - ) + latitude_cross_event = LatitudeCrossEvent(orbit, thresh_lat, terminal=False) events = [latitude_cross_event] # The last two tofs are after the detection of the event. @@ -277,9 +269,7 @@ def test_orbit_propagation_position_vector_does_not_repeat_if_events_terminal_is ) # Check position vector doesn't repeat if terminal set to True. - assert ( - len(rr) == 4 - ) # From the 5th tof in tofs, position vector starts repeating. + assert len(rr) == 4 # From the 5th tof in tofs, position vector starts repeating. @pytest.mark.parametrize( diff --git a/tests/tests_twobody/test_mean_elements.py b/tests/tests_twobody/test_mean_elements.py index 2fb91c59a..f4c25bc2f 100644 --- a/tests/tests_twobody/test_mean_elements.py +++ b/tests/tests_twobody/test_mean_elements.py @@ -1,7 +1,7 @@ import pytest -from poliastro.bodies import Sun -from poliastro.twobody.mean_elements import get_mean_elements +from hapsira.bodies import Sun +from hapsira.twobody.mean_elements import get_mean_elements def test_get_mean_elements_raises_error_if_invalid_body(): @@ -10,6 +10,6 @@ def test_get_mean_elements_raises_error_if_invalid_body(): with pytest.raises(ValueError) as excinfo: get_mean_elements(body) assert ( - f"No available mean elements for {body}. It must be an instance of `poliastro.bodies.SolarSystemPlanet`" + f"No available mean elements for {body}. It must be an instance of `hapsira.bodies.SolarSystemPlanet`" in excinfo.exconly() ) diff --git a/tests/tests_twobody/test_orbit.py b/tests/tests_twobody/test_orbit.py index 1bba79b5d..5eb5e63f7 100644 --- a/tests/tests_twobody/test_orbit.py +++ b/tests/tests_twobody/test_orbit.py @@ -17,7 +17,7 @@ from numpy.testing import assert_allclose, assert_array_equal import pytest -from poliastro.bodies import ( +from hapsira.bodies import ( Body, Earth, Jupiter, @@ -30,12 +30,12 @@ Uranus, Venus, ) -from poliastro.constants import J2000, J2000_TDB -from poliastro.ephem import Ephem -from poliastro.examples import iss -from poliastro.frames.ecliptic import HeliocentricEclipticJ2000 -from poliastro.frames.enums import Planes -from poliastro.frames.equatorial import ( +from hapsira.constants import J2000, J2000_TDB +from hapsira.ephem import Ephem +from hapsira.examples import iss +from hapsira.frames.ecliptic import HeliocentricEclipticJ2000 +from hapsira.frames.enums import Planes +from hapsira.frames.equatorial import ( GCRS, HCRS, JupiterICRS, @@ -46,12 +46,12 @@ UranusICRS, VenusICRS, ) -from poliastro.frames.util import get_frame -from poliastro.plotting.orbit.backends import DEFAULT_ORBIT_PLOTTER_BACKENDS -from poliastro.twobody.angles import E_to_M, nu_to_E -from poliastro.twobody.orbit import Orbit -from poliastro.twobody.sampling import TrueAnomalyBounds -from poliastro.warnings import PatchedConicsWarning +from hapsira.frames.util import get_frame +from hapsira.plotting.orbit.backends import DEFAULT_ORBIT_PLOTTER_BACKENDS +from hapsira.twobody.angles import E_to_M, nu_to_E +from hapsira.twobody.orbit import Orbit +from hapsira.twobody.sampling import TrueAnomalyBounds +from hapsira.warnings import PatchedConicsWarning @pytest.fixture() @@ -116,9 +116,7 @@ def test_orbit_from_classical_wraps_out_of_range_anomaly_and_warns(): _ = 0.5 * u.one # Unused dimensionless value _a = 1.0 * u.deg # Unused angle out_angle = np.pi * u.rad - with pytest.warns( - UserWarning, match="Wrapping true anomaly to -π <= nu < π" - ): + with pytest.warns(UserWarning, match="Wrapping true anomaly to -π <= nu < π"): Orbit.from_classical( attractor=Sun, a=_d, ecc=_, inc=_a, raan=_a, argp=_a, nu=out_angle ) @@ -161,8 +159,7 @@ def test_bad_inclination_raises_exception(): attractor=_body, a=_d, ecc=_, inc=bad_inc, raan=_a, argp=_a, nu=_a ) assert ( - "ValueError: Inclination must be between 0 and 180 degrees" - in excinfo.exconly() + "ValueError: Inclination must be between 0 and 180 degrees" in excinfo.exconly() ) @@ -182,9 +179,7 @@ def test_bad_hyperbolic_raises_exception(): argp=_a, nu=_a, ) - assert ( - "Hyperbolic orbits have negative semimajor axis" in excinfo.exconly() - ) + assert "Hyperbolic orbits have negative semimajor axis" in excinfo.exconly() def test_apply_maneuver_changes_epoch(): @@ -228,9 +223,7 @@ def test_circular_has_proper_semimajor_axis(): def test_circular_raises_error_if_negative_altitude(): with pytest.raises(ValueError) as excinfo: - Orbit.circular( - Earth, -1 * u.m, epoch=Time(0.0, format="jd", scale="tdb") - ) + Orbit.circular(Earth, -1 * u.m, epoch=Time(0.0, format="jd", scale="tdb")) assert "Altitude of an orbit cannot be negative." in excinfo.exconly() @@ -358,17 +351,13 @@ def test_frozen_orbit_no_args(attractor, alt, expected_inc, expected_argp): def test_frozen_orbit_with_non_critical_argp( attractor, alt, argp, expected_inc, ecc, expected_ecc ): - orbit = Orbit.frozen( - attractor, alt, argp=argp, ecc=ecc - ) # Non-critical value + orbit = Orbit.frozen(attractor, alt, argp=argp, ecc=ecc) # Non-critical value assert_allclose(orbit.inc, expected_inc) assert_allclose(orbit.ecc, expected_ecc) def test_frozen_orbit_non_critical_inclination(): - orbit = Orbit.frozen( - Earth, 1e3 * u.km, inc=0 * u.deg - ) # Non-critical value + orbit = Orbit.frozen(Earth, 1e3 * u.km, inc=0 * u.deg) # Non-critical value assert orbit.argp in [np.pi / 2, 3 * np.pi / 2] * u.rad @@ -384,8 +373,7 @@ def test_frozen_orbit_non_spherical_arguments(): Orbit.frozen(Jupiter, 1 * u.m) assert excinfo.type == AttributeError assert ( - "Attractor Jupiter has not spherical harmonics implemented" - in excinfo.exconly() + "Attractor Jupiter has not spherical harmonics implemented" in excinfo.exconly() ) @@ -431,7 +419,7 @@ def test_sample_numpoints(): def test_sample_big_orbits(): - # See https://github.com/poliastro/poliastro/issues/265 + # See https://github.com/hapsira/hapsira/issues/265 ss = Orbit.from_vectors( Sun, [-9_018_878.6, -94_116_055, 22_619_059] * u.km, @@ -528,9 +516,7 @@ def test_orbit_accepts_ecliptic_plane(): ss = Orbit.from_vectors(Sun, r, v, plane=Planes.EARTH_ECLIPTIC) - assert ss.get_frame().is_equivalent_frame( - HeliocentricEclipticJ2000(obstime=J2000) - ) + assert ss.get_frame().is_equivalent_frame(HeliocentricEclipticJ2000(obstime=J2000)) def test_orbit_represent_as_produces_correct_data(): @@ -549,8 +535,7 @@ def test_orbit_represent_as_produces_correct_data(): # https://github.com/astropy/astropy/issues/7793 assert (result.xyz == expected_result.xyz).all() assert ( - result.differentials["s"].d_xyz - == expected_result.differentials["s"].d_xyz + result.differentials["s"].d_xyz == expected_result.differentials["s"].d_xyz ).all() @@ -655,9 +640,7 @@ def test_synchronous_orbit_pericenter_smaller_than_atractor_radius( with pytest.raises(ValueError) as excinfo: Orbit.synchronous(attractor=attractor, ecc=ecc) assert excinfo.type == ValueError - assert ( - "The orbit for the given parameters doesn't exist" in excinfo.exconly() - ) + assert "The orbit for the given parameters doesn't exist" in excinfo.exconly() @pytest.mark.parametrize( @@ -703,12 +686,8 @@ def test_synchronous_orbit_supersynchronous( ), ], ) -def test_synchronous_orbit_semisynchronous( - attractor, ecc, expected_a, expected_period -): - ss = Orbit.synchronous( - attractor=attractor, ecc=ecc, period_mul=0.5 * u.one - ) +def test_synchronous_orbit_semisynchronous(attractor, ecc, expected_a, expected_period): + ss = Orbit.synchronous(attractor=attractor, ecc=ecc, period_mul=0.5 * u.one) assert_quantity_allclose(ss.ecc, ecc, rtol=1.0e-3) assert_quantity_allclose(ss.a, expected_a, rtol=1.0e-3) assert_quantity_allclose(ss.period, expected_period, rtol=1.0e-3) @@ -765,9 +744,7 @@ def test_heliosynchronous_orbit_raises_floating_point_error_if_invalid_input(): with pytest.raises(ValueError) as excinfo: Orbit.heliosynchronous(Earth, a=a, inc=inc) - assert ( - "No SSO orbit with given parameters can be found." in excinfo.exconly() - ) + assert "No SSO orbit with given parameters can be found." in excinfo.exconly() def test_perigee_and_apogee(): @@ -818,9 +795,7 @@ def test_expected_angular_momentum(): ) orbit_h_mag = orbit.h_mag - assert_quantity_allclose( - orbit_h_mag.value, expected_ang_mag.value, rtol=1e-2 - ) + assert_quantity_allclose(orbit_h_mag.value, expected_ang_mag.value, rtol=1e-2) def test_expected_last_perifocal_passage(): @@ -958,13 +933,9 @@ def test_orbit_creation_using_skycoord(attractor): attractor, Planes.EARTH_EQUATOR, obstime=coord.obstime ) - coord_transformed_to_irf = coord.transform_to( - inertial_frame_at_body_centre - ) + coord_transformed_to_irf = coord.transform_to(inertial_frame_at_body_centre) pos_transformed_to_irf = coord_transformed_to_irf.cartesian.xyz - vel_transformed_to_irf = coord_transformed_to_irf.cartesian.differentials[ - "s" - ].d_xyz + vel_transformed_to_irf = coord_transformed_to_irf.cartesian.differentials["s"].d_xyz assert (o.r == pos_transformed_to_irf).all() assert (o.v == vel_transformed_to_irf).all() @@ -991,19 +962,13 @@ def test_orbit_creation_using_frame_obj(attractor, frame, obstime): attractor, Planes.EARTH_EQUATOR, obstime=coord.obstime ) - coord_transformed_to_irf = coord.transform_to( - inertial_frame_at_body_centre - ) + coord_transformed_to_irf = coord.transform_to(inertial_frame_at_body_centre) pos_transformed_to_irf = coord_transformed_to_irf.cartesian.xyz - vel_transformed_to_irf = coord_transformed_to_irf.cartesian.differentials[ - "s" - ].d_xyz + vel_transformed_to_irf = coord_transformed_to_irf.cartesian.differentials["s"].d_xyz assert_quantity_allclose(o.r, pos_transformed_to_irf, atol=1e-5 * u.km) - assert_quantity_allclose( - o.v, vel_transformed_to_irf, atol=1e-5 * u.km / u.s - ) + assert_quantity_allclose(o.v, vel_transformed_to_irf, atol=1e-5 * u.km / u.s) @pytest.mark.parametrize("obstime", [J2000, J2000_TDB]) @@ -1014,9 +979,7 @@ def test_from_coord_fails_for_multiple_positions(obstime): cartrep = CartesianRepresentation( [[1, 0, 0], [0.9, 0.1, 0]] * u.km, differentials=cartdiff, xyz_axis=1 ) - coords = GCRS( - cartrep, representation_type=CartesianRepresentation, obstime=obstime - ) + coords = GCRS(cartrep, representation_type=CartesianRepresentation, obstime=obstime) with pytest.raises(ValueError) as excinfo: Orbit.from_coords(Earth, coords) @@ -1030,12 +993,8 @@ def test_from_coord_if_coord_is_not_of_shape_zero(): pos = [0, 1, 0] vel = [1, 0, 0] cartdiff = CartesianDifferential([vel] * u.km / u.s, xyz_axis=1) - cartrep = CartesianRepresentation( - [pos] * u.km, differentials=cartdiff, xyz_axis=1 - ) - coords = GCRS( - cartrep, representation_type=CartesianRepresentation, obstime=J2000 - ) + cartrep = CartesianRepresentation([pos] * u.km, differentials=cartdiff, xyz_axis=1) + coords = GCRS(cartrep, representation_type=CartesianRepresentation, obstime=J2000) ss = Orbit.from_coords(Earth, coords) @@ -1044,7 +1003,7 @@ def test_from_coord_if_coord_is_not_of_shape_zero(): def test_propagate_to_anomaly_gives_expected_result(): - # From "Going to Jupiter with Python using Jupyter and poliastro.ipynb" + # From "Going to Jupiter with Python using Jupyter and hapsira.ipynb" ic1 = Orbit.from_vectors( Sun, [1.02465527e08, -1.02313505e08, -4.43533465e07] * u.km, @@ -1059,12 +1018,11 @@ def test_propagate_to_anomaly_gives_expected_result(): def test_sample_with_out_of_range_anomaly_works(): - # From "Going to Jupiter with Python using Jupyter and poliastro.ipynb" + # From "Going to Jupiter with Python using Jupyter and hapsira.ipynb" ic1 = Orbit.from_vectors( Sun, [1.02465527e08, -1.02313505e08, -4.43533465e07] << u.km, - [2198705.82621226, 1897186.74383856, 822370.88977487] - << (u.km / u.day), + [2198705.82621226, 1897186.74383856, 822370.88977487] << (u.km / u.day), Time("2011-08-05 16:26:06.183", scale="tdb"), ) coordinates = ic1.to_ephem( @@ -1124,10 +1082,7 @@ def test_from_vectors_wrong_dimensions_fails(): with pytest.raises(ValueError) as excinfo: Orbit.from_vectors(Earth, bad_r, bad_v) - assert ( - "ValueError: Vectors must have dimension 1, got 2 and 3" - in excinfo.exconly() - ) + assert "ValueError: Vectors must have dimension 1, got 2 and 3" in excinfo.exconly() def test_from_classical_wrong_dimensions_fails(): @@ -1139,9 +1094,7 @@ def test_from_classical_wrong_dimensions_fails(): Orbit.from_classical( attractor=Earth, a=bad_a, ecc=_, inc=_a, raan=_a, argp=_a, nu=_a ) - assert ( - "ValueError: Elements must be scalar, got [1.] AU" in excinfo.exconly() - ) + assert "ValueError: Elements must be scalar, got [1.] AU" in excinfo.exconly() def test_orbit_change_attractor_returns_self(): @@ -1158,9 +1111,7 @@ def test_orbit_change_attractor_out_of_SOI(): with pytest.raises(ValueError) as excinfo: ss.change_attractor(Earth) - assert ( - "ValueError: Orbit is out of new attractor's SOI" in excinfo.exconly() - ) + assert "ValueError: Orbit is out of new attractor's SOI" in excinfo.exconly() def test_orbit_change_attractor_force(): @@ -1180,9 +1131,7 @@ def test_orbit_change_attractor_force(): def test_orbit_change_attractor_unrelated_body(): with pytest.raises(ValueError) as excinfo: iss.change_attractor(Mars) - assert ( - "ValueError: Cannot change to unrelated attractor" in excinfo.exconly() - ) + assert "ValueError: Cannot change to unrelated attractor" in excinfo.exconly() def test_orbit_change_attractor_closed(): @@ -1233,9 +1182,7 @@ def with_units(draw, elements, unit): return value * unit -angles = partial( - st.floats, min_value=-np.pi, max_value=np.pi, exclude_max=True -) +angles = partial(st.floats, min_value=-np.pi, max_value=np.pi, exclude_max=True) angles_q = partial(with_units, elements=angles(), unit=u.rad) @@ -1252,16 +1199,14 @@ def test_time_to_anomaly(expected_nu): # In some corner cases the resulting anomaly goes out of range, # and rather than trying to fix it right now # we will wait until we remove the round tripping, - # see https://github.com/poliastro/poliastro/issues/921 + # see https://github.com/hapsira/hapsira/issues/921 # FIXME: Add test that verifies that `orbit.nu` is always within range - assert_quantity_allclose( - iss_propagated.nu, expected_nu, atol=1e-12 * u.rad - ) + assert_quantity_allclose(iss_propagated.nu, expected_nu, atol=1e-12 * u.rad) @pytest.mark.xfail def test_can_set_iss_attractor_to_earth(): - # See https://github.com/poliastro/poliastro/issues/798 + # See https://github.com/hapsira/hapsira/issues/798 epoch = Time("2019-11-10 12:00:00") ephem = Ephem.from_horizons( "International Space Station", @@ -1290,7 +1235,7 @@ def test_issue_916(mock_query): def test_near_parabolic_M_does_not_hang(near_parabolic): - # See https://github.com/poliastro/poliastro/issues/907 + # See https://github.com/hapsira/hapsira/issues/907 expected_nu = -168.65 * u.deg orb = near_parabolic.propagate_to_anomaly(expected_nu) @@ -1308,7 +1253,7 @@ def test_propagation_near_parabolic_orbits_zero_seconds_gives_same_anomaly( def test_propagation_near_parabolic_orbits_does_not_hang(near_parabolic): - # See https://github.com/poliastro/poliastro/issues/475 + # See https://github.com/hapsira/hapsira/issues/475 orb_final = near_parabolic.propagate(near_parabolic.period) # Smoke test diff --git a/tests/tests_twobody/test_perturbations.py b/tests/tests_twobody/test_perturbations.py index dc0da66ba..630a41b7e 100644 --- a/tests/tests_twobody/test_perturbations.py +++ b/tests/tests_twobody/test_perturbations.py @@ -8,10 +8,10 @@ from numpy.linalg import norm import pytest -from poliastro.bodies import Earth, Moon, Sun -from poliastro.constants import H0_earth, Wdivc_sun, rho0_earth -from poliastro.core.elements import rv2coe -from poliastro.core.perturbations import ( +from hapsira.bodies import Earth, Moon, Sun +from hapsira.constants import H0_earth, Wdivc_sun, rho0_earth +from hapsira.core.elements import rv2coe +from hapsira.core.perturbations import ( J2_perturbation, J3_perturbation, atmospheric_drag, @@ -19,13 +19,13 @@ radiation_pressure, third_body, ) -from poliastro.core.propagation import func_twobody -from poliastro.earth.atmosphere import COESA76 -from poliastro.ephem import build_ephem_interpolant -from poliastro.twobody import Orbit -from poliastro.twobody.events import LithobrakeEvent -from poliastro.twobody.propagation import CowellPropagator -from poliastro.util import time_range +from hapsira.core.propagation import func_twobody +from hapsira.earth.atmosphere import COESA76 +from hapsira.ephem import build_ephem_interpolant +from hapsira.twobody import Orbit +from hapsira.twobody.events import LithobrakeEvent +from hapsira.twobody.propagation import CowellPropagator +from hapsira.util import time_range @pytest.mark.slow @@ -52,9 +52,7 @@ def f(t0, u_, k): k = Earth.k.to(u.km**3 / u.s**2).value _, _, _, raan0, argp0, _ = rv2coe(k, r0, v0) - _, _, _, raan, argp, _ = rv2coe( - k, rr[0].to(u.km).value, vv[0].to(u.km / u.s).value - ) + _, _, _, raan, argp, _ = rv2coe(k, rr[0].to(u.km).value, vv[0].to(u.km / u.s).value) raan_variation_rate = (raan - raan0) / tofs[0].to(u.s).value # type: ignore argp_variation_rate = (argp - argp0) / tofs[0].to(u.s).value # type: ignore @@ -62,12 +60,8 @@ def f(t0, u_, k): raan_variation_rate = (raan_variation_rate * u.rad / u.s).to(u.deg / u.h) argp_variation_rate = (argp_variation_rate * u.rad / u.s).to(u.deg / u.h) - assert_quantity_allclose( - raan_variation_rate, -0.172 * u.deg / u.h, rtol=1e-2 - ) - assert_quantity_allclose( - argp_variation_rate, 0.282 * u.deg / u.h, rtol=1e-2 - ) + assert_quantity_allclose(raan_variation_rate, -0.172 * u.deg / u.h, rtol=1e-2) + assert_quantity_allclose(argp_variation_rate, 0.282 * u.deg / u.h, rtol=1e-2) @pytest.mark.slow @@ -142,9 +136,7 @@ def f_combined(t0, u_, k): du_kep = func_twobody(t0, u_, k) ax, ay, az = J2_perturbation( t0, u_, k, J2=Earth.J2.value, R=Earth.R.to_value(u.km) - ) + J3_perturbation( - t0, u_, k, J3=Earth.J3.value, R=Earth.R.to_value(u.km) - ) + ) + J3_perturbation(t0, u_, k, J3=Earth.J3.value, R=Earth.R.to_value(u.km)) du_ad = np.array([0, 0, 0, ax, ay, az]) return du_kep + du_ad @@ -196,12 +188,8 @@ def f_combined(t0, u_, k): ) dinc_max = np.max(np.abs(inc_values_J2 - inc_values_J3)) - assert_quantity_allclose( - dinc_max, test_params["dinc_max"], rtol=1e-1, atol=1e-7 - ) - assert_quantity_allclose( - decc_max, test_params["decc_max"], rtol=1e-1, atol=1e-7 - ) + assert_quantity_allclose(dinc_max, test_params["dinc_max"], rtol=1e-1, atol=1e-7) + assert_quantity_allclose(decc_max, test_params["decc_max"], rtol=1e-1, atol=1e-7) try: assert_quantity_allclose(da_max * u.km, test_params["da_max"]) except AssertionError: @@ -233,9 +221,7 @@ def test_atmospheric_drag_exponential(): H0 = H0_earth.to(u.km).value # km tof = 100000 # s - dr_expected = ( - -B * rho0 * np.exp(-(norm(r0) - R) / H0) * np.sqrt(k * norm(r0)) * tof - ) + dr_expected = -B * rho0 * np.exp(-(norm(r0) - R) / H0) * np.sqrt(k * norm(r0)) * tof # Assuming the atmospheric decay during tof is small, # dr_expected = F_r * tof (Newton's integration formula), where # F_r = -B rho(r) |r|^2 sqrt(k / |r|^3) = -B rho(r) sqrt(k |r|) @@ -296,9 +282,7 @@ def f(t0, u_, k): tofs, ) - assert_quantity_allclose( - norm(rr[0].to(u.km).value), R, atol=1 - ) # Below 1km + assert_quantity_allclose(norm(rr[0].to(u.km).value), R, atol=1) # Below 1km assert_quantity_allclose(lithobrake_event.last_t, t_decay, rtol=1e-2) @@ -361,9 +345,7 @@ def f(t0, u_, k): tofs, ) - assert_quantity_allclose( - norm(rr[0].to(u.km).value), R, atol=1 - ) # Below 1km + assert_quantity_allclose(norm(rr[0].to(u.km).value), R, atol=1) # Below 1km assert_quantity_allclose(lithobrake_event.last_t, t_decay, rtol=1e-2) @@ -648,9 +630,7 @@ def test_solar_pressure(t_days, deltas_expected, sun_r): tof = 600 * u.day epoch = Time(j_date, format="jd", scale="tdb") - with pytest.warns( - UserWarning, match="Wrapping true anomaly to -π <= nu < π" - ): + with pytest.warns(UserWarning, match="Wrapping true anomaly to -π <= nu < π"): initial = Orbit.from_classical( attractor=Earth, a=10085.44 * u.km, @@ -692,9 +672,7 @@ def f(t0, u_, k): for ri, vi in zip(rr.to(u.km).value, vv.to(u.km / u.s).value): orbit_params = rv2coe(Earth.k.to(u.km**3 / u.s**2).value, ri, vi) delta_eccs.append(orbit_params[1] - initial.ecc.value) - delta_incs.append( - (orbit_params[2] * u.rad).to(u.deg).value - initial.inc.value - ) + delta_incs.append((orbit_params[2] * u.rad).to(u.deg).value - initial.inc.value) delta_raans.append( (orbit_params[3] * u.rad).to(u.deg).value - initial.raan.value ) diff --git a/tests/tests_twobody/test_propagation.py b/tests/tests_twobody/test_propagation.py index 1e2827231..0d20983bf 100644 --- a/tests/tests_twobody/test_propagation.py +++ b/tests/tests_twobody/test_propagation.py @@ -7,14 +7,14 @@ import pytest from pytest import approx -from poliastro.bodies import Earth, Moon, Sun -from poliastro.constants import J2000 -from poliastro.core.elements import rv2coe -from poliastro.core.propagation import func_twobody -from poliastro.examples import iss -from poliastro.frames import Planes -from poliastro.twobody import Orbit -from poliastro.twobody.propagation import ( +from hapsira.bodies import Earth, Moon, Sun +from hapsira.constants import J2000 +from hapsira.core.elements import rv2coe +from hapsira.core.propagation import func_twobody +from hapsira.examples import iss +from hapsira.frames import Planes +from hapsira.twobody import Orbit +from hapsira.twobody.propagation import ( ALL_PROPAGATORS, ELLIPTIC_PROPAGATORS, HYPERBOLIC_PROPAGATORS, @@ -27,7 +27,7 @@ RecseriesPropagator, ValladoPropagator, ) -from poliastro.util import norm +from hapsira.util import norm @pytest.fixture(scope="module") @@ -150,9 +150,7 @@ def test_propagating_to_certain_nu_is_correct(): for nu in np.random.uniform(low=-np.pi, high=np.pi, size=10): elliptic = elliptic.propagate_to_anomaly(nu * u.rad) r, _ = elliptic.rv() - assert_quantity_allclose( - norm(r), a * (1.0 - ecc**2) / (1 + ecc * np.cos(nu)) - ) + assert_quantity_allclose(norm(r), a * (1.0 - ecc**2) / (1 + ecc * np.cos(nu))) def test_propagate_to_anomaly_in_the_past_fails_for_open_orbits(): @@ -160,9 +158,7 @@ def test_propagate_to_anomaly_in_the_past_fails_for_open_orbits(): v0 = [0, 15, 0] * u.km / u.s orb = Orbit.from_vectors(Earth, r0, v0) - with pytest.raises( - ValueError, match="True anomaly -0.02 rad not reachable" - ): + with pytest.raises(ValueError, match="True anomaly -0.02 rad not reachable"): orb.propagate_to_anomaly(orb.nu - 1 * u.deg) @@ -266,9 +262,7 @@ def test_apply_zero_maneuver_returns_equal_state(): dv = [0, 0, 0] * u.km / u.s orbit_new = ss.apply_maneuver([(dt, dv)]) assert_allclose(orbit_new.r.to(u.km).value, ss.r.to(u.km).value) - assert_allclose( - orbit_new.v.to(u.km / u.s).value, ss.v.to(u.km / u.s).value - ) + assert_allclose(orbit_new.v.to(u.km / u.s).value, ss.v.to(u.km / u.s).value) def test_cowell_propagation_with_zero_acceleration_equals_kepler(): @@ -351,7 +345,7 @@ def test_propagate_to_date_has_proper_epoch(): ) def test_propagate_long_times_keeps_geometry(method): # TODO: Extend to other propagators? - # See https://github.com/poliastro/poliastro/issues/265 + # See https://github.com/hapsira/hapsira/issues/265 time_of_flight = 100 * u.year res = iss.propagate(time_of_flight, method=method) @@ -417,17 +411,13 @@ def with_units(draw, elements, unit): unit=u.year, ) ) -@pytest.mark.parametrize( - "method", [FarnocchiaPropagator(), ValladoPropagator()] -) +@pytest.mark.parametrize("method", [FarnocchiaPropagator(), ValladoPropagator()]) def test_long_propagation_preserves_orbit_elements(tof, method, halley): expected_slow_classical = halley.classical()[:-1] slow_classical = halley.propagate(tof, method=method).classical()[:-1] - for element, expected_element in zip( - slow_classical, expected_slow_classical - ): + for element, expected_element in zip(slow_classical, expected_slow_classical): assert_quantity_allclose(element, expected_element) @@ -444,7 +434,7 @@ def test_propagation_sets_proper_epoch(): def test_sample_around_moon_works(): - # See https://github.com/poliastro/poliastro/issues/649 + # See https://github.com/hapsira/hapsira/issues/649 orbit = Orbit.circular(Moon, 100 << u.km) coords = orbit.sample(10) @@ -454,7 +444,7 @@ def test_sample_around_moon_works(): def test_propagate_around_moon_works(): - # See https://github.com/poliastro/poliastro/issues/649 + # See https://github.com/hapsira/hapsira/issues/649 orbit = Orbit.circular(Moon, 100 << u.km) new_orbit = orbit.propagate(1 << u.h) diff --git a/tests/tests_twobody/test_sampling.py b/tests/tests_twobody/test_sampling.py index 5930cf5df..042ef2cd2 100644 --- a/tests/tests_twobody/test_sampling.py +++ b/tests/tests_twobody/test_sampling.py @@ -6,8 +6,8 @@ import numpy as np import pytest -from poliastro.examples import iss -from poliastro.twobody.sampling import TrueAnomalyBounds, sample_closed +from hapsira.examples import iss +from hapsira.twobody.sampling import TrueAnomalyBounds, sample_closed angles = partial(st.floats, min_value=-2 * np.pi, max_value=2 * np.pi) eccentricities = partial(st.floats, min_value=0, max_value=1, exclude_max=True) @@ -41,9 +41,7 @@ def test_sample_closed_is_always_between_minus_pi_and_pi(min_nu, ecc, max_nu): @settings(deadline=None) @given( min_nu=with_units( - elements=st.floats( - min_value=-np.pi, max_value=np.pi, exclude_max=True - ), + elements=st.floats(min_value=-np.pi, max_value=np.pi, exclude_max=True), unit=u.rad, ), ecc=eccentricities_q(), diff --git a/tests/tests_twobody/test_states.py b/tests/tests_twobody/test_states.py index 8f2db209a..aa70d385c 100644 --- a/tests/tests_twobody/test_states.py +++ b/tests/tests_twobody/test_states.py @@ -3,8 +3,8 @@ import numpy as np import pytest -from poliastro.bodies import Earth, Sun -from poliastro.twobody.states import ClassicalState, RVState +from hapsira.bodies import Earth, Sun +from hapsira.twobody.states import ClassicalState, RVState def test_state_has_attractor_given_in_constructor(): @@ -23,9 +23,7 @@ def test_classical_state_has_elements_given_in_constructor(): raan = 49.562 * u.deg argp = 286.537 * u.deg nu = 23.33 * u.deg - ss = ClassicalState( - Sun, (a * (1 - ecc**2), ecc, inc, raan, argp, nu), None - ) + ss = ClassicalState(Sun, (a * (1 - ecc**2), ecc, inc, raan, argp, nu), None) assert ss.p == a * (1 - ecc**2) assert ss.ecc == ecc assert ss.inc == inc @@ -72,9 +70,7 @@ def test_coe_to_mee_raises_singularity_error_orbit_equatorial_and_retrograde(): argp = 286.537 * u.deg nu = 23.33 * u.deg - ss = ClassicalState( - Sun, (a * (1 - ecc**2), ecc, inc, raan, argp, nu), None - ) + ss = ClassicalState(Sun, (a * (1 - ecc**2), ecc, inc, raan, argp, nu), None) with pytest.raises(ValueError) as excinfo: ss.to_equinoctial() assert ( diff --git a/tests/tests_twobody/test_thrust.py b/tests/tests_twobody/test_thrust.py index 21445381d..38a1b65f2 100644 --- a/tests/tests_twobody/test_thrust.py +++ b/tests/tests_twobody/test_thrust.py @@ -3,16 +3,16 @@ from numpy.testing import assert_allclose import pytest -from poliastro.bodies import Earth -from poliastro.core.propagation import func_twobody -from poliastro.core.thrust import ( +from hapsira.bodies import Earth +from hapsira.core.propagation import func_twobody +from hapsira.core.thrust import ( change_a_inc as change_a_inc_fast, change_argp as change_argp_fast, ) -from poliastro.core.thrust.change_ecc_inc import beta as beta_change_ecc_inc -from poliastro.twobody import Orbit -from poliastro.twobody.propagation import CowellPropagator -from poliastro.twobody.thrust import ( +from hapsira.core.thrust.change_ecc_inc import beta as beta_change_ecc_inc +from hapsira.twobody import Orbit +from hapsira.twobody.propagation import CowellPropagator +from hapsira.twobody.thrust import ( change_a_inc, change_argp, change_ecc_inc, @@ -78,9 +78,7 @@ def f_leo_geo(t0, u_, k): du_ad = np.array([0, 0, 0, ax, ay, az]) return du_kep + du_ad - sf = s0.propagate( - t_f * u.s, method=CowellPropagator(rtol=1e-6, f=f_leo_geo) - ) + sf = s0.propagate(t_f * u.s, method=CowellPropagator(rtol=1e-6, f=f_leo_geo)) assert_allclose(sf.a.to(u.km).value, a_f, rtol=1e-3) assert_allclose(sf.ecc.value, 0.0, atol=1e-2) @@ -139,9 +137,7 @@ def f_ss0_disposal(t0, u_, k): du_ad = np.array([0, 0, 0, ax, ay, az]) return du_kep + du_ad - sf = s0.propagate( - t_f * u.s, method=CowellPropagator(rtol=1e-8, f=f_ss0_disposal) - ) + sf = s0.propagate(t_f * u.s, method=CowellPropagator(rtol=1e-8, f=f_ss0_disposal)) assert_allclose(sf.ecc.value, ecc_f, rtol=1e-4, atol=1e-4) @@ -156,9 +152,7 @@ def f_ss0_disposal(t0, u_, k): [0.8, 10.0, 16.304, 1.9799], ], ) -def test_geo_cases_beta_dnd_delta_v( - ecc_0, inc_f, expected_beta, expected_delta_V -): +def test_geo_cases_beta_dnd_delta_v(ecc_0, inc_f, expected_beta, expected_delta_V): a = 42164 # km ecc_f = 0.0 inc_0 = 0.0 # rad, baseline @@ -181,9 +175,7 @@ def test_geo_cases_beta_dnd_delta_v( beta = beta_change_ecc_inc( ecc_0=ecc_0, ecc_f=ecc_f, inc_0=inc_0, inc_f=inc_f, argp=argp ) - _, delta_V, _ = change_ecc_inc( - orb_0=s0, ecc_f=ecc_f, inc_f=inc_f * u.rad, f=f - ) + _, delta_V, _ = change_ecc_inc(orb_0=s0, ecc_f=ecc_f, inc_f=inc_f * u.rad, f=f) assert_allclose(delta_V.to_value(u.km / u.s), expected_delta_V, rtol=1e-2) assert_allclose(beta, expected_beta, rtol=1e-2) diff --git a/tox.ini b/tox.ini index bf516a601..c50d7affe 100644 --- a/tox.ini +++ b/tox.ini @@ -33,7 +33,7 @@ setenv = online: PYTEST_EXTRA_ARGS = --remote-data=any slow: PYTEST_EXTRA_ARGS = images: PYTEST_EXTRA_ARGS = --mpl - coverage: PYTEST_EXTRA_ARGS = --cov=poliastro --cov-report=term --cov-report=xml:.cov/xml --cov-report=html:.cov/html + coverage: PYTEST_EXTRA_ARGS = --cov=hapsira --cov-report=term --cov-report=xml:.cov/xml --cov-report=html:.cov/html passenv = * extras = @@ -48,7 +48,7 @@ commands = pytest {env:PYTEST_MARKERS:} {env:PYTEST_EXTRA_ARGS:} {posargs:-vv} [testenv:style] -description = checks poliastro code style guidelines +description = checks hapsira code style guidelines deps = build pre-commit @@ -61,7 +61,7 @@ commands = [testenv:docs] description = invoke sphinx-build to build the HTML docs setenv = - READTHEDOCS_PROJECT = poliastro + READTHEDOCS_PROJECT = hapsira READTHEDOCS_VERSION = latest extras = doc