13 unstable releases (3 breaking)
Uses new Rust 2024
| new 0.9.4 | May 27, 2026 |
|---|---|
| 0.8.0 | May 9, 2026 |
| 0.7.0 | Sep 18, 2025 |
| 0.6.9 | Jul 31, 2025 |
| 0.0.1 |
|
#142 in Biology
645KB
19K
SLoC
bsalign-rs
A rust binding for the bsalign library.
Install
cargo install bsalign
or install as library
cargo add bsalign
Pairwise sequence alignment
use bsalign::pairwise::{BsPairwirseAligner, BsPairwiseParam};
fn main() {
let tseq = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT";
let qseq = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC";
let param = BsPairwiseParam::default().set_ksize(4);
let mut aligner = BsPairwirseAligner::new(param);
let result = aligner.align_banded_striped_8bit(&tseq, &qseq);
assert_eq!(result.aln, tseq.len());
let alnstr = result.to_string();
println!(
"{}\n{}\n{}",
alnstr.tseq().to_string(),
alnstr.alignment().to_string(),
alnstr.qseq().to_string(),
);
println!("Alignment result: {}", result);
}
Multiple sequence alignment
use bsalign::poa::{BsPoaAligner, BsPoaParam};
fn main() {
let param = BsPoaParam::default();
let mut poa = BsPoaAligner::new(param);
let seq1 = "ACGTACGTACGTACCGTACGTACGTACGTACGTACGTACGTACGT";
let seq2 = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT";
let seq3 = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT";
poa.add_sequence(seq1);
poa.add_sequence(seq2);
poa.add_sequence(seq3);
poa.align();
let consensus = poa.get_cns();
let consensus = consensus.as_string();
println!("CNS: {}", consensus);
let qlt = poa.get_qlt();
let qlt = qlt.as_string();
println!("QLT: {}", qlt);
let alt = poa.get_alt();
let alt = alt.as_string();
println!("ALT: {}", alt);
for i in 0..3 {
let alignment = poa.get_alignment(i).unwrap();
println!(" {}", alignment.as_string());
}
let ret = poa.get_alignment_result();
for alignment in ret {
println!(" {}", alignment.as_string());
}
}
Dependencies
~0.2–3MB
~61K SLoC