18 #ifndef __ATOM_CODE_H__
19 #define __ATOM_CODE_H__
215 follows(AtomCode first, AtomCode second) {
216 if (first == ATOM_CODE_SIZE || second == ATOM_CODE_SIZE) {
219 return first < second;
229 isBetaAtom(AtomCode code) {
230 return ( code == CB);
239 isGammaAtom(AtomCode code) {
240 return ((code == SG) || (code == OG) || (code == CG)
241 || (code == OG1) || (code == CG1) || (code == CG2));
250 isDeltaAtom(AtomCode code) {
251 return ((code == CD) || (code == OD) || (code == SD)
252 || (code == CD1) || (code == OD1) || (code == ND1)
253 || (code == CD2) || (code == OD2) || (code == ND2));
262 isEpsilonAtom(AtomCode code) {
263 return ((code == CE) || (code == NE) || (code == CE1)
264 || (code == OE1) || (code == NE1) || (code == CE2)
265 || (code == OE2) || (code == NE2) || (code = CE3));
274 isZetaAtom(AtomCode code) {
275 return ((code == CZ) || (code == NZ) || (code == CZ2)
285 isEtaAtom(AtomCode code) {
286 return ((code == OH) || (code == NH1) || (code == NH2)
297 isCAtom(AtomCode code) {
298 return ((code == C) || (code == CB) || (code == CG)
299 || (code == CG1) || (code == CG2) || (code == CD)
300 || (code == CD1) || (code == CD2) || (code == CE)
301 || (code == CE1) || (code == CE2) || (code == CE3)
302 || (code == CZ) || (code == CZ2) || (code == CZ3)
303 || (code == C5S) || (code == C4S) || (code == C3S)
304 || (code == C2S) || (code == C1S) || (code == C8)
305 || (code == C5) || (code == C6) || (code == C2)
306 || (code == C4) || (code == C5M));
316 isNAtom(AtomCode code) {
317 return ( (code == N9) || (code == N7) || (code == N6)
318 || (code == N1) || (code == N2) || (code == N3)
319 || (code == N4) || (code == ND1) || (code == ND2)
320 || (code == NE) || (code == NE1) || (code == NE2)
321 || (code == NZ) || (code == NH1) || (code == NH2)
332 isOAtom(AtomCode code) {
333 return ( (code == OXT) || (code == O1P) || (code == O2P)
334 || (code == O5S) || (code == O4S) || (code == O3S)
335 || (code == O2S) || (code == O6) || (code == O2)
336 || (code == O4) || (code == OD1) || (code == OD2)
337 || (code == OE1) || (code == OE2) || (code == OH)
338 || (code == O) || (code == OG) || (code == OG1)
349 isHAtom(AtomCode code) {
350 return ( (code == H) || (code == H1) || (code == H2) || (code == H3) || (code == HA) ||
351 (code == HA2) || (code == HA3) || (code == HB) || (code == HB1) ||
352 (code == HB2) || (code == HB3) || (code == HD1) || (code == HD2) ||
353 (code == HD3) || (code == HD11) || (code == HD12) || (code == HD13) ||
354 (code == HD21) || (code == HD22) || (code == HD23) || (code == HE) ||
355 (code == HE1) || (code == HE2) || (code == HE3) || (code == HE21) ||
356 (code == HE22) || (code == HG) || (code == HG1) || (code == HG2) ||
357 (code == HG11) || (code == HG12) || (code == HG13) ||
358 (code == HG21) || (code == HG22) ||
359 (code == HG23) || (code == HG3) || (code == HH) || (code == HH2) ||
360 (code == HH11) || (code == HH12) || (code == HH21) || (code == HH22) ||
361 (code == HZ) || (code == HZ1) || (code == HZ2) || (code == HZ3)
371 isKnownAtom(AtomCode code) {
381 isHeavyAtom(AtomCode code) {
382 return (isKnownAtom(code))&&(!isHAtom(code));
393 isBackboneAtom(AtomCode code) {
394 return code == C || code == CA || code == N || code == O || code == OXT;
403 AtomTranslator(
const string& name) {
413 }
else if (name ==
"CA") {
415 }
else if (name ==
"C") {
417 }
else if (name ==
"O") {
419 }
else if (name ==
"CB") {
421 }
else if (name ==
"SG") {
423 }
else if (name ==
"OG") {
425 }
else if (name ==
"CG") {
427 }
else if (name ==
"OG1") {
429 }
else if (name ==
"CG1") {
431 }
else if (name ==
"CG2") {
433 }
else if (name ==
"CD") {
435 }
else if (name ==
"OD") {
437 }
else if (name ==
"SD") {
439 }
else if (name ==
"CD1") {
441 }
else if (name ==
"OD1") {
443 }
else if (name ==
"ND1") {
445 }
else if (name ==
"CD2") {
447 }
else if (name ==
"OD2") {
449 }
else if (name ==
"ND2") {
451 }
else if (name ==
"CE") {
453 }
else if (name ==
"NE") {
455 }
else if (name ==
"CE1") {
457 }
else if (name ==
"OE1") {
459 }
else if (name ==
"NE1") {
461 }
else if (name ==
"CE2") {
463 }
else if (name ==
"OE2") {
465 }
else if (name ==
"NE2") {
467 }
else if (name ==
"CE3") {
469 }
else if (name ==
"CZ") {
471 }
else if (name ==
"NZ") {
473 }
else if (name ==
"CZ2") {
475 }
else if (name ==
"CZ3") {
477 }
else if (name ==
"OH") {
479 }
else if (name ==
"NH1") {
481 }
else if (name ==
"NH2") {
483 }
else if (name ==
"CH2") {
485 }
else if (name ==
"OXT") {
487 }
else if (name ==
"P") {
489 }
else if (name ==
"O1P") {
491 }
else if (name ==
"O2P") {
493 }
else if (name ==
"O5S") {
495 }
else if (name ==
"C5S") {
497 }
else if (name ==
"C4S") {
499 }
else if (name ==
"O4S") {
501 }
else if (name ==
"C3S") {
503 }
else if (name ==
"O3S") {
505 }
else if (name ==
"C2S") {
507 }
else if (name ==
"O2S") {
509 }
else if (name ==
"C1S") {
511 }
else if (name ==
"N9") {
513 }
else if (name ==
"C8") {
515 }
else if (name ==
"N7") {
517 }
else if (name ==
"C5") {
519 }
else if (name ==
"C6") {
521 }
else if (name ==
"O6") {
523 }
else if (name ==
"N6") {
525 }
else if (name ==
"N1") {
527 }
else if (name ==
"C2") {
529 }
else if (name ==
"O2") {
531 }
else if (name ==
"N2") {
533 }
else if (name ==
"N3") {
535 }
else if (name ==
"C4") {
537 }
else if (name ==
"O4") {
539 }
else if (name ==
"N4") {
541 }
else if (name ==
"C5M") {
546 else if ((name ==
"H") || (name ==
"HN")) {
548 }
else if ((name ==
"H1") || (name ==
"HN1"))
551 }
else if ((name ==
"H2") || (name ==
"HN2"))
554 }
else if ((name ==
"H3") || (name ==
"HN3"))
557 }
else if (name ==
"HA") {
559 }
else if ((name ==
"HA2") || (name ==
"1HA"))
562 }
else if ((name ==
"HA3") || (name ==
"2HA"))
565 }
else if (name ==
"HB") {
567 }
else if (name ==
"HB1")
570 }
else if (name ==
"HB2")
573 }
else if ((name ==
"HB3") || (name ==
"3HB")) {
575 }
else if (name ==
"HD1") {
577 }
else if ((name ==
"HD2") || (name ==
"1HD")) {
579 }
else if ((name ==
"HD3") || (name ==
"2HD")) {
581 }
else if ((name ==
"HD11") || (name ==
"1HD1")) {
583 }
else if ((name ==
"HD12") || (name ==
"2HD1")) {
585 }
else if ((name ==
"HD13") || (name ==
"3HD1")) {
587 }
else if ((name ==
"HD21") || (name ==
"1HD2")) {
589 }
else if ((name ==
"HD22") || (name ==
"2HD2")) {
591 }
else if ((name ==
"HD23") || (name ==
"3HD2")) {
593 }
else if (name ==
"HE")
596 }
else if (name ==
"HE1")
599 }
else if (name ==
"HE2")
602 }
else if ((name ==
"HE3") || (name ==
"3HE"))
605 }
else if ((name ==
"HE21") || (name ==
"1HE2")) {
607 }
else if ((name ==
"HE22") || (name ==
"2HE2")) {
609 }
else if (name ==
"HG") {
611 }
else if (name ==
"HG1") {
613 }
else if ((name ==
"1HG") || (name ==
"HG2")) {
615 }
else if (name ==
"HG11")
618 }
else if (name ==
"HG12")
621 }
else if ((name ==
"3HG1") || (name ==
"HG13"))
624 }
else if ((name ==
"HG21") || (name ==
"1HG2")) {
626 }
else if ((name ==
"HG22") || (name ==
"2HG2")) {
628 }
else if ((name ==
"HG23") || (name ==
"3HG2")) {
630 }
else if ((name ==
"HG3") || (name ==
"2HG")) {
632 }
else if (name ==
"HH") {
634 }
else if (name ==
"HH2") {
636 }
else if ((name ==
"HH11") || (name ==
"1HH1")) {
638 }
else if ((name ==
"HH12") || (name ==
"2HH1")) {
640 }
else if ((name ==
"HH21") || (name ==
"1HH2")) {
642 }
else if ((name ==
"HH22") || (name ==
"2HH2")) {
644 }
else if (name ==
"HZ") {
646 }
else if ((name ==
"HZ1") || (name ==
"1HZ")) {
648 }
else if ((name ==
"HZ2") || (name ==
"2HZ")) {
650 }
else if ((name ==
"HZ3") || (name ==
"3HZ")) {
656 else if (name ==
"XA") {
658 }
else if (name ==
"XD") {
660 }
else if (name ==
"XR") {
662 }
else if (name ==
"XN") {
664 }
else if (name ==
"XC") {
666 }
else if (name ==
"XQ") {
668 }
else if (name ==
"XE") {
670 }
else if (name ==
"XG") {
672 }
else if (name ==
"XG") {
674 }
else if (name ==
"XH") {
676 }
else if (name ==
"XI") {
678 }
else if (name ==
"XL") {
680 }
else if (name ==
"XK") {
682 }
else if (name ==
"XM") {
684 }
else if (name ==
"XF") {
686 }
else if (name ==
"XP") {
688 }
else if (name ==
"XS") {
690 }
else if (name ==
"XT") {
692 }
else if (name ==
"XW") {
694 }
else if (name ==
"XY") {
696 }
else if (name ==
"XV") {
703 inline string AtomTranslator(AtomCode code) {
978 ERROR(
"AtomTranslator(AtomCode code): unknown code", exception);
981 ERROR(
"AtomTranslator(AtomCode code): unknown code", exception);
988 inline ostream& operator<<(ostream& os,
const AtomCode& rval) {
989 os << AtomTranslator(rval);
993 inline istream& operator>>(istream& is, AtomCode& rval) {
996 rval = AtomTranslator(name);
1004 inline int get_all_atom_bin(
string group_name) {
1005 switch (group_name[0]) {
1007 if (group_name ==
"AN")
return 1;
1008 if (group_name ==
"ACA")
return 2;
1009 if (group_name ==
"AC")
return 3;
1010 if (group_name ==
"AO")
return 4;
1011 if (group_name ==
"ACB")
return 5;
1014 if (group_name ==
"CN")
return 6;
1015 if (group_name ==
"CCA")
return 7;
1016 if (group_name ==
"CC")
return 8;
1017 if (group_name ==
"CO")
return 9;
1018 if (group_name ==
"CCB")
return 10;
1019 if (group_name ==
"CSG")
return 11;
1022 if (group_name ==
"DN")
return 12;
1023 if (group_name ==
"DCA")
return 13;
1024 if (group_name ==
"DC")
return 14;
1025 if (group_name ==
"DO")
return 15;
1026 if (group_name ==
"DCB")
return 16;
1027 if (group_name ==
"DCG")
return 17;
1028 if (group_name ==
"DOD1")
return 18;
1029 if (group_name ==
"DOD2")
return 19;
1032 if (group_name ==
"EN")
return 20;
1033 if (group_name ==
"ECA")
return 21;
1034 if (group_name ==
"EC")
return 22;
1035 if (group_name ==
"EO")
return 23;
1036 if (group_name ==
"ECB")
return 24;
1037 if (group_name ==
"ECG")
return 25;
1038 if (group_name ==
"ECD")
return 26;
1039 if (group_name ==
"EOE1")
return 27;
1040 if (group_name ==
"EOE2")
return 28;
1043 if (group_name ==
"FN")
return 29;
1044 if (group_name ==
"FCA")
return 30;
1045 if (group_name ==
"FC")
return 31;
1046 if (group_name ==
"FO")
return 32;
1047 if (group_name ==
"FCB")
return 33;
1048 if (group_name ==
"FCG")
return 34;
1049 if (group_name ==
"FCD1")
return 35;
1050 if (group_name ==
"FCD2")
return 36;
1051 if (group_name ==
"FCE1")
return 37;
1052 if (group_name ==
"FCE2")
return 38;
1053 if (group_name ==
"FCZ")
return 39;
1056 if (group_name ==
"GN")
return 40;
1057 if (group_name ==
"GCA")
return 41;
1058 if (group_name ==
"GC")
return 42;
1059 if (group_name ==
"GO")
return 43;
1062 if (group_name ==
"HN")
return 44;
1063 if (group_name ==
"HCA")
return 45;
1064 if (group_name ==
"HC")
return 46;
1065 if (group_name ==
"HO")
return 47;
1066 if (group_name ==
"HCB")
return 48;
1067 if (group_name ==
"HCG")
return 49;
1068 if (group_name ==
"HND1")
return 50;
1069 if (group_name ==
"HCD2")
return 51;
1070 if (group_name ==
"HCE1")
return 52;
1071 if (group_name ==
"HNE2")
return 53;
1074 if (group_name ==
"IN")
return 54;
1075 if (group_name ==
"ICA")
return 55;
1076 if (group_name ==
"IC")
return 56;
1077 if (group_name ==
"IO")
return 57;
1078 if (group_name ==
"ICB")
return 58;
1079 if (group_name ==
"ICG1")
return 59;
1080 if (group_name ==
"ICG2")
return 60;
1081 if (group_name ==
"ICD1")
return 61;
1084 if (group_name ==
"KN")
return 62;
1085 if (group_name ==
"KCA")
return 63;
1086 if (group_name ==
"KC")
return 64;
1087 if (group_name ==
"KO")
return 65;
1088 if (group_name ==
"KCB")
return 66;
1089 if (group_name ==
"KCG")
return 67;
1090 if (group_name ==
"KCD")
return 68;
1091 if (group_name ==
"KCE")
return 69;
1092 if (group_name ==
"KNZ")
return 70;
1095 if (group_name ==
"LN")
return 71;
1096 if (group_name ==
"LCA")
return 72;
1097 if (group_name ==
"LC")
return 73;
1098 if (group_name ==
"LO")
return 74;
1099 if (group_name ==
"LCB")
return 75;
1100 if (group_name ==
"LCG")
return 76;
1101 if (group_name ==
"LCD1")
return 77;
1102 if (group_name ==
"LCD2")
return 78;
1105 if (group_name ==
"MN")
return 79;
1106 if (group_name ==
"MCA")
return 80;
1107 if (group_name ==
"MC")
return 81;
1108 if (group_name ==
"MO")
return 82;
1109 if (group_name ==
"MCB")
return 83;
1110 if (group_name ==
"MCG")
return 84;
1111 if (group_name ==
"MSD")
return 85;
1112 if (group_name ==
"MCE")
return 86;
1115 if (group_name ==
"NN")
return 87;
1116 if (group_name ==
"NCA")
return 88;
1117 if (group_name ==
"NC")
return 89;
1118 if (group_name ==
"NO")
return 90;
1119 if (group_name ==
"NCB")
return 91;
1120 if (group_name ==
"NCG")
return 92;
1121 if (group_name ==
"NOD1")
return 93;
1122 if (group_name ==
"NND2")
return 94;
1125 if (group_name ==
"PN")
return 95;
1126 if (group_name ==
"PCA")
return 96;
1127 if (group_name ==
"PC")
return 97;
1128 if (group_name ==
"PO")
return 98;
1129 if (group_name ==
"PCB")
return 99;
1130 if (group_name ==
"PCG")
return 100;
1131 if (group_name ==
"PCD")
return 101;
1134 if (group_name ==
"QN")
return 102;
1135 if (group_name ==
"QCA")
return 103;
1136 if (group_name ==
"QC")
return 104;
1137 if (group_name ==
"QO")
return 105;
1138 if (group_name ==
"QCB")
return 106;
1139 if (group_name ==
"QCG")
return 107;
1140 if (group_name ==
"QCD")
return 108;
1141 if (group_name ==
"QOE1")
return 109;
1142 if (group_name ==
"QNE2")
return 110;
1145 if (group_name ==
"RN")
return 111;
1146 if (group_name ==
"RCA")
return 112;
1147 if (group_name ==
"RC")
return 113;
1148 if (group_name ==
"RO")
return 114;
1149 if (group_name ==
"RCB")
return 115;
1150 if (group_name ==
"RCG")
return 116;
1151 if (group_name ==
"RCD")
return 117;
1152 if (group_name ==
"RNE")
return 118;
1153 if (group_name ==
"RCZ")
return 119;
1154 if (group_name ==
"RNH1")
return 120;
1155 if (group_name ==
"RNH2")
return 121;
1158 if (group_name ==
"SN")
return 122;
1159 if (group_name ==
"SCA")
return 123;
1160 if (group_name ==
"SC")
return 124;
1161 if (group_name ==
"SO")
return 125;
1162 if (group_name ==
"SCB")
return 126;
1163 if (group_name ==
"SOG")
return 127;
1166 if (group_name ==
"TN")
return 128;
1167 if (group_name ==
"TCA")
return 129;
1168 if (group_name ==
"TC")
return 130;
1169 if (group_name ==
"TO")
return 131;
1170 if (group_name ==
"TCB")
return 132;
1171 if (group_name ==
"TOG1")
return 133;
1172 if (group_name ==
"TCG2")
return 134;
1175 if (group_name ==
"VN")
return 135;
1176 if (group_name ==
"VCA")
return 136;
1177 if (group_name ==
"VC")
return 137;
1178 if (group_name ==
"VO")
return 138;
1179 if (group_name ==
"VCB")
return 139;
1180 if (group_name ==
"VCG1")
return 140;
1181 if (group_name ==
"VCG2")
return 141;
1184 if (group_name ==
"WN")
return 142;
1185 if (group_name ==
"WCA")
return 143;
1186 if (group_name ==
"WC")
return 144;
1187 if (group_name ==
"WO")
return 145;
1188 if (group_name ==
"WCB")
return 146;
1189 if (group_name ==
"WCG")
return 147;
1190 if (group_name ==
"WCD1")
return 148;
1191 if (group_name ==
"WCD2")
return 149;
1192 if (group_name ==
"WNE1")
return 150;
1193 if (group_name ==
"WCE2")
return 151;
1194 if (group_name ==
"WCE3")
return 152;
1195 if (group_name ==
"WCZ2")
return 153;
1196 if (group_name ==
"WCZ3")
return 154;
1197 if (group_name ==
"WCH2")
return 155;
1200 if (group_name ==
"YN")
return 156;
1201 if (group_name ==
"YCA")
return 157;
1202 if (group_name ==
"YC")
return 158;
1203 if (group_name ==
"YO")
return 159;
1204 if (group_name ==
"YCB")
return 160;
1205 if (group_name ==
"YCG")
return 161;
1206 if (group_name ==
"YCD1")
return 162;
1207 if (group_name ==
"YCD2")
return 163;
1208 if (group_name ==
"YCE1")
return 164;
1209 if (group_name ==
"YCE2")
return 165;
1210 if (group_name ==
"YCZ")
return 166;
1211 if (group_name ==
"YOH")
return 167;