Skip to content

Rust bindings for bsalign. A SIMD-based C library for fast partial order alignment and pairwise alignment.

Notifications You must be signed in to change notification settings

dwpeng/bsalign-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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();
    poa.call_cns();
    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());
    }
}

About

Rust bindings for bsalign. A SIMD-based C library for fast partial order alignment and pairwise alignment.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published