Tool:A rust binding for pairwise/multiple sequence aligner: bsalign-rs
0
1
Entering edit mode
5 months ago
dwpeng ▴ 120

I create a rust crate that a binding for bsalign. Bsalign, wrote by ruanjue, is a fast sequence aligner that designed for pairwise and multi sequence alignment.

A rust binding for the bsalign library.

Install

cargo install bsalign

Pairwise sequence alignment

use bsalign::pairwise::{BsPairwirseAligner, BsPairwiseParam};

fn main() {
    let seq = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT";
    let param = BsPairwiseParam::default().set_ksize(4);
    let mut aligner = BsPairwirseAligner::new(param);
    let result = aligner.align_banded_striped_8bit(&seq, &seq);
    assert_eq!(result.aln, seq.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 seq = "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT";
    poa.add_sequence(seq);
    poa.add_sequence(seq);
    poa.add_sequence(seq);
    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);
}

ps: any questions are welcome.

github repo: https://github.com/dwpeng/bsalign-rs

bsalign alignment • 473 views
ADD COMMENT

Login before adding your answer.

Traffic: 4354 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6