物理分析工作站
欧洲核子研究中心(CERN)是欧洲粒子物理实验室。由于大型强子对撞机发现了希格斯玻色子,它最近在新闻中频频出现。许多人可能不知道的是,它在开发科学用途的软件方面也有着悠久的传统。HTML文档格式和第一个浏览器都是在那里开发的,作为一种使用富文档的方式,富文档可以在许多不同的信息来源之间包含链接。它非常有用,最终引发了万维网的诞生。除了如此广泛的软件之外,欧洲核子研究中心还负责开发了相当多的科学软件,尤其是物理软件。
在本文中,我将介绍一个相当大的模块和库组,称为物理分析工作站 (PAW)。PAW包含数千个用FORTRAN、C甚至一些汇编语言代码编写的子程序和程序,这些子程序和程序构建在名为CERN程序库 (CERNLIB) 的库之上。
如果您有任何特殊需求,可以从主网站上的源代码下载并安装代码,但考虑到所需外部库的长列表,我建议您尽可能避免这样做。软件包应该适用于您的发行版。对于基于Debian的发行版,您可以使用以下命令安装所需的一切
sudo apt-get install paw
PAW还包括一系列大型的图形和数据可视化例程,以帮助进行数据分析。有时您需要查看数据的外观,以便弄清楚您需要进一步研究哪些分析。
PAW实际上是一个交互式系统,您可以在其中对数据集应用命令。最初的界面是命令行界面,但现在它收集了您可以尝试的其他几个界面。如果您打开终端,键入命令 paw
并按 Enter 键,系统会询问您要使用的终端类型(图 1)。默认设置为使用类型 1,它会打开一个 HIGZ 图形窗口,您的绘图将显示在该窗口中(图 2)。如果您在远程机器上使用 PAW,您可能需要使用不同的类型。您可以通过键入 ?
来获取列表。对于常规 xterm,输入 7879
。

图 1. 您可以选择启动 PAW 时要使用的终端类型。

图 2. 默认设置是打开一个图形窗口来绘制您的绘图,以及一个命令界面。
一旦所有内容都加载完成,您将看到一个如下所示的提示符
PAW >
现在您可以开始键入命令并进行数据分析了。但是,您可以使用哪些命令呢?幸运的是,PAW 在程序中包含一个帮助系统,您可以通过键入 help
命令来访问该系统,该命令会弹出一个主题列表。
PAW 中的命令以树状结构分组在一起,最顶层是当您启动帮助系统时弹出的主题。主网站上还有相当多的文档可用,包括教程和一个非常大的 FAQ。
由于 PAW 用于数据分析,让我们从您可以使用的数据类型开始。PAW 有三种主要数据类型:向量 (VECTORS)、直方图 (HISTOGRAMS) 和 N 元组 (NTUPLES)。向量 (VECTORS) 存储实数或整数数组。PAW 可以处理这些向量 (VECTORS) 的最多三个维度或索引。它们可以通过向量 (VECTOR) 命令组进行操作。PAW 中的命令不区分大小写,但在大多数文档中,它们都以大写形式显示。您也可以使用命令的缩写,只要它们可以唯一匹配到完整的命令文本即可。因此,您可以使用以下命令创建一个包含 20 个元素的新向量 (VECTOR)
VECTOR/CREATE vec1(20)
这个新向量 (VECTOR) 被命名为 "vec1"。然后,您可以使用以下命令将元素添加到您的新向量 (vector) 中
VECTOR/INPUT vec1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
该命令接受一个向量名称和一个要添加的值列表。如果您处理的只是少量数据,这很好。如果您有存储在文件中的较大数据集,则可以使用命令 VECTOR/READ
。此命令接受一个文件名,并且还可以接受其他几个选项,例如元素的格式,并将数据加载到给定的向量 (VECTORS) 中。
可选的格式字符串类似于在 FORTRAN 代码中读取和写入数据时使用的格式字符串,因此如果距离您上次使用 FORTRAN 已经有一段时间了,那么复习一下可能是一个好主意。
您可以使用相反的 VECTOR/WRITE
命令将数据输出到文件。
要可视化您的数据,请使用 VECTOR/DRAW
命令。可用的选项允许您选择是绘制直方图、平滑曲线还是条形图。您还可以在另一个图形的顶部绘制此可视化。
您可以使用 VECTOR/LIST
命令获取已创建的所有向量 (VECTORS) 的列表,并且可以使用 VECTOR/DELETE
命令清理不需要的数据。
一旦您加载了数据并查看了它,您可能就会了解不同部分是如何相互关联的。您可以使用 VECTOR/FIT
命令来获取一个由您使用子程序定义的函数,并尝试将数据拟合到该函数。您还可以在发出命令时包含一组相关的误差。
PAW 中的直方图 (HISTOGRAM) 命令组为您提供了更多用于应用于数据的绘图和分析工具选择。这些命令被分解为子组,这些子组为您提供用于创建直方图、2D 绘图以及将直方图操作应用于直方图的命令。您可以使用 GET_VECT
和 PUT_VECT
命令子组与您上面创建的 VECTOR
对象进行交互。您还可以使用 FUNCTION
命令来创建用于数据拟合等领域的命令中使用的函数。
NTUPLE
命令组用于操作 n 元组对象。N 元组本质上是列表的列表,您可以将它们视为矩阵。在 PAW 文档中,每一行称为一个事件,每一列称为一个变量。有一些函数可以将数据合并在一起或进行子集切割。N 元组有自己的绘图命令,允许您以各种形式绘制不同变量之间的关系图。如果您要处理大量数据,则可以使用 CHAIN
命令将多个 n 元组链接在一起,以创建基本上无限大小的数据集。
尽管 PAW 不再处于积极开发阶段,但这里仍然有足够多的真正有用的代码来让任何科学家忙碌起来。如果您正在进行任何涉及数据分析或建模的工作,尤其是在 C 或 FORTRAN 中,那么非常值得您花时间快速搜索 PAW 中可用的模块和子程序,看看是否有任何东西可以用来加快您的工作进度。在本文中,我仅介绍了可用功能的一小部分,因此请务必进行更深入的了解,看看您可以为自己的工作挖掘出什么。