3个版本
0.1.2 | 2020年10月30日 |
---|---|
0.1.1 | 2020年10月28日 |
0.1.0 | 2020年10月28日 |
#291 在 生物学
每月下载量 34次
240KB
4.5K SLoC
libwfa
Rust对wavefront算法(用于成对序列对齐)的绑定。
用法
该包将处理编译C库,并将其静态链接。
只需将 libwfa
添加到您的Cargo依赖项
[dependencies]
libwfa = "0.1"
依赖项
作为一个绑定,Unix系统上需要 llvm 和 libclang。这些可以通过包管理器安装,例如在Ubuntu上
sudo apt install llvm
sudo apt install libclang-dev
示例
在此阶段,用法与C库非常相似。
这相当于WFA自述文件中的基本示例
use libwfa::{affine_wavefront::*, bindings::*, mm_allocator::*, penalties::*};
fn main() {
let alloc = MMAllocator::new(BUFFER_SIZE_8M as u64);
let pattern = String::from("TCTTTACTCGCGCGTTGGAGAAATACAATAGT");
let text = String::from("TCTATACTGCGCGTTTGGAGAAATAAAATAGT");
let mut penalties = AffinePenalties {
match_: 0,
mismatch: 4,
gap_opening: 6,
gap_extension: 2,
};
let pat_len = pattern.as_bytes().len();
let text_len = text.as_bytes().len();
let mut wavefronts = AffineWavefronts::new_complete(
pat_len,
text_len,
&mut penalties,
&alloc,
);
wavefronts
.align(pattern.as_bytes(), text.as_bytes())
.unwrap();
let score = wavefronts.edit_cigar_score(&mut penalties);
println!("score: {}", score);
wavefronts.print_cigar(pattern.as_bytes(), text.as_bytes());
// The cigar can also be extracted as a byte vector
let cigar = wavefronts.cigar_bytes_raw();
let cg_str = std::str::from_utf8(&cigar).unwrap();
println!("cigar: {}", cg_str);
// Or as a prettier byte vector
let cigar = wavefronts.cigar_bytes();
let cg_str = std::str::from_utf8(&cigar).unwrap();
println!("cigar: {}", cg_str);
}
请参阅测试以获取更多示例。
从源代码构建
请确保使用WFA子模块克隆
git clone --recursive https://github.com/chfi/wfa-rs
cd wfa-rs
cargo build
依赖项
~0–1.8MB
~35K SLoC