ECMWF举办的S2S AI竞赛的Climetlab外部数据集插件
项目描述
S2S AI挑战数据集
这是一个用于子季节到季节(S2S)人工智能挑战的climetlab
插件:[https://s2s-ai-challenge.github.io/](https://s2s-ai-challenge.github.io/).
本README文件描述了如何获取S2S AI挑战赛所需的数据。以下是S2S数据的更一般性描述。用于S2S AI挑战赛的数据是S2S数据库的一个子集。更多详情请参考https://confluence.ecmwf.int/display/S2S和https://confluence.ecmwf.int/display/S2S/Parameters。
使用数据集的方法有多种。可以直接下载GRIB
和NetCDF格式的数据(使用wget
、curl
、browser
等);或者使用带有此插件的climetlab
Python包,支持GRIB
、NetCDF
和zarr
格式。zarr
是一种云友好的实验性数据格式,只支持下载所需的数据部分。它已被设计为在云环境中比经典格式表现更优(实验性)。
安装
pip install -U climetlab climetlab_s2s_ai_challenge
API
import climetlab
使用climetlab.load_dataset('s2s-ai-challenge-{datasetname}')
,以下为关键字
datasetname
:数据集名称,见数据集描述parameter
:变量,见不同模型的预测输入origin
:模型名称[ecmwf
、eccc
、ncep
]或建模中心[ecmf
、cwao
、kwbc
]。仅对于training/test-input
/hindcast/forecast-input
提供origin
。date
:YYYYMMDD
是test-input
/forecast-input
的2020年预测日期。对于即时training-input
/hindcast-input
也需要相同的日期,但返回给定MMDD
日期的多年历史预测。请提供int
、str
、np.datetime
或以上格式的列表YYYYMMDDD
。不提供date
关键字则下载所有日期。format
:数据格式,从[netcdf
(总是可用)、grb
(仅限input-*
)、zarr
(实验性)]中选择
坐标
时间相关坐标概述。
名称 |
CF约定standard_name |
描述 | 注释 |
---|---|---|---|
预测时间 |
预测参考时间 | NWP中的预测参考时间是“数据时间”,即制作预测的分析时间。它不是预测有效的日期。 | |
提前时间 |
预测周期 | 预测周期是预测参考时间和有效时间之间的时间间隔。 | |
有效时间 |
时间 | 预测有效的时间 | forecast_time + lead_time |
所有数据集都在全球1.5度网格上。
参数
parameter
描述了要下载的变量。《s2s-ai-challenge》最重要的两个变量是两个目标变量t2m
和tp
。
参数 | long_name | standard_name | unit | 描述 & 聚合类型 | 第3-4周聚合 | 第5-6周聚合 | 源链接 |
---|---|---|---|---|---|---|---|
t2m |
2m温度 | air_temperature | K | 给定日期2米高度的气温平均值 | 平均值[第14天,第27天] | 平均值[第28天,第41天] | 模型,观测 |
tp |
总降水量 | precipitation_amount | kg m-2 | 从 forecast_time 到包括 valid_time 的总降水量累积,例如 lead_time = 1 days 累积从日期 forecast_time 的 0, 6, 12, 18 小时的降水量 pr |
第28天减去第14天 | 第42天减去第28天 | 模型 |
pr |
降水量通量 | precipitation_flux | kg m-2 | 给定日期的累积降水量 | 使用 tp |
使用 tp |
观测数据 |
鉴于参数的不同性质,以 forecast_time
2020年1月2日为例,tp
lead_time=1 days
和 t2m
lead_time=0 days
描述了1月2日的天气,因为 tp
是从1月2日00:00到1月3日00:00的 pr
的汇总,而 t2m
是1月2日的平均值。此外,tp
自 forecast_time
开始汇总,即 tp
lead_time=5 days
是从1月2日00:00到1月7日00:00的 pr
汇总。
有关其余变量的描述,请参阅ECWMF S2S 描述。
数据集描述
为此挑战提供了四个数据集。由于我们旨在将机器学习和天气预报的两个社区汇集在一起,因此它们使用了两个观点的别名
ML | NWP | |
---|---|---|
training-input |
hindcast-input |
训练数据集(用于训练ML模型) |
training-output-reference |
hindcast-like-observations |
训练数据集(用于训练ML模型的输出) |
training-output-benchmark |
hindcast-benchmark |
基准输出(在训练数据集上) |
test-input |
forecast-input |
测试数据集(不要用于训练) |
test-output-reference |
forecast-like-observations |
测试数据集(不要使用) |
test-output-benchmark |
forecast-benchmark |
基准输出(在测试数据集上) |
观测数据 |
观测数据 |
具有 time 维度的观测数据 |
过拟合 在使用ML算法时始终是一个潜在问题。为了解决这个问题,数据通常分为三个数据集: 训练、 验证 和 测试。这个术语过去导致了 一些混淆。在训练和验证之间分割 hindcast-input
(training-input
) 数据集是标准方法,应仔细决定。
forecast-input
(test-input
) 必须不作为验证数据集使用:它不能用于调整超参数或做出有关ML模型的决策。
hindcast输入
这些数据是hindcast数据。这被用作训练ML模型的输入。
hindcast-input
(training-input
) 数据集包含来自三个不同 模型/中心 的数据
中心名称 | 模型名称 |
---|---|
ecmwf | ecmf |
eccc | cwao |
ncep | kwbc |
使用 origin="ecmf"
(模型名称) 或 origin="ecmwf"
(中心名称) 之一。
此数据集以 format
: grib
、netcdf
格式提供。
- ECMWF hindcast数据
forecast_time
:从2000/01/02到2019/12/31,对应于2020年的每周星期四。lead_time
:0到46天valid_time
(forecast_time
+lead_time
):从2000/01/02到2020/02/13- 可用参数:
t2m(2t)/siconc(ci)/gh/lsm/msl/q/rsn/sm100/sm20/sp/sst/st100/st20/t/tcc/tcw/tp/ttr/u/v
(在MARS数据库中的名称不同)
- ECCC hindcast数据
forecast_time
:从2000/01/02到2019/12/31,对应于2020年的每周星期四。lead_time
:1到32天valid_time
(forecast_time + lead_time):从2000/01/03到2020/02/01- 可用的参数:
t2m(2t)/siconc(ci)/gh/lsm/msl/q/rsn/sp/sst/t/tcc/tcw/tp/ttr/u/v
(在MARS数据库中名称不同) - 不可用的参数:
sm20/sm100/st20/st100
- NCEP回波数据
预报时间
:从1999/01/07至2010/12/30,对应于2010年的每周星期四,见Vitart等2017年的研究,NCEP回波日期与ECMWF和ECCC回波不同预报时效
:1至44天有效时间
(预报时间
+预报时效
):从1999/01/07至2011/02/11- 可用的参数:
t2m(2t)/siconc(ci)/gh/lsm/msl/q/sm100/sm20/sp/sst/st100/st20/t/tcc/tcw/tp/ttr/u/v
(在MARS数据库中名称不同) - 不可用的参数:
rsn
hindcast = climetlab.load_dataset('s2s-ai-challenge-training-input', date=[20200102], origin='ecwmf', parameter='tp', format='netcdf').to_xarray()
hindcast.coords
Coordinates:
* realization (realization) int64 0 1 2 3 4 5 6 7 8 9 10
* forecast_time (forecast_time) datetime64[ns] 2000-01-02 ... 2019-01-02
* lead_time (lead_time) timedelta64[ns] 0 days 1 days ... 45 days 46 days
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
valid_time (forecast_time, lead_time) datetime64[ns] 2000-01-02 ... 2...
# for ncep hindcast provide 2010 date strings
hindcast_ncep = climetlab.load_dataset('s2s-ai-challenge-training-input', date=[20100107], origin='ncep', parameter='tp', format='netcdf').to_xarray()
hindcast_ncep.coords
Coordinates:
* realization (realization) int64 0 1 2 3
* forecast_time (forecast_time) datetime64[ns] 1999-01-07 ... 2010-01-07
* lead_time (lead_time) timedelta64[ns] 1 days 2 days ... 43 days 44 days
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
valid_time (forecast_time, lead_time) datetime64[ns] 1999-01-08 ... 2...
预报输入
预报输入
(测试输入
)数据集也包含来自三个不同模型的数据:ECMWF(ecmf)、ECCC(cwao)、NCEP(eccc),不同日期。这些数据是预报数据。这可以用来作为应用机器学习模型输入,以生成提交给挑战的输出。
- 对于所有3个模型
预报时间
:从2020/01/02至2020/12/31,2020年每周星期四。有效时间
(预报时间
+预报时效
):从2020/01/02至2021/02/xx- 可用的参数(与回波输入(训练输入)相同)
- ECMWF预报
lead_time
:0到46天
- ECCC预报
lead_time
:1到32天
- NCEP预报
预报时效
:1至44天
forecast = climetlab.load_dataset('s2s-ai-challenge-test-input', date=[20200102], origin='ecmwf', parameter='tp', format='netcdf').to_xarray()
forecast.coords
Coordinates:
* realization (realization) int64 0 1 2 3 4 5 6 7 ... 44 45 46 47 48 49 50
* forecast_time (forecast_time) datetime64[ns] 2020-01-02
* lead_time (lead_time) timedelta64[ns] 0 days 1 days ... 45 days 46 days
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
valid_time (forecast_time, lead_time) datetime64[ns] 2020-01-02 ... 2...
观测数据(参考输出)
回波类似观测
(训练输出参考
)数据集与ECMWF和ECCC模型的训练输入
匹配。预报类似观测
(测试输出参考
)数据集与所有三个模型的测试输入
匹配。
观测数据是用于与机器学习模型输出进行比较和评估的真相。它包括来自温度和累积总降水仪器的观测数据。《NOAA CPC》数据集是从IRIDL下载的。我们提供的观测数据与预报/回波相同的维度,以便于预报/回波与真相的匹配。《见脚本来了解技术细节》这些观测数据是真相,并不对应于模型。格式总是netcdf
。
hindcast_like_obs = climetlab.load_dataset('s2s-ai-challenge-training-output-reference', date=[20200102], parameter='tp').to_xarray() # origin and format not accepted
hindcast_like_obs.coords
Coordinates:
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
* forecast_time (forecast_time) datetime64[ns] 2000-01-02 ... 2019-01-02
* lead_time (lead_time) timedelta64[ns] 0 days 1 days ... 45 days 46 days
valid_time (lead_time, forecast_time) datetime64[ns] 2000-01-02 ... 2...
forecast_like_obs = climetlab.load_dataset('s2s-ai-challenge-test-output-reference', date=[20200102], parameter='tp').to_xarray() # origin and format not accepted
forecast_like_obs.coords
Coordinates:
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
* forecast_time (forecast_time) datetime64[ns] 2020-01-02
* lead_time (lead_time) timedelta64[ns] 0 days 1 days ... 45 days 46 days
valid_time (lead_time, forecast_time) datetime64[ns] 2020-01-02 ... 2...
如果您想使用从1999年至2010年的预报时间
的NCEP回波进行训练,请使用具有时间维度s2s-ai-challenge-observations
的下载观测数据,并使用climetlab_s2s_ai_challenge.extra.forecast_like_observations
将观测数据与预报/回波的相应有效时间
匹配。
obs_time = climetlab.load_dataset('s2s-ai-challenge-observations', parameter=['pr', 't2m']).to_xarray()
# equivalent
obs_lead_time_forecast_time = climetlab.load_dataset('s2s-ai-challenge-observations', parameter=['pr', 't2m']).to_xarray(like=hindcast_ncep)
obs_lead_time_forecast_time = climetlab_s2s_ai_challenge.extra.forecast_like_observations(hindcast_ncep, obs_time)
obs_lead_time_forecast_time.coords
<xarray.Dataset>
Dimensions: (forecast_time: 12, latitude: 121, lead_time: 44, longitude: 240)
Coordinates:
valid_time (forecast_time, lead_time) datetime64[ns] 1999-01-08 ... 2...
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
* forecast_time (forecast_time) datetime64[ns] 1999-01-07 ... 2010-01-07
* lead_time (lead_time) timedelta64[ns] 1 days 2 days ... 43 days 44 days
此函数可用于SubX和S2S项目的所有初始化回波和预报。在使用它们进行s2s-ai-challenge
时,请注意2020年预报的不同起始日期。NOAA CPC的观测数据使用xesmf
保守地重网格到S2S 1.5度网格。720x360
的空间分辨率原始观测数据可以通过grid='720x360'
获取。
一般来说,只有发布预报时可供使用的数据才能被ML模型用于预报。
规则:预报日期之后观测到的数据不应用于预测,例如,从2020/07/01开始的预报不应使用2020/07/01之后的数据)。
有关所有规则,请参阅挑战网站。
请参阅挑战的通用规则此处。
观测数据集中的日期从2000/01/01到2021/02/15。
观测数据集是基于真实仪器观测建立的。
- 《
hindcast-like-observations
(《training-output-reference
)数据集 - 从2000/01/01到2019/12/31可用,每周一次,每隔7天(每周四)。
- 2019/12/31之前的观测数据可用于训练(作为评估和优化ML模型的真值,或使用训练/验证拆分或交叉验证微调超参数)。
- 《
forecast-like-observations
(《test-output-reference
)数据集。 - 从2020/01/01到2021/02/20可用,每周一次,每隔7天(每周四)。
- 测试数据在训练过程中不得使用。理论上,这些数据在挑战期间不应公开,但由于数据的性质,可以从其他来源访问它。这就是为什么必须提交用于训练模型的代码(作为一个jupyter笔记本)以及预测,并且排名前茅的提案将由组委会审查的原因。
在预报阶段(即使用预报输入数据集进行评估的阶段),使用2020年的观测数据。规则1仍然有效:预报开始日期之后的观测数据不应用于预测。
预报基准(基准输出)
《forecast-benchmark
(《test-output-benchmark
)数据集是一个具有类别低于正常
、接近正常
、高于正常
的概率重新校准的ECMWF预报。校准是通过使用模型气候学的三等分界限而不是从观测数据中进行的。
基准数据如下所示
forecast_time
:从2020/01/02到2020/12/31,每周一次,每隔7天(每周四)。lead_time
:14天和28天,其中此日代表两周聚集的第一天valid_time
(forecast_time
+lead_time
):从2020/01/01到2021/01/29category
:'低于正常'
,'接近正常'
,'高于正常'
bench = climetlab.load_dataset('s2s-ai-challenge-training-output-benchmark', parameter='tp').to_xarray() # origin, date and format not accepted
bench.coords
Coordinates:
* category (category) object 'below normal' 'near normal' 'above normal'
* forecast_time (forecast_time) datetime64[ns] 2000-01-02 ... 2019-12-31
* lead_time (lead_time) timedelta64[ns] 14 days 28 days
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
valid_time (forecast_time, lead_time) datetime64[ns] 2000-01-16 ... 2...
bench = climetlab.load_dataset('s2s-ai-challenge-test-output-benchmark', parameter='tp').to_xarray() # origin, date and format not accepted
bench.coords
Coordinates:
* category (category) object 'below normal' 'near normal' 'above normal'
* forecast_time (forecast_time) datetime64[ns] 2020-01-02 ... 2020-12-31
* lead_time (lead_time) timedelta64[ns] 14 days 28 days
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
valid_time (forecast_time, lead_time) datetime64[ns] 2020-01-16 ... 2...
观测
对于其他初始化预报,您可以下载与valid_time
对应的t2m
和pr
参数的observations
,这些参数对应于valid_time
的时间维度。然后在本地上传类似初始化预报/回溯预报的观测格式。观测数据从1999年到2021年均可用。请参阅参数的描述。
climetlab_s2s_ai_challenge.extra.forecast_like_observations
将观测与预报/回溯预报的相应valid_time
匹配。
forecast = climetlab.load_dataset('s2s-ai-challenge-training-input',
date=20100107, origin='ncep', parameter='tp',
format='netcdf').to_xarray()
obs_lead_time_forecast_time = climetlab.load_dataset('s2s-ai-challenge-observations', parameter=['pr', 't2m']).to_xarray(like=forecast)
# equivalent
obs_time = climetlab.load_dataset('s2s-ai-challenge-observations', parameter=['pr', 't2m']).to_xarray()
obs_time.coords
Coordinates:
* time (time) datetime64[ns] 1999-01-01 1999-01-02 ... 2021-04-29
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 354.0 355.5 357.0 358.5
obs_lead_time_forecast_time = climetlab_s2s_ai_challenge.extra.forecast_like_observations(forecast, obs_time)
obs_lead_time_forecast_time
<xarray.Dataset>
Dimensions: (forecast_time: 12, latitude: 121, lead_time: 44, longitude: 240)
Coordinates:
valid_time (forecast_time, lead_time) datetime64[ns] 1999-01-08 ... 2...
* latitude (latitude) float64 90.0 88.5 87.0 85.5 ... -87.0 -88.5 -90.0
* longitude (longitude) float64 0.0 1.5 3.0 4.5 ... 355.5 357.0 358.5
* forecast_time (forecast_time) datetime64[ns] 1999-01-07 ... 2010-01-07
* lead_time (lead_time) timedelta64[ns] 1 days 2 days ... 43 days 44 days
Data variables:
t2m (forecast_time, lead_time, latitude, longitude) float32 ...
tp (forecast_time, lead_time, latitude, longitude) float32 na...
Attributes:
script: climetlab_s2s_ai_challenge.extra.forecast_like_observations
数据下载(GRIB或NetCDF)
下载数据的URL根据以下模式构建
对于观测数据集(参考输出),模式是https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/{datasetname}/{parameter}-YYYYMMDD.nc
对于基准数据集,模式将与https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-output-benchmark/{parameter}.nc类似
- {datasetname}:在URL中,数据集名称必须遵循ML命名(
training-input
或training-output-reference
或training-output-benchmark
)。 - {format}是
netcdf
。训练输出也以GRIB文件形式提供,使用format='grib'
并将"nc"
替换为"grib"
- {fctype}:
hindcast
用于训练或forecast
用于测试 - {parameter} 是
t2m
,表示 2米处的地表温度,tp
表示 总降水量 - {origin} :
ecmwf
或eccc
或ncep
- {weeks} 只能从 [
"34"
,"56"
,["34", "56"]
] 中选择,仅适用于benchmark
- {grid} 只能从 [
"240x121"
(默认),"720x360"
] 中选择,仅适用于observations
YYYYMMDD
是 2020 年test-input
/forecast-input
的预测日期。对于即飞training-input
/hindcast-input
,需要相同的日期,但返回的是针对该MMDD
的多年回溯预测。
可以在以下位置找到 training-input
数据集的文件列表
- GRIB: https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-input/0.3.0/grib/index.html,
- NetCDF: https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-input/0.3.0/netcdf/index.html,
可以在以下位置找到 training-output-benchmark
数据集的文件列表 https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-output-benchmark/index.html (仅 NetCDF)
可以在以下位置找到 training-output-reference
数据集的文件列表 https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-output-reference/index.html (仅 NetCDF)
以下是一个使用 wget 获取文件的示例
wget https://object-store.os-api.cci1.ecmwf.int/s2s-ai-challenge/data/training-input/0.3.0/grib/ncep-hindcast-q-20101014.grib
(132.8M )
Zarr 格式(实验性)。
zarr 存储位置包括所有参考数据。zarr 网址 不是 为了在浏览器中打开设计的(见 zarr):虽然在没有 climetlab 的情况下访问 zarr 存储可能是可能的,但我们建议使用 climetlab 并安装适当的插件(climetlab-s2s-ai-challenge)
zarr 网址不可用。
使用 climetlab 访问数据(支持 grib、netcdf 和 zarr)
climetlab Python 包允许通过几行代码轻松访问数据,例如
!pip install climetlab climetlab_s2s_ai_challenge
import climetlab as cml
cml.load_dataset("s2s-ai-challenge-training-input",
origin='ecmwf',
date=[20200102,20200109],
# optional : format='grib'
parameter='tp').to_xarray()
cml.load_dataset("s2s-ai-challenge-training-output-reference",
date=[20200102,20200109],
parameter='tp').to_xarray()
请在此处查看示例笔记本:https://github.com/ecmwf-lab/climetlab-s2s-ai-challenge/notebooks。
访问训练数据
获取观测(参考输出)数据集请参阅 demo_observations 笔记本。
获取基准数据集请参阅 demo_benchmark 笔记本。
项目详情
下载文件
下载您平台上的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。
源分布
climetlab-s2s-ai-challenge-0.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ff0ef9d2c9df1282feb601e31f8c4d6cf21a6b142b056b7680038a2ebb17f28 |
|
MD5 | af5fd1301a090b6efe0d53fa39c17122 |
|
BLAKE2b-256 | c8eb288466bbf139d84222f920a5f8ef2db271089964679eb85dd4b727a1133f |