#hdf5 #plugin #binding #call #register #filter #bitshuffle

sys hdf5-bitshuffle

Rust 的 HDF5 bitshuffle 插件

5 个版本 (3 个破坏性更新)

0.9.0 2022年2月27日
0.8.0 2021年10月25日
0.2.0 2021年5月21日
0.1.1 2021年5月20日
0.1.0 2021年5月20日

#18 in #hdf5


3 个crate中使用(通过cryiorust

MIT 许可证

300KB
6K SLoC

C 4K SLoC // 0.2% comments Python 1K SLoC // 0.1% comments Cython 461 SLoC // 0.3% comments Rust 91 SLoC Shell 12 SLoC Forge Config 7 SLoC Batch 3 SLoC

hdf5-bitshuffle

这是 bitshuffle HDF5 过滤器的 Rust 绑定。一些 HDF5 文件使用这个非标准的插件 bitshuffle(主要由 Dectris Eiger 检测器生成)。这个 crate 为 Rust 提供了一个绑定。

要使用此插件,只需在调用任何 HDF5 API 之前在您的代码中调用它

use hdf5_bitshuffle::register_bitshuffle_plugin;

fn main() {
     register_bitshuffle_plugin();
}

或者,如果您想要更多的控制,您可以手动调用它

use std::sync::Once;
use hdf5_bitshuffle::bshuf_register_h5filter;

static REGISTER_BITSHUFFLE: Once = Once::new();

fn main() {
    unsafe {
        REGISTER_BITSHUFFLE.call_once(|| {
                if bshuf_register_h5filter() < 0 {
                    panic!("Could not register bitshuffle plugin for HDF5");
                }
            });
        }
}

许可证:MIT


lib.rs:

这是 bitshuffle HDF5 过滤器的 Rust 绑定。一些 HDF5 文件使用这个非标准的插件 bitshuffle(主要由 Dectris Eiger 检测器生成)。这个 crate 为 Rust 提供了一个绑定。

要使用此插件,只需在调用任何 HDF5 API 之前在您的代码中调用它

use hdf5_bitshuffle::register_bitshuffle_plugin;

fn main() {
     register_bitshuffle_plugin();
}

或者,如果您想要更多的控制,您可以手动调用它

use std::sync::Once;
use hdf5_bitshuffle::bshuf_register_h5filter;

static REGISTER_BITSHUFFLE: Once = Once::new();

fn main() {
    unsafe {
        REGISTER_BITSHUFFLE.call_once(|| {
                if bshuf_register_h5filter() < 0 {
                    panic!("Could not register bitshuffle plugin for HDF5");
                }
            });
        }
}

依赖项

~15MB
~210K SLoC