StarHash

Generate unique, memorable, and deterministic names for astronomical objects.

Python Version PyPI version uv ruff ty License: MIT HEALPix

Why?

Because modern astronomy is hard enough, without mixing up sequentially-generated object names. Assigning memorable names to objects not only minimises the chance of triggering precious telescope time on the wrong thing, but reduces cognitive load.

Every 3 arcsecond patch of sky now has a unique 3-word combination associated with it!

Example

  • Instead of SN2024cld or ra=237.589792 dec=+18.93895
  • You get: armrest-fraying-bullion

Installation

To avoid issues with dependencies, we recommend setting up a virtual environment using your favourite package manager. Then:

pip install starhash

or with uv

uv add starhash

Quickstart

StarHash ships a basic CLI for quick queries by default

starhash get-name-from-coord --ra=321.4214 --dec=-54.21231
starhash get-coord-from-name gathering-equinox-approach

Development and contributing

git clone https://github.com/tkillestein/starhash.git

Then create the dev environment:

uv sync --all-groups --python>=3.11

Install the pre-commit hooks

pre-commit install

And you're ready to go!

Before committing any changes, run pytest to confirm that the hashing code still satisfies the round-trip property.

Documentation is built via mkdocs - add Markdown files to docs and edit the mkdocs.yml file to build pages there. Then commit and push your changes, and run mkdocs gh-deploy to update the documentations site.

Citation

If you include StarHash in your favourite pipeline/broker/API, please cite:

@software{starhash,
  author = {Tom Killestein},
  title = {StarHash: Human-readable identifiers for astronomical coordinates},
  year = {2026},
  url = {https://github.com/tkillestein/starhash}
}