poliastro : Astrodynamics in Python

poliastro is an open source (MIT) collection of Python functions useful in Astrodynamics and Orbital Mechanics, focusing on interplanetary applications. It provides a simple and intuitive API and handles physical quantities with units. Some of its awesome features are:

  • Analytical and numerical orbit propagation
  • Conversion between position and velocity vectors and classical orbital elements
  • Coordinate frame transformations
  • Hohmann and bielliptic maneuvers computation
  • Trajectory plotting
  • Initial orbit determination (Lambert problem)
  • Planetary ephemerides (using SPICE kernels via Astropy)
  • Computation of Near-Earth Objects (NEOs)

And more to come!

poliastro is developed by an open, international community. Release announcements and general discussion take place on our mailing list and chat.

Features

  • Easy ability to install/use as a Python package (tip o’ the hat to Dave & Eric’s sphinx_rtd_theme for showing the way);
  • Style tweaks compared to the source themes, such as better code-block alignment, Github button placement, page source link moved to footer, improved (optional) related-items sidebar item, and many more;
  • Many customization hooks, including toggle of various sidebar & footer components; header/link/etc color control; etc;
  • Improved documentation for all customizations (pre-existing & new).

Project background

Alabaster is a modified (with permission) version of Kenneth Reitz’s “krTheme” Sphinx theme (it’s the one used in his Requests project). Kenneth’s theme was itself originally based on Armin Ronacher’s Flask theme. Many thanks to both for their hard work.

Implementation notes

  • Fabric #419 contains a lot of general exposition & thoughts as I developed Alabaster, specifically with a mind towards using it on two nearly identical ‘sister’ sites (single-version www ‘info’ site & versioned API docs site).
  • Alabaster includes/requires a tiny Sphinx extension on top of the theme itself; this is just so we can inject dynamic metadata (like Alabaster’s own version number) into template contexts. It doesn’t add any additional directives or the like, at least not yet.