声明
本文正文内容翻译自 ECMWF 网站 2020 年 10 月 26 日新闻《Python developments enable easier access to weather and climate data》,版权归原作者所有。翻译底稿来自 Google 翻译。
正文
ECMWF 正在开发 Python 库和接口,帮助人们更快,更高效地处理庞大的天气和气候数据集。该中心还提供培训,帮助科学界和技术用户与服务进行对接,利用 ECMWF 的开源软件,并为其应用创造最大价值。
作为数值天气预报 (Numerical weather prediction, NWP) 中心,ECMWF 生成并保存大量天气预报数据。提供集合预测,提高模型分辨率和增加物理参数,意味着生成的数据量在不断增长。
由 ECMWF 代表欧洲委员会 (European Commission) 运营的 哥白尼服务 (The Copernicus services) 还提供了大量数据集,数据的规模和受欢迎程度都在不断增长。
这些数据集对决策者和科学家具有巨大的价值,但是人们常常无法充分利用数据集的潜力,因为它们对于时间紧迫的应用程序或训练机器学习算法来说太大了。
Python 已成为地球系统科学中处理大型数据集的许多用户选择的编程语言,ECMWF 正在这一领域进行投资以帮助用户与其数据进行交互。
简化访问
多年来,ECMWF 一直在其关键软件包中提供 Python 接口,用于访问,处理和可视化气象数据。
近年来,Metview,ECMWF 的气象工作站和批处理系统,也开发了 Python 接口,封装 ECMWF 提供的各种 Python 软件包的所有功能。通过使用众所周知的高效 Python 数据结构,科学家和分析人员可以照常使用其所有数据,同时还提供利用已建立的 Python 科学生态系统的可能性。
ECMWF 软件包在气象领域非常流行,但仍然是特定领域的。ECMWF 正在开发一个名为 CliMetLab 的新 Python 包,面向使用天气和气候数据进行机器学习的数据科学家。
从一开始,该软件包便为可在 JupyterLab 环境中使用而开发,与 PyData 生态系统紧密集成,以简化使用。可以使用单个命令加载流行的数据集,并立即使用常见的 Python 数据处理工具进行分析。
CliMetLab 提供基于 Jupyter notebooks 的示例文档
使用 Jupyter Notebooks 培训
ECMWF 为科学界和技术用户提供培训,学习如何与服务进行最佳交互,使用其开源软件并为其应用创造最大价值。Jupyter notebooks 已在所有这些领域中使用。
一个例子是诸如 HiDALGO 之类的欧洲研究项目,在该项目中,notebooks 已成功用于培训用户利用天气和气候数据,并提供了有关如何从各个中心访问数据的示例。
ECMWF 已经开发许多 notebooks,提供有关如何使用 ECMWF 为社区提供的各种 Python 开源软件包的示例。ECMWF 参加最近的 JupyterCon 会议,展示两份海报,并了解使用和提供基于 Jupyter 的服务的最新发展。
JupyterLab 如何使科学家和分析人员轻松使用天气数据的示例。
ECMWF 正在调研使用 Jupyter notebooks 对其预报和哥白尼数据集进行服务器端数据处理。这项工作将以哥白尼 气候数据存储 (Climate Data Store, CDS) 工具箱 的经验为基础,该工具箱已使用户无需下载任何数据即可访问所有哥白尼气候数据集。这将为数据科学家提供与完整数据集进行交互而没有技术障碍的可能性。
ECMWF 将在 2021 年 2 月举行一次虚拟研讨会,名为 Weather and Climate in the Cloud,以就该主题与社区互动。
感想
下图来自 CliMetLab 库的文档,更能说明该库的作用。
CliMetLab 在数据源和具体算法实现之间扮演桥梁的角色,将多种数据源、多种数据格式转为 Python 数据处理生态系统中常用的数据结构:
- 表格数据使用 Pandas
- 多维数据使用 Xarray
- 底层数据使用 Numpy
CliMetLab 库专注于从各种数据源加载数据,并提供方便易用的内置绘图功能。
nmcdev 开发的 MetDig 诊断工具包中 nmc_met_io 库同样扮演数据桥梁的角色,提供对多种数据源的访问,并将数据载入为 Pandas 或 Xarray 格式,提供给具体的诊断算法。
新版的 ESMValTool 工具也将包括数据处理在内的基础功能提取到单独的 ESMValCore 项目中,主项目仅保留具体的诊断方法。
虽然 nmcdev 开发的 Meteva 工具包内置了数据处理和诊断方法,但是在该工具包内部也在数据处理与具体的算法实现之间形成清晰的界面。
上述软件基本采用同样的策略处理数据与算法,即:
具体算法仅面向软件定义的 中间数据结构 开发,提供数据接口将原始数据转换为中间数据
而中间数据往往使用 Python 生态中常见的数据结构库,这样会非常方便进行扩展。也能让算法开发人员更加关注算法本身,而不是忙于数据预处理。
笔者利用 Meteva 提供的接口已实现载入 GRIB 2 数据和观测文本数据,详情参见以下文章:
《Meteva笔记:加载GRIB 2要素场》
《Meteva笔记:加载本地观测数据》
以上工具包对于笔者正在开发的 nwpc-oper/nwpc-data 库都有很高的参考价值。
笔者开发的 nwpc-data 库目前只支持从本地 GRIB 2 文件中加载数据,未来可以考虑支持更多格式数据,支持更多的数据源。
参考
原文标题:Python developments enable easier access to weather and climate data
https://www.ecmwf.int/en/about/media-centre/news/2020/python-developments-enable-easier-access-weather-and-climate-data
CliMetLab
https://github.com/ecmwf/climetlab
题图由 algrin25 上传到 Pixabay。