ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/owl/trunk/proteinstructure/AA.java
Revision: 320
Committed: Tue Sep 18 08:38:33 2007 UTC (17 years, 1 month ago) by stehr
File size: 14324 byte(s)
Log Message:
added calculation of difference distance map
Line File contents
1 package proteinstructure;
2 import java.util.HashMap;
3 import java.util.ArrayList;
4
5 public class AA {
6
7 public static final String CONTACT_TYPE_C_ALPHA = "Ca";
8 public static final String CONTACT_TYPE_C_BETA = "Cb";
9
10 public static String[] contactTypes() {
11 // NOTE: whenever a new contact type is added it needs to be added here as well as in ct2atoms
12 String[] cts ={"ALL","BB","SC","Ca","Cb","Cg","C"};
13 return cts;
14 }
15
16 public static String[] singleAtomContactTypes() {
17 // NOTE: whenever a new contact type is added it needs to be added here as well as in ct2atoms
18 String[] cts ={"Ca","Cb","Cg","C"};
19 return cts;
20 }
21
22 public static String[] multiAtomContactTypes() {
23 // NOTE: whenever a new contact type is added it needs to be added here as well as in ct2atoms
24 String[] cts ={"ALL","BB","SC"};
25 return cts;
26 }
27
28 /**
29 * Returns true if given contact type is a valid one
30 * @param ct
31 * @return
32 */
33 public static boolean isValidCT(String ct){
34 if (!ct.contains("/")){
35 for (String validCt:contactTypes()){
36 if (ct.equals(validCt)) return true;
37 }
38 } else {
39 String[] cts = ct.split("/");
40 String i_ct = cts[0];
41 String j_ct = cts[1];
42 if (isValidCT(i_ct) && isValidCT(j_ct)) return true;
43 }
44 return false;
45 }
46
47 /**
48 * Returns true if given contact type is a valid single atom contact type
49 * @param ct
50 * @return
51 */
52 public static boolean isValidSingleAtomCT(String ct) {
53 if (!ct.contains("/")){
54 for (String validCt:singleAtomContactTypes()){
55 if (ct.equals(validCt)) return true;
56 }
57 } else {
58 String[] cts = ct.split("/");
59 String i_ct = cts[0];
60 String j_ct = cts[1];
61 if (isValidSingleAtomCT(i_ct) && isValidSingleAtomCT(j_ct)) return true;
62 }
63 return false;
64 }
65
66 /**
67 * Returns true if given contact type is a valid multiple atom contact type
68 * @param ct
69 * @return
70 */
71 public static boolean isValidMultiAtomCT(String ct) {
72 if (!ct.contains("/")){
73 for (String validCt:multiAtomContactTypes()){
74 if (ct.equals(validCt)) return true;
75 }
76 } else {
77 String[] cts = ct.split("/");
78 String i_ct = cts[0];
79 String j_ct = cts[1];
80 if (isValidMultiAtomCT(i_ct) && isValidMultiAtomCT(j_ct)) return true;
81 }
82 return false;
83 }
84
85 private static HashMap<String,String> getThreeletter2oneletter() {
86 HashMap<String,String> three2oneletter = new HashMap<String,String>();
87 three2oneletter.put("CYS", "C");
88 three2oneletter.put("ASP", "D");
89 three2oneletter.put("SER", "S");
90 three2oneletter.put("GLN", "Q");
91 three2oneletter.put("LYS", "K");
92 three2oneletter.put("ILE", "I");
93 three2oneletter.put("PRO", "P");
94 three2oneletter.put("THR", "T");
95 three2oneletter.put("PHE", "F");
96 three2oneletter.put("ALA", "A");
97 three2oneletter.put("GLY", "G");
98 three2oneletter.put("HIS", "H");
99 three2oneletter.put("GLU", "E");
100 three2oneletter.put("LEU", "L");
101 three2oneletter.put("ARG", "R");
102 three2oneletter.put("TRP", "W");
103 three2oneletter.put("VAL", "V");
104 three2oneletter.put("ASN", "N");
105 three2oneletter.put("TYR", "Y") ;
106 three2oneletter.put("MET", "M");
107 return three2oneletter;
108 }
109
110 public static String threeletter2oneletter(String three) {
111 HashMap<String,String> three2oneletter = getThreeletter2oneletter();
112 return three2oneletter.get(three);
113 }
114
115 private static HashMap<String,String> getOneletter2Threeletter(){
116 HashMap<String,String> one2threeletter = new HashMap<String,String>();
117 one2threeletter.put("C", "CYS");
118 one2threeletter.put("D", "ASP");
119 one2threeletter.put("S", "SER");
120 one2threeletter.put("Q", "GLN");
121 one2threeletter.put("K", "LYS");
122 one2threeletter.put("I", "ILE");
123 one2threeletter.put("P", "PRO");
124 one2threeletter.put("T", "THR");
125 one2threeletter.put("F", "PHE");
126 one2threeletter.put("A", "ALA");
127 one2threeletter.put("G", "GLY");
128 one2threeletter.put("H", "HIS");
129 one2threeletter.put("E", "GLU");
130 one2threeletter.put("L", "LEU");
131 one2threeletter.put("R", "ARG");
132 one2threeletter.put("W", "TRP");
133 one2threeletter.put("V", "VAL");
134 one2threeletter.put("N", "ASN");
135 one2threeletter.put("Y", "TYR");
136 one2threeletter.put("M", "MET");
137 return one2threeletter;
138 }
139
140 public static String oneletter2threeletter(String one) {
141 HashMap<String,String> one2threeletter = getOneletter2Threeletter();
142 return one2threeletter.get(one);
143 }
144
145 public static ArrayList<String> aas() {
146 HashMap<String,String> three2oneletter = getThreeletter2oneletter();
147 ArrayList<String> aas = new ArrayList<String>();
148 for (String aa:three2oneletter.keySet()) {
149 aas.add(aa);
150 }
151 return aas;
152 }
153
154 public static HashMap<String,ArrayList<String>> getaas2atoms() {
155 HashMap<String,ArrayList<String>> aas2atoms = new HashMap<String,ArrayList<String>>();
156 aas2atoms.put("CYS", new ArrayList<String>());
157 aas2atoms.get("CYS").add("SG");
158 aas2atoms.get("CYS").add("CB");
159 aas2atoms.get("CYS").add("O");
160 aas2atoms.get("CYS").add("CA");
161 aas2atoms.get("CYS").add("C");
162 aas2atoms.get("CYS").add("N");
163 aas2atoms.put("ASP", new ArrayList<String>());
164 aas2atoms.get("ASP").add("N");
165 aas2atoms.get("ASP").add("CB");
166 aas2atoms.get("ASP").add("OD2");
167 aas2atoms.get("ASP").add("CG");
168 aas2atoms.get("ASP").add("CA");
169 aas2atoms.get("ASP").add("C");
170 aas2atoms.get("ASP").add("O");
171 aas2atoms.get("ASP").add("OD1");
172 aas2atoms.put("SER", new ArrayList<String>());
173 aas2atoms.get("SER").add("C");
174 aas2atoms.get("SER").add("N");
175 aas2atoms.get("SER").add("CA");
176 aas2atoms.get("SER").add("O");
177 aas2atoms.get("SER").add("CB");
178 aas2atoms.get("SER").add("OG");
179 aas2atoms.put("GLN", new ArrayList<String>());
180 aas2atoms.get("GLN").add("CA");
181 aas2atoms.get("GLN").add("CG");
182 aas2atoms.get("GLN").add("N");
183 aas2atoms.get("GLN").add("NE2");
184 aas2atoms.get("GLN").add("OE1");
185 aas2atoms.get("GLN").add("CD");
186 aas2atoms.get("GLN").add("C");
187 aas2atoms.get("GLN").add("O");
188 aas2atoms.get("GLN").add("CB");
189 aas2atoms.put("LYS", new ArrayList<String>());
190 aas2atoms.get("LYS").add("C");
191 aas2atoms.get("LYS").add("CA");
192 aas2atoms.get("LYS").add("N");
193 aas2atoms.get("LYS").add("O");
194 aas2atoms.get("LYS").add("CB");
195 aas2atoms.get("LYS").add("CG");
196 aas2atoms.get("LYS").add("CD");
197 aas2atoms.get("LYS").add("CE");
198 aas2atoms.get("LYS").add("NZ");
199 aas2atoms.put("ASN", new ArrayList<String>());
200 aas2atoms.get("ASN").add("ND2");
201 aas2atoms.get("ASN").add("OD1");
202 aas2atoms.get("ASN").add("CB");
203 aas2atoms.get("ASN").add("O");
204 aas2atoms.get("ASN").add("CG");
205 aas2atoms.get("ASN").add("C");
206 aas2atoms.get("ASN").add("CA");
207 aas2atoms.get("ASN").add("N");
208 aas2atoms.put("PRO", new ArrayList<String>());
209 aas2atoms.get("PRO").add("O");
210 aas2atoms.get("PRO").add("C");
211 aas2atoms.get("PRO").add("CB");
212 aas2atoms.get("PRO").add("CG");
213 aas2atoms.get("PRO").add("CA");
214 aas2atoms.get("PRO").add("CD");
215 aas2atoms.get("PRO").add("N");
216 aas2atoms.put("THR", new ArrayList<String>());
217 aas2atoms.get("THR").add("CA");
218 aas2atoms.get("THR").add("N");
219 aas2atoms.get("THR").add("C");
220 aas2atoms.get("THR").add("CG2");
221 aas2atoms.get("THR").add("OG1");
222 aas2atoms.get("THR").add("CB");
223 aas2atoms.get("THR").add("O");
224 aas2atoms.put("PHE", new ArrayList<String>());
225 aas2atoms.get("PHE").add("O");
226 aas2atoms.get("PHE").add("CE2");
227 aas2atoms.get("PHE").add("CE1");
228 aas2atoms.get("PHE").add("CG");
229 aas2atoms.get("PHE").add("C");
230 aas2atoms.get("PHE").add("N");
231 aas2atoms.get("PHE").add("CA");
232 aas2atoms.get("PHE").add("CB");
233 aas2atoms.get("PHE").add("CD2");
234 aas2atoms.get("PHE").add("CD1");
235 aas2atoms.get("PHE").add("CZ");
236 aas2atoms.put("ALA", new ArrayList<String>());
237 aas2atoms.get("ALA").add("CA");
238 aas2atoms.get("ALA").add("C");
239 aas2atoms.get("ALA").add("N");
240 aas2atoms.get("ALA").add("CB");
241 aas2atoms.get("ALA").add("O");
242 aas2atoms.put("HIS", new ArrayList<String>());
243 aas2atoms.get("HIS").add("CE1");
244 aas2atoms.get("HIS").add("CD2");
245 aas2atoms.get("HIS").add("ND1");
246 aas2atoms.get("HIS").add("CG");
247 aas2atoms.get("HIS").add("CB");
248 aas2atoms.get("HIS").add("O");
249 aas2atoms.get("HIS").add("C");
250 aas2atoms.get("HIS").add("CA");
251 aas2atoms.get("HIS").add("N");
252 aas2atoms.get("HIS").add("NE2");
253 aas2atoms.put("GLY", new ArrayList<String>());
254 aas2atoms.get("GLY").add("N");
255 aas2atoms.get("GLY").add("CA");
256 aas2atoms.get("GLY").add("C");
257 aas2atoms.get("GLY").add("O");
258 aas2atoms.put("ILE", new ArrayList<String>());
259 aas2atoms.get("ILE").add("CG2");
260 aas2atoms.get("ILE").add("CD1");
261 aas2atoms.get("ILE").add("O");
262 aas2atoms.get("ILE").add("N");
263 aas2atoms.get("ILE").add("CA");
264 aas2atoms.get("ILE").add("C");
265 aas2atoms.get("ILE").add("CB");
266 aas2atoms.get("ILE").add("CG1");
267 aas2atoms.put("LEU", new ArrayList<String>());
268 aas2atoms.get("LEU").add("N");
269 aas2atoms.get("LEU").add("CA");
270 aas2atoms.get("LEU").add("C");
271 aas2atoms.get("LEU").add("O");
272 aas2atoms.get("LEU").add("CB");
273 aas2atoms.get("LEU").add("CG");
274 aas2atoms.get("LEU").add("CD2");
275 aas2atoms.get("LEU").add("CD1");
276 aas2atoms.put("ARG", new ArrayList<String>());
277 aas2atoms.get("ARG").add("NH2");
278 aas2atoms.get("ARG").add("CZ");
279 aas2atoms.get("ARG").add("NE");
280 aas2atoms.get("ARG").add("CD");
281 aas2atoms.get("ARG").add("CG");
282 aas2atoms.get("ARG").add("C");
283 aas2atoms.get("ARG").add("CA");
284 aas2atoms.get("ARG").add("N");
285 aas2atoms.get("ARG").add("NH1");
286 aas2atoms.get("ARG").add("CB");
287 aas2atoms.get("ARG").add("O");
288 aas2atoms.put("TRP", new ArrayList<String>());
289 aas2atoms.get("TRP").add("CE2");
290 aas2atoms.get("TRP").add("CA");
291 aas2atoms.get("TRP").add("C");
292 aas2atoms.get("TRP").add("O");
293 aas2atoms.get("TRP").add("CB");
294 aas2atoms.get("TRP").add("CG");
295 aas2atoms.get("TRP").add("CD1");
296 aas2atoms.get("TRP").add("CD2");
297 aas2atoms.get("TRP").add("CH2");
298 aas2atoms.get("TRP").add("CZ3");
299 aas2atoms.get("TRP").add("CZ2");
300 aas2atoms.get("TRP").add("CE3");
301 aas2atoms.get("TRP").add("NE1");
302 aas2atoms.get("TRP").add("N");
303 aas2atoms.put("VAL", new ArrayList<String>());
304 aas2atoms.get("VAL").add("CG1");
305 aas2atoms.get("VAL").add("CB");
306 aas2atoms.get("VAL").add("O");
307 aas2atoms.get("VAL").add("C");
308 aas2atoms.get("VAL").add("CA");
309 aas2atoms.get("VAL").add("N");
310 aas2atoms.get("VAL").add("CG2");
311 aas2atoms.put("GLU", new ArrayList<String>());
312 aas2atoms.get("GLU").add("C");
313 aas2atoms.get("GLU").add("N");
314 aas2atoms.get("GLU").add("CA");
315 aas2atoms.get("GLU").add("OE2");
316 aas2atoms.get("GLU").add("OE1");
317 aas2atoms.get("GLU").add("CD");
318 aas2atoms.get("GLU").add("CG");
319 aas2atoms.get("GLU").add("CB");
320 aas2atoms.get("GLU").add("O");
321 aas2atoms.put("TYR", new ArrayList<String>());
322 aas2atoms.get("TYR").add("CD2");
323 aas2atoms.get("TYR").add("CD1");
324 aas2atoms.get("TYR").add("OH");
325 aas2atoms.get("TYR").add("CZ");
326 aas2atoms.get("TYR").add("CE2");
327 aas2atoms.get("TYR").add("N");
328 aas2atoms.get("TYR").add("CA");
329 aas2atoms.get("TYR").add("C");
330 aas2atoms.get("TYR").add("O");
331 aas2atoms.get("TYR").add("CB");
332 aas2atoms.get("TYR").add("CG");
333 aas2atoms.get("TYR").add("CE1");
334 aas2atoms.put("MET", new ArrayList<String>());
335 aas2atoms.get("MET").add("CA");
336 aas2atoms.get("MET").add("O");
337 aas2atoms.get("MET").add("C");
338 aas2atoms.get("MET").add("CB");
339 aas2atoms.get("MET").add("CE");
340 aas2atoms.get("MET").add("N");
341 aas2atoms.get("MET").add("CG");
342 aas2atoms.get("MET").add("SD");
343 return aas2atoms;
344
345 }
346
347 public static HashMap<String,String[]> ct2atoms(String ct) {
348 ArrayList<String> aas = aas();
349 HashMap<String,String[]> ct2atoms = new HashMap<String,String[]>();
350 if (ct.equals("Ca")){
351 String[] atoms = {"CA"};
352 for (String aa:aas) {
353 ct2atoms.put(aa, atoms);
354 }
355 }
356 else if (ct.equals("Cb")){
357 String[] atoms = {"CB"};
358 for (String aa:aas) {
359 ct2atoms.put(aa, atoms);
360 }
361 atoms = new String[1];
362 atoms[0]="CA";
363 ct2atoms.put("GLY", atoms);
364 }
365 else if (ct.equals("C")){
366 String[] atoms = {"C"};
367 for (String aa:aas) {
368 ct2atoms.put(aa, atoms);
369 }
370 }
371 else if (ct.equals("Cg")){
372 String[] atoms = {"SG"};
373 ct2atoms.put("CYS", atoms);
374 atoms = new String[1];
375 atoms[0]= "CG";
376 ct2atoms.put("ASP", atoms);
377 atoms = new String[1];
378 atoms[0]="OG";
379 ct2atoms.put("SER", atoms);
380 atoms = new String[1];
381 atoms[0]="CG";
382 ct2atoms.put("GLN", atoms);
383 atoms = new String[1];
384 atoms[0]="CD";
385 ct2atoms.put("LYS", atoms);
386 atoms = new String[1];
387 atoms[0]="CG1";
388 ct2atoms.put("ILE", atoms);
389 atoms = new String[1];
390 atoms[0]="CG";
391 ct2atoms.put("PRO", atoms);
392 atoms = new String[1];
393 atoms[0]="OG1";
394 ct2atoms.put("THR", atoms);
395 atoms = new String[1];
396 atoms[0]="CG";
397 ct2atoms.put("PHE", atoms);
398 ct2atoms.put("ALA", new String[0]);
399 ct2atoms.put("GLY", new String[0]);
400 atoms = new String[1];
401 atoms[0]="CG";
402 ct2atoms.put("HIS", atoms);
403 atoms = new String[1];
404 atoms[0]="CG";
405 ct2atoms.put("GLU", atoms);
406 atoms = new String[1];
407 atoms[0]="CG";
408 ct2atoms.put("LEU", atoms);
409 atoms = new String[1];
410 atoms[0]="NE";
411 ct2atoms.put("ARG", atoms);
412 atoms = new String[1];
413 atoms[0]="CD2";
414 ct2atoms.put("TRP", atoms);
415 atoms = new String[1];
416 atoms[0]="CG1";
417 ct2atoms.put("VAL", atoms);
418 atoms = new String[1];
419 atoms[0]="CG";
420 ct2atoms.put("ASN", atoms);
421 atoms = new String[1];
422 atoms[0]="CG";
423 ct2atoms.put("TYR", atoms);
424 atoms = new String[1];
425 atoms[0]="CG";
426 ct2atoms.put("MET", atoms);
427 }
428 else if (ct.equals("BB")){
429 String[] atoms = {"CA", "N", "C", "O"};
430 for (String aa:aas) {
431 ct2atoms.put(aa, atoms);
432 }
433 }
434 else if (ct.equals("SC")){
435 HashMap<String,ArrayList<String>> aas2atoms = getaas2atoms();
436 for (String aa:aas) {
437 ArrayList<String> SCatoms =aas2atoms.get(aa);
438 SCatoms.remove("CA");
439 SCatoms.remove("N");
440 SCatoms.remove("C");
441 SCatoms.remove("O");
442 String[] SCatomsar= new String[SCatoms.size()];
443 SCatomsar=SCatoms.toArray(SCatomsar);
444 ct2atoms.put(aa, SCatomsar);
445 }
446 }
447 else if (ct.equals("ALL")){
448 HashMap<String,ArrayList<String>> aas2atoms = getaas2atoms();
449 for (String aa:aas) {
450 ArrayList<String> ALLatoms = aas2atoms.get(aa);
451 String[] ALLatomsar= new String[ALLatoms.size()];
452 ALLatomsar=ALLatoms.toArray(ALLatomsar);
453 ct2atoms.put(aa,ALLatomsar);
454 }
455 }
456 return ct2atoms;
457 }
458 }