pairwasm_alignment
v0.2.1
Published
Experiment. Performs global and local pairwise sequence alignment through WebAssembly.
Downloads
12
Maintainers
Readme
pairwasm_alignment
WebAssembly performance, portability, and interoperability could bring the power of the Cloud to Bioinformatics and Computational Biology, facilitating collaboration among researchers and enhancing reproducibility.
This experiment is a WebAssembly pairwise sequence alignment module written in Rust 🦀. It implements the classic Needleman-Wunsch and Smith-Waterman.
Crate documentation and Demonstration
The WASM module use is straightforward since it only exposes a single function; read the next section for details. Also, you can check the Rust crate documentation here.
I also deployed an online demonstration that runs locally and on your browser. Be aware that Smith-Waterman and Needleman-Wunsch are dynamic programming algorithms and have quadratic time performance. Do not use the demo for long sequences.
Releases and how to use them
The module is offered in two flavors:
The wasm module itself is natively an ES module [^1]. It needs a Bundler. Only Webpack offers total compatibility and other bundlers will require additional configurations.
It can natively be included on a web page, and doesn't require any further postprocessing [^1].
For example,
import init, { do_protein_alignment } from "./wasm_module/pairwasm_alignment.js";
export async function run(
string_1: string,
string_2: string,
open_cost: number,
extend_cost: number,
substitution_matrix: number,
algorithm: number) {
await init();
return do_protein_alignment(
string_1,
string_2,
open_cost,
extend_cost,
substitution_matrix,
algorithm
);
}
Then the run function can be imported normally in any script.
Known issues
- Using local alignment can give suboptimal alignments.
[^1]: Deploying Rust and WebAssembly.
Bibliography
- Chao, J., Tang, F., & Xu, L. (2022). Developments in Algorithms for Sequence Alignment: A Review. Biomolecules, 12(4), 546. https://doi.org/10.3390/biom12040546
- Masek, W. J., & Paterson, M. S. (1980). A faster algorithm computing string edit distances. Journal of Computer and System Sciences, 20(1), 18–31. https://doi.org/10.1016/0022-0000(80)90002-1
- Needleman, S. B., & Wunsch, C. D. (1970). A general method applicable to the search for similarities in the amino acid sequence of two proteins. Journal of Molecular Biology, 48(3), 443–453. https://doi.org/10.1016/0022-2836(70)90057-4
- Smith, T. F., & Waterman, M. S. (1981). Identification of common molecular subsequences. Journal of Molecular Biology, 147(1), 195–197. https://doi.org/10.1016/0022-2836(81)90087-5
- Smith, T. F., Waterman, M. S., & Fitch, W. M. (1981). Comparative biosequence metrics. Journal of Molecular Evolution, 18(1), 38–46. https://doi.org/10.1007/BF01733210