A demo of the code can be run in Google Colab. You can use it to run a standard three-star fix. A Google account is necessary.
The code is installed using just a file copy of the python (.py) and (optionally) Jupyter notebook (.ipynb) files to a suitable directory. No additional libraries are necessary. Python 3.11 is required. This link will download all code in a ZIP file.
The python scripts could be installed in PyDroid to allow for use on an Android mobile phone (with no need for internet access). To aid in installation a good file browser is recommended (for copying and decompressing of ZIP files) such as Cx File Explorer as described here. You are recommended to unzip the file to a specific directory (not a root directory), on Android you could create a directory in the "Documents" tree, e.g. "Documents/work/coding".
The script starfix.py contains the core routines.
The script calibration.py contains a setup of a used sextant, with a correction for errors. You are advised to adjust this script for your used sextant.
You are also advised to make copies (and modifications) of the supplied samples starfixdata_stat_1.py or starfixdata_sea_1.py to support your workflow and observations. There are also Jupyter notebooks availabe, see below.
The Nautical Almanac must be used manually to get the GP (ground point) of your observations. Currently the almanacs of 2024 and 2025 are bundled in the repository in a digital version. But you may of course use a hard-copy of the nautical almanac and these can be ordered here. New digital versions (for 2026 and onwards) can be prepared using some GitHub code repositories, such as this one.
The script sample terrestrial.py can be used (and modified) if you would like to use your sextant as an aid in terrestrial navigation.
In addition to the supplied scripts you may also run the code in Jupyter Notebooks. Jupyter can be installed in Pydroid, and this allows for a convenient way to keep your workflow in an easily managed web interface. The notebook web interface can be launched from specific launch scipts (launch.xxx.py).