将 Linux 作为一个科学计算平台进行探索

使用 Sage 和 Python 计算数字

Linux® 是一种出色的科学计算平台,常被学术团体用来处理大量任务。尽管许多开源项目会解决特定应用程序的问题,但是 Sage 数学项目提供了一种更通用的解决问题的能力。Python 是许多最高规格的科学应用使用的主要语言,本文将介绍科学应用。

Paul Ferrill, 首席技术官, ATAC

Paul Ferrill 为计算机出版物撰写文章已有超过 20 年的时间了。他最初为 PC Magazine 撰写关于 LANtastic 和 Novell 的早期版本等产品的评论。Paul 拥有 BSEE 和 MSEE 学位,曾经为许多计算机平台和体系结构编写过软件。



2012 年 9 月 10 日

科学团体中的 Linux

Linux 在科学团体中占有重要地位,这一点也不奇怪。解决方案种类繁多,从高性能计算集群到可视化软件都包含其中。甚至还有一个基于 Red Hat Enterprise Linux 且针对科学计算的完整 Linux 发行版,它被相应地命名为 Scientific Linux。

Sage 和 Enthought Python Distribution

本文介绍使用 Linux 工作站进行科学计算的两种不同方法。第一种方法是 Sage 开源数学系统,第二种方法是 Enthought Python Distribution (EPD)。这两种方法都使用大量核心开源 Python 工具来执行困难的工作。如果您想要尝试这两种方法,可使用 Ubuntu 软件管理器安装各个软件。

在这两种方法中,Sage 更全面一些,因为与其说它是大量不同的基础引擎,不如说它是一个 shell。您甚至可以从 Sage 命令行与 MATLAB 或 Mathematica 等商用产品进行交互。在 Sage 命令提示符下,您实质上是与 IPython 进行交互,从而访问其所有功能。开始探索 Sage 的功能时,您还必须考虑对象和方法。Sage 提供了大量不同的计算机代数系统,以支持用户从命令行与它们进行交互。

值得注意的是,Sage 基于 Python,但在将它传递给 Python 解释器之前,需要对每个语句进行预分析。在查看简单的交互式 Sage 命令时,可能会造成一些混淆。此行为的基本原理是:让在 Sage 中输入命令变得尽可能直观一些。一个好示例是求幂符号。在纯 Python 中,您必须输入 2**4 将二次方提高到四次方。在 Sage 中,则使用向上箭头符号 (^),比如 2^4。与基本 Python 相比,Sage 处理一些操作(整数除法)的方式也不相同。

NumPy 和 SciPy

Sage 和 EDP 的两个最出名的潜在难题是 NumPy 和 SciPy。两个项目都在 90 年代中后期出现,最初由 Travis Oliphant 启动,Travis Oliphant 现在是 Enthought 的一名员工。NumPy 提供核心数值方法来处理数组和矩阵。SciPy 依靠 NumPy 构建其基本数组数据结构,并包含用于处理一切(从线性代数到信息处理)的大量模块。Enthought 是两个项目的发起者,并且仍在继续开发大量新版本。


安装 Sage

安装 Sage 有几种选项可供选择。要查看 Sage,而不是实际安装它,可以使用 live CD 版本。您还可以在 Oracle VM VirtualBox 或 VMware Player 等虚拟机中运行 live CD。本文将介绍如何在运行最新版本的 Ubuntu (12.04) 的物理机和虚拟机上安装 Sage。

物理机

从介质安装 Sage 是启动和运行 Unbuntu 12.04 的最可靠的一种方法,因为最近刚发布了操作系统。请下载源代码 tarball 并将它解压缩到一个合适的目录中。在完成构建之前,还必须安装一些必备软件,您可以使用下列命令完成安装:

sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince

sudo apt-get install tk8.5-dev

安装了必备软件之后,就可以构建 Sage 了,可以使用下列命令启动构建:

make

此时,可以去看个电影或小睡一下。在典型台式机上,完整的构建过程可能需要几个小时。如果正确构建了一切内容,则应看到类似 图 1 的界面。

