【发布时间】:2022-08-10 04:30:49
【问题描述】:
我想了解是什么导致了我在以下情况下收到的警告消息:
在之前的操作中,我创建了一些 NetCDF 文件并使用xarray.to_netcdf() 将它们保存到磁盘。
在 jupyter 笔记本中对这些数据集进行延迟评估非常好,并且在以下情况下我没有收到任何警告/错误:
- 通过
ds = xarray.open_mfdataset(\'/path/to/files/*.nc\')打开这些.nc文件 - 通过
ds.time.values将维度数据加载到内存中 - 通过
ds.sel(time=starttime)进行延迟选择
在对内存加载的数据进行计算时,我似乎能够做所有我想做的事情。但是,在以下情况下,我经常收到相同的错误集:
- 通过
ds.sel(time=starttime).SCALAR_DATA.plot()加载数据绘图 - 通过
ts = pd.Series(ds.SCALAR_DATA.loc[:,y,x], index=other_data.index)提取/加载数据
请注意,尽管有这些警告,但我执行的操作确实会产生预期的结果(绘图、时间序列结构等)。
生成以下错误的共同点似乎是从打开的数据集中加载数据。编辑:似乎经过一些进一步的实验,我工作环境中的包版本可能会导致那些依赖 HDF5 的人之间发生一些冲突。
以下错误重复了若干次。
HDF5-DIAG: Error detected in HDF5 (1.12.2) thread 1:
#000: H5A.c line 528 in H5Aopen_by_name(): can\'t open attribute
major: Attribute
minor: Can\'t open object
#001: H5VLcallback.c line 1091 in H5VL_attr_open(): attribute open failed
major: Virtual Object Layer
minor: Can\'t open object
#002: H5VLcallback.c line 1058 in H5VL__attr_open(): attribute open failed
major: Virtual Object Layer
minor: Can\'t open object
#003: H5VLnative_attr.c line 130 in H5VL__native_attr_open(): can\'t open attribute
major: Attribute
minor: Can\'t open object
#004: H5Aint.c line 545 in H5A__open_by_name(): unable to load attribute info from object header
major: Attribute
minor: Unable to initialize object
#005: H5Oattribute.c line 494 in H5O__attr_open_by_name(): can\'t locate attribute: \'_QuantizeBitGroomNumberOfSignificantDigits\'
major: Attribute
minor: Object not found
...
HDF5-DIAG: Error detected in HDF5 (1.12.2) thread 2:
#000: H5A.c line 528 in H5Aopen_by_name(): can\'t open attribute
major: Attribute
minor: Can\'t open object
#001: H5VLcallback.c line 1091 in H5VL_attr_open(): attribute open failed
major: Virtual Object Layer
minor: Can\'t open object
#002: H5VLcallback.c line 1058 in H5VL__attr_open(): attribute open failed
major: Virtual Object Layer
minor: Can\'t open object
#003: H5VLnative_attr.c line 130 in H5VL__native_attr_open(): can\'t open attribute
major: Attribute
minor: Can\'t open object
#004: H5Aint.c line 545 in H5A__open_by_name(): unable to load attribute info from object header
major: Attribute
minor: Unable to initialize object
#005: H5Oattribute.c line 476 in H5O__attr_open_by_name(): can\'t open attribute
major: Attribute
minor: Can\'t open object
#006: H5Adense.c line 394 in H5A__dense_open(): can\'t locate attribute in name index
major: Attribute
minor: Object not found
任何有关可能导致这些问题的建议将不胜感激。
-
只是要清楚这些是警告,而不是例外?您是否启用了记录器或类似的东西,或者这些只是不经意间向您吐出?不幸的是,我认为我们在这里需要一个完整的minimal reproducible example - 至少 - 我以前从未见过这些。这有可能用一个小的代码生成数据集重现吗?
-
好问题,这些可能是例外,但肯定是在没有记录器或其他请求的情况下出现的。虽然我理解了一个最小可重现示例的价值,但我开始认为 HDF5 之间可能存在一些包版本兼容性问题,并且它在我的工作环境中依赖它。
-
当让 conda 解决我的环境中包的所有依赖项时,显示的警告已经消失。以前我是在我的环境中手动安装大多数包(xarray、netcdf4、rioxarray 等)。这种方法导致了上述错误。我不知道这是否构成对问题的“答案”,但是安装这些软件包的 conda 已经解决了这个问题,导致没有警告。
-
是的,这就是我的建议。请注意,一次安装它们意味着它们优先从兼容的渠道和版本中选择,因此 conda 确保您在包之间具有一致的编译器标志和版本。
-
有这方面的更新吗,伙计们?我有同样的问题;代码工作正常,但有很多这些消息。我已经分别在
CentOS 7.9 和Python 3.9到PiP上安装了所有地理包库(C, C++, NC, HDF4, HDF5...)。谢谢
标签: hdf5 netcdf python-xarray netcdf4