【问题标题】:List fields of a hdf5 file in julia在 julia 中列出 hdf5 文件的字段
【发布时间】:2018-04-18 16:08:43
【问题描述】:

julia 中有没有一种方法可以在不加载数据集的情况下列出 hdf5 文件的字段(包括结构、组、维度)?我没有在 HDF5 包中找到类似于 h5ls -r -f 的东西。谢谢。

【问题讨论】:

    标签: julia hdf5


    【解决方案1】:

    这是非常粗略的要点h5_get_structure.jl 对于 HDF5 文件结构映射,提供以下输出:

    /Users/TM/Temp/test.h5: HDF5.HDF5File (length 10)
     AcquisitionLog: HDF5.HDF5Group (length 0)
     AddTraces: HDF5.HDF5Group (length 5)
        PTR-Instrument: HDF5.HDF5Group (length 0)
        PTR-Misc: HDF5.HDF5Group (length 0)
        PTR-Reaction: HDF5.HDF5Group (length 0)
        TOFSupply: HDF5.HDF5Group (length 0)
        TofSupply: HDF5.HDF5Group (length 2)
           TwData: HDF5Dataset () 
           TwInfo: HDF5Dataset (28, 2) 
     FullSpectra: HDF5.HDF5Group (length 3)
        MassAxis: HDF5Dataset (100239,) 
        SumSpectrum: HDF5Dataset (100239, 1) 
        TofData: HDF5Dataset (100239, 1, 1, 6000) 
     PTR-Concentration: HDF5.HDF5Group (length 0)
     PTR-Peaktable: HDF5.HDF5Group (length 2)
        Data: HDF5Dataset (317, 8) Float64
        Info: HDF5Dataset (317,) 
     PTR-PrimaryIonSettings: HDF5.HDF5Group (length 0)
     PTR-Transmission: HDF5.HDF5Group (length 0)
     PeakData: HDF5.HDF5Group (length 2)
        PeakData: HDF5Dataset (317, 1, 1, 6000) 
        PeakTable: HDF5Dataset (4, 317) Float64
     RawData: HDF5.HDF5Group (length 1)
        HPTDC: HDF5.HDF5Group (length 0)
     TimingData: HDF5.HDF5Group (length 1)
        BufTimes: HDF5Dataset (6000,) 
    

    【讨论】:

    • 曾经有一个类似的东西叫做dump,但由于不正确地重载Base.dump而被删除。没有替代品,但它看起来确实有用。见github.com/JuliaIO/HDF5.jl/pull/395
    • 似乎与原始实用程序相比,该要点没有太大优势h5ls -rf
    • @slowbrain 非常感谢,它非常接近我的预期。无论如何,我很惊讶在 HDF5 包中没有实现与 h5ls 类似的东西。在我看来,对于任何 hdf5 库来说,它都是一个非常重要的工具。
    【解决方案2】:

    不是 100% 您的要求,而是使用 printnames 缺少哪些信息?

    例如

    # make hdf5 file & add two datasets
    A = Vector{Int}(1:10)
    h5write("bar.h5", "foo", A)
    h5write("bar.h5", "2foo", 2A)
    
    i = h5open("bar.h5", "r") # Open it
    names(i) 
    # 2-element Array{String,1}:
    #  "2foo"
    #  "foo"
    [println(a) for a in i]
    # HDF5 dataset: /2foo (file: bar.h5)
    # HDF5 dataset: /foo (file: bar.h5)
    
    ## Run h5ls
    ;h5ls "bar.h5"
    # 2foo                     Dataset {10}
    # foo                      Dataset {10}
    

    【讨论】:

    • 谢谢你的作品。但它不是一个更高级的 Julia 函数,它列出了 HDF5 文件的完整结构,包括组和数据集(暗淡,最大暗淡),例如 h5ls -r -f 吗?我编辑了我的问题
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2018-02-01
    • 2018-09-24
    • 1970-01-01
    • 2020-04-08
    • 2015-08-01
    • 2015-09-01
    相关资源
    最近更新 更多