Tool:A rust binding for pairwise/multiple sequence aligner: bsalign-rs
0
1
Entering edit mode
2 days 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.

bsalign-rs

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, qseq.len() as i32);
    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::{
    BitSeq,
    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 bitseq: BitSeq = consensus.into();
    let consensus = bitseq.to_string();
    println!("Consensus: {}", consensus);
}

ps: any questions are welcome.

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

bsalign alignment • 173 views
ADD COMMENT

Login before adding your answer.

Traffic: 1430 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