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.0 | 2022 年 11 月 2 日 |
0.3.1 | 2022 年 3 月 26 日 |
#80 in 生物学
11MB
17K SLoC
slow5-rs
一个用于在 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 License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中的任何贡献,均将根据上述许可进行双许可,不附加任何额外条款或条件。
依赖关系
~1.1–4MB
~81K SLoC