Similarity Guided Alignment Algorithm
Caveat
This library is currently under development. Some key features are missing, and functions can be changed anytime without notification.
Sigalign is pairwise alignment algorithm using gap-affine penalty for nucleotide and amino-acid sequences.
Sigalign has two values that evaluate the similarity between sequences.
reference
, which is an alignment target, has two main features.
SequenceProvider
storing the sequence is defined as an interface (trait in Rust
).```rust use sigalign::{Reference, Aligner}; use sigalign::basicsequenceprovider::InMemoryProvider;
// (1) Make Reference
let mut sequenceprovider = InMemoryProvider::newempty();
sequenceprovider.addlabeledsequence(
"record1".tostring(),
b"ATCAAACTCACAATTGTATTTCTTTGCCAGCTGGGCATATACTTTTTCCGCACCCTCATTTAACTTCTTGGATAACGGAAGCACACCGATCTTAACCGGAGCAAGTGCCGGATGAAAATGGAAAACGGTTCTTACGTCCGGCTTTTCCTCTGTTCCGATATTTTCCTCATCGTATGCAGCACATAAAAATGCCAGAACCA".tovec(),
);
sequenceprovider.addlabeledsequence(
"record2".tostring(),
b"TTCCATCAAACTCACAATTGTATTTCTTTGCCAGCTGGGCATATACTTTTTCCGCACCCTCATTTAACTTCTTGGATAACGGAAGCACACCGATCTTAACCGGAGCGTATGCAGCACATAAAAAT".tovec(),
);
let mut reference = Reference::newwithdefaultconfig(sequenceprovider).unwrap();
// (2) Make Aligner
let aligner = Aligner::new(4, 6, 2, 100, 0.1).unwrap();
// (3) Alignment with query let query = b"TTCCTCTGTCATCAAACTCACAATTGTATTTCTTTGCCAGCTGGGCATATACTTTTTCCGCCCCCTCATTTAACTTCTTGGATAACGGAAGCACACCGATCTTAACCGGAGGTGCCGGATGAAAATGGAAAACGGTTCTTACGTCCGGCTTTTCCTCTGTTCCGATATTTTCCTCAT"; // - Semi-global alignment let resultsemiglobal: String = aligner.semiglobalalignmentlabeled(&mut reference, query).unwrap(); // - Local alignment let resultlocal: String = aligner.localalignmentlabeled(&mut reference, query).unwrap(); ```