13 个版本 (重大更新)

0.11.0 2023 年 9 月 4 日
0.10.0 2022 年 12 月 27 日
0.9.0 2022 年 12 月 11 日
0.7.0+slow5lib.0.8.02022 年 11 月 2 日
0.3.1 2022 年 3 月 26 日

#80 in 生物学

MIT/Apache

11MB
17K SLoC

C 11K SLoC // 0.1% comments Cython 2K SLoC // 0.1% comments Rust 2K SLoC // 0.0% comments Python 1.5K SLoC // 0.2% comments Shell 577 SLoC // 0.2% comments

slow5-rs

License Crates.io docs.rs Rust Stability codecov

一个用于在 rust 中与 SLOW5/BLOW5 文件交互的库。非官方。

有关更多信息,请查看主要的 slow5lib 仓库

注意:库设计正在变化,升级此 crate 时应谨慎。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
slow5 = "0.11"

Git

如果您想下载 git 版本,请使用以下命令下载仓库

git clone --recursive https://github.com/bsaintjo/slow5-rs.git

入门

从 SLOW5 文件读取信号

use slow5::{FileReader, RecordExt};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut slow5 = FileReader::open("examples/example.slow5").unwrap();
    for record in slow5.records() {
        for signal in record?.picoamps_signal_iter() {
            // Do stuff
        }
    }
    Ok(())
}

写入带有属性的压缩 BLOW5 文件

use std::error::Error;
use slow5::{FileWriter, SignalCompression, Record};

fn main() -> Result<(), Box<dyn Error>> {
    let tmp_dir = std::env::temp_dir();
    let output = tmp_dir.join("test.blow5");
    let mut writer = FileWriter::options()
        .signal_compression(SignalCompression::StreamVByte)
        .attr("attribute", "value", 0)
        .create(output)?;
    let rec = Record::builder()
        .read_id("test_id")
        .read_group(0)
        .digitisation(4096.0)
        .offset(4.0)
        .range(12.0)
        .sampling_rate(4000.0)
        .raw_signal(&[0, 1, 2, 3])
        .build()?;
    writer.add_record(&rec)?;
    writer.close();
    Ok(())
}

更多示例代码

有关更多示例代码,请参阅 测试代码。原始库中的几个示例已转换为 rust,并可在 examples 目录中找到。

功能标志

  • zstd:启用基于 zstd 的压缩(默认启用)
  • zlib-ng:启用使用高性能 zlib-ng,添加 cmake 依赖项
  • serde:启用 serde 依赖项(主要用于序列化 Record

许可证

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

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中的任何贡献,均将根据上述许可进行双许可,不附加任何额外条款或条件。

依赖关系

~1.1–4MB
~81K SLoC