astroML包的性能插件
项目描述
本软件包包含astroML软件包的插件代码,该软件包可在http://github.com/astroML/astroML找到。
AstroML是基于numpy、scipy、scikit-learn和matplotlib构建的Python机器学习和数据挖掘模块,采用3-Clause BSD许可证分发。它包含一个不断增长的统计和机器学习例程库,用于在Python中分析天体数据,包括几个开放天体数据集的加载器,以及大量分析和可视化天体数据集的示例。
该项目始于2012年,由Jake VanderPlas发起,以配合Zeljko Ivezic、Andrew Connolly、Jacob VanderPlas和Alex Gray所著的《天文学中的统计学、数据挖掘和机器学习》一书。
核心和插件
该项目分为两个部分。核心 astroML 库仅使用 Python 编写,旨在为所有用户(即使是那些没有可工作的 C 或 Fortran 编译器的人)提供非常简单的安装方式。一个伴随库 astroML_addons 可以根据需要安装以提高某些算法的性能。在 astroML_addons 中的每个算法在核心 astroML 实现中都有一个纯 Python 对应物,但 astroML_addons 库包含更快且更高效的编译代码实现。此外,如果您在系统上安装了 astroML_addons,则核心 astroML 库将默认导入和使用这些更快的例程。
这种分割的原因是方便 Python 新手使用。如果系统上已经安装了先决条件,则核心 astroML 库可以轻松地安装在任何系统上。要安装 astroML_addons 库,则需要 C 编译器,但它也被设计为对更高级用户容易安装。下面“开发”部分有进一步的讨论。
重要链接
安装
此软件包使用 distutils,这是安装 Python 模块的标准方式。在安装之前,请确保您的系统满足以下依赖项中的要求。
核心
要安装到您的家目录中的核心 astroML 软件包,请使用
pip install astroML
核心软件包是纯 Python,因此在大多数系统上安装应很直接。要从源安装,请参阅 http://github.com/astroML/
附加组件
astroML_addons 软件包的安装需要有效的 C/C++ 编译器。可以使用以下方式安装:
pip install astroML_addons
要从源安装,请使用
python setup_addons.py install
您可以使用以下方式指定任意安装目录:
python setup.py install --prefix='/some/path'
在 Linux/Unix 系统上全局安装
python setup.py build sudo python setup.py install
依赖项
在 astroML 中有三个级别的依赖项。核心 依赖项是核心 astroML 软件包所需的。 附加组件 依赖项是性能 astroML_addons 所需的。 可选 依赖项是运行某些(但不是所有)示例脚本所需的。
核心依赖项
核心 astroML 软件包需要以下内容
Python 版本 2.6.x - 2.7.x(astroML 尚不支持 Python 3.x)
Numpy >= 1.4
Scipy >= 0.7
Scikit-learn >= 0.10
Matplotlib >= 0.99
PyFITS >= 3.0。PyFITS 是基于 cfitsio 的 Flexible Image Transport System (FITS) 文件的 Python 读取器。一些数据加载器需要 pyfits。
此配置与 2010 年 4 月的 Ubuntu 10.04 LTS 版本相匹配,增加了 scikit-learn。
要运行单元测试,您还需要 nose >= 0.10
附加组件依赖项
astroML_addons 中的快速代码需要一个有效的 C/C++ 编译器。
可选依赖项
一些示例脚本需要特定的或升级的软件包。这些要求列在特定脚本顶部
开发
本包旨在成为一个高质量天文代码的仓库,并鼓励提交新的程序。安装版本控制系统 Git 后,您可以使用以下方法从 GitHub 检出最新源代码:
git clone git://github.com/astroML/astroML.git
或者如果您有写入权限
git clone git@github.com:astroML/astroML.git
贡献
我们强烈鼓励贡献有用的天文相关代码:为了使 astroML 成为 python/astronomy 社区的相关工具,它需要随着研究领域的发展而发展。以下是贡献的一些指南
通用
任何贡献都应通过 github 拉取请求系统(更多信息请参阅 帮助页面)进行。提交给 astroML 的代码应符合 BSD 风格许可,并遵循 PEP8 风格指南。
文档和示例
所有提交的代码都应遵循 Numpy 文档指南 进行文档化。这是 scipy 宇宙中许多包使用的统一文档风格。
此外,强烈建议创建示例脚本,展示该方法在天文数据集上的有用性(最好使用 astroML.datasets 中的加载器)。这些示例脚本位于主源代码库的 examples 子目录中。
附加代码
我们很早就决定将核心例程与高性能编译例程分开。这是为了确保核心包的安装尽可能简单(即不需要 C 编译器)。
鼓励向 astroML_addons 贡献高效的编译代码:在 python 宇宙中,常见算法的高效实现是其中最强大的功能之一。封装编译库的首选方法是使用 cython;其他选项(weave、SWIG 等)更难构建和维护。
目前,政策是 astroML_addons 中包含的任何高效算法都应在 astroML 中有一个重复的纯 python 实现,代码将选择如果可用则较快的例程。(有关如何实现此功能的示例,请参阅 astroML/periodogram.py 中 lomb_scargle 函数的定义)。这项政策存在两个原因
它允许初学者用户拥有 astroML 的全部功能,而无需经历复杂的安装步骤的麻烦。
它具有教学目的:纯 python 实现通常比 C 或 cython 中的等效实现更容易阅读和理解。
它强制执行避免过早优化的良好编码实践。首先确保代码能正常工作(即在简单的 python 中编写)。然后创建一个在附加组件中的优化版本。
如果这项政策在将来特别麻烦,可能会重新审视。