跳转到主要内容

ERFA的Python绑定

项目描述

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

PyERFA是PythonERFA库(天文学基本算法库)的包装,这是一个包含天文学关键算法的C库,基于国际天文学联合会(IAU)发布的SOFA库。所有C例程都作为Numpy 通用函数进行包装,以便可以使用标量或数组输入调用它们。

该项目是从Astropy项目上下文中的astropy._erfa模块拆分出来的,作为一个独立包。它包含ERFA C源代码作为git子模块。包装是通过Jinja2模板引擎实现的。

如果您在研究中使用此软件包,请通过DOI引用它:10.5281/zenodo.3940699

安装说明

您可以使用简单的命令从软件包目录安装该软件包。

$ pip install .

同样,可以使用以下命令创建wheel文件:

$ pip wheel .

您可以从PyPI或直接从git仓库获取该软件包。

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

该软件包还提供了夜间轮询wheel,获取方式如下:

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

测试

为了测试,可以一起安装软件包及其测试依赖项,然后使用以下命令进行测试:

$ pip install .[test]
$ pytest

或者,可以使用tox,它将为您设置一个单独的测试环境,具有以下功能:

$ tox -e test

用法

该软件包可以作为erfa导入,它包含所有由ERFA封装的ufuncs的python代码,并记录错误和警告。还公开了由ERFAerfam.h中定义的常量,以及对应于ERFA使用的结构的numpy.dtype。示例

>>> 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

您也可以直接使用ufuncs,但那时必须显式处理警告和错误状态。例如,比较以下内容:

>>> 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))

许可

PyERFA采用3条款BSD风格许可 - 请参阅LICENSE.rst文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pyerfa-2.0.1.4.tar.gz (817.4 kB 查看哈希)

上传时间:

构建分发

pyerfa-2.0.1.4-pp39-pypy39_pp73-win_amd64.whl (347.2 kB 查看哈希)

上传时间: PyPy Windows x86-64

pyerfa-2.0.1.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.9 kB 查看哈希)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

pyerfa-2.0.1.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (321.2 kB 查看散列值)

上传于 PyPy macOS 10.9+ x86-64

pyerfa-2.0.1.4-cp39-abi3-win_amd64.whl (347.1 kB 查看散列值)

上传于 CPython 3.9+ Windows x86-64

pyerfa-2.0.1.4-cp39-abi3-win32.whl (340.0 kB 查看散列值)

上传于 CPython 3.9+ Windows x86

pyerfa-2.0.1.4-cp39-abi3-musllinux_1_1_x86_64.whl (749.2 kB 查看散列值)

上传于 CPython 3.9+ musllinux: musl 1.1+ x86-64

pyerfa-2.0.1.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (738.7 kB 查看散列值)

上传于 CPython 3.9+ manylinux: glibc 2.17+ x86-64

pyerfa-2.0.1.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (692.8 kB 查看散列值)

上传于 CPython 3.9+ manylinux: glibc 2.17+ ARM64

pyerfa-2.0.1.4-cp39-abi3-macosx_11_0_arm64.whl (329.3 kB 查看散列值)

上传于 CPython 3.9+ macOS 11.0+ ARM64

pyerfa-2.0.1.4-cp39-abi3-macosx_10_9_x86_64.whl (341.8 kB 查看散列值)

上传于 CPython 3.9+ macOS 10.9+ x86-64

由以下支持