Skip to main content

Creates the daily pages of a Nautical Almanac using Skyfield

Project description

Skyalmanac is a Python 3 script that creates the daily pages of the Nautical Almanac (based on the UT timescale). The generated tables are needed for celestial navigation with a sextant. Although you are strongly advised to purchase the official Nautical Almanac, this program will reproduce the tables with no warranty or guarantee of accuracy.

NOTE: The original Skyalmanac that was a hybrid version using both Skyfield and Ephem has been abolished and replaced with the Skyfield version. It is now the same as the SFalmanac version (except for the new name). There is no justification for the hybrid version any more.

     smileyMultiprocessing version for increased performance!smiley

Skyalmanac-Py3 can now employ multiprocessing (if your processor has multiple cores) reducing the processing time. Single-processing is also available as an option if required. Testing has been successfully performed on Windows 10 and Ubuntu 20.04 LTS. (No testing done on Mac OS.) Compared to single-processing, data processing (excluding conversion from TEX to PDF)

  • … of a 6-day Nautical Almanac is 4x faster on Windows 10; 2x faster on Linux.

  • … of 6-day Event Time Tables is almost 5x faster on Windows 10; 3x faster on Linux.

Windows 10 uses up to 8 threads; Linux uses up to 12 threads in parallel. Testing was performed on a PC with an AMD Ryzen 7 3700X 8-Core (16 threads) Processor. Windows & Mac OS spawn new processes; Linux forks new processes (the code is compatible with both techniques and will also run on CPUs with fewer cores/threads).

Quick Overview

This is the PyPI edition of Skyalmanac-Py3 (a Changelog can be viewed here). Version numbering follows the scheme Major.Minor.Patch, whereby the Patch number represents some small correction to the intended release.

NOTE: Version numbering in PyPI restarted from 1.0 as the previous well-tested versions that exist since early 2019 were never published in PyPI.

Two astronomical libraries are employed: Skyfield and Ephem. Ephem is only used to calculate a few planet magnitudes (Venus and Jupiter are available in Skyfield).

Skyalmanac uses the Hipparcos catalog as its star database. If a current version of Skyfield (>= 1.31) is used, you have two options (which one, you specify by manually editing config.py):

  • if “useIERS = False”, the built-in UT1 tables in the installed version of Skyfield will be employed.

  • if “useIERS = True”, for optimal accuracy (especially for all GHA data), Earth orientation data from IERS (International Earth Rotation and Reference Systems Service) is downloaded and then used until it ‘expires’. It expires after a chosen number of days (also specifiable in config.py). Note that IERS specifies the range of Earth Orientation Parameter (EOP) data currently as “from 2nd January 1973 to 22nd October 2023 (continuously advancing)”. Refer to the IERS web site for current information.

If your Skyfield version is somewhat older (<= 1.30), Skyfield will have downloaded the older files it then used: deltat.data, deltat.preds and Leap_Second.dat, which are slightly less accurate than the IERS EOP data (which is updated weekly!).

Software Requirements


Nearly all of the astronomical computation is done by the free Skyfield library.
Typesetting is done typically by MiKTeX or TeX Live.
Here are the requirements/recommendations:

Installation

Install a TeX/LaTeX program on your operating system so that pdflatex is available.

Ensure that the pip Python installer tool is installed. You may check that the latest version of SFalmanac is installed:

python -m pip uninstall skyalmanac
python -m pip install skyalmanac

Installing Skyalmanac ensures that Skyfield and Pandas (and their dependencies) are also installed. If previous versions of Skyalmanac were installed, consider upgrading Skyfield and Pandas thus:

python -m pip install --upgrade skyfield pandas

Thereafter run it with:

python -m skyalmanac

On a POSIX system (Linux or Mac OS), use python3 instead of python in the commands above.

This PyPI edition also supports installing and running in a venv virtual environment.

Finally check or change the settings in config.py. Its location is printed immediately whenever Skyalmanac runs.

Guidelines for Linux & Mac OS

Quote from Chris Johnson:

It’s best to not use the system-provided Python directly. Leave that one alone since the OS can change it in undesired ways.

The best practice is to configure your own Python version(s) and manage them on a per-project basis using venv (for Python 3). This eliminates all dependency on the system-provided Python version, and also isolates each project from other projects on the machine.

Each project can have a different Python point version if needed, and gets its own site_packages directory so pip-installed libraries can also have different versions by project. This approach is a major problem-avoider.

Troubleshooting

If using MiKTeX 21 or higher, executing ‘option 6’ (Increments and Corrections) will probably fail with:

! TeX capacity exceeded, sorry [main memory size=3000000].

To resolve this problem (assuming MiKTeX has been installed for all users), open a Command Prompt as Administrator and enter:

initexmf --admin --edit-config-file=pdflatex

This opens pdflatex.ini in Notepad. Add the following line:

extra_mem_top = 1000000

and save the file. Problem solved. For more details look here.

Project details


Download files

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

Source Distribution

skyalmanac-1.11.2.tar.gz (33.1 MB view details)

Uploaded Source

Built Distribution

skyalmanac-1.11.2-py3-none-any.whl (33.6 MB view details)

Uploaded Python 3

File details

Details for the file skyalmanac-1.11.2.tar.gz.

File metadata

  • Download URL: skyalmanac-1.11.2.tar.gz
  • Upload date:
  • Size: 33.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for skyalmanac-1.11.2.tar.gz
Algorithm Hash digest
SHA256 4bc7f87b9b966cec338c4079c8006b6de59978e8edd20955427f1e0df91c8b4c
MD5 06b2a27fe74244bf95fc1d0aeca85207
BLAKE2b-256 9ede8427f66cd03e54bd1a8671d14b59093d56b790071a4da962a5e821a8e9d6

See more details on using hashes here.

File details

Details for the file skyalmanac-1.11.2-py3-none-any.whl.

File metadata

  • Download URL: skyalmanac-1.11.2-py3-none-any.whl
  • Upload date:
  • Size: 33.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for skyalmanac-1.11.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b67f984ebee578da408fa5894836f2e6c5bac9e3fcbb2f3a973950093fd343ee
MD5 859bfbef9d262689cd920cf1039935b0
BLAKE2b-256 5f1a142758eabcf26124bfebfd62a1d60779230417c4ae7a693074ef723218bd

See more details on using hashes here.

Supported by

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