@@ 50-87 (lines=38) @@ | ||
47 | alignment and disallows negative scores. |
|
48 | """ |
|
49 | ||
50 | def dist_abs(self, src, tar, gap_cost=1, sim_func=sim_ident): |
|
51 | """Return the Smith-Waterman score of two strings. |
|
52 | ||
53 | Parameters |
|
54 | ---------- |
|
55 | src : str |
|
56 | Source string for comparison |
|
57 | tar : str |
|
58 | Target string for comparison |
|
59 | gap_cost : float |
|
60 | The cost of an alignment gap (1 by default) |
|
61 | sim_func : function |
|
62 | A function that returns the similarity of two characters (identity |
|
63 | similarity by default) |
|
64 | ||
65 | Returns |
|
66 | ------- |
|
67 | float |
|
68 | Smith-Waterman score |
|
69 | ||
70 | Examples |
|
71 | -------- |
|
72 | >>> cmp = SmithWaterman() |
|
73 | >>> cmp.dist_abs('cat', 'hat') |
|
74 | 2.0 |
|
75 | >>> cmp.dist_abs('Niall', 'Neil') |
|
76 | 1.0 |
|
77 | >>> cmp.dist_abs('aluminum', 'Catalan') |
|
78 | 0.0 |
|
79 | >>> cmp.dist_abs('ATCG', 'TAGC') |
|
80 | 1.0 |
|
81 | ||
82 | """ |
|
83 | d_mat = np_zeros((len(src) + 1, len(tar) + 1), dtype=np_float32) |
|
84 | ||
85 | for i in range(len(src) + 1): |
|
86 | d_mat[i, 0] = 0 |
|
87 | for j in range(len(tar) + 1): |
|
88 | d_mat[0, j] = 0 |
|
89 | for i in range(1, len(src) + 1): |
|
90 | for j in range(1, len(tar) + 1): |
@@ 129-166 (lines=38) @@ | ||
126 | return mat[(tar, src)] |
|
127 | return mismatch_cost |
|
128 | ||
129 | def dist_abs(self, src, tar, gap_cost=1, sim_func=sim_ident): |
|
130 | """Return the Needleman-Wunsch score of two strings. |
|
131 | ||
132 | Parameters |
|
133 | ---------- |
|
134 | src : str |
|
135 | Source string for comparison |
|
136 | tar : str |
|
137 | Target string for comparison |
|
138 | gap_cost : float |
|
139 | The cost of an alignment gap (1 by default) |
|
140 | sim_func : function |
|
141 | A function that returns the similarity of two characters (identity |
|
142 | similarity by default) |
|
143 | ||
144 | Returns |
|
145 | ------- |
|
146 | float |
|
147 | Needleman-Wunsch score |
|
148 | ||
149 | Examples |
|
150 | -------- |
|
151 | >>> cmp = NeedlemanWunsch() |
|
152 | >>> cmp.dist_abs('cat', 'hat') |
|
153 | 2.0 |
|
154 | >>> cmp.dist_abs('Niall', 'Neil') |
|
155 | 1.0 |
|
156 | >>> cmp.dist_abs('aluminum', 'Catalan') |
|
157 | -1.0 |
|
158 | >>> cmp.dist_abs('ATCG', 'TAGC') |
|
159 | 0.0 |
|
160 | ||
161 | """ |
|
162 | d_mat = np_zeros((len(src) + 1, len(tar) + 1), dtype=np_float32) |
|
163 | ||
164 | for i in range(len(src) + 1): |
|
165 | d_mat[i, 0] = -(i * gap_cost) |
|
166 | for j in range(len(tar) + 1): |
|
167 | d_mat[0, j] = -(j * gap_cost) |
|
168 | for i in range(1, len(src) + 1): |
|
169 | for j in range(1, len(tar) + 1): |