17 releases (6 breaking)
new 0.7.6 | Nov 19, 2024 |
---|---|
0.7.4 | Aug 25, 2024 |
0.7.3 | Apr 22, 2024 |
0.6.0 | Mar 18, 2024 |
#75 in Biology
319 downloads per month
52KB
1K
SLoC
parasail-rs
This crate provides safe Rust bindings and a wrapper to parasail, a SIMD pairwise sequence alignment C library. Note that this crate is still under development and is unstable.
Usage
Installation
Run the following Cargo command in your project directory:
cargo add parasail-rs
Note that parasail-rs depends on libparasail-sys which will either use an already installed system parasail library or build from source. For more information, please see libparasail-sys.
Examples
Basic usage:
For one-off alignments:
use parasail_rs::{Aligner};
// ...
let query = b"ACGT";
let reference = b"ACGT";
let aligner = Aligner::new().build();
aligner.align(Some(query), reference)?;
Using query profile:
use parasail_rs::{Matrix, Aligner, Profile};
// ...
let query = b"ACGT";
let ref_1 = b"ACGTAACGTACA";
let ref_2 = b"TGGCAAGGTAGA";
let use_stats = true;
let query_profile = Profile::new(query, use_stats, &Matrix::default())?;
let aligner = Aligner::new()
.profile(query_profile)
.build();
let result_1 = aligner.align(None, ref_1)?;
let result_2 = aligner.align(None, ref_2)?;
println!("Score 1: {}", result_1.get_score());
println!("Score 2: {}", result_2.get_score());
Contributing
Contributions are more than welcome. Please open an issue for any feedback or questions.
Citations
If needed, please cite the following paper:
License
parasail-rs and libparasail-sys are licensed under the BSD-3-Clause license. The original parasail C library is licensed under a similar Battelle style BSD license.
Dependencies
~25MB
~702K SLoC