6 个版本

0.3.2 2023年2月1日
0.3.1 2022年5月4日
0.3.0 2022年2月3日
0.2.1 2022年2月2日
0.1.0 2021年9月9日

#96 in 生物学

每月 24 次下载

MIT/Apache

155KB
2.5K SLoC

Crates.io Crates.io Crates.io Build status

msbwt2

该库的目的是提供 Rust 功能以查询多字符串 BWT (MSBWT),并且主要基于原始 msbwt 使用的相同方法。

注意:这是一个正在进行中的项目,目前只作为闲暇时间的副项目进行更新。如果您有任何功能请求,请随时在 GitHub 上提交新的问题。以下是当前计划添加的功能列表

  1. 集成来自 fmlrc2 的高内存 BWT 实现
  2. 添加更多查询功能
  3. 提高内置 BWT 构建工具(msbwt2-build)的性能

安装

所有安装选项都假设您已安装 Rust 以及 Rust 的包管理器 cargo

从 Cargo 安装

cargo install msbwt2
msbwt2-convert -h

从 GitHub 安装

git clone https://github.com/HudsonAlpha/rust-msbwt.git
cd rust-msbwt
#testing optional
cargo test --release
cargo build --release
./target/release/msbwt2-convert -h

使用方法

MSBWT 构建

在进行任何查询之前必须构建多字符串 Burrows Wheeler Transform (MSBWT 或 BWT)。目前,有两种方法构建 BWT,结果相同

  1. 使用内置的 msbwt2-build 工具。此方法将接受任何组合的 FASTQ 或 FASTA 文件,这些文件可能是 gzip 压缩的。
    目前,这种方法速度较慢,并且没有并行化(我们希望随着时间的推移改进这两者)。然而,它更容易使用,只需要安装 msbwt2 即可
msbwt2-build \
    -o comp_msbwt.npy \
    reads.fq.gz [reads2.fq.gz ...]
  1. 使用外部工具并将其馈送到 msbwt2-convert。目前,这种方法速度较快。然而,以下命令更复杂,文件类型更灵活(例如,此示例中需要 FASTQ),并且需要安装 ropebwt2 可执行文件(或类似工具)
gunzip -c reads.fq.gz [read2.fq.gz ...] | \
    awk 'NR % 4 == 2' | \
    sort | \
    tr NT TN | \
    ropebwt2 -LR | \
    tr NT TN | \
    msbwt2-convert comp_msbwt.npy

查询

该库的一般用例是 k-mer 查询,可以按照以下方式执行

use msbwt2::msbwt_core::BWT;
use msbwt2::rle_bwt::RleBWT;
use msbwt2::string_util;
let mut bwt = RleBWT::new();
let filename: String = "test_data/two_string.npy".to_string();
bwt.load_numpy_file(&filename);
assert_eq!(bwt.count_kmer(&string_util::convert_stoi(&"ACGT")), 1);

参考

msbwt2 目前没有预印本或论文。如果您使用 msbwt2,请引用以下 msbwt 论文之一

Holt, James, 和 Leonard McMillan. "Merging of multi-string BWTs with applications." Bioinformatics 30.24 (2014): 3524-3531。

霍尔特,詹姆斯,和伦纳德·麦克米伦。 "通过合并构建大型字符串集合的Burrows-Wheeler变换。" 第5届ACM生物信息学、计算生物学和健康信息学会议论文集。2014。

许可证

根据以下任一许可证授权:

由您选择。

贡献

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

依赖关系

~7-17MB
~207K SLoC