图 1. Sage 的构建界面
完成的 Sage 构建过程的屏幕截图

虚拟机

如果您不喜欢冒险,并且只是想要开始使用 Sage,那么在虚拟机上安装 Sage 是一个好选择。可从 Sage 网站上下载 Open Virtualization Archive (OVA) 包,该包随附提供了 Fedora 16 和 Ubuntu 10.04.3 的二进制软件包。OVA 是一个包文件(从本质上讲是一个 tar 文件),包含以 Open Virtualization Format (OVF) 形式启动虚拟机所需的所有文件。


使用 Sage

安装了 Sage 后,就可以开始数学发现和探索之旅。Sage 有一个命令行界面和一个基于 Web 的界面。

命令行界面

要从构建 Sage 的目录启动命令行版本,只需键入下列命令:

./sage

图 2 显示了一个 Sage 解释器示例和之前所述的一些数学解释。

图 2. Sage 命令行界面和数学解释
具有数学解释的 Sage 命令行界面的屏幕截图

整数除法中的差别与 Python 处理运算类型(整数和浮点数等)的方式有关。在 Python 中,表达式 2/3 会分配一个下舍到 0 的整数结果。Sage 将除法运算符视为有理数的构造函数,这意味着您可以用与在纸上计算非常相似的方式执行分数运算。例如,如果在 Sage 提示符处输入 2/3 + 2/3,会得到结果 4/3。如果在 Python 中键入同样的内容,则结果是 0。您可以使用 float()int() 隐式地强制文字类型,如 图 2 所示。

基于 Web 的界面

要使用 Sage Notebook,可以在启动 Sage 后输入 notebook(),或者是使用以下命令:

./sage --notebook

这会启动 Sage 服务器,并且默认 Web 浏览器会打开 Sage Notebook 主页。您会在笔记本中发现许多促进操作的功能,比如将工作表保存或加载到文件,以及常规的复制、删除和重命名功能。在 图 3 中,Sage 使用 Share 和 Publish 功能来促进协作。

图 3. Sage Notebook 功能
Sage Notebook 的屏幕截图,显示了简单的测试、方程计算和绘制曲线图

计算机代数软件包

基本 Sage 分发包含许多计算机代数软件包,其中包含 GAP、Maxima、PARI 和 Singular。每个软件包在数学社区中都有自己的关注者,并提供了略有不同的功能。这里的关键是:Sage 在基本分发中包含所有这些软件包,这意味着无需单独下载并安装它们。

图 4 显示了一个使用 Maxima 执行几种矩阵运算的示例。这是使用 Sage Notebook 完成的,它以黑色显示了用户输入,以蓝色显示了输出。前两行使用了等同于 i/j 的条目创建了矩阵,其中 i 和 j 的范围为从 1 到 4。注意,这些是有理数(分数)。

图 4. 使用 Maxima 进行矩阵运算
带有一些示例的屏幕截图显示了 Maxima 如何解释矩阵运算,方程式后是结果

发表科技论文

发表科技论文是许多教育团体的必要条件。Sage 要求每个对象都有一个 LaTeX 表示。该表示与使用 TeX 语言生成出版品质的图形和文本的需求直接相关。注意,您需要完全安装 TeX 才能利用 Sage 提供的所有功能。


安装 EPD

使用 Python 进行科学计算是 Enthought 公司提供的主要服务。Enthought 的商用产品和支持是付费内容,但是它们仍在很大程度上为开源社区做出了贡献。它们的贡献直接对 NumPy 和 SciPy 代码库起作用,Enthought 在年度 PyCon 会议上展现了它的魅力,并主办了 SciPy 会议。

您可以使用 Ubuntu 软件管理器安装运行 IPython、NumPy 和 SciPy 所需的各种软件,或者是您可以下载并安装免费的 EPD 版本,该版本称为 EPD Free。Enthought 提供 32 位和 64 位版本的 EPD Free,并且已经在 Red Hat、Ubuntu 和 openSUSE 上验证了这些版本。关于此内容的警告是:一些 64 位 Linux 系统部包含 32 位库,因此需要 64 位的软件包版本。

