-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAmberMaps.py
More file actions
801 lines (769 loc) · 66.2 KB
/
AmberMaps.py
File metadata and controls
801 lines (769 loc) · 66.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
__doc__='''
This module include mapping required by the workflow.
------------------------------------------------------------
(MAP) Resi_map
Map residue key with the 3 letter name.
{resi_key:resi_name_3,...}
------------------------------------------------------------
(MAP) Resi_map2
Map 3 letter name with residue key.
{resi_name_3:resi_key,...}
------------------------------------------------------------
(List) Resi_list
Map residue key with index number
[resi_key,...]
------------------------------------------------------------
(???) Atom_topology
------------------------------------------------------------
'''
Resi_map={'R':'ARG',
'H':'HIS',
'K':'LYS',
'D':'ASP',
'E':'GLU',
'S':'SER',
'T':'THR',
'N':'ASN',
'Q':'GLN',
'C':'CYS',
'U':'SEC',
'G':'GLY',
'P':'PRO',
'A':'ALA',
'V':'VAL',
'I':'ILE',
'L':'LEU',
'M':'MET',
'F':'PHE',
'Y':'TYR',
'W':'TRP',
'X':'ASX'}
Resi_map2={'ARG':'R',
'HIS':'H',
'HIE':'H',
'HIP':'H',
'HID':'H',
'LYS':'K',
'ASP':'D',
'GLU':'E',
'SER':'S',
'THR':'T',
'ASN':'N',
'GLN':'Q',
'CYS':'C',
'SEC':'U',
'GLY':'G',
'PRO':'P',
'ALA':'A',
'VAL':'V',
'ILE':'I',
'LEU':'L',
'MET':'M',
'PHE':'F',
'TYR':'Y',
'TRP':'W',
'THN':'X'}
Resi_list=['R','H','K','D','E','S','T','N','Q','C','G','P','A','V','I','L','M','F','Y','W','U']
TIP3P_map=[ "O" , "H" , "OW", "HW","HOH","WAT",
"F" ,
"Cl", "CL",
"Br", "BR",
"I" ,
"Li", "LI",
"Na", "NA",
"K" ,
"Rb", "RB",
"Cs", "CS",
"Mg", "MG",
"Tl", "TL",
"Cu", "CU",
"Ag", "AG",
"Be", "BE",
"Ni", "NI",
"Pt", "PT",
"Zn", "ZN",
"Co", "CO",
"Pd", "PD",
"Cr", "CR",
"Fe", "FE",
"V" ,
"Mn", "MN",
"Hg", "HG",
"Cd", "CD",
"Yb", "YB",
"Ca", "CA",
"Sn", "SN",
"Pb", "PB",
"Eu", "EU",
"Sr", "SR",
"Sm", "SM",
"Ba", "BA",
"Ra", "RA",
"Al", "AL",
"In", "IN",
"Y" ,
"La", "LA",
"Ce", "CE",
"Pr", "PR",
"Nd", "ND",
"Gd", "GD",
"Tb", "TB",
"Dy", "DY",
"Er", "ER",
"Tm", "TM",
"Lu", "LU",
"Hf", "HF",
"Zr", "ZR",
"U" ,
"Pu", "PU",
"Th", "TH" ]
# a map all metal (resi_name:atom_name)
Metal_map ={"LI" : "Li",
"NA" : "Na",
"Na+": "Na",
"K" : "K" ,
"K+" : "K" ,
"RB" : "Rb",
"CS" : "Cs",
"MG" : "Mg",
"TL" : "Tl",
"CU" : "Cu",
"AG" : "Ag",
"BE" : "Be",
"NI" : "Ni",
"PT" : "Pt",
"ZN" : "Zn",
"CO" : "Co",
"PD" : "Pd",
"CR" : "Cr",
"FE" : "Fe",
"V" : "V" ,
"MN" : "Mn",
"HG" : "Hg",
"CD" : "Cd",
"YB" : "Yb",
"CA" : "Ca",
"SN" : "Sn",
"PB" : "Pb",
"EU" : "Eu",
"SR" : "Sr",
"SM" : "Sm",
"BA" : "Ba",
"RA" : "Ra",
"AL" : "Al",
"IN" : "In",
"Y" : "Y" ,
"LA" : "La",
"CE" : "Ce",
"PR" : "Pr",
"ND" : "Nd",
"GD" : "Gd",
"TB" : "Tb",
"DY" : "Dy",
"ER" : "Er",
"TM" : "Tm",
"LU" : "Lu",
"HF" : "Hf",
"ZR" : "Zr",
"U" : "U" ,
"PU" : "Pu",
"TH" : "Th" }
# Potential coordination center: add upon discover. (resi_name:atom_name)
MetalCenter_map = { "MG" : "Mg",
"TL" : "Tl",
"CU" : "Cu",
"AG" : "Ag",
"BE" : "Be",
"NI" : "Ni",
"PT" : "Pt",
"ZN" : "Zn",
"CO" : "Co",
"PD" : "Pd",
"CR" : "Cr",
"FE" : "Fe",
"V" : "V" ,
"MN" : "Mn",
"HG" : "Hg",
"CD" : "Cd",
"YB" : "Yb",
"CA" : "Ca",
"SN" : "Sn",
"PB" : "Pb",
"EU" : "Eu",
"SR" : "Sr",
"SM" : "Sm",
"BA" : "Ba",
"RA" : "Ra",
"AL" : "Al",
"IN" : "In",
"Y" : "Y" ,
"LA" : "La",
"CE" : "Ce",
"PR" : "Pr",
"ND" : "Nd",
"GD" : "Gd",
"TB" : "Tb",
"DY" : "Dy",
"ER" : "Er",
"TM" : "Tm",
"LU" : "Lu",
"HF" : "Hf",
"ZR" : "Zr",
"U" : "U" ,
"PU" : "Pu",
"TH" : "Th" }
# A map for element conversio, independent of the grammer.
# Amber: base on a Amber18 LEaP ff14SB output
Resi_Ele_map = {'Amber': { 'C' : 'C',
'CA' : 'C',
'CB' : 'C',
'CD' : 'C',
'CD1' : 'C',
'CD2' : 'C',
'CE' : 'C',
'CE1' : 'C',
'CE2' : 'C',
'CE3' : 'C',
'CG' : 'C',
'CG1' : 'C',
'CG2' : 'C',
'CH2' : 'C',
'CZ' : 'C',
'CZ2' : 'C',
'CZ3' : 'C',
'H' : 'H',
'H1' : 'H',
'H2' : 'H',
'H3' : 'H',
'HA' : 'H',
'HA2' : 'H',
'HA3' : 'H',
'HB' : 'H',
'HB1' : 'H',
'HB2' : 'H',
'HB3' : 'H',
'HD1' : 'H',
'HD11' : 'H',
'HD12' : 'H',
'HD13' : 'H',
'HD2' : 'H',
'HD21' : 'H',
'HD22' : 'H',
'HD23' : 'H',
'HD3' : 'H',
'HE' : 'H',
'HE1' : 'H',
'HE2' : 'H',
'HE21' : 'H',
'HE22' : 'H',
'HE3' : 'H',
'HG' : 'H',
'HG1' : 'H',
'HG11' : 'H',
'HG12' : 'H',
'HG13' : 'H',
'HG2' : 'H',
'HG21' : 'H',
'HG22' : 'H',
'HG23' : 'H',
'HG3' : 'H',
'HH' : 'H',
'HH11' : 'H',
'HH12' : 'H',
'HH2' : 'H',
'HH21' : 'H',
'HH22' : 'H',
'HZ' : 'H',
'HZ1' : 'H',
'HZ2' : 'H',
'HZ3' : 'H',
'N' : 'N',
'ND1' : 'N',
'ND2' : 'N',
'NE' : 'N',
'NE1' : 'N',
'NE2' : 'N',
'NH1' : 'N',
'NH2' : 'N',
'NZ' : 'N',
'O' : 'O',
'OD1' : 'O',
'OD2' : 'O',
'OE1' : 'O',
'OE2' : 'O',
'OG' : 'O',
'OG1' : 'O',
'OH' : 'O',
'OXT' : 'O',
'SD' : 'S',
'SG' : 'S',
"LI" : "Li",
"NA" : "Na",
"K" : "K" ,
"RB" : "Rb",
"CS" : "Cs",
"MG" : "Mg",
"TL" : "Tl",
"CU" : "Cu",
"AG" : "Ag",
"BE" : "Be",
"NI" : "Ni",
"PT" : "Pt",
"ZN" : "Zn",
"CO" : "Co",
"PD" : "Pd",
"CR" : "Cr",
"FE" : "Fe",
"V" : "V" ,
"MN" : "Mn",
"YB" : "Yb",
"SN" : "Sn",
"PB" : "Pb",
"EU" : "Eu",
"SR" : "Sr",
"SM" : "Sm",
"BA" : "Ba",
"RA" : "Ra",
"AL" : "Al",
"IN" : "In",
"Y" : "Y" ,
"LA" : "La",
"PR" : "Pr",
"ND" : "Nd",
"GD" : "Gd",
"TB" : "Tb",
"DY" : "Dy",
"ER" : "Er",
"TM" : "Tm",
"LU" : "Lu",
"HF" : "Hf",
"ZR" : "Zr",
"U" : "U" ,
"PU" : "Pu",
"TH" : "Th" } }
# relative mass of elements. Append as need.
Ele_mass_map = { 'H': 1.008, 'He': 4.003,
'Li': 6.941, 'Be': 9.012, 'B': 10.811, 'C': 12.011, 'N': 14.007, 'O': 15.999, 'F': 18.998, 'Ne': 20.17,
'Na': 22.99, 'Mg': 24.305, 'Al': 26.982, 'Si': 28.085, 'P': 30.974, 'S': 32.06, 'Cl': 35.453, 'Ar': 39.94,
'K': 39.098, 'Ca': 40.08}
# Potential coordination donor: add upon discover. (atom name - base on the atom type definition in the force field)
# ========= Side chain Heteroatoms (O,N,S) ==============
# Amber: base on a Amber18 LEaP ff14SB output
Donor_atom_list={'Amber': [ 'NH2', 'NE', 'NH1',
'ND1', 'NE2',
'NZ',
'OD1', 'OD2',
'OE1', 'OE2',
'OG',
'OG1',
'ND2', 'OD1',
'OE1', 'NE2',
'SG',
'SD',
'OH',
'NE1' ] }
# A list for residues with ambiguous protonation state that have potential deprotonation
AmbProton_list = [ 'ASH','ASP',
'CYS','CYM',
'GLH','GLU',
'HIP','HIE',
'HID',
'LYS','LYN',
'TYR','TYM',
'ARG','AR0']
# a map of residue name of deprotonation {resi_name : (depro_resi_name, depro_proton_name), ...}
# atom name base on a Amber18 LEaP ff14SB output
DeProton_map = { 'ASH' : ('ASP','HD2'),
'CYS' : ('CYM','HG' ),
'GLH' : ('GLU','HE2'),
'HIP' : (('HIE', 'HD1'), ('HID', 'HE2')),
'HID' : None, # depending on the T_atom, no default method
'HIE' : None,
'LYS' : ('LYN','HZ1'),
'TYR' : ('TYM','HH'),
'ARG' : ('AR0','HH22')}
NoProton_list = ['ASP', 'GLU', 'MET']
# Radius and distance
# ===============================================
# reference: doi:10.1107/S0567739476001551 (element : radius)
Ionic_radius_map= { "N" : 1.32,
"O" : 1.26,
"S" : 1.70,
"Mg" : 0.86,
"Li" : 0.90,
"Tl" : None,
"Cu" : None,
"Ag" : None,
"Be" : None,
"Ni" : None,
"Pt" : None,
"Zn" : 0.88,
"Co" : 0.68, # +3 ls
"Pd" : None,
"Cr" : None,
"Fe" : 0.92, # +2 hs / PDB disctance based (5HIO) / can not handel really well
"V" : None,
"Mn" : 0.90, # +2 / modified based on PDB (1K20)
"Hg" : None,
"Cd" : None,
"Yb" : None,
"Ca" : 1.14,
"Sn" : None,
"Pb" : None,
"Eu" : None,
"Sr" : None,
"Sm" : None,
"Ba" : None,
"Ra" : None,
"Al" : None,
"In" : None,
"Y" : None,
"La" : None,
"Ce" : None,
"Pr" : None,
"Nd" : None,
"Gd" : None,
"Tb" : None,
"Dy" : None,
"Er" : None,
"Tm" : None,
"Lu" : None,
"Hf" : None,
"Zr" : None,
"U" : None,
"Pu" : None,
"Th" : None }
# reference: doi:10.1021/jp8111556 (element : radius)
VDW_radius_map = { "N" : 1.55,
"O" : 1.52,
"S" : 1.80,
"Mg" : 1.73,
"Li" : 1.82,
"Tl" : 1.96,
"Cu" : 1.40,
"Ag" : 1.72,
"Be" : 1.53,
"Ni" : 1.63,
"Pt" : 1.75,
"Zn" : 1.39,
"Co" : None,
"Pd" : 1.63,
"Cr" : None,
"Fe" : None,
"V" : None,
"Mn" : None,
"Hg" : 1.55,
"Cd" : 1.58,
"Yb" : None,
"Ca" : 2.31,
"Sn" : 2.17,
"Pb" : 2.02,
"Eu" : None,
"Sr" : 2.49,
"Sm" : None,
"Ba" : 2.68,
"Ra" : 2.83,
"Al" : 1.84,
"In" : 1.93,
"Y" : None,
"La" : None,
"Ce" : None,
"Pr" : None,
"Nd" : None,
"Gd" : None,
"Tb" : None,
"Dy" : None,
"Er" : None,
"Tm" : None,
"Lu" : None,
"Hf" : None,
"Zr" : None,
"U" : None,
"Pu" : None,
"Th" : None }
# mimic the way GaussView/PyMol add H using PDB atom names (append in the future as needed)
X_H_bond_length = { "N" : 1.00,
"C" : 1.07}
# ===============================================
# from amino12.lib about residue and connectivity
# ===============================================
resi_atom_list = {'ALA' : ['N', 'H', 'CA', 'HA', 'CB', 'HB1', 'HB2', 'HB3', 'C', 'O'],
'ARG' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'NE', 'HE', 'CZ', 'NH1', 'HH11', 'HH12', 'NH2', 'HH21', 'HH22', 'C', 'O'],
'ASH' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'OD2', 'HD2', 'C', 'O'],
'ASN' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'ND2', 'HD21', 'HD22', 'C', 'O'],
'ASP' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'OD2', 'C', 'O'],
'CYM' : ['N', 'H', 'CA', 'HA', 'CB', 'HB3', 'HB2', 'SG', 'C', 'O'],
'CYS' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'HG', 'C', 'O'],
'CYX' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'C', 'O'],
'GLH' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'OE2', 'HE2', 'C', 'O'],
'GLN' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'NE2', 'HE21', 'HE22', 'C', 'O'],
'GLU' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'OE2', 'C', 'O'],
'GLY' : ['N', 'H', 'CA', 'HA2', 'HA3', 'C', 'O'],
'HID' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'CD2', 'HD2', 'C', 'O'],
'HIE' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'HIP' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'HYP' : ['N', 'CD', 'HD22', 'HD23', 'CG', 'HG', 'OD1', 'HD1', 'CB', 'HB2', 'HB3', 'CA', 'HA', 'C', 'O'],
'ILE' : ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'CG1', 'HG12', 'HG13', 'CD1', 'HD11', 'HD12', 'HD13', 'C', 'O'],
'LEU' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG', 'CD1', 'HD11', 'HD12', 'HD13', 'CD2', 'HD21', 'HD22', 'HD23', 'C', 'O'],
'LYN' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'CE', 'HE2', 'HE3', 'NZ', 'HZ2', 'HZ3', 'C', 'O'],
'LYS' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'CE', 'HE2', 'HE3', 'NZ', 'HZ1', 'HZ2', 'HZ3', 'C', 'O'],
'MET' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'SD', 'CE', 'HE1', 'HE2', 'HE3', 'C', 'O'],
'PHE' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'HZ', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'PRO' : ['N', 'CD', 'HD2', 'HD3', 'CG', 'HG2', 'HG3', 'CB', 'HB2', 'HB3', 'CA', 'HA', 'C', 'O'],
'SER' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'OG', 'HG', 'C', 'O'],
'THR' : ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'OG1', 'HG1', 'C', 'O'],
'TRP' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'NE1', 'HE1', 'CE2', 'CZ2', 'HZ2', 'CH2', 'HH2', 'CZ3', 'HZ3', 'CE3', 'HE3', 'CD2', 'C', 'O'],
'TYR' : ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'OH', 'HH', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'VAL' : ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG1', 'HG11', 'HG12', 'HG13', 'CG2', 'HG21', 'HG22', 'HG23', 'C', 'O'] }
resi_cnt_map = { 'ALA': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB1', 'HB2', 'HB3'], 'HB1': ['CB'], 'HB2': ['CB'], 'HB3': ['CB'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ARG': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'NE'], 'HD2': ['CD'], 'HD3': ['CD'], 'NE': ['CD', 'HE', 'CZ'], 'HE': ['NE'], 'CZ': ['NE', 'NH1', 'NH2'], 'NH1': ['CZ', 'HH11', 'HH12'], 'HH11': ['NH1'], 'HH12': ['NH1'], 'NH2': ['CZ', 'HH21', 'HH22'], 'HH21': ['NH2'], 'HH22': ['NH2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ASH': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'OD2'], 'OD1': ['CG'], 'OD2': ['CG', 'HD2'], 'HD2': ['OD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ASN': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'ND2'], 'OD1': ['CG'], 'ND2': ['CG', 'HD21', 'HD22'], 'HD21': ['ND2'], 'HD22': ['ND2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ASP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'OD2'], 'OD1': ['CG'], 'OD2': ['CG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'CYM': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB3', 'HB2', 'SG'], 'HB3': ['CB'], 'HB2': ['CB'], 'SG': ['CB'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'CYS': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB', 'HG'], 'HG': ['SG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'CYX': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLH': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'OE2'], 'OE1': ['CD'], 'OE2': ['CD', 'HE2'], 'HE2': ['OE2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLN': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'NE2'], 'OE1': ['CD'], 'NE2': ['CD', 'HE21', 'HE22'], 'HE21': ['NE2'], 'HE22': ['NE2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLU': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'OE2'], 'OE1': ['CD'], 'OE2': ['CD'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLY': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA2', 'HA3', 'C'], 'HA2': ['CA'], 'HA3': ['CA'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HID': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'CD2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HIE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'CE1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HIP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HYP': {'N': ['CD', 'CA', '-1C'], 'CD': ['N', 'HD22', 'HD23', 'CG'], 'HD22': ['CD'], 'HD23': ['CD'], 'CG': ['CD', 'HG', 'OD1', 'CB'], 'HG': ['CG'], 'OD1': ['CG', 'HD1'], 'HD1': ['OD1'], 'CB': ['CG', 'HB2', 'HB3', 'CA'], 'HB2': ['CB'], 'HB3': ['CB'], 'CA': ['N', 'CB', 'HA', 'C'], 'HA': ['CA'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ILE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'CG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'CG1': ['CB', 'HG12', 'HG13', 'CD1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CD1': ['CG1', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'LEU': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG', 'CD1', 'CD2'], 'HG': ['CG'], 'CD1': ['CG', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'CD2': ['CG', 'HD21', 'HD22', 'HD23'], 'HD21': ['CD2'], 'HD22': ['CD2'], 'HD23': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'LYN': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'CE'], 'HD2': ['CD'], 'HD3': ['CD'], 'CE': ['CD', 'HE2', 'HE3', 'NZ'], 'HE2': ['CE'], 'HE3': ['CE'], 'NZ': ['CE', 'HZ2', 'HZ3'], 'HZ2': ['NZ'], 'HZ3': ['NZ'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'LYS': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'CE'], 'HD2': ['CD'], 'HD3': ['CD'], 'CE': ['CD', 'HE2', 'HE3', 'NZ'], 'HE2': ['CE'], 'HE3': ['CE'], 'NZ': ['CE', 'HZ1', 'HZ2', 'HZ3'], 'HZ1': ['NZ'], 'HZ2': ['NZ'], 'HZ3': ['NZ'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'MET': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'SD'], 'HG2': ['CG'], 'HG3': ['CG'], 'SD': ['CG', 'CE'], 'CE': ['SD', 'HE1', 'HE2', 'HE3'], 'HE1': ['CE'], 'HE2': ['CE'], 'HE3': ['CE'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'PHE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'HZ', 'CE2'], 'HZ': ['CZ'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'PRO': {'N': ['CD', 'CA', '-1C'], 'CD': ['N', 'HD2', 'HD3', 'CG'], 'HD2': ['CD'], 'HD3': ['CD'], 'CG': ['CD', 'HG2', 'HG3', 'CB'], 'HG2': ['CG'], 'HG3': ['CG'], 'CB': ['CG', 'HB2', 'HB3', 'CA'], 'HB2': ['CB'], 'HB3': ['CB'], 'CA': ['N', 'CB', 'HA', 'C'], 'HA': ['CA'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'SER': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'OG'], 'HB2': ['CB'], 'HB3': ['CB'], 'OG': ['CB', 'HG'], 'HG': ['OG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'THR': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'OG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'OG1': ['CB', 'HG1'], 'HG1': ['OG1'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'TRP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'NE1'], 'HD1': ['CD1'], 'NE1': ['CD1', 'HE1', 'CE2'], 'HE1': ['NE1'], 'CE2': ['NE1', 'CZ2', 'CD2'], 'CZ2': ['CE2', 'HZ2', 'CH2'], 'HZ2': ['CZ2'], 'CH2': ['CZ2', 'HH2', 'CZ3'], 'HH2': ['CH2'], 'CZ3': ['CH2', 'HZ3', 'CE3'], 'HZ3': ['CZ3'], 'CE3': ['CZ3', 'HE3', 'CD2'], 'HE3': ['CE3'], 'CD2': ['CG', 'CE2', 'CE3'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'TYR': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'OH', 'CE2'], 'OH': ['CZ', 'HH'], 'HH': ['OH'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'VAL': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG1', 'CG2'], 'HB': ['CB'], 'CG1': ['CB', 'HG11', 'HG12', 'HG13'], 'HG11': ['CG1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'WAT': {'O': ['H1', 'H2'], 'H1':['O'], 'H2': ['O']} }
# C terminal
resi_ct_atom_list = { 'ALA': ['N', 'H', 'CA', 'HA', 'CB', 'HB1', 'HB2', 'HB3', 'C', 'O', 'OXT'],
'ARG': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'NE', 'HE', 'CZ', 'NH1', 'HH11', 'HH12', 'NH2', 'HH21', 'HH22', 'C', 'O', 'OXT'],
'ASN': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'ND2', 'HD21', 'HD22', 'C', 'O', 'OXT'],
'ASP': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'OD2', 'C', 'O', 'OXT'],
'CYS': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'HG', 'C', 'O', 'OXT'],
'CYX': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'C', 'O', 'OXT'],
'GLN': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'NE2', 'HE21', 'HE22', 'C', 'O', 'OXT'],
'GLU': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'OE2', 'C', 'O', 'OXT'],
'GLY': ['N', 'H', 'CA', 'HA2', 'HA3', 'C', 'O', 'OXT'],
'HID': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'CD2', 'HD2', 'C', 'O', 'OXT'],
'HIE': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O', 'OXT'],
'HIP': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O', 'OXT'],
'HYP': ['N', 'CD', 'HD22', 'HD23', 'CG', 'HG', 'OD1', 'HD1', 'CB', 'HB2', 'HB3', 'CA', 'HA', 'C', 'O', 'OXT'],
'ILE': ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'CG1', 'HG12', 'HG13', 'CD1', 'HD11', 'HD12', 'HD13', 'C', 'O', 'OXT'],
'LEU': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG', 'CD1', 'HD11', 'HD12', 'HD13', 'CD2', 'HD21', 'HD22', 'HD23', 'C', 'O', 'OXT'],
'LYS': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'CE', 'HE2', 'HE3', 'NZ', 'HZ1', 'HZ2', 'HZ3', 'C', 'O', 'OXT'],
'MET': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'SD', 'CE', 'HE1', 'HE2', 'HE3', 'C', 'O', 'OXT'],
'PHE': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'HZ', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O', 'OXT'],
'PRO': ['N', 'CD', 'HD2', 'HD3', 'CG', 'HG2', 'HG3', 'CB', 'HB2', 'HB3', 'CA', 'HA', 'C', 'O', 'OXT'],
'SER': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'OG', 'HG', 'C', 'O', 'OXT'],
'THR': ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'OG1', 'HG1', 'C', 'O', 'OXT'],
'TRP': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'NE1', 'HE1', 'CE2', 'CZ2', 'HZ2', 'CH2', 'HH2', 'CZ3', 'HZ3', 'CE3', 'HE3', 'CD2', 'C', 'O', 'OXT'],
'TYR': ['N', 'H', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'OH', 'HH', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O', 'OXT'],
'VAL': ['N', 'H', 'CA', 'HA', 'CB', 'HB', 'CG1', 'HG11', 'HG12', 'HG13', 'CG2', 'HG21', 'HG22', 'HG23', 'C', 'O', 'OXT'],
'NHE': ['N', 'HN1', 'HN2'],
'NME': ['N', 'H', 'CH3', 'HH31', 'HH32', 'HH33'] }
resi_ct_cnt_map = { 'ALA': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB1', 'HB2', 'HB3'], 'HB1': ['CB'], 'HB2': ['CB'], 'HB3': ['CB'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'ARG': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'NE'], 'HD2': ['CD'], 'HD3': ['CD'], 'NE': ['CD', 'HE', 'CZ'], 'HE': ['NE'], 'CZ': ['NE', 'NH1', 'NH2'], 'NH1': ['CZ', 'HH11', 'HH12'], 'HH11': ['NH1'], 'HH12': ['NH1'], 'NH2': ['CZ', 'HH21', 'HH22'], 'HH21': ['NH2'], 'HH22': ['NH2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'ASN': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'ND2'], 'OD1': ['CG'], 'ND2': ['CG', 'HD21', 'HD22'], 'HD21': ['ND2'], 'HD22': ['ND2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'ASP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'OD2'], 'OD1': ['CG'], 'OD2': ['CG'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'CYS': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB', 'HG'], 'HG': ['SG'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'CYX': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'GLN': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'NE2'], 'OE1': ['CD'], 'NE2': ['CD', 'HE21', 'HE22'], 'HE21': ['NE2'], 'HE22': ['NE2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'GLU': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'OE2'], 'OE1': ['CD'], 'OE2': ['CD'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'GLY': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA2', 'HA3', 'C'], 'HA2': ['CA'], 'HA3': ['CA'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'HID': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'CD2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'HIE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'CE1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'HIP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'HYP': {'N': ['CD', 'CA', '-1C'], 'CD': ['N', 'HD22', 'HD23', 'CG'], 'HD22': ['CD'], 'HD23': ['CD'], 'CG': ['CD', 'HG', 'OD1', 'CB'], 'HG': ['CG'], 'OD1': ['CG', 'HD1'], 'HD1': ['OD1'], 'CB': ['CG', 'HB2', 'HB3', 'CA'], 'HB2': ['CB'], 'HB3': ['CB'], 'CA': ['N', 'CB', 'HA', 'C'], 'HA': ['CA'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'ILE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'CG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'CG1': ['CB', 'HG12', 'HG13', 'CD1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CD1': ['CG1', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'LEU': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG', 'CD1', 'CD2'], 'HG': ['CG'], 'CD1': ['CG', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'CD2': ['CG', 'HD21', 'HD22', 'HD23'], 'HD21': ['CD2'], 'HD22': ['CD2'], 'HD23': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'LYS': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'CE'], 'HD2': ['CD'], 'HD3': ['CD'], 'CE': ['CD', 'HE2', 'HE3', 'NZ'], 'HE2': ['CE'], 'HE3': ['CE'], 'NZ': ['CE', 'HZ1', 'HZ2', 'HZ3'], 'HZ1': ['NZ'], 'HZ2': ['NZ'], 'HZ3': ['NZ'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'MET': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'SD'], 'HG2': ['CG'], 'HG3': ['CG'], 'SD': ['CG', 'CE'], 'CE': ['SD', 'HE1', 'HE2', 'HE3'], 'HE1': ['CE'], 'HE2': ['CE'], 'HE3': ['CE'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'PHE': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'HZ', 'CE2'], 'HZ': ['CZ'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'PRO': {'N': ['CD', 'CA', '-1C'], 'CD': ['N', 'HD2', 'HD3', 'CG'], 'HD2': ['CD'], 'HD3': ['CD'], 'CG': ['CD', 'HG2', 'HG3', 'CB'], 'HG2': ['CG'], 'HG3': ['CG'], 'CB': ['CG', 'HB2', 'HB3', 'CA'], 'HB2': ['CB'], 'HB3': ['CB'], 'CA': ['N', 'CB', 'HA', 'C'], 'HA': ['CA'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'SER': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'OG'], 'HB2': ['CB'], 'HB3': ['CB'], 'OG': ['CB', 'HG'], 'HG': ['OG'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'THR': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'OG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'OG1': ['CB', 'HG1'], 'HG1': ['OG1'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'TRP': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'NE1'], 'HD1': ['CD1'], 'NE1': ['CD1', 'HE1', 'CE2'], 'HE1': ['NE1'], 'CE2': ['NE1', 'CZ2', 'CD2'], 'CZ2': ['CE2', 'HZ2', 'CH2'], 'HZ2': ['CZ2'], 'CH2': ['CZ2', 'HH2', 'CZ3'], 'HH2': ['CH2'], 'CZ3': ['CH2', 'HZ3', 'CE3'], 'HZ3': ['CZ3'], 'CE3': ['CZ3', 'HE3', 'CD2'], 'HE3': ['CE3'], 'CD2': ['CG', 'CE2', 'CE3'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'TYR': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'OH', 'CE2'], 'OH': ['CZ', 'HH'], 'HH': ['OH'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'VAL': {'N': ['H', 'CA', '-1C'], 'H': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG1', 'CG2'], 'HB': ['CB'], 'CG1': ['CB', 'HG11', 'HG12', 'HG13'], 'HG11': ['CG1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'C': ['CA', 'O', 'OXT'], 'O': ['C'], 'OXT': ['C']},
'NHE': {'N': ['HN1', 'HN2', '-1C'], 'HN1': ['N'], 'HN2': ['N']},
'NME': {'N': ['H', 'CH3', '-1C'], 'H': ['N'], 'CH3': ['N', 'HH31', 'HH32', 'HH33'], 'HH31': ['CH3'], 'HH32': ['CH3'], 'HH33': ['CH3']} }
# N terminal
resi_nt_atom_list = { 'ACE': ['H1', 'CH3', 'H2', 'H3', 'C', 'O'],
'ALA': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB1', 'HB2', 'HB3', 'C', 'O'],
'ARG': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'NE', 'HE', 'CZ', 'NH1', 'HH11', 'HH12', 'NH2', 'HH21', 'HH22', 'C', 'O'],
'ASN': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'ND2', 'HD21', 'HD22', 'C', 'O'],
'ASP': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'OD1', 'OD2', 'C', 'O'],
'CYS': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'HG', 'C', 'O'],
'CYX': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'SG', 'C', 'O'],
'GLN': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'NE2', 'HE21', 'HE22', 'C', 'O'],
'GLU': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'OE1', 'OE2', 'C', 'O'],
'GLY': ['N', 'H1', 'H2', 'H3', 'CA', 'HA2', 'HA3', 'C', 'O'],
'HID': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'CD2', 'HD2', 'C', 'O'],
'HIE': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'HIP': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'ND1', 'HD1', 'CE1', 'HE1', 'NE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'ILE': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'CG1', 'HG12', 'HG13', 'CD1', 'HD11', 'HD12', 'HD13', 'C', 'O'],
'LEU': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG', 'CD1', 'HD11', 'HD12', 'HD13', 'CD2', 'HD21', 'HD22', 'HD23', 'C', 'O'],
'LYS': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'CD', 'HD2', 'HD3', 'CE', 'HE2', 'HE3', 'NZ', 'HZ1', 'HZ2', 'HZ3', 'C', 'O'],
'MET': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'HG2', 'HG3', 'SD', 'CE', 'HE1', 'HE2', 'HE3', 'C', 'O'],
'PHE': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'HZ', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'PRO': ['N', 'H2', 'H3', 'CD', 'HD2', 'HD3', 'CG', 'HG2', 'HG3', 'CB', 'HB2', 'HB3', 'CA', 'HA', 'C', 'O'],
'SER': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'OG', 'HG', 'C', 'O'],
'THR': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB', 'CG2', 'HG21', 'HG22', 'HG23', 'OG1', 'HG1', 'C', 'O'],
'TRP': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'NE1', 'HE1', 'CE2', 'CZ2', 'HZ2', 'CH2', 'HH2', 'CZ3', 'HZ3', 'CE3', 'HE3', 'CD2', 'C', 'O'],
'TYR': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB2', 'HB3', 'CG', 'CD1', 'HD1', 'CE1', 'HE1', 'CZ', 'OH', 'HH', 'CE2', 'HE2', 'CD2', 'HD2', 'C', 'O'],
'VAL': ['N', 'H1', 'H2', 'H3', 'CA', 'HA', 'CB', 'HB', 'CG1', 'HG11', 'HG12', 'HG13', 'CG2', 'HG21', 'HG22', 'HG23', 'C', 'O'] }
resi_nt_cnt_map = { 'ACE': {'H1': ['CH3'], 'CH3': ['H1', 'H2', 'H3', 'C'], 'H2': ['CH3'], 'H3': ['CH3'], 'C': ['CH3', 'O'], 'O': ['C']},
'ALA': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB1', 'HB2', 'HB3'], 'HB1': ['CB'], 'HB2': ['CB'], 'HB3': ['CB'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ARG': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'NE'], 'HD2': ['CD'], 'HD3': ['CD'], 'NE': ['CD', 'HE', 'CZ'], 'HE': ['NE'], 'CZ': ['NE', 'NH1', 'NH2'], 'NH1': ['CZ', 'HH11', 'HH12'], 'HH11': ['NH1'], 'HH12': ['NH1'], 'NH2': ['CZ', 'HH21', 'HH22'], 'HH21': ['NH2'], 'HH22': ['NH2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ASN': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'ND2'], 'OD1': ['CG'], 'ND2': ['CG', 'HD21', 'HD22'], 'HD21': ['ND2'], 'HD22': ['ND2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ASP': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'OD1', 'OD2'], 'OD1': ['CG'], 'OD2': ['CG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'CYS': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB', 'HG'], 'HG': ['SG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'CYX': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'SG'], 'HB2': ['CB'], 'HB3': ['CB'], 'SG': ['CB'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLN': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'NE2'], 'OE1': ['CD'], 'NE2': ['CD', 'HE21', 'HE22'], 'HE21': ['NE2'], 'HE22': ['NE2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLU': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'OE1', 'OE2'], 'OE1': ['CD'], 'OE2': ['CD'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'GLY': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA2', 'HA3', 'C'], 'HA2': ['CA'], 'HA3': ['CA'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HID': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'CD2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HIE': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'CE1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'HIP': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'ND1', 'CD2'], 'ND1': ['CG', 'HD1', 'CE1'], 'HD1': ['ND1'], 'CE1': ['ND1', 'HE1', 'NE2'], 'HE1': ['CE1'], 'NE2': ['CE1', 'HE2', 'CD2'], 'HE2': ['NE2'], 'CD2': ['CG', 'NE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'ILE': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'CG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'CG1': ['CB', 'HG12', 'HG13', 'CD1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CD1': ['CG1', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'LEU': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG', 'CD1', 'CD2'], 'HG': ['CG'], 'CD1': ['CG', 'HD11', 'HD12', 'HD13'], 'HD11': ['CD1'], 'HD12': ['CD1'], 'HD13': ['CD1'], 'CD2': ['CG', 'HD21', 'HD22', 'HD23'], 'HD21': ['CD2'], 'HD22': ['CD2'], 'HD23': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'LYS': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'CD'], 'HG2': ['CG'], 'HG3': ['CG'], 'CD': ['CG', 'HD2', 'HD3', 'CE'], 'HD2': ['CD'], 'HD3': ['CD'], 'CE': ['CD', 'HE2', 'HE3', 'NZ'], 'HE2': ['CE'], 'HE3': ['CE'], 'NZ': ['CE', 'HZ1', 'HZ2', 'HZ3'], 'HZ1': ['NZ'], 'HZ2': ['NZ'], 'HZ3': ['NZ'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'MET': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'HG2', 'HG3', 'SD'], 'HG2': ['CG'], 'HG3': ['CG'], 'SD': ['CG', 'CE'], 'CE': ['SD', 'HE1', 'HE2', 'HE3'], 'HE1': ['CE'], 'HE2': ['CE'], 'HE3': ['CE'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'PHE': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'HZ', 'CE2'], 'HZ': ['CZ'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'PRO': {'N': ['H2', 'H3', 'CD', 'CA'], 'H2': ['N'], 'H3': ['N'], 'CD': ['N', 'HD2', 'HD3', 'CG'], 'HD2': ['CD'], 'HD3': ['CD'], 'CG': ['CD', 'HG2', 'HG3', 'CB'], 'HG2': ['CG'], 'HG3': ['CG'], 'CB': ['CG', 'HB2', 'HB3', 'CA'], 'HB2': ['CB'], 'HB3': ['CB'], 'CA': ['N', 'CB', 'HA', 'C'], 'HA': ['CA'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'SER': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'OG'], 'HB2': ['CB'], 'HB3': ['CB'], 'OG': ['CB', 'HG'], 'HG': ['OG'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'THR': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG2', 'OG1'], 'HB': ['CB'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'OG1': ['CB', 'HG1'], 'HG1': ['OG1'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'TRP': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'NE1'], 'HD1': ['CD1'], 'NE1': ['CD1', 'HE1', 'CE2'], 'HE1': ['NE1'], 'CE2': ['NE1', 'CZ2', 'CD2'], 'CZ2': ['CE2', 'HZ2', 'CH2'], 'HZ2': ['CZ2'], 'CH2': ['CZ2', 'HH2', 'CZ3'], 'HH2': ['CH2'], 'CZ3': ['CH2', 'HZ3', 'CE3'], 'HZ3': ['CZ3'], 'CE3': ['CZ3', 'HE3', 'CD2'], 'HE3': ['CE3'], 'CD2': ['CG', 'CE2', 'CE3'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'TYR': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB2', 'HB3', 'CG'], 'HB2': ['CB'], 'HB3': ['CB'], 'CG': ['CB', 'CD1', 'CD2'], 'CD1': ['CG', 'HD1', 'CE1'], 'HD1': ['CD1'], 'CE1': ['CD1', 'HE1', 'CZ'], 'HE1': ['CE1'], 'CZ': ['CE1', 'OH', 'CE2'], 'OH': ['CZ', 'HH'], 'HH': ['OH'], 'CE2': ['CZ', 'HE2', 'CD2'], 'HE2': ['CE2'], 'CD2': ['CG', 'CE2', 'HD2'], 'HD2': ['CD2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']},
'VAL': {'N': ['H1', 'H2', 'H3', 'CA'], 'H1': ['N'], 'H2': ['N'], 'H3': ['N'], 'CA': ['N', 'HA', 'CB', 'C'], 'HA': ['CA'], 'CB': ['CA', 'HB', 'CG1', 'CG2'], 'HB': ['CB'], 'CG1': ['CB', 'HG11', 'HG12', 'HG13'], 'HG11': ['CG1'], 'HG12': ['CG1'], 'HG13': ['CG1'], 'CG2': ['CB', 'HG21', 'HG22', 'HG23'], 'HG21': ['CG2'], 'HG22': ['CG2'], 'HG23': ['CG2'], 'C': ['CA', 'O', '+1N'], 'O': ['C']} }
# ===============================================
# ONIOM label G16 (Need to provide missing parms for non-pre-existed metal)
G16_label_map = { 'ILE': {'C': 'C', 'CG2': 'CT', 'HG22': 'HC', 'H': 'H', 'CA': 'CT', 'O': 'O', 'N': 'N', 'CG1': 'CT', 'HG21': 'HC', 'HG12': 'HC', 'HG13': 'HC', 'HD13': 'HC', 'CD1': 'CT', 'CB': 'CT', 'HB': 'HC', 'HD12': 'HC', 'HG23': 'HC', 'HA': 'H1', 'HD11': 'HC'},
'GLN': {'HG2': 'HC', 'C': 'C', 'H': 'H', 'CA': 'CT', 'CG': 'CT', 'HG3': 'HC', 'O': 'O', 'N': 'N', 'CD': 'C', 'CB': 'CT', 'HE22': 'H', 'HE21': 'H', 'HA': 'H1', 'NE2': 'N', 'OE1': 'O', 'HB3': 'HC', 'HB2': 'HC'},
'GLU': {'HG2': 'HC', 'C': 'C', 'H': 'H', 'CA': 'CT', 'CG': 'CT', 'HG3': 'HC', 'O': 'O', 'N': 'N', 'CD': 'C', 'CB': 'CT', 'HA': 'H1', 'OE2': 'O2', 'OE1': 'O2', 'HB3': 'HC', 'HB2': 'HC'},
'GLY': {'N':'N', 'H':'H', 'CA':'CT', 'HA2':'HC', 'HA3':'HC', 'C':'C', 'O':'O'},
'CYS': {'C': 'C', 'H': 'H', 'CA': 'CT', 'O': 'O', 'N': 'N', 'CB': 'CT', 'HA': 'H1', 'SG': 'SH', 'HG': 'HS', 'HB3': 'H1', 'HB2': 'H1'},
'ASP': {'C': 'C', 'H': 'H', 'CA': 'CT', 'CG': 'C', 'OD1': 'O2', 'N': 'N', 'O': 'O', 'CB': 'CT', 'HA': 'H1', 'OD2': 'O2', 'HB3': 'HC', 'HB2': 'HC'},
'SER': {'C': 'C', 'OG': 'OH', 'H': 'H', 'CA': 'CT', 'O': 'O', 'N': 'N', 'CB': 'CT', 'HA': 'H1', 'HG': 'HO', 'HB3': 'H1', 'HB2': 'H1'},
'LYS': {'HA': 'H1', 'HE2': 'HP', 'HE3': 'HP', 'HG2': 'HC', 'HG3': 'HC', 'NZ': 'N3', 'HZ1': 'H', 'HZ3': 'H', 'CB': 'CT', 'C': 'C', 'H': 'H', 'CA': 'CT', 'HZ2': 'H', 'CG': 'CT', 'CE': 'CT', 'N': 'N', 'O': 'O', 'CD': 'CT', 'HD3': 'HC', 'HD2': 'HC', 'HB3': 'HC', 'HB2': 'HC'},
'PRO': {'C': 'C', 'HA': 'H1', 'HD3': 'H1', 'HD2': 'H1', 'HG2': 'HC', 'CA': 'CT', 'CG': 'CT', 'HG3': 'HC', 'O': 'O', 'CD': 'CT', 'CB': 'CT', 'N': 'N', 'HB3': 'HC', 'HB2': 'HC'},
'HID': {'CD2': 'CV', 'HE1': 'H5', 'HD1': 'H', 'H': 'H', 'CA': 'CT', 'CG': 'CC', 'C': 'C', 'O': 'O', 'N': 'N', 'HD2': 'H4', 'CE1': 'CR', 'CB': 'CT', 'ND1': 'NA', 'HA': 'H1', 'NE2': 'NB', 'HB3': 'HC', 'HB2': 'HC'},
'HIE': {'CD2': 'CW', 'HE1': 'H5', 'HE2': 'H', 'H': 'H', 'CA': 'CT', 'CG': 'CC', 'C': 'C', 'O': 'O', 'N': 'N', 'HD2': 'H4', 'CE1': 'CR', 'CB': 'CT', 'ND1': 'NB', 'HA': 'H1', 'NE2': 'NA', 'HB3': 'HC', 'HB2': 'HC'},
'ASN': {'C': 'C', 'ND2': 'N', 'HD22': 'H', 'HD21': 'H', 'H': 'H', 'CA': 'CT', 'CG': 'C', 'OD1': 'O', 'N': 'N', 'O': 'O', 'CB': 'CT', 'HA': 'H1', 'HB3': 'HC', 'HB2': 'HC'},
'HIP': {'CD2': 'CW', 'HE2': 'H', 'HE1': 'H5', 'HD1': 'H', 'H': 'H', 'CA': 'CT', 'CG': 'CC', 'C': 'C', 'O': 'O', 'N': 'N', 'HD2': 'H4', 'CE1': 'CR', 'CB': 'CT', 'ND1': 'NA', 'HA': 'H1', 'NE2': 'NA', 'HB3': 'HC', 'HB2': 'HC'},
'VAL': {'C': 'C', 'CG2': 'CT', 'HG11': 'HC', 'H': 'H', 'CA': 'CT', 'HG21': 'HC', 'O': 'O', 'N': 'N', 'CG1': 'CT', 'HG12': 'HC', 'HG13': 'HC', 'CB': 'CT', 'HB': 'HC', 'HG23': 'HC', 'HA': 'H1', 'HG22': 'HC'},
'THR': {'C': 'C', 'CG2': 'CT', 'HG22': 'HC', 'H': 'H', 'CA': 'CT', 'OG1': 'OH', 'O': 'O', 'N': 'N', 'HG21': 'HC', 'HG1': 'HO', 'CB': 'CT', 'HB': 'H1', 'HG23': 'HC', 'HA': 'H1'},
'TRP': {'HH2': 'HA', 'CZ2': 'CA', 'CZ3': 'CA', 'CD1': 'CW', 'CD2': 'CB', 'HA': 'H1', 'HE1': 'H', 'HE3': 'HA', 'CH2': 'CA', 'HZ3': 'HA', 'HZ2': 'HA', 'CB': 'CT', 'C': 'C', 'H': 'H', 'CA': 'CT', 'CG': 'C*', 'O': 'O', 'N': 'N', 'CE3': 'CA', 'CE2': 'CN', 'HD1': 'H4', 'HB2': 'HC', 'HB3': 'HC', 'NE1': 'NA'},
'WAT': {'H2': 'HW', 'H1': 'HW', 'O': 'OW'},
'PHE': {'HZ': 'HA', 'CD2': 'CA', 'HE2': 'HA', 'HE1': 'HA', 'HD1': 'HA', 'H': 'H', 'CA': 'CT', 'CG': 'CA', 'C': 'C', 'O': 'O', 'N': 'N', 'CZ': 'CA', 'CE2': 'CA', 'HD2': 'HA', 'CD1': 'CA', 'CE1': 'CA', 'CB': 'CT', 'HA': 'H1', 'HB3': 'HC', 'HB2': 'HC'},
'ALA': {'C': 'C', 'H': 'H', 'CA': 'CT', 'O': 'O', 'N': 'N', 'CB': 'CT', 'HA': 'H1', 'HB1': 'HC', 'HB3': 'HC', 'HB2': 'HC'},
'MET': {'HG2': 'H1', 'C': 'C', 'HE1': 'H1', 'HE2': 'H1', 'HE3': 'H1', 'H': 'H', 'CA': 'CT', 'CG': 'CT', 'HG3': 'H1', 'CE': 'CT', 'N': 'N', 'SD': 'S', 'O': 'O', 'CB': 'CT', 'HA': 'H1', 'HB3': 'HC', 'HB2': 'HC'},
'LEU': {'C': 'C', 'HD22': 'HC', 'HD23': 'HC', 'HD21': 'HC', 'H': 'H', 'CA': 'CT', 'CG': 'CT', 'O': 'O', 'N': 'N', 'CD1': 'CT', 'CD2': 'CT', 'CB': 'CT', 'HD13': 'HC', 'HD12': 'HC', 'HD11': 'HC', 'HA': 'H1', 'HG': 'HC', 'HB3': 'HC', 'HB2': 'HC'},
'ARG': {'NE': 'N2', 'HA': 'H1', 'HE': 'H', 'HG2': 'HC', 'HG3': 'HC', 'HH22': 'H', 'HH21': 'H', 'CB': 'CT', 'C': 'C', 'H': 'H', 'CA': 'CX', 'CG': 'CT', 'O': 'O', 'N': 'N3', 'CZ': 'CA', 'NH1': 'N2', 'NH2': 'N2', 'CD': 'CT', 'HD3': 'H1', 'HD2': 'H1', 'HH12': 'H', 'HH11': 'H', 'HB3': 'HC', 'HB2': 'HC'},
'TYR': {'CD2': 'CA', 'HE2': 'HA', 'HE1': 'HA', 'HD1': 'HA', 'OH': 'OH', 'H': 'H', 'CA': 'CT', 'CG': 'CA', 'C': 'C', 'O': 'O', 'N': 'N', 'CZ': 'C', 'HH': 'HO', 'HD2': 'HA', 'CD1': 'CA', 'CE1': 'CA', 'CB': 'CT', 'CE2': 'CA', 'HA': 'H1', 'HB3': 'HC', 'HB2': 'HC'},
'Na+': {'Na+':'IP'},
'Cl-': {'Cl-':'IM'},
'CS' : {'Cs+':'Cs'},
'IB' : {'IB' :'IB'},
'K+' : {'K+' :'K'},
'Li+': {'Li+':'Li'},
'MG' : {'MG':'MG'},
'Rb+': {'Rb+':'Rb'} }
tip3p_metal_map = { 'AL': {'AL': ['Al3+', '1.369', '0.01128487']},
'Ag': {'Ag': ['Ag2+', '1.336', '0.00770969']},
'BA': {'BA': ['Ba2+', '2.019', '0.40664608']},
'BR': {'BR': ['Br-', '2.608', '0.0586554']},
'Be': {'Be': ['Be2+', '0.956', '0.00000395']},
'CA': {'CA': ['Ca2+', '1.649', '0.10592870']},
'CD': {'CD': ['Cd2+', '1.412', '0.01773416']},
'CE': {'CE': ['Ce3+', '1.782', '0.19865859']},
'CL': {'CL': ['Cl-', '2.513', '0.0355910']},
'CO': {'CO': ['Co2+', '1.299', '0.00483892']},
'CR': {'CR': ['Cr3+', '1.415', '0.01827024']},
'CS': {'CS': ['Cs+', '1.976', '0.4065394']},
'CU': {'CU': ['Cu2+', '1.218', '0.00148497']},
'Ce': {'Ce': ['Ce4+', '1.766', '0.18612361']},
'Cl-': {'Cl-': ['Cl-', '2.513', '0.0355910']},
'Cr': {'Cr': ['Cr2+', '1.346', '0.00868178']},
'Dy': {'Dy': ['Dy3+', '1.637', '0.09900804']},
'EU': {'EU': ['Eu2+', '1.802', '0.21475916']},
'EU3': {'EU3': ['Eu3+', '1.716', '0.14920231']},
'Er': {'Er': ['Er3+', '1.635', '0.09788018']},
'F': {'F': ['F-', '2.303', '0.0033640']},
'FE': {'FE': ['Fe3+', '1.443', '0.02387506']},
'FE2': {'FE2': ['Fe2+', '1.353', '0.00941798']},
'GD3': {'GD': ['Gd3+', '1.658', '0.11129023']},
'HG': {'HG': ['Hg2+', '1.407', '0.01686710']},
'Hf': {'Hf': ['Hf4+', '1.600', '0.07934493']},
'IN': {'IN': ['In3+', '1.491', '0.03625449']},
'IOD': {'I': ['I-', '2.860', '0.0536816']},
'K+': {'K+': ['K+', '1.705', '0.1936829']},
'K': {'K': ['K+', '1.705', '0.1936829']},
'LA': {'LA': ['La3+', '1.758', '0.17997960']},
'LI': {'LI': ['Li+', '1.025', '0.0279896']},
'LU': {'LU': ['Lu3+', '1.625', '0.09235154']},
'MG': {'MG': ['Mg2+', '1.360', '0.01020237']},
'MN': {'MN': ['Mn2+', '1.407', '0.01686710']},
'NA': {'NA': ['Na+', '1.369', '0.0874393']},
'NI': {'NI': ['Ni2+', '1.255', '0.00262320']},
'Na+': {'Na+': ['Na+', '1.369', '0.0874393']},
'Nd': {'Nd': ['Nd3+', '1.724', '0.15486311']},
'PB': {'PB': ['Pb2+', '1.745', '0.17018074']},
'PD': {'PD': ['Pd2+', '1.303', '0.00509941']},
'PR': {'PR': ['Pr3+', '1.780', '0.19707431']},
'PT': {'PT': ['Pt2+', '1.266', '0.00307642']},
'Pu': {'Pu': ['Pu4+', '1.752', '0.17542802']},
'RB': {'RB': ['Rb+', '1.813', '0.3278219']},
'Ra': {'Ra': ['Ra2+', '2.019', '0.40664608']},
'SM': {'SM': ['Sm3+', '1.711', '0.14571499']},
'SR': {'SR': ['Sr2+', '1.810', '0.22132374']},
'Sm': {'Sm': ['Sm2+', '1.819', '0.22878796']},
'Sn': {'Sn': ['Sn2+', '1.666', '0.11617738']},
'TB': {'TB': ['Tb3+', '1.671', '0.11928915']},
'Th': {'Th': ['Th4+', '1.770', '0.18922704']},
'Tl': {'Tl': ['Tl3+', '1.571', '0.06573030']},
'Tm': {'Tm': ['Tm3+', '1.647', '0.10475707']},
'U4+': {'U': ['U4+', '1.792', '0.20665151']},
'V2+': {'V2+': ['V2+', '1.364', '0.01067299']},
'Y': {'Y': ['Y3+', '1.630', '0.09509276']},
'YB2': {'YB2': ['Yb2+', '1.642', '0.10185975']},
'ZN': {'ZN': ['Zn2+', '1.271', '0.00330286']},
'Zr': {'Zr': ['Zr4+', '1.609', '0.08389240']} }
# Mutation rule related
# ===============================================
# Residue catageries (subgroups)
resi_subgrp = {
'polar' : ['R','H','K','D','E','S','T','N','Q','C','Y'],
'charged' : ['R','H','K','D','E'],
'positive' : ['R','H','K'],
'negative' : ['D','E'],
'polarNcharge' : ['S','T','N','Q','C','Y'],
'nonpolar' : ['A','V','I','L','P','M','F','W','G'],
'neutral' : ['S','T','N','Q','C','Y','A','V','I','L','P','M','F','W','G']
}
# Residue Volume Rank (From http://www.imgt.org/IMGTeducation/Aide-memoire/_UK/aminoacids/abbreviation.html)
resi_vol_rank = ['G','A','S','C','D','P','N','T','E','V','Q','H','M','I','L','K','R','F','Y','W']
# MMPB(GB)SA related
# Radii mapping with igb methods
radii_map={
'1':'mbondi',
'2':'mbondi2',
'5':'mbondi2',
'7':'bondi',
'8':'mbondi3'
}
# {connecting_atom : H type} Base on http://www.uoxray.uoregon.edu/local/manuals/biosym/discovery/General/Forcefields/AMBER.html
# ff96_H_map = {'N2':'H', 'N':'H', 'CT':'HC', 'CA':'HA', 'OH':'HO', 'SH':'HS', 'OW':'HW', 'CR':'H5', 'CV':'H4', 'CR':'H5'}
# a list of meaningless co-crystaled "ligands". Do not read in Structure.fromPDB.
rd_non_ligand_list = ['CL', 'EDO', 'GOL']
rd_solvent_list = ['HOH', 'WAT']