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.3.tar.gz (816.7 kB view details)

Uploaded Source

Built Distributions

pyerfa-2.0.1.3-pp39-pypy39_pp73-win_amd64.whl (347.2 kB view details)

Uploaded PyPy Windows x86-64

pyerfa-2.0.1.3-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.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (321.2 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

pyerfa-2.0.1.3-cp39-abi3-win_amd64.whl (347.1 kB view details)

Uploaded CPython 3.9+ Windows x86-64

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

Uploaded CPython 3.9+ Windows x86

pyerfa-2.0.1.3-cp39-abi3-musllinux_1_1_x86_64.whl (749.2 kB view details)

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

pyerfa-2.0.1.3-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.3-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.3-cp39-abi3-macosx_11_0_arm64.whl (329.3 kB view details)

Uploaded CPython 3.9+ macOS 11.0+ ARM64

pyerfa-2.0.1.3-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.3.tar.gz.

File metadata

  • Download URL: pyerfa-2.0.1.3.tar.gz
  • Upload date:
  • Size: 816.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for pyerfa-2.0.1.3.tar.gz
Algorithm Hash digest
SHA256 ba5eb932341beaf222726de8dce2b1645c97b48c321efb2af8a535a7eb90ebfa
MD5 a31f31d4d2d2fc76af3e6e41b2dc6991
BLAKE2b-256 8cdc3cf99fccf9ad09999a0d03643e193f0f82b5cdbdb4e930a5017cb48034d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 ef6c5d2206f134bd95329a0c17d46c449c9b68e9828e97e9bc43b29cd8789f5d
MD5 3c08e53513c9e0312b38db9eee894b95
BLAKE2b-256 416aa291c3de89626e993cc263f76e790f5a74743c4d963dd6028221423296e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 053ed25fdb7deb9d3d7cebecbb3d3dfbeea37c8c0011cc0616293e03d2c308eb
MD5 491fc603d62604f24f99f209dc75ab07
BLAKE2b-256 fe81899f3f3b2e78147a86b77c17a4aa9701c8a797dd01a707fb03707a875116

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 779caac3737da68f4db43b0dec026ac479719e02d25b8c4e7b0756abadbcd416
MD5 d68c1c75e1ec3b3f977c34304becee32
BLAKE2b-256 9b311b78cbd54011936b698f0f96362d11a2976b2735b4aeed02020aaaf00616

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 60c0a73db5a42927fbafd12c623699c2c1b1233b6e1be1963970a5ad47e463c4
MD5 1be319c4bb42dbc367195cb0897d1f01
BLAKE2b-256 1bba1fe85bfc145a82a0d8eaf8bc8109348a7a4fab1ec07741bdf6feb9718104

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyerfa-2.0.1.3-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.0.0 CPython/3.12.2

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 b7a85ac9d807ea71550e831e873916ed3a44300fe6e20e0b3ca0f2784c0b2757
MD5 09e5a59a28b2a3e9239784c777e85f6d
BLAKE2b-256 02939deeec714b48590ad1e803bb4a6a848609bc351a7413d7edc82537c4a829

See more details on using hashes here.

File details

Details for the file pyerfa-2.0.1.3-cp39-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b0f621f26b5f31b3fb6bb113fb48a428e56eb00c7d729a242672dc4f886c8d18
MD5 5620c839e6d951d0423004bef25b7a4c
BLAKE2b-256 11de89a41d77cf43ea9ef6a53baf314589b36a187469f1c233a626bd7528f260

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4472d2a2622e47d220a9436c953a487d8c051157f7b44b1f71964de17ee443b
MD5 859d728450eddee433df85f03dbe6eec
BLAKE2b-256 bdc7e3ffaf4f0e92d2ef7e0212899926cda377bb2cdfaf948029d898e85264c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 58c3a971a9fba8663b49dcc54c3419e837837140d81cc6be9f1c21fc56322f7b
MD5 80f9985bab39d0ce1954b8ca2d73abd7
BLAKE2b-256 acdbd44fc7d728fbdf1d8a273b0eedc9acfc3d489948d0b2373c043c0d224380

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 359327c88f1e5dea3974b284dabef141824ac54753c5cab6b3f23acd9d52071b
MD5 7619b0c56885780c18b9db8e39965022
BLAKE2b-256 55cc77a0b9b8ef6f5422ac3a77de6dc298fe356b8c2b30a4fdba705c83e9adf5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyerfa-2.0.1.3-cp39-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fc554151de564b567e391b7c9c3b545efac63674ab1954382d38f886254c01fb
MD5 df143108a11586c7bb81bc714bbf73f6
BLAKE2b-256 c808439c592d1188d269e68d1eb179be0e97b4ace4ad83b426ec59f944c05051

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