0

我正在尝试LocalCatalogEntry为 Python 的 Intake 包构建一个(作为更大目录的一部分,它可能有多个条目,我正在尝试在此处创建其中一个)。但是,我似乎无法弄清楚如何向它提供用户参数来描述组变量名称(来自 hdf5 文件中)而不会出现错误。

from intake.catalog.local import LocalCatalogEntry
import intake_xarray

LocalCatalogEntry(name='is2_local', 
                   description= '', 
                   driver=intake_xarray.netcdf.NetCDFSource, 
                   args= {'urlpath': '/full/path/to/data/file/ATL06-20181214041627-Sample.h5', 
                            'path_as_pattern': 'ATL{product:2}-{datetime:%Y%m%d%H%M%S}-Sample.h5', 
                            'xarray_kwargs': {'engine': 'h5netcdf', 
                                              'group': '/{{laser}}/land_ice_segments'}},
                    parameters= [{'name': 'laser',
                              'description': 'Laser Beam Number', 
                              'type': 'str', 
                              'default': 'gt1l', 
                              'allowed': ['gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r']}]
)

结果是AttributeError: 'dict' object has no attribute 'describe'. 我已经尝试了各种排列并挖掘了源代码/文档,但无法弄清楚我应该如何输入这些信息才能使其成为有效输入。我是否尝试错误地输入用户参数?

4

1 回答 1

1

你很亲近!像这样直接实例化时,需要显式创建 UserParameter,而不仅仅是传递 dict:

from intake.catalog.local import LocalCatalogEntry, UserParameter
import intake_xarray

LocalCatalogEntry(
    name='is2_local',
    description= '',
    driver=intake_xarray.netcdf.NetCDFSource,
    args= {'urlpath': '/full/path/to/data/file/ATL06-20181214041627-Sample.h5',
           'path_as_pattern': 'ATL{product:2}-{datetime:%Y%m%d%H%M%S}-Sample.h5',
           'xarray_kwargs': {'engine': 'h5netcdf',
           'group': '/{{laser}}/land_ice_segments'}},
    parameters= [UserParameter(**{
        'name': 'laser',
        'description': 'Laser Beam Number',
        'type': 'str',
        'default': 'gt1l',
        'allowed': ['gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r']})]
)
于 2021-07-21T15:01:11.520 回答