4个版本
0.1.5 | 2022年5月12日 |
---|---|
0.1.4 | 2022年4月5日 |
0.1.3 | 2022年3月6日 |
0.1.2 | 2021年12月12日 |
0.1.0 |
|
#79 in 生物学
每月下载量 529
用于 2 个存储库(通过 stam-tools)
29KB
761 行
seal
概要
Rust语言实现Needleman-Wunsch & Smith-Waterman序列比对。
动机
此存储库的目的是提供一个内存和时间效率高的Needleman-Wunsch实现以及Smith-Waterman序列比对,使用统一的API。
入门指南
将seal
的最新版本添加到项目的Cargo.toml
依赖中。
然后添加…
extern crate seal;
…到您的存储库根文件中(例如lib.rs,
main.rs
)。
完成后,您就可以开始使用了!
示例
extern crate seal;
use seal::pair::{
Alignment, AlignmentSet, InMemoryAlignmentMatrix, NeedlemanWunsch, SmithWaterman, Step,
};
fn main() {
let str_x = "The quick brown fox jumps over the lazy dog.";
let str_y = "The brown dog jumps over the very lazy snail.";
let strategy = NeedlemanWunsch::new(1, -1, -1, -1);
// Alternatively:
// let strategy = SmithWaterman::new(2, -1, -1, -1);
let sequence_x: Vec<char> = str_x.chars().collect();
let sequence_y: Vec<char> = str_y.chars().collect();
let set: AlignmentSet<InMemoryAlignmentMatrix> =
AlignmentSet::new(sequence_x.len(), sequence_y.len(), strategy, |x, y| {
sequence_x[x] == sequence_y[y]
})
.unwrap();
let print_alignment = |alignment: Alignment| {
for step in alignment.steps() {
match step {
Step::Align { x, y } => {
if sequence_x[x] == sequence_y[y] {
print!("=")
} else {
print!("!")
}
}
Step::Delete { .. } => print!("-"),
Step::Insert { .. } => print!("+"),
}
}
println!("\n");
};
println!("Local alignment:");
let local_alignment = set.local_alignment();
print_alignment(local_alignment);
println!("Global alignment:");
let global_alignment = set.global_alignment();
print_alignment(global_alignment);
// Local alignment:
// ====------======!=!================+++++=====
//
// Global alignment:
// ====------======!=!================+++++=====!!!++=
}
请参阅示例目录以获取更深入的示例。
API参考
AlignmentSet
包含给定一对序列的所有最佳比对。
检索单个局部/全局最佳比对
let alignment in alignment_set.local_alignment();
let alignment in alignment_set.global_alignment();
枚举所有局部/全局最佳比对
for alignment in alignment_set.local_alignments() {
// …
}
for alignment in alignment_set.global_alignments() {
// …
}
贡献
请阅读CONTRIBUTING.md以了解我们的行为准则和提交拉取请求的流程。
许可证
本项目根据MPL-2.0授权 – 请参阅LICENSE.md文件以获取详细信息。
依赖项
~2–11MB
~118K SLoC