要安装 EPD Free,首先需要下载安装程序脚本,然后使用下列命令运行它:

bash epd_free-7-2-2-rh5-x86.sh

为了在将来能够便捷地启动 EPD,您需要在 shell 启动脚本(.cshrc 或 .bash_profile)中添加一些代码行。Ubuntu 默认情况下使用的是 bash shell,因此我展示了在 .bash_profile 中添加代码的示例。对于本文,我使用了下列代码行:

export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH

使用 EPD

IPython 是 EPD 和 Sage 之间另一种常见的共同特性,并且它是主要用户界面工具。与 Sage 非常类似,EPD 同时安装命令行界面和基于 Web 的笔记本。

命令行界面

基于 Qt 的控制台提供了一些改进的功能,包括使用 Pygments 库完全突出显示语法。它还提供了在内联图中这样做的能力。要获得此功能,可使用下列命令启动 IPython:

ipython --pylab

图 5 显示了具有嵌入式图的 Qt 控制台。

图 5. 创建新的 PyDev 项目
PyDev 界面的屏幕截图,使用在底部绘制的图形创建新项目

基于 Web 的界面

最新的 IPython (0.12) 版本包含与 Sage 类似的基于 Web 的笔记本功能。要获得笔记本功能,需要安装几个相关项,包括 ZeroMQ 和 Tornado Web 服务器。要从命令行启动笔记本,请在终端窗口中输入下列命令:

ipython notebook

这会启动 Tornado Web 引擎并启动打开到仪表板页面的默认 Web 浏览器。如果随后您选择了默认笔记本,则应看到类似 图 6 的新窗口。

图 6. iPython Notebook
已在 iPython Notebook 中实现的图 5 中的项目的屏幕截图

与 Web 笔记本的一个不同之处是:当您想执行代码时,需要使用 Control-Enter。这使输入多行代码变为可能,如 图 6 所示,并会按执行顺序在输入框中输入所有内容。因此,可以轻松地将函数分解为多个可管理的块。

可使用 Markdown 语法注释您的笔记本。如果您对 Markdown 不熟悉,那么使用纯文本创建格式化的超文本标记语言 (HTML) 是一种基本方法。例如,空格后面加一个井号符号 (#) 在 HTML 中表示 H1,而两个井号符号表示 H2,以此类推。这允许您添加注释或文档来补充说明代码和图形。

Pandas

Python Data Analysis Library 或 pandas 是连接 SciPy 和 NumPy 的另一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Comma-separated values (CSV) 文件表示在有关各方之间分发数据的最常见的方法之一。Pandas 提供了一种优化库功能来读写多种文件格式,包括 CSV 和高效的 HDF5 格式。

read_csv 模块了解在第一行中如何使用标头信息解析常见的 CSV 文件。它还了解如何使用内置解析程序处理具有日期或时间的文件。Pandas 包含一个日期工具模块,该模块具有执行各种日期计算的长操作例程列表。清单 1 显示了来自 pandas 文档的代码段,显示了如何查找距离另一个日期四个月零五天的日期:

清单 1. Pandas 日期映射示例
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)

当切割大数据集时,Pandas 非常有用。在将您的数据导入原生数据结构后,有大量工具可供选择,可执行几乎所有类型的操作。可使用标准 Python 切片语法对数据进行切片,对所有或部分数据执行操作,或者是使用 matplotlib 绘制它。如果您需要执行任何数据操作任务,可能会想使用 pandas 加速这一过程。


结束语

毫无疑问,Linux 可支持几乎您让它执行的任何科学计算任务。大多数学术团体都支持它,它快速获得了新行业用户的青睐,这些用户用它来降低其软件预算。这些工具提供了比其商业竞争对手更丰富的内容,最重要的是,它们是免费的。对于寻找充分支持的软件的客户来说,有 Enthought 及其 EPD 商用产品可供选择。它们为所有付费客户提供完整的客户支持和培训。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux, Open source
ArticleID=834305
ArticleTitle=将 Linux 作为一个科学计算平台进行探索
publish-date=09102012