Skip to main content

Python bindings for ERFA

Project description

PyPI Status DOI 10.5281/zenodo.3940699 GitHub Actions CI Status Documentation Status

PyERFA is the Python wrapper for the ERFA library (Essential Routines for Fundamental Astronomy), a C library containing key algorithms for astronomy, which is based on the SOFA library published by the International Astronomical Union (IAU). All C routines are wrapped as Numpy universal functions, so that they can be called with scalar or array inputs.

The project is a split of astropy._erfa module, developed in the context of Astropy project, into a standalone package. It contains the ERFA C source code as a git submodule. The wrapping is done with help of the Jinja2 template engine.

If you use this package in your research, please cita it via DOI 10.5281/zenodo.3940699.

Installation instructions

The package can be installed from the package directory using a simple:

$ pip install .

and similarly a wheel can be created with:

$ pip wheel .

The package can be obtained from PyPI or directly from the git repository:

$ git clone --recursive https://github.com/liberfa/pyerfa/

The package also has nightly wheel that can be obtained as follows:

$ pip install --upgrade --index-url https://pypi.anaconda.org/liberfa/simple pyerfa --pre

Testing

For testing, one can install the packages together with its testing dependencies and then test it with:

$ pip install .[test]
$ pytest

Alternatively, one can use tox, which will set up a separate testing environment for you, with:

$ tox -e test

Usage

The package can be imported as erfa which has all ERFA ufuncs wrapped with python code that tallies errors and warnings. Also exposed are the constants defined by ERFA in erfam.h, as well as numpy.dtype corresponding to structures used by ERFA. Examples:

>>> import erfa
>>> erfa.jd2cal(2460000., [0, 1, 2, 3])
(array([2023, 2023, 2023, 2023], dtype=int32),
 array([2, 2, 2, 2], dtype=int32),
 array([24, 25, 26, 27], dtype=int32),
 array([0.5, 0.5, 0.5, 0.5]))
>>> erfa.plan94(2460000., [0, 1, 2, 3], 1)
array([([ 0.09083713, -0.39041392, -0.21797389], [0.02192341, 0.00705449, 0.00149618]),
       ([ 0.11260694, -0.38275202, -0.21613731], [0.02160375, 0.00826891, 0.00217806]),
       ([ 0.13401992, -0.37387798, -0.21361622], [0.0212094 , 0.00947838, 0.00286503]),
       ([ 0.15500031, -0.36379788, -0.21040601], [0.02073822, 0.01068061, 0.0035561 ])],
      dtype={'names': ['p', 'v'], 'formats': [('<f8', (3,)), ('<f8', (3,))], 'offsets': [0, 24], 'itemsize': 48, 'aligned': True})
>>> erfa.dt_pv
dtype([('p', '<f8', (3,)), ('v', '<f8', (3,))], align=True)
>>> erfa.dt_eraLDBODY
dtype([('bm', '<f8'), ('dl', '<f8'), ('pv', [('p', '<f8', (3,)), ('v', '<f8', (3,))])], align=True)
>>> erfa.DAYSEC
86400.0

It is also possible to use the ufuncs directly, though then one has to deal with the warning and error states explicitly. For instance, compare:

>>> erfa.jd2cal(-600000., [0, 1, 2, 3])
Traceback (most recent call last):
...
ErfaError: ERFA function "jd2cal" yielded 4 of "unacceptable date (Note 1)"
>>> erfa.ufunc.jd2cal(-600000., [0, 1, 2, 3])
(array([-1, -1, -1, -1], dtype=int32),
 ...,
 array([-1, -1, -1, -1], dtype=int32))

License

PyERFA is licensed under a 3-clause BSD style license - see the LICENSE.rst file.

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

pyerfa-2.0.1.5.tar.gz (818.4 kB view details)

Uploaded Source

Built Distributions

pyerfa-2.0.1.5-pp39-pypy39_pp73-win_amd64.whl (349.5 kB view details)

Uploaded PyPy Windows x86-64

pyerfa-2.0.1.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.9 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyerfa-2.0.1.5-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (321.1 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

pyerfa-2.0.1.5-cp39-abi3-win_amd64.whl (349.4 kB view details)

Uploaded CPython 3.9+ Windows x86-64

pyerfa-2.0.1.5-cp39-abi3-win32.whl (340.0 kB view details)

Uploaded CPython 3.9+ Windows x86

pyerfa-2.0.1.5-cp39-abi3-musllinux_1_2_x86_64.whl (723.0 kB view details)

Uploaded CPython 3.9+ musllinux: musl 1.2+ x86-64

pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (738.7 kB view details)

Uploaded CPython 3.9+ manylinux: glibc 2.17+ x86-64

pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (692.8 kB view details)

Uploaded CPython 3.9+ manylinux: glibc 2.17+ ARM64

pyerfa-2.0.1.5-cp39-abi3-macosx_11_0_arm64.whl (329.4 kB view details)

Uploaded CPython 3.9+ macOS 11.0+ ARM64

pyerfa-2.0.1.5-cp39-abi3-macosx_10_9_x86_64.whl (341.8 kB view details)

Uploaded CPython 3.9+ macOS 10.9+ x86-64

File details

Details for the file pyerfa-2.0.1.5.tar.gz.

File metadata

  • Download URL: pyerfa-2.0.1.5.tar.gz
  • Upload date:
  • Size: 818.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyerfa-2.0.1.5.tar.gz
Algorithm Hash digest
SHA256 17d6b24fe4846c65d5e7d8c362dcb08199dc63b30a236aedd73875cc83e1f6c0
MD5 6cb13d45fb4e391b70e2456760a9add8
BLAKE2b-256 713963cc8291b0cf324ae710df41527faf7d331bce573899199d926b3e492260

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 171ce9676a448a7eb555f03aa19ad5c749dbced1ce4f9923e4d93443c4a9c612
MD5 e053de89211f235b1f31082d5dca5793
BLAKE2b-256 5189278ac94f86b6850f0ccee99839103375b665ccf99cb5085515deed4ab2d6

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 690e258294202c86f479e78e80fd235cd27bd717f7f60062fccc3dbd6ef0b1a9
MD5 f85040e722cc0462f4382a16b5c6806b
BLAKE2b-256 119eee706b5fc5b5a72e31283f66e68730abf802469bbc373ff0d05e68d7e2df

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4991dee680ff36c87911d8faa4c7d1aa6278ad9b5e0d16158cf22fa7d74ba25c
MD5 4720bd985d010f46344515e5d72b3b87
BLAKE2b-256 983202fe8bf940d8ce2cc482c48056ccc6b64628f622a56fa773810199637fa8

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: pyerfa-2.0.1.5-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 349.4 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 66292d437dcf75925b694977aa06eb697126e7b86553e620371ed3e48b5e0ad0
MD5 272ccd5c0eea6d6b9332cc61d45601f2
BLAKE2b-256 b41197233cf23ad5411ac6f13b1d6ee3888f90ace4f974d9bf9db887aa428912

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-win32.whl.

File metadata

  • Download URL: pyerfa-2.0.1.5-cp39-abi3-win32.whl
  • Upload date:
  • Size: 340.0 kB
  • Tags: CPython 3.9+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 d30b9b0df588ed5467e529d851ea324a67239096dd44703125072fd11b351ea2
MD5 18c34b4edc1096948650aabea2ad1ca1
BLAKE2b-256 2c56b22b35c8551d2228ff8d445e63787112927ca13f6dc9e2c04f69d742c95b

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07b80cd70701f5d066b1ac8cce406682cfcd667a1186ec7d7ade597239a6021d
MD5 fee2cfe552fb0e3292f4b9015c9ca551
BLAKE2b-256 b9f5ff91ee77308793ae32fa1e1de95e9edd4551456dd888b4e87c5938657ca5

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e43c7194e3242083f2350b46c09fd4bf8ba1bcc0ebd1460b98fc47fe2389906
MD5 9165a1d6f1538d2a3c2ecb2045a41665
BLAKE2b-256 e5e0050018d855d26d3c0b4a7d1b2ed692be758ce276d8289e2a2b44ba1014a5

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b0603e8e1b839327d586c8a627cdc634b795e18b007d84f0cda5500a0908254e
MD5 6fd2dff6167a8824685a4d328d6dce4c
BLAKE2b-256 cb96b6210fc624123c8ae13e1eecb68fb75e3f3adff216d95eee1c7b05843e3e

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be1aeb70390dd03a34faf96749d5cabc58437410b4aab7213c512323932427df
MD5 f09efe991b5afd7fadec635eff31f851
BLAKE2b-256 114a31a363370478b63c6289a34743f2ba2d3ae1bd8223e004d18ab28fb92385

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.5-cp39-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.5-cp39-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b282d7c60c4c47cf629c484c17ac504fcb04abd7b3f4dfcf53ee042afc3a5944
MD5 f32c2a62cd67169b73061cad15d018d5
BLAKE2b-256 7dd93448a57cb5bd19950de6d6ab08bd8fbb3df60baa71726de91d73d76c481b

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