跳转到主要内容

Skyfield数据包

项目描述

Skyfield数据文件

Tests

原因

Skyfield 是一个用于天文计算的Python库。它依赖于各种数据文件以准确地计算月相、行星位置等。

这些数据文件提出了几个问题

  • 如果它们不在 Loader 的路径中,它们会在运行时 下载。根据您请求的存档,一些文件可能非常大,导致长时间延迟(直接与您的网络带宽相关)。在Web服务器应用程序的情况下,您会导致客户端超时。
  • 它们主要来自两个来源:NASA的JPL和IERS。 如果其中任何一个临时不可用,您将无法执行任何计算。
  • 在某些国家或某些过滤代理后面,某些主机可能被 阻止
  • 这些文件有 到期日期(在不太遥远的未来)。因此,即使文件已下载到正确的路径,在每次运行时,您也可能需要下载一个或多个文件,然后才能使用它们进行任何计算。

目前已知到期日期

文件 日期
finals2000A.all 2024-06-16
de421.bsp 2053-10-08

弃用警告:自 python-skyfield>=1.31 以来,不再使用 Leap_Second.datdeltat.datadeltat.preds 文件。它们不再维护,Brandon Rhodes已切换到其他源文件进行∆T计算。

本项目的目标

  • 在Python包中提供至少这些资产中最常见的。
  • 定期发布以刷新文件,防止其过期。
  • 当文件即将过期(或已过时)时,提供警告/日志机制,以便您仍然可以使用加载的资产进行计算,但会得知您需要升级。

这样,您就可以通过pip来安装或升级此数据包。

一旦所有文件都存储在您的磁盘空间中,您就可以实例化指向它们的路径的skyfield加载器,无需担心任何事情。

用法

使用以下命令安装包

pip install skyfield skyfield-data

要创建自定义Skyfield加载器,请使用以下代码

from skyfield_data import get_skyfield_data_path
from skyfield.api import Loader
load = Loader(get_skyfield_data_path())
planets = load('de421.bsp')  # this command won't download this file
ts = load.timescale(builtin=False)  # this command won't download the IERS file

记录在案,将buitin=True作为加载时标数据的参数不会触发文件的下载,因为python-skyfield已经将其自己的数据文件作为内置数据源嵌入。

如果您想确保数据文件永远不会被下载,您也可以使用expire选项,如下所示

load = Loader(get_skyfield_data_path(), expire=False)

每当目录中包含的文件过期时,在加载skyfield-data路径时,您将收到警告

>>> from skyfield_data import get_skyfield_data_path
>>> from skyfield.api import Loader
>>> load = Loader(get_skyfield_data_path())
/home/[redacted]/skyfield_data/expirations.py:25: RuntimeWarning: The file de421.bsp has expired. Please upgrade your version of `skyfield-data` or expect computation errors
  RuntimeWarning

默认情况下,不会阻止加载,但强烈建议升级到更近的版本,以确保您不会进行错误的天文计算。

自定义限制

默认情况下,当文件已过期时,会引发RuntimeWarning。您可能希望提前知道这个警告,也就是说,在几天或几周前,以便最终升级您的skyfield-data版本。

为了触发此警告,您可以使用expiration_limit参数,如下所示

>>> from skyfield_data import get_skyfield_data_path
>>> from skyfield.api import Loader
>>> load = Loader(get_skyfield_data_path(expiration_limit=30))
/home/[redacted]/skyfield_data/expirations.py:25: RuntimeWarning: The file de421.bsp would expire in less than 30 days. Please upgrade your version of `skyfield-data` or expect computation errors
  RuntimeWarning

注意: expiration_limit参数应该是一个正整数(或零)。

开发者

我们假设您将使用Python 3.7+版本进行所有常规操作。

我们提供了一个Makefile,其中包含基本的target,以便与工具包交互。使用make help获取更多详细信息。

为了能够运行download.py脚本,我们建议您在一个虚拟环境中运行它,该虚拟环境已经安装了“dev”依赖项,如下所示

make install-dev

Python兼容性

重要: 此项目目前与Python 2.6、2.7和Python 3.7+至3.11保持兼容,以保持与skyfield相同的Python兼容性。尽管如此,GitHub镜像的最近更改使得确保其仍然兼容变得困难。对此造成的不便我们深表歉意。

开发

改进或修复skyfield-data将需要您至少有一个安装了tox的虚拟环境。

我们将要求您在补丁中添加测试,以确保您的补丁或进一步的补丁不会引入回归或错误。

为了进行快速测试,在您的“tox-ready”虚拟环境中运行以下命令

make test

以启动Python 2.7和Python 3.7+测试作业。

如果您想测试您的分支与Python 2.6的兼容性,您必须设置一个Python 2.6兼容的tox环境,方法类似于以下操作

sudo apt install python2.6 python2.6-dev  # dev headers to compile numpy
mkvirtualenv TOX26 --python=`which python2.6`  # You will activate this venv with `workon TOX26`
pip install tox
tox -c tox-py26.ini

已知问题:在Ubuntu上,您可能无法在此处构建numpy,因为系统中的C头文件放置不当。我在Ubuntu上遇到了困难,但您的体验可能会有所不同。

注意:目前,我们无法证明skyfield-data与Python 2.6的100%兼容性,因为CI已失效。尽管如此,我们非常相信它是。祝你好运!

在线CI与Travis & Circle-CI

在线CI依赖于GitHub Actions

Tests

版权

数据文件

  • de421.bsp喷气推进实验室提供。
  • finals2000A.all国际地球自转和参考系统服务提供。

软件

此Python包代码遵循MIT许可条款发布。有关详细信息,请参阅COPYING文件。

项目详情


下载文件

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

源代码分发

skyfield-data-6.0.0.tar.gz (17.0 MB 查看哈希值)

上传时间 源代码

构建分发

skyfield_data-6.0.0-py2.py3-none-any.whl (17.0 MB 查看哈希值)

上传时间 Python 2 Python 3

支持