1 // ========================================================================== 2 // SeqAn - The Library for Sequence Analysis 3 // ========================================================================== 4 // Copyright (c) 2006-2015, Knut Reinert, FU Berlin 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are met: 9 // 10 // * Redistributions of source code must retain the above copyright 11 // notice, this list of conditions and the following disclaimer. 12 // * Redistributions in binary form must reproduce the above copyright 13 // notice, this list of conditions and the following disclaimer in the 14 // documentation and/or other materials provided with the distribution. 15 // * Neither the name of Knut Reinert or the FU Berlin nor the names of 16 // its contributors may be used to endorse or promote products derived 17 // from this software without specific prior written permission. 18 // 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 // ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE 23 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 29 // DAMAGE. 30 // 31 // ========================================================================== 32 // Author: Andreas Gogol-Doering <andreas.doering@mdc-berlin.de> 33 // ========================================================================== 34 // Conversion tables for residue SimpleType specializations. 35 // 36 // Dna and Dna5 share their tables for conversion to char. So do Rna and 37 // Rna5. 38 // ========================================================================== 39 40 #ifndef SEQAN_INCLUDE_SEQAN_BASIC_BASIC_ALPHABET_RESIDUE_TABS_H_ 41 #define SEQAN_INCLUDE_SEQAN_BASIC_BASIC_ALPHABET_RESIDUE_TABS_H_ 42 43 44 namespace seqan { 45 46 // -------------------------------------------------------------------------- 47 // Dna and Dna5 48 // -------------------------------------------------------------------------- 49 50 template <typename T = void> 51 struct TranslateTableDna5ToChar_ 52 { 53 static char const VALUE[5]; 54 }; 55 56 template <typename T> 57 char const TranslateTableDna5ToChar_<T>::VALUE[5] = {'A', 'C', 'G', 'T', 'N'}; 58 59 60 template <typename T = void> 61 struct TranslateTableDna5ToIupac_ 62 { 63 static char const VALUE[5]; 64 }; 65 66 template <typename T> 67 char const TranslateTableDna5ToIupac_<T>::VALUE[5] = {0x01, 0x02, 0x04, 0x08, 0x0f}; 68 69 template <typename T = void> 70 struct TranslateTableCharToDna_ 71 { 72 static char const VALUE[256]; 73 }; 74 75 template <typename T> 76 char const TranslateTableCharToDna_<T>::VALUE[256] = 77 { 78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0 79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //1 80 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //2 81 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //3 82 83 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, //4 84 // , A, B, C, D, E, D, G, H, I, J, K, L, M, N, O, 85 86 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //5 87 // P, Q, R, S, T, U, V, W, X, Y, Z, , , , , 88 89 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, //6 90 // , a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, 91 92 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //7 93 // p, q, r, s, t, u, v, w, x, y, z, , , , , 94 95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //8 96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //9 97 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //10 98 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //11 99 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //12 100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //13 101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //14 102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 //15 103 }; 104 105 106 template <typename T = void> 107 struct TranslateTableCharToDna5_ 108 { 109 static char const VALUE[256]; 110 }; 111 112 template <typename T> 113 char const TranslateTableCharToDna5_<T>::VALUE[256] = 114 { 115 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //0 116 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //1 117 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //2 118 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //3 119 120 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, //4 121 // , A, B, C, D, E, D, G, H, I, J, K, L, M, N, O, 122 123 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //5 124 // P, Q, R, S, T, U, V, W, X, Y, Z, , , , , 125 126 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, //6 127 // , a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, 128 129 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //7 130 // p, q, r, s, t, u, v, w, x, y, z, , , , , 131 132 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //8 133 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //9 134 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //10 135 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //11 136 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //12 137 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //13 138 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //14 139 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 //15 140 }; 141 142 template <typename T = void> 143 struct TranslateTableByteToDna_ 144 { 145 static char const VALUE[256]; 146 }; 147 148 template <typename T> 149 char const TranslateTableByteToDna_<T>::VALUE[256] = 150 { 151 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0 152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //1 153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //2 154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //3 155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //4 156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //5 157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //6 158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //7 159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //8 160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //9 161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //10 162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //11 163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //12 164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //13 165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //14 166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 //15 167 }; 168 169 template <typename T = void> 170 struct TranslateTableByteToDna5_ 171 { 172 static char const VALUE[256]; 173 }; 174 175 template <typename T> 176 char const TranslateTableByteToDna5_<T>::VALUE[256] = 177 { 178 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //0 179 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //1 180 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //2 181 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //3 182 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //4 183 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //5 184 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //6 185 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //7 186 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //8 187 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //9 188 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //10 189 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //11 190 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //12 191 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //13 192 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //14 193 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 //15 194 }; 195 196 // -------------------------------------------------------------------------- 197 // Rna and Rna5 198 // -------------------------------------------------------------------------- 199 200 template <typename T = void> 201 struct TranslateTableRna5ToChar_ 202 { 203 static char const VALUE[5]; 204 }; 205 206 template <typename T> 207 char const TranslateTableRna5ToChar_<T>::VALUE[5] = {'A', 'C', 'G', 'U', 'N'}; 208 209 // other tables identical to Dna(5) 210 211 // -------------------------------------------------------------------------- 212 // Iupac 213 // -------------------------------------------------------------------------- 214 215 template <typename T = void> 216 struct TranslateTableIupacToChar_ 217 { 218 static char const VALUE[16]; 219 }; 220 221 template <typename T> 222 char const TranslateTableIupacToChar_<T>::VALUE[16] = 223 { //TGCA 224 '=', //0000=0 = or U 225 'A', //0001=1 226 'C', //0010=2 227 'M', //0011=3 AC 228 'G', //0100=4 229 'R', //0101=5 AG (purine) 230 'S', //0110=6 CG 231 'V', //0111=7 non-T 232 'T', //1000=8 233 'W', //1001=9 TA 234 'Y', //1010=A TC (pyrimidine) 235 'H', //1011=B not-G 236 'K', //1100=C TG 237 'D', //1101=D not-C 238 'B', //1110=E non-A 239 'N' //1111=F any 240 }; 241 242 template <typename T = void> 243 struct TranslateTableIupacToDna_ 244 { 245 static char const VALUE[16]; 246 }; 247 248 template <typename T> 249 char const TranslateTableIupacToDna_<T>::VALUE[16] = 250 { //TGCA 251 0, //0000=0 = or U 252 0, //0001=1 253 1, //0010=2 254 0, //0011=3 AC 255 2, //0100=4 256 0, //0101=5 AG (purine) 257 1, //0110=6 CG 258 0, //0111=7 non-T 259 3, //1000=8 260 0, //1001=9 TA 261 1, //1010=A TC (pyrimidine) 262 0, //1011=B not-G 263 2, //1100=C TG 264 0, //1101=D not-C 265 1, //1110=E non-A 266 0 //1111=F any 267 }; 268 269 template <typename T = void> 270 struct TranslateTableIupacToDna5_ 271 { 272 static char const VALUE[16]; 273 }; 274 275 template <typename T> 276 char const TranslateTableIupacToDna5_<T>::VALUE[16] = 277 { //TGCA 278 3, //0000=0 = or U 279 0, //0001=1 280 1, //0010=2 281 4, //0011=3 AC 282 2, //0100=4 283 4, //0101=5 AG (purine) 284 4, //0110=6 CG 285 4, //0111=7 non-T 286 3, //1000=8 287 4, //1001=9 TA 288 4, //1010=A TC (pyrimidine) 289 4, //1011=B not-G 290 4, //1100=C TG 291 4, //1101=D not-C 292 4, //1110=E non-A 293 4 //1111=F any 294 }; 295 296 template <typename T = void> 297 struct TranslateTableCharToIupac_ 298 { 299 static char const VALUE[256]; 300 }; 301 302 template <typename T> 303 char const TranslateTableCharToIupac_<T>::VALUE[256] = 304 { 305 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 306 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 307 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 308 // = 309 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 310 // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, 311 15, 1, 14, 2, 13, 15, 15, 4, 11, 15, 15, 12, 15, 3, 15, 15, 312 // Q, R, S, T, U, V, W, X, Y, Z 313 15, 15, 5, 6, 8, 0, 7, 9, 15, 10, 15, 15, 15, 15, 15, 15, 314 // a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, 315 15, 1, 14, 2, 13, 15, 15, 4, 11, 15, 15, 12, 15, 3, 15, 15, 316 // q, r, s, t, u, v, w, x, y, z 317 15, 15, 5, 6, 8, 0, 7, 9, 15, 10, 15, 15, 15, 15, 15, 15, 318 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 319 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 320 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 321 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 322 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 323 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 324 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 325 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 326 }; 327 328 template <typename T = void> 329 struct TranslateTableByteToIupac_ 330 { 331 static char const VALUE[256]; 332 }; 333 334 template <typename T> 335 char const TranslateTableByteToIupac_<T>::VALUE[256] = 336 { 337 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, //0 338 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //1 339 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //2 340 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //3 341 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //4 342 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //5 343 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //6 344 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //7 345 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //8 346 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //9 347 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //10 348 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //11 349 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //12 350 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //13 351 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, //14 352 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 //15 353 }; 354 355 // -------------------------------------------------------------------------- 356 // Amino Acid 357 // -------------------------------------------------------------------------- 358 359 template <typename T = void> 360 struct TranslateTableAAToChar_ 361 { 362 static char const VALUE[27]; 363 }; 364 template <typename T> 365 char const TranslateTableAAToChar_<T>::VALUE[27] = 366 { 367 'A', // Ala Alanine 368 'B', // Aspartic Acid, Asparagine 369 'C', // Cys Cystine 370 'D', // Asp Aspartic Acid 371 'E', // Glu Glutamic Acid 372 'F', // Phe Phenylalanine 373 'G', // Gly Glycine 374 'H', // His Histidine 375 'I', // Ile Isoleucine 376 'J', // Leucine, Isoleucine 377 'K', // Lys Lysine 378 'L', // Leu Leucine 379 'M', // Met Methionine 380 'N', // Asn Asparagine 381 'O', // Pyl Pyrrolysine 382 'P', // Pro Proline 383 'Q', // Gln Glutamine 384 'R', // Arg Arginine 385 'S', // Ser Serine 386 'T', // Thr Threonine 387 'U', // Selenocystein 388 'V', // Val Valine 389 'W', // Trp Tryptophan 390 'Y', // Tyr Tyrosine 391 'Z', // Glutamic Acid, Glutamine 392 'X', // Unknown 393 '*' // Terminator 394 }; 395 396 template <typename T = void> 397 struct TranslateTableCharToAA_ 398 { 399 static char const VALUE[256]; 400 }; 401 402 template <typename T> 403 char const TranslateTableCharToAA_<T>::VALUE[256] = 404 { 405 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //0 406 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //1 407 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, //2 408 // * 409 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //3 410 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, //4 411 // , A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, 412 413 15, 16, 17, 18, 19, 20, 21, 22, 25, 23, 24, 25, 25, 25, 25, 25, //5 414 // P, Q, R, S, T, U, V, W, X, Y, Z, , , , , , 415 416 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, //6 417 // , a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, 418 419 15, 16, 17, 18, 19, 20, 21, 22, 25, 23, 24, 25, 25, 25, 25, //7 420 // p, q, r, s, t, u, v, w, x, y, z, , , , , , 421 422 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //8 423 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //9 424 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //10 425 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //11 426 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //12 427 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //13 428 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //14 429 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 //15 430 }; 431 432 template <typename T = void> 433 struct TranslateTableByteToAA_ 434 { 435 static char const VALUE[256]; 436 }; 437 438 template <typename T> 439 char const TranslateTableByteToAA_<T>::VALUE[256] = 440 { 441 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, //0 442 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25, 25, 25, //1 443 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //2 444 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //3 445 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //4 446 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //5 447 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //6 448 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //7 449 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //8 450 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //9 451 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //10 452 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //11 453 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //12 454 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //13 455 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //14 456 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 //15 457 }; 458 459 } // namespace seqan 460 461 #endif // #ifndef SEQAN_INCLUDE_SEQAN_BASIC_BASIC_ALPHABET_RESIDUE_TABS_H_ 462