17 个版本

0.7.6 2020 年 10 月 26 日
0.7.3 2020 年 7 月 17 日
0.7.1 2020 年 1 月 19 日
0.5.0 2019 年 11 月 15 日
0.2.0 2018 年 3 月 10 日

#532文件系统

每月 41 次下载
用于 3 crates

MIT/Apache

99KB
2.5K SLoC

N5 构建状态 覆盖率

A (主要纯) rust 实现 N5 "Not HDF5" n 维张量文件系统存储格式,由 Janelia 研究营地的 Saalfeld 实验室创建。

兼容 Java N5 版本 2.1.3。

与 Java N5 的差异

  • 数据集路径可以是相对路径。数据集中的根路径可以通过 "/""" 访问。
  • 数据集路径更加严格。调用位于数据集之外的路径的方法,例如,"..",将返回一个 Result::Err

最低支持的 Rust 版本 (MSRV)

稳定版 1.39

快速入门

[dependencies]
n5 = "0.7"
use n5::prelude::*;
use n5::smallvec::smallvec;

fn n5_roundtrip(root_path: &str) -> std::io::Result<()> {
    let n = N5Filesystem::open_or_create(root_path)?;

    let block_size = smallvec![44, 33, 22];
    let data_attrs = DatasetAttributes::new(
        smallvec![100, 200, 300],
        block_size.clone(),
        DataType::INT16,
        CompressionType::default(),
    );
    let block_data = vec![0i16; data_attrs.get_block_num_elements()];

    let block_in = SliceDataBlock::new(
        block_size,
        smallvec![0, 0, 0],
        &block_data);

    let path_name = "/test/dataset/group";

    n.create_dataset(path_name, &data_attrs)?;
    n.write_block(path_name, &data_attrs, &block_in)?;

    let block_out = n.read_block::<i16>(path_name, &data_attrs, smallvec![0, 0, 0])?
        .expect("Block is empty");
    assert_eq!(block_out.get_data(), &block_data[..]);

    Ok(())
}

fn main() {
    n5_roundtrip("tmp.n5").expect("N5 roundtrip failed!");
}

状态

此库与作者遇到的所有 N5 数据集兼容,并在生产服务中使用。然而,库的一些方面仍不便捷,接口可能仍会经历快速的变化。

许可

根据您的选择,许可为以下之一

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交给作品的所有贡献,都将如上所述双许可,而不附加任何额外条款或条件。

依赖

~1–11MB
~100K SLoC