Project overview#

AstroLore

Tests PyPI Python License: MIT

Astrolore is a Python package that bridges real astronomy with science fiction. Given any astrophysical object — by name or sky coordinates — it finds the nearest object in its curated sci-fi catalog and tells you where it appears across film, TV, and literature.


What it does#

  • Resolves any object name via the CDS Sesame name resolver (Simbad/NED), or accepts raw RA/DEC coordinates directly

  • Searches a catalog of ~80 real astronomical objects referenced in science fiction and finds the one with the smallest angular separation from your input

  • Returns lore — which franchises reference it and what role it plays in those universes

  • Plots a full-sky Aitoff map showing your object, the nearest sci-fi source, and the rest of the catalog

  • Opens Aladin Sky Atlas centered on the nearest sci-fi object so you can observe it in real survey imagery


Demo#

Search by name Search by coordinates
Full sky map View in Aladin

Sci-fi catalog#

The catalog covers ~80 real objects referenced across:

Franchise

Franchise

Star Trek (TOS, TNG, DS9, VOY, TAS)

Dune

The Expanse

Foundation

Mass Effect

Halo

Babylon 5

Ender’s Game

Contact

Project Hail Mary

Rick and Morty

Stargate SG-1

The Hitchhiker’s Guide to the Galaxy

Classic sci-fi short fiction

Objects range from nearby stars (Proxima Centauri, Wolf 359, Barnard’s Star) to galaxies (Andromeda, Pinwheel) and nebulae (Crab Nebula, Helix Nebula).


Installation#

pip install astrolore

Dependencies: pandas · astropy · numpy · matplotlib · pywebview · Pillow

tkinter is bundled with most Python distributions. On Linux you may need sudo apt-get install python3-tk.


Usage#

GUI#

from astrolore import gui

gui.main_gui().start_gui()

Programmatic API#

from astrolore.dataset import astrolore_dataset

ds = astrolore_dataset()

# Search by name (resolved via Simbad/NED)
closest = ds.find_closest_object(name="Betelgeuse")
print(ds.output_lore(closest))

# Search by coordinates (ICRS sexagesimal)
closest = ds.find_closest_object(coords=("5h55m10.3s", "7d24m25.4s"))
print(ds.output_lore(closest))

# Generate and save the full-sky map
fig, ax = ds.get_catalog_map()
fig.savefig("skymap.png", dpi=150, bbox_inches="tight")

Documentation#

Full API reference: arnablahiry.github.io/software/astrolore


Authors#

Name

Email

Arnab Lahiry

alahiry@ics.forth.gr

Isabele Souza Vitorio

ivitorio@umich.edu

Joe Adamo

jadamo@arizona.edu

Kayvon Sharifi

ksharifi1@gsu.edu