CDX客户端
项目描述
CDX客户端提供了一组API库和命令行工具,用于访问CDX数据。CDX是气候数据交换的缩写,它是喷气推进实验室创建的一个虚拟环境,用于共享气候数据。
安装
本文档将向您介绍如何安装cdx.client。
快速说明
作为具有管理员权限的用户,请运行
easy_install cdx.client
就是这样。
完整说明
cdx.client需要Python编程语言。我们推荐使用2.4或更高版本。在撰写本文档时,2.6是最新的稳定版本。如果您系统上尚未安装Python,可以从Python网站下载二进制和源代码发行版。
要测试系统上是否有正确的Python版本,请运行
python -V
您应该看到类似以下输出
Python 2.6
这表明已安装的Python版本。cdx.client还需要Agile OODT。 OODT是面向对象数据技术,一个用于元数据和数据网格的框架。Agile OODT是OODT的Python版本,它比Java版本具有更高的性能和更简单的集成。
到目前为止,安装cdx.client最简单、最推荐、最鼓励的方式是使用EasyInstall。如果您的Python安装已经提供了EasyInstall,那么您只需运行一个命令即可一次性下载、构建、安装并为系统上的所有用户生成命令行工具
easy_install cdx.client
请务必以管理员身份运行该命令。例如,在Mac OS X和其他Unix系统上,您可能需要运行
sudo easy_install cdx.client
这将下载并安装所有依赖项,包括Agile OODT。
可执行文件
命令cdxls和cdxget将被生成并放置在您的标准Python命令安装目录中。通常,这是与python可执行文件相同的目录。例如,在Mac OS X 10.5上,目录是
/Library/Frameworks/Python.framework/Versions/Current/bin
您可能想将此目录添加到shell的PATH变量中,并强制shell重新扫描PATH变量以查找新可执行文件。
安装EasyInstall
如果您所在的系统上Python安装缺少easy install,请不要担心。将系统升级以获得EasyInstall的功能相当简单。请按照以下说明操作
以管理员身份使用系统的Python运行新下载的ez_setup.py文件。
EasyInstall及其必要的库将为您下载、构建和安装,并生成easy_install可执行文件。easy_install可执行文件的位置如上所述。
不使用EasyInstall安装
如果系统上没有EasyInstall,您仍然可以正确安装cdx.client。请按照以下说明操作
从http://oodt.jpl.nasa.gov/dist/agile-oodt/oodt-0.0.1.tar.gz下载Agile OODT源代码发行版。根据需要替换版本号。
从http://cdx.jpl.nasa.gov/software/dist/cdx.client-0.0.3.tar.gz下载cdx.client源代码发行版。根据需要替换版本号。
解压每个存档。
将当前工作目录更改为每个新创建的子目录,oodt-0.0.1和cdx.client-0.0.2,并根据需要替换版本号。
作为管理员用户,在每个子目录中运行:python setup.py install。
问题和疑问
要报告有关cdx.client的问题或寻求帮助,请访问我们的联系方式网页。
使用CDX客户端
安装CDX客户端包在您的计算机上提供了三项内容
- cdxls命令
cdxls命令允许您从终端提示符或shell脚本中列出CDX服务器的目录内容。
- cdxget命令
cdxget命令允许您从终端提示符或shell脚本中检索CDX中的数据。
- CDX库
CDX库是一个基于Python的API,用于使用CDX服务器。
本文档描述了如何使用上述三项,特别关注CDX库。
命令
安装CDX客户端包后,您的系统上将提供两个新命令:cdxls和cdxget。这些命令使您能够列出CDX服务器上的数据内容并从服务器检索所选文件。
要从交互式提示符使用这些命令,您只需确保您的shell的PATH环境变量包括命令安装的目录。在大多数系统中,这两个命令安装在
/usr/local/bin
然而,在Mac OS X上,安装位置可能是
/Library/Frameworks/Python.framework/Versions/Current/bin
而在Windows上,它可能是
c:\Program Files\Python
请注意,某些交互式shell会创建一个命令缓存以更快地执行您的请求。您可能需要强制您的shell重新构建该缓存。csh和tcsh shell就是这样的例子;您可以通过运行rehash命令来使这些shell重新构建它们的缓存。
从Shell脚本中使用
cdxls和cdxget命令也可以在shell脚本中使用。使这些命令可用于shell脚本的要求与交互会话相同:shell的PATH环境变量必须包括包含cdxls和cdxget命令的目录。
以下是一个示例shell脚本,用于检索2008年325天的MLS Aura L2GP数据文件(和元数据文件)HO2和HOCl
#!/bin/sh PATH=/usr/local/bin:/usr/bin:/bin; export PATH CDX_SERVER=http://mlscdx.jpl.nasa.gov:8080/cdx/prod; export CDX_SERVER for kind in HO2 HOCl; do for extension in he5 he5.met; do cdxget 2008/325/MLS-Aura_L2GP-${kind}_v02-23-c01_2008d325.${extension} done done
上面的shell脚本假定cdxget将在/usr/local/bin、/usr/bin或/bin中找到。它还设置了CDX_SERVER环境变量,以设置要与之通信的CDX服务器。然后,它通过两种类型的数据(HO2和HOCl)和两种类型的文件扩展名(he5和he5.met)进行循环。结果是从当前工作目录检索四个文件,具体如下
2008/325/MLS-Aura_L2GP-HO2_v02-23-c01_2008d325.he5
2008/325/MLS-Aura_L2GP-HO2_v02-23-c01_2008d325.he5.met
2008/325/MLS-Aura_L2GP-HOCl_v02-23-c01_2008d325.he5
2008/325/MLS-Aura_L2GP-HOCl_v02-23-c01_2008d325.he5.met
cdxsubset命令也可以从shell脚本中使用。它由两个环境变量配置
CDX_SUBSET_MODE - 如果设置,则使用本地数据包装器模式(默认为远程)
CDX_SERVER - 设置用于子集的产品服务器
一些示例工作命令是
从NCAR CCSM模型输出中提取空间边界框
cdxsubset -b /esg/data18/commit/atm/da/hfls/ncar_ccsm3_0/run1/hfls_A2.Commit_1.CCSM.atmd.2000-01-01_cat_2039-12-31.nc
从NCAR CCSM模型输出中提取时间范围
cdxsubset -t /esg/data18/commit/atm/da/hfls/ncar_ccsm3_0/run1/hfls_A2.Commit_1.CCSM.atmd.2000-01-01_cat_2039-12-31.nc
从MLS L2数据块中获取时间数组变量数据
cdxsubset -p Time /mls/2005/100/MLS-Aura_L2GP-BrO_v01-51-c01_2005d100.he5
从AIRS L2数据块中获取空间边界框
cdxsubset -b /airs/data/s4pa/Aqua_AIRS_Level2/AIRX2RET.003/2007/005/AIRS.2007.01.05.240.L2.RetStd.v4.0.9.0.G07007180718.hdf
对AIRS L2数据块按纬度、经度和变量进行子集化
cdxsubset -p TAirStd --latitude-range=67.35:78.40 -longitude-range=172.226:176.10 /airs/2009/01/01/airx2ret/AIRS.2009.01.01.001.L2.RetStd.v5.2.2.0.G09002135510.hdf
CDX库
CDX库是一个基于Python的应用程序编程接口(API),用于与CDX服务器通信。实际上,两个命令cdxls和cdxget是使用CDX库实现的。如果您不喜欢shell脚本编程,并且知道Python,那么使用CDX库可能适合您。
CDX库使用面向对象的方法来模拟CDX服务器的内容。对象代表CDX文件和目录,您可以通过调用这些对象上的方法来确定文件属性、目录内容或检索文件的正文。
本文档的其余部分描述了构成CDX库的模块、类和函数。如果您不了解Python,您可能希望跳过其余部分。
cdx模块
cdx模块是一个命名空间模块。它不提供类或函数。相反,它包含一个名为client的嵌套模块。
cdx.client模块
cdx.client模块包含提供CDX库的嵌套模块。它还包括cdxls和cdxget命令的实现。
cdx.client.cdxfile模块
cdx.client.cdxfile模块是所有动作发生的地方。它包含用于与CDX服务器通信和建模内容的类和函数。它包含以下项目
- CDXDirectory
此类的对象代表CDX服务器上的目录。您可以使用Python的迭代器、长度和包含协议来检查目录的内容。它们也可以被排序。
- CDXFile
此类的对象代表CDX服务器上的文件。虽然您可以实例化此类对象,但通常您会实例化一个CDXDirectory并检查其内容,这将包括目录中的CDXFile对象和嵌套的CDXDirectory对象。CDXFile对象还提供了一个方法,让您可以检索其数据。
- findFile
findFile函数是一个实用函数,给定一个起始CDXDirectory和路径名,在CDX服务器上生成匹配的CDXDirectory或CDXFile。
CDXDirectory对象
CDXDirectory对象代表CDX服务器中的目录。您可以直接创建这些对象,也可以使用cdx.client.cdxfile模块中的findFile方法。
- class CDXDirectory(path, cdxURL = None)
使用给定的path创建一个CDXDirectory对象。您还可以通过传递一个字符串给cdxURL来指定要使用的CDX服务器URL。
- sort(cmp = cmp, reverse = False)
使用比较函数cmp返回排序后的目录内容,默认为Python内置的cmp。如果reverse为True,则反转排序顺序。比较CDXFile和CDXDirectory对象时,按CDX服务器URL和名称进行。您可以传递自己的cmp,例如按文件大小排序。
- isFile()
始终返回False。
- path
目录的路径名。
- name
目录的名称;这是路径的最后一个元素。
- size
按照惯例,目录的大小始终为零。
CDXDirectory对象遵守Python的散列、比较、包含测试、迭代、索引和长度查询协议。使用CDXDirectory对象、CDXFile对象或普通字符串与目录进行包含测试
>>> from cdx.client.cdxfile import CDXDirectory >>> root = CDXDirectory('/', 'https://127.0.0.1:8192/cdx/prod') >>> len(root) 3 >>> subdir = root['2005'] >>> subdir CDXDirectory(path=/2005) >>> subdir in root True >>> '2005' in root True >>> subdir < root False >>> subdir > root True >>> for i in root: ... print i ... /2008 /2007 /2005 >>> root.sort() [CDXDirectory(path=/2005), CDXDirectory(path=/2007), CDXDirectory(path=/2008)]
CDXFile对象
待定。
变更日志
1.3.1 - 10/19/11
本发行版包括CDX-122中指定的数据包装器包(0.0.8)的更新版本。
有关问题跟踪器,请参阅https://oodt.jpl.nasa.gov/jira/browse/CDX
1.3.0 - 10/17/11
本发行版修复了CDX重网格服务的一个重要问题,并计算了按立方体单元索引的数据点的运行总和的平均值。有关更多信息,请参阅CDX-118。
有关问题跟踪器,请参阅https://oodt.jpl.nasa.gov/jira/browse/CDX
1.2.0 - 06/27/11
本发行版提供了与ESG的紧密集成,并连接到其安全基础设施,并为cdxregrid和cdxsubset在ESG数据中添加了大量虚拟根。有关更多信息,请参阅CDX-110和CDX-111。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
1.1.0 - 11/13/2010
本版本包含了 cdx.datawrappers 包的 0.0.6 版本,其中包含 CDX-103,该版本实现了通过纬度、经度和时间获取变量的功能。反过来,本版本还提供了 CDX-102,它将此功能集成到基本的 cdxregrid 功能中。目前,cdxregrid 几乎完全具备功能。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
1.0.0 - 09/10/10
本版本对公共 cdxls API 进行了微小改进,暴露了 listFiles 函数找到和丢失的文件列表,移除了其功能局部编排,并将找到和未找到的文件列表暴露给用户。有关更多信息,请参阅 CDX-93。本版本还通过 cdxls 暴露了 CDX MODIS 产品服务器。有关详细信息,请参阅 CDX-98。最后,本版本包含更新,以修复 CloudSat 作为 cdxsubset 源的问题,如 CDX-99 所述。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
0.0.9 - 03/24/2010
本版本对 cdxsubset 进行了改进,特别是能够打印出从 DataWrapper 返回的完整 numpy 数组。有关具体信息,请参阅 CDX-82。此外,cdxsubset 已更新,根据 CDX-84 和 CDX-85 暴露了按经纬度子集的功能。本版本还包括了允许指定约束的范围查询子集功能(有关更多信息,请参阅 CDX-86)。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
0.0.8 - 包含对cdxcd、虚拟根和新工具的改进
本版本对 cdxcd 进行了改进,使其与 cdx 虚拟根配合得很好,并且包括与其他 cdx 客户端工具集的集成,包括 cdxls、cdxsubset 和 cdxget。有关更多详细信息,请参阅 CDX-70 和 CDX-71。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
0.0.7 - 添加资源文件
0.0.6 版本配置不当,没有包含一些重要的资源文件。此紧急版本包括它们!
0.0.6 - 包含cdxsubset和其他工具,以及一些小错误修复
本版本包括 cdxsubset 工具,如 CDX-56 所述。本版本还包括 cdxcd 工具,如 CDX-69 所述。此外,本版本还包括针对 cdxls 中的路径问题进行的微小美学错误修复,例如 CDX-29。
有关问题跟踪器,请参阅http://oodt.jpl.nasa.gov/jira/browse/CDX。
0.0.5 - 修复单元测试
本版本根据 0.0.4 中的更改和新产品服务器的行为更新了单元测试和测试数据。此外,它修复了 INSTALL.txt 文件中的某些文档问题(错误的包名 cdx-client 应为 cdx.client)。
本版本唯一解决的错误报告是 CDX-45,“cdx-client 中的单元测试失败”。有关问题跟踪器,请参阅 http://oodt.jpl.nasa.gov/jira/browse/CDX。
0.0.4 - 修复0.0.3版本中的错误
这是一个针对 0.0.3 的错误修复版本,其中包括一些错误检查,以处理 OODT OFSN 产品服务器端的数据格式不一致。
JIRA 问题(请参阅 http://oodt.jpl.nasa.gov/jira/browse/CDX)已解决
CDX-43 如果没有 -r 参数调用 cdxget,则不应保留目录结构
CDX-42 cdxget -r 无法检索 MLS 数据
CDX-41 cdxls -R 如果未提供目录大小,则会导致问题
0.0.3 - 目录缓存
本版本的最重要的功能是 cdx.client.dircache 模块,它使本地磁盘缓存远程 CDX 产品服务器内容的一部分成为可能。它还引入了 cdx: 方案 URL 的概念。此类 URL 的形式如下
cdx://hostname[:port]/endpoint/prod/path/to/a/directory
其中 hostname 是 CDX 产品服务器的名称或 IP 地址,port 是服务器监听的可选端口号,endpoint 是 WebGrid 服务标识符(通常是字符串 cdx),prod 是固定关键字 prod,而 path/to/a/directory 是该产品服务器内目录的绝对路径。
此类缓存旨在支持 CCMValDiag 软件。
0.0.2 - 修复cdxls的错误
本版本修复了 cdxls 中的一个错误,该错误导致目录中只有一个项目时无法正确列出。
0.0.1 - URL规范
本版本提供了 (-u url, –url=url) 命令行选项对,允许指定要使用的特定 URL,回退到 CDX_SERVER 环境变量中指定的 URL(如果未设置,则为 http://mlscdx.jpl.nasa.gov:8080/cdx/prod)。这支持了 CDX-16 中提出的两个想法(前两个,而不是第三个具有 cdx: 样式的 URL)。
0.0.0 - 初始
这是cdx-client的初始版本,支持基本的 cdxls 和 cdxget 功能。