SeqAn3
translation_details.hpp
Go to the documentation of this file.
1 // ============================================================================
2 // SeqAn - The Library for Sequence Analysis
3 // ============================================================================
4 //
5 // Copyright (c) 2006-2018, Knut Reinert & Freie Universitaet Berlin
6 // Copyright (c) 2016-2018, Knut Reinert & MPI Molekulare Genetik
7 // All rights reserved.
8 //
9 // Redistribution and use in source and binary forms, with or without
10 // modification, are permitted provided that the following conditions are met:
11 //
12 // * Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 // * Redistributions in binary form must reproduce the above copyright
15 // notice, this list of conditions and the following disclaimer in the
16 // documentation and/or other materials provided with the distribution.
17 // * Neither the name of Knut Reinert or the FU Berlin nor the names of
18 // its contributors may be used to endorse or promote products derived
19 // from this software without specific prior written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 // ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
25 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31 // DAMAGE.
32 //
33 // ============================================================================
34 
40 #pragma once
41 
46 
47 namespace seqan3::detail
48 {
54 template <typename nucl_type, seqan3::genetic_code gc = seqan3::genetic_code::CANONICAL, typename void_type = void>
55 struct translation_table
56 {
58  static constexpr std::array<std::array<std::array<aa27, alphabet_size_v<nucl_type>>, alphabet_size_v<nucl_type>>,
59  alphabet_size_v<nucl_type>> VALUE
60  {
61  [] () constexpr
62  {
63  std::array<std::array<std::array<aa27, alphabet_size_v<nucl_type>>,
64  alphabet_size_v<nucl_type>>, alphabet_size_v<nucl_type>> table{};
65 
66  using size_t = std::remove_const_t<decltype(alphabet_size_v<nucl_type>)>;
67  for (size_t i = 0; i < alphabet_size_v<nucl_type>; ++i)
68  {
69  dna15 n1(assign_rank(nucl_type{}, i));
70  for (size_t j = 0; j < alphabet_size_v<nucl_type>; ++j)
71  {
72  dna15 n2(assign_rank(nucl_type{}, j));
73  for (size_t k = 0; k < alphabet_size_v<nucl_type>; ++k)
74  {
75  dna15 n3(assign_rank(nucl_type{}, k));
76  table[i][j][k] = translation_table<dna15, gc, void_type>::VALUE[to_rank(n1)][to_rank(n2)][to_rank(n3)];
77  }
78  }
79  }
80  return table;
81  } ()
82  };
83 };
84 
86 template <typename void_type>
87 struct translation_table<dna15, seqan3::genetic_code::CANONICAL, void_type>
88 {
90  static constexpr aa27 VALUE[dna15::value_size][dna15::value_size][dna15::value_size]
91  {
92  { // a??
93  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
94  { aa27::K, aa27::X, aa27::N, aa27::X, aa27::K, aa27::X, aa27::X, aa27::X, aa27::X, aa27::K, aa27::X, aa27::N, aa27::X, aa27::X, aa27::N }, // aa?
95  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ab?
96  { aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T, aa27::T }, // ac?
97  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ad?
98  { aa27::R, aa27::X, aa27::S, aa27::X, aa27::R, aa27::X, aa27::X, aa27::X, aa27::X, aa27::R, aa27::X, aa27::S, aa27::X, aa27::X, aa27::S }, // ag?
99  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ah?
100  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ak?
101  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // am?
102  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // an?
103  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ar?
104  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // as?
105  { aa27::I, aa27::X, aa27::I, aa27::X, aa27::M, aa27::I, aa27::X, aa27::I, aa27::X, aa27::X, aa27::X, aa27::I, aa27::X, aa27::I, aa27::I }, // at?
106  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // av?
107  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // aw?
108  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // ay?
109  }, { // b??
110  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
111  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ba?
112  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bb?
113  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bc?
114  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bd?
115  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bg?
116  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bh?
117  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bk?
118  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bm?
119  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bn?
120  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // br?
121  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bs?
122  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bt?
123  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bv?
124  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // bw?
125  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // by?
126  }, { // c??
127  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
128  { aa27::Q, aa27::X, aa27::H, aa27::X, aa27::Q, aa27::X, aa27::X, aa27::X, aa27::X, aa27::Q, aa27::X, aa27::H, aa27::X, aa27::X, aa27::H }, // ca?
129  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cb?
130  { aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P, aa27::P }, // cc?
131  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cd?
132  { aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R, aa27::R }, // cg?
133  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ch?
134  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ck?
135  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cm?
136  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cn?
137  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cr?
138  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cs?
139  { aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L, aa27::L }, // ct?
140  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cv?
141  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // cw?
142  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // cy?
143  }, { // d??
144  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
145  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // da?
146  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // db?
147  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dc?
148  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dd?
149  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dg?
150  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dh?
151  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dk?
152  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dm?
153  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dn?
154  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dr?
155  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ds?
156  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dt?
157  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dv?
158  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // dw?
159  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // dy?
160 
161  }, { // g??
162  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
163  { aa27::E, aa27::X, aa27::D, aa27::X, aa27::E, aa27::X, aa27::X, aa27::X, aa27::X, aa27::E, aa27::X, aa27::D, aa27::X, aa27::X, aa27::D }, // ga?
164  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gb?
165  { aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A, aa27::A }, // gc?
166  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gd?
167  { aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G, aa27::G }, // gg?
168  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gh?
169  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gk?
170  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gm?
171  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gn?
172  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gr?
173  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gs?
174  { aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V, aa27::V }, // gt?
175  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gv?
176  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // gw?
177  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // gy?
178  }, { // h??
179  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
180  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ha?
181  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hb?
182  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hc?
183  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hd?
184  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hg?
185  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hh?
186  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hk?
187  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hm?
188  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hn?
189  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hr?
190  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hs?
191  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ht?
192  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hv?
193  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // hw?
194  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // hy?
195 
196  }, { // k??
197  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
198  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ka?
199  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kb?
200  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kc?
201  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kd?
202  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kg?
203  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kh?
204  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kk?
205  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // km?
206  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kn?
207  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kr?
208  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ks?
209  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kt?
210  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kv?
211  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // kw?
212  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // ky?
213 
214  }, { // m??
215  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
216  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ma?
217  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mb?
218  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mc?
219  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // md?
220  { aa27::R, aa27::X, aa27::X, aa27::X, aa27::R, aa27::X, aa27::X, aa27::X, aa27::X, aa27::R, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mg?
221  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mh?
222  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mk?
223  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mm?
224  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mn?
225  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mr?
226  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ms?
227  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mt?
228  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mv?
229  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // mw?
230  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // my?
231 
232 
233  }, { // n??
234  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
235  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nb?
236  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nc?
237  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nd?
238  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ng?
239  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nh?
240  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nk?
241  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nm?
242  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nn?
243  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nr?
244  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ns?
245  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nt?
246  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nv?
247  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // nw?
248  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // ny?
249  }, { // r??
250  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
251  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rb?
252  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rc?
253  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rd?
254  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rg?
255  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rh?
256  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rk?
257  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rm?
258  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rn?
259  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rr?
260  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rs?
261  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rt?
262  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rv?
263  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // rw?
264  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // ry?
265  }, { // s??
266  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
267  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sb?
268  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sc?
269  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sd?
270  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sg?
271  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sh?
272  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sk?
273  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sm?
274  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sn?
275  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sr?
276  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ss?
277  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // st?
278  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sv?
279  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // sw?
280  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // sy?
281  }, { // t??
282  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
283  { aa27::TERMINATOR, aa27::X, aa27::Y, aa27::X, aa27::TERMINATOR, aa27::X, aa27::X, aa27::X, aa27::X, aa27::TERMINATOR, aa27::X, aa27::Y, aa27::X, aa27::X, aa27::Y }, // ta?
284  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tb?
285  { aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S, aa27::S }, // tc?
286  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // td?
287  { aa27::TERMINATOR, aa27::X, aa27::C, aa27::X, aa27::W, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::C, aa27::X, aa27::C }, // tg?
288  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // th?
289  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tk?
290  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tm?
291  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tn?
292  { aa27::TERMINATOR, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tr?
293  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ts?
294  { aa27::L, aa27::X, aa27::F, aa27::X, aa27::X, aa27::L, aa27::X, aa27::X, aa27::X, aa27::L, aa27::X, aa27::F, aa27::X, aa27::X, aa27::F }, // tt?
295  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tv?
296  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // tw?
297  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // ty?
298  }, { // v??
299  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
300  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // va?
301  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vb?
302  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vc?
303  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vd?
304  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vg?
305  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vh?
306  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vk?
307  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vm?
308  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vn?
309  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vr?
310  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vs?
311  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vt?
312  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vv?
313  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // vw?
314  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // vy?
315  }, { // w??
316  // a, b, c, d, g, h, k, m, n, r, s, t, v, w, y
317  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wa?
318  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wb?
319  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wc?
320  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wd?
321  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wg?
322  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wh?
323  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wk?
324  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wm?
325  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wn?
326  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wr?
327  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ws?
328  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wt?
329  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // wv?
330  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ww?
331  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // wy?
332  }, { // y??
333  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ya?
334  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yb?
335  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yc?
336  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yd?
337  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yg?
338  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yh?
339  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yk?
340  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ym?
341  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yn?
342  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yr?
343  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // ys?
344  { aa27::L, aa27::X, aa27::X, aa27::X, aa27::L, aa27::X, aa27::X, aa27::X, aa27::X, aa27::L, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yt?
345  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yv?
346  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X }, // yw?
347  { aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X, aa27::X } // yy?
348  }
349  };
350 };
351 
352 }
Contains seqan3::aa27, container aliases and string literals.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:58
Genetic codes used for translating a triplet of nucleotides into an amino acid.
static detail::min_viable_uint_t< size > constexpr value_size
The size of the alphabet, i.e. the number of different values it can take.
Definition: alphabet_base.hpp:198
constexpr alphabet_type & assign_rank(alphabet_type &alph, underlying_rank_t< alphabet_type > const rank) requires requires(alphabet_type alph)
Implementation of seqan3::semi_alphabet_concept::assign_rank() that delegates to a member function...
Definition: member_exposure.hpp:110
Provides seqan3::nucleotide_concept.
Definition: aligned_sequence_concept.hpp:288
Contains seqan3::dna15, container aliases and string literals.
constexpr underlying_rank_t< alphabet_type > to_rank(alphabet_type const alph) requires requires(alphabet_type alph)
Implementation of seqan3::semi_alphabet_concept::to_rank() that delegates to a member function...
Definition: member_exposure.hpp:97