【问题标题】:HDF5 Warnings When Accessing Xarray DataSet访问 Xarray 数据集时的 HDF5 警告
【发布时间】: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.9PiP 上安装了所有地理包库(C, C++, NC, HDF4, HDF5...)。谢谢

标签: hdf5 netcdf python-xarray netcdf4


【解决方案1】:

conda 解决各种包之间的依赖关系实际上最终成为了为我摆脱这些警告的解决方案。

当我手动安装所有不同的软件包时,没有仔细指定版本或让conda 解决依赖关系,警告仍然存在。

【讨论】:

    猜你喜欢
    • 2020-09-12
    • 2019-02-04
    • 2020-12-25
    • 2020-12-04
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2016-01-24
    相关资源
    最近更新 更多