Skip to main content

Our Solar System. Planet's positions, Sun's and Moon' s position and rise/set

Project description

🌌 solarsystem

PyPI version Documentation Status codecov GPL Downloads

solarsystem is a lightweight, dependency-free Python library for computing Solar System positions, Solar-Lunar events, and coordinate transformations.

It is designed for education, visualization, and lightweight astronomical computation, without requiring external ephemeris datasets or heavy scientific dependencies.


Supported Celestial Bodies

  • The Sun (our central star)
  • All 8 major planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
  • Dwarf planets: Pluto, Ceres, Eris (with additional bodies planned to be included in future releases)
  • Minor bodies: Chiron (Centaur class)
  • Natural satellites: Earth's Moon (Luna / Selene)

Features

The library provides tools for:

Planetary Positioning

  • Approximate heliocentric positions of planets
  • Geocentric positions for Earth-based observations
  • Support for dwarf planets and selected minor bodies

Astronomical Events

  • Sunrise and sunset times (any Earth location)
  • Moonrise and moonset calculations
  • Lunar phase and illumination percentage

Coordinate Transformations

  • Spherical ↔ Cartesian
  • Ecliptic ↔ Equatorial
  • Ecliptic ↔ Spherical projections

⚡ Installation

Install directly from PyPI:

pip install solarsystem

Or install from GitHub:

pip install git+https://github.com/IoannisNasios/solarsystem

or

git clone https://github.com/IoannisNasios/solarsystem
cd solarsystem
pip install .

Quick start

import solarsystem

Initialize Heliocentric class

H = solarsystem.Heliocentric(year=2020, month=1, day=1, hour=12, minute=0, precession=True)

Compute position of planets around sun

planets_dict=H.planets()
print('Planet','   \t','Longitude','   \t','Latitude','   \t','Distance in AU')
for planet in planets_dict:
    pos=planets_dict[planet]
    print(planet,'   \t',round(pos[0],2),'   \t',round(pos[1],2),'   \t',round(pos[2],2))
# Planet      Longitude   Latitude    Distance in AU
# Mercury     263.55       -4.06       0.47
# Venus         4.95       -3.22       0.73
# Earth       100.25        0.0        0.98
# Mars        214.1         0.49       1.59
# Jupiter     275.83        0.1        5.23
# Saturn      292.23        0.05      10.05
# Uranus       35.07       -0.48      19.81
# Neptune     347.74       -1.04      29.91
# Pluto       292.47       -0.67      33.88
# Ceres       290.44       -5.4        2.92
# Chiron        3.86        2.94      18.81
# Eris         23.08      -11.74      96.0

Example Applications

The repository includes Jupyter notebooks:


🌀 Precession Support (v0.1.6+)

Starting from version 0.1.6, the library includes an optional precession of the equinoxes correction.

  • Default: precession=True
  • Can be disabled: precession=False

Why this matters:

  • Improves long-term coordinate consistency
  • Reduces systematic longitude drift across epochs
  • Allows both:
    • modern ephemeris-style calculations
    • fixed-frame educational mode

📊 Accuracy and Validation

To evaluate numerical performance, the library was compared against JPL DE440 ephemerides.

Summary of results:

  • Mean longitude error: << 1° (mean absolute error ~0.007°)
  • Mean latitude error: ~0.002°
  • Mean distance error: ~0.05 AU
  • Lunar illumination error: ~0.8%
  • Moonrise / Moonset timing difference: ~12 minutes

Full results and figures are included in the accompanying research paper.

These results indicate that solarsystem achieves adequate calculations for various use cases, while maintaining a lightweight computational design.


📚 Documentation

Full documentation is available at:
https://solarsystem.readthedocs.io

Build documentation locally

pip install sphinx
cd docs
make html

Open _build/html/index.html in browser.


Requirements

Core package:
No external dependencies

Optional:
matplotlib → for visualization notebooks
pytest, numpy → for running tests
matplotlib, skyfield → for performance evaluation notebooks


Python Support

Tested on:

Python 3.4+
Python 2.7 (legacy support)

Newer Python versions are recommended for best performance and compatibility.


📖 Citing

If you use this library in your work, please cite:

@misc{Nasios:2020,
  Author = {Ioannis Nasios},
  Title = {solarsystem},
  Year = {2020},
  Publisher = {GitHub},
  Journal = {GitHub repository},
  Howpublished = {\url{https://github.com/IoannisNasios/solarsystem}}
}

License

MIT License ©

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solarsystem-0.1.8.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solarsystem-0.1.8-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file solarsystem-0.1.8.tar.gz.

File metadata

  • Download URL: solarsystem-0.1.8.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for solarsystem-0.1.8.tar.gz
Algorithm Hash digest
SHA256 abfea31f64d16584e7c4456d5a6f8c8d3a7958a07ab92ebb36986077340bc2c9
MD5 eec69ae19ed536ee589ccd83b0a61d06
BLAKE2b-256 e9d59b75097e0485e07a2a0eb5f4029eba7bbd5ead40cc04aa4aa5c915789401

See more details on using hashes here.

File details

Details for the file solarsystem-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: solarsystem-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for solarsystem-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 78c4e13fe09e083b61a4f34cfb497f266ef9f253efe6d0d2fec2756bf4e5779a
MD5 5cf1aa4848c870145d832984b4786b72
BLAKE2b-256 7c8cc204717d7de4473b170070258bad4291546fd7a808522217cf4d37cd2339

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page