seal/pair/
needleman_wunsch.rs1use crate::pair::step_mask::StepMask;
2use crate::pair::strategy::Strategy;
3
4#[derive(Clone, Debug)]
5pub struct NeedlemanWunsch {
6    pub equal: isize,
7    pub align: isize,
8    pub insert: isize,
9    pub delete: isize,
10}
11
12impl NeedlemanWunsch {
13    pub fn new(equal: isize, align: isize, insert: isize, delete: isize) -> NeedlemanWunsch {
14        NeedlemanWunsch {
15            equal,
16            align,
17            insert,
18            delete,
19        }
20    }
21}
22
23impl Strategy for NeedlemanWunsch {
24    fn match_score(&self) -> isize {
25        self.equal
26    }
27
28    fn mismatch_score(&self) -> isize {
29        self.align
30    }
31
32    fn insert_score(&self) -> isize {
33        self.insert
34    }
35
36    fn delete_score(&self) -> isize {
37        self.delete
38    }
39
40    fn total_score(&self, score: isize) -> isize {
41        score
42    }
43
44    fn step_mask(&self, align: isize, insert: isize, delete: isize) -> StepMask {
45        StepMask::from_scores(align, insert, delete)
46    }
47}