question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Separate `poliastro.core` from the rest

See original GitHub issue

In today’s community call, @jorgepiloto and I discussed the possibility to separate poliastro.core from the rest. This is somewhat related to #168, but uses a different method: by recognizing that poliastro.core is interesting and useful on its own, we split it off as a separate project, and make poliastro depend on it.

Luckily, poliastro.core only depends on NumPy and numba:

$ grep import src/poliastro/core/ -rh --exclude=*.pyc | grep -v '>' | sort | uniq
from ..angles import (
from .angles import E_to_nu, F_to_nu
from astropy import units as u
from ..elements import coe2rv, rv2coe
from .farnocchia import farnocchia, farnocchia_coe
from math import gamma
from numba import njit as jit
from numba import njit as jit, prange
from numpy import cos, cross, sin, sqrt
from numpy import cos, sin
from numpy import cross
from numpy import cross, pi
from numpy.linalg import norm
from poliastro.core.elements import coe_rotation_matrix, rv2coe, rv_pqw
from poliastro.core.hyper import hyp2f1b
from poliastro.core.stumpff import c2, c3
from poliastro.core.util import circular_velocity
from ..stumpff import c2, c3
from .util import rotation_matrix
import numpy as np

Advantages:

  • Easier to contribute “raw algorithms” (see also our recent efforts in #1189)
  • Users that just want the core functionality can just use the new project
  • Users that prefer alternatives to astropy.units can bring their own (for example https://pypi.org/project/Pint/ and possibly others)

All of this is possible by installing poliastro and just ignoring the safe API, but the disadvantage is that it requires a lot of heavy dependencies (SciPy, Astropy, Plotly, matplotlib, others).

Disadvantages:

  • More overhead
  • We need coordination between the two projects

Thoughts?

Issue Analytics

  • State:open
  • Created 2 years ago
  • Comments:10 (10 by maintainers)

github_iconTop GitHub Comments

1reaction
s-m-ecommented, Jul 26, 2022

Just some homework and an overview of all the places where poliastro currently, as of d85c9bd1e2e8c19765d34e6ee3d672cb51da22cc, talks to its core.

https://github.com/pleiszenburg/bulk_propagate/blob/3d132ace90cdb28252620fc2b5eee5cfed42cb20/core_interface_01.ipynb

0reactions
astrojuanlucommented, Aug 12, 2022

We’re not doing this before 1.0.

Read more comments on GitHub >

github_iconTop Results From Across the Web

What's new — poliastro 0.17.0 documentation
Now poliastro.core.util.alinspace() accepts angle differences beyond $2\pi$ ... Issue #824: Properly plot orbits in different planes.
Read more >
poliastro.core.events
Calculates the line of sight condition between two position vectors, r1 and r2. elevation_function (k, u_, phi, theta, R, R_p, H).
Read more >
Related software — poliastro 0.17.0 documentation
A truly inspiring project. Skyfield: Another Astronomy Python package focused on computing observations of planetary bodies and Earth satellites written by ...
Read more >
API reference — poliastro 0.17.0 documentation
Among the different sub-packages and modules, we might differentiate two big categories: core utilities and high-level ones.
Read more >
poliastro Documentation
orbital: Yet another orbital mechanics Python library written by Frazer McLean. ... The core of poliastro are the Orbit objects inside the ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found