1 /*--------------------------------------------------------------------------
2 * Copyright 2010 utgenome.org
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *--------------------------------------------------------------------------*/
16 //--------------------------------------
17 // utgb-core Project
18 //
19 // CodonTable.java
20 // Since: 2010/10/07
21 //
22 //--------------------------------------
23 package org.utgenome.gwt.utgb.client.bio;
24
25 /**
26 * Codon table
27 *
28 * @author leo
29 *
30 */
31 public class CodonTable {
32
33 /**
34 * 3mer integer (2bit encoding) to amino acid
35 */
36 public final static AminoAcid[] kmerIntToAminoAcidTable = new AminoAcid[] { AminoAcid.Lys, AminoAcid.Asn, AminoAcid.Lys, AminoAcid.Asn, AminoAcid.Thr,
37 AminoAcid.Thr, AminoAcid.Thr, AminoAcid.Thr, AminoAcid.Arg, AminoAcid.Ser, AminoAcid.Arg, AminoAcid.Ser, AminoAcid.Ile, AminoAcid.Ile,
38 AminoAcid.Met, AminoAcid.Ile, AminoAcid.Gln, AminoAcid.His, AminoAcid.Glu, AminoAcid.His, AminoAcid.Pro, AminoAcid.Pro, AminoAcid.Pro,
39 AminoAcid.Pro, AminoAcid.Arg, AminoAcid.Arg, AminoAcid.Arg, AminoAcid.Arg, AminoAcid.Leu, AminoAcid.Leu, AminoAcid.Leu, AminoAcid.Leu,
40 AminoAcid.Glu, AminoAcid.Asp, AminoAcid.Glu, AminoAcid.Asp, AminoAcid.Ala, AminoAcid.Ala, AminoAcid.Ala, AminoAcid.Ala, AminoAcid.Gly,
41 AminoAcid.Gly, AminoAcid.Gly, AminoAcid.Gly, AminoAcid.Val, AminoAcid.Val, AminoAcid.Val, AminoAcid.Val, AminoAcid.Ochre, AminoAcid.Tyr,
42 AminoAcid.Amber, AminoAcid.Tyr, AminoAcid.Ser, AminoAcid.Ser, AminoAcid.Ser, AminoAcid.Ser, AminoAcid.Opal, AminoAcid.Cys, AminoAcid.Trp,
43 AminoAcid.Cys, AminoAcid.Leu, AminoAcid.Phe, AminoAcid.Leu, AminoAcid.Phe };
44
45 public static AminoAcid toAminoAcid(int codon3merInt) {
46 return kmerIntToAminoAcidTable[codon3merInt & 0x3F];
47 }
48
49 public static AminoAcid toAminoAcid(String codon3mer) {
50
51 int codonInt = 0;
52 if (codon3mer.length() != 3)
53 return AminoAcid.Xaa;
54
55 for (int i = 0; i < 3; ++i) {
56 int code2bit = ACGTEncoder.to2bitCode(codon3mer.charAt(i));
57 if (code2bit >= 4)
58 return AminoAcid.Xaa;
59
60 codonInt <<= 2;
61 codonInt |= code2bit;
62 }
63 return toAminoAcid(codonInt);
64 }
65
66 // static {
67 //
68 // // AA
69 // codonToAminoAcidTable.put("AAA", AminoAcid.Lys);
70 // codonToAminoAcidTable.put("AAC", AminoAcid.Asn);
71 // codonToAminoAcidTable.put("AAG", AminoAcid.Lys);
72 // codonToAminoAcidTable.put("AAT", AminoAcid.Asn);
73 //
74 // // AC
75 // codonToAminoAcidTable.put("ACA", AminoAcid.Thr);
76 // codonToAminoAcidTable.put("ACC", AminoAcid.Thr);
77 // codonToAminoAcidTable.put("ACG", AminoAcid.Thr);
78 // codonToAminoAcidTable.put("ACT", AminoAcid.Thr);
79 //
80 // // AG
81 // codonToAminoAcidTable.put("AGA", AminoAcid.Arg);
82 // codonToAminoAcidTable.put("AGC", AminoAcid.Ser);
83 // codonToAminoAcidTable.put("AGG", AminoAcid.Arg);
84 // codonToAminoAcidTable.put("AGT", AminoAcid.Ser);
85 //
86 // // AT
87 // codonToAminoAcidTable.put("ATA", AminoAcid.Ile);
88 // codonToAminoAcidTable.put("ATC", AminoAcid.Ile);
89 // codonToAminoAcidTable.put("ATG", AminoAcid.Met);
90 // codonToAminoAcidTable.put("ATT", AminoAcid.Ile);
91 //
92 // // CA
93 // codonToAminoAcidTable.put("CAA", AminoAcid.Gln);
94 // codonToAminoAcidTable.put("CAC", AminoAcid.His);
95 // codonToAminoAcidTable.put("CAG", AminoAcid.Glu);
96 // codonToAminoAcidTable.put("CAT", AminoAcid.His);
97 //
98 // // CC
99 // codonToAminoAcidTable.put("CCA", AminoAcid.Pro);
100 // codonToAminoAcidTable.put("CCC", AminoAcid.Pro);
101 // codonToAminoAcidTable.put("CCG", AminoAcid.Pro);
102 // codonToAminoAcidTable.put("CCT", AminoAcid.Pro);
103 //
104 // // CG
105 // codonToAminoAcidTable.put("CGA", AminoAcid.Arg);
106 // codonToAminoAcidTable.put("CGC", AminoAcid.Arg);
107 // codonToAminoAcidTable.put("CGG", AminoAcid.Arg);
108 // codonToAminoAcidTable.put("CGT", AminoAcid.Arg);
109 //
110 // // CT
111 // codonToAminoAcidTable.put("CTA", AminoAcid.Leu);
112 // codonToAminoAcidTable.put("CTC", AminoAcid.Leu);
113 // codonToAminoAcidTable.put("CTG", AminoAcid.Leu);
114 // codonToAminoAcidTable.put("CTT", AminoAcid.Leu);
115 //
116 // // GA
117 // codonToAminoAcidTable.put("GAA", AminoAcid.Glu);
118 // codonToAminoAcidTable.put("GAC", AminoAcid.Asp);
119 // codonToAminoAcidTable.put("GAG", AminoAcid.Glu);
120 // codonToAminoAcidTable.put("GAT", AminoAcid.Asp);
121 //
122 // // GC
123 // codonToAminoAcidTable.put("GCA", AminoAcid.Ala);
124 // codonToAminoAcidTable.put("GCC", AminoAcid.Ala);
125 // codonToAminoAcidTable.put("GCG", AminoAcid.Ala);
126 // codonToAminoAcidTable.put("GCT", AminoAcid.Ala);
127 //
128 // // GG
129 // codonToAminoAcidTable.put("GGA", AminoAcid.Gly);
130 // codonToAminoAcidTable.put("GGC", AminoAcid.Gly);
131 // codonToAminoAcidTable.put("GGG", AminoAcid.Gly);
132 // codonToAminoAcidTable.put("GGT", AminoAcid.Gly);
133 //
134 // // GT
135 // codonToAminoAcidTable.put("GTA", AminoAcid.Val);
136 // codonToAminoAcidTable.put("GTC", AminoAcid.Val);
137 // codonToAminoAcidTable.put("GTG", AminoAcid.Val);
138 // codonToAminoAcidTable.put("GTT", AminoAcid.Val);
139 //
140 // // TA
141 // codonToAminoAcidTable.put("TAA", AminoAcid.Ochre);
142 // codonToAminoAcidTable.put("TAC", AminoAcid.Tyr);
143 // codonToAminoAcidTable.put("TAG", AminoAcid.Amber);
144 // codonToAminoAcidTable.put("TAT", AminoAcid.Tyr);
145 //
146 // // TC
147 // codonToAminoAcidTable.put("TCA", AminoAcid.Ser);
148 // codonToAminoAcidTable.put("TCC", AminoAcid.Ser);
149 // codonToAminoAcidTable.put("TCG", AminoAcid.Ser);
150 // codonToAminoAcidTable.put("TCT", AminoAcid.Ser);
151 //
152 // // TG
153 // codonToAminoAcidTable.put("TGA", AminoAcid.Opal);
154 // codonToAminoAcidTable.put("TGC", AminoAcid.Cys);
155 // codonToAminoAcidTable.put("TGG", AminoAcid.Trp);
156 // codonToAminoAcidTable.put("TGT", AminoAcid.Cys);
157 //
158 // // TT
159 // codonToAminoAcidTable.put("TTA", AminoAcid.Leu);
160 // codonToAminoAcidTable.put("TTC", AminoAcid.Phe);
161 // codonToAminoAcidTable.put("TTG", AminoAcid.Leu);
162 // codonToAminoAcidTable.put("TTT", AminoAcid.Phe);
163 //
164 // }
165
166 }