Example Execution for RestraintMaker
[59]:
"""get paths for test data"""
from restraintmaker import test
pdb_path = test.test_system1_pdb
print(pdb_path)
/home/bschroed/Documents/projects/restraintmaker/restraintmaker/test/test_files/test_systems/systemA/CHK1_5Ligs.pdb
Get atoms of the system
first we need to get a atom list. There are multiple ways on how to do this, here we use pymol for this:
[60]:
from pymol import cmd
from restraintmaker.interface_Pymol.pymol_utilities import pymol_utitlities as u
cmd.load(pdb_path)
atom_list = u.pymol_selection_to_atom_list("all")
cmd.reinitialize()
[78]:
print("Residues to link: \n\t\t"+"\n\t\t".join(set(map(lambda x: x.resn, atom_list))))
Residues to link:
KL19
KL20
KL17
KL1
KL21
RestraintMaker Pipeline
Filtering the atoms
We provide functionality for filtering atoms in a selection. This can be used to exclude certain atoms, that should not be restrained, and additionally reduces the complexity of the problem.
[79]:
from restraintmaker.algorithm import Filter, Optimizer
from restraintmaker.utils import Utilities as u
filtered_atoms = atom_list
## Filtering for not H
filter = Filter.ElementFilter(filtered_atoms)
filter.get_args(lambda x: ("O, N, C"))
filtered_atoms = filter.filter()
print("Filter Step1 - Elements: ", len(atom_list), "->",len(filtered_atoms))
Filter Step1 - Elements: 203 -> 142
Optimization
Here we use the proposed algorithm to calculated a well distributed set of distance restraints.
[81]:
# Optimize Restraints
## Paramters
nRestraints = 6
maximal_restraint_distance = 1.5 #A
method = "minmax"
projection = "convex_hull"
## program
optimizer = Optimizer.GreedyGraphOptimizer(filtered_atoms)
optimizer.get_args(lambda x: (nRestraints, maximal_restraint_distance, method, projection))
found_restraints = optimizer.make_restraints()
Connecting molecules #1 and #2
Connecting molecules #1 and #3
Connecting molecules #1 and #4
Connecting molecules #1 and #5
Connecting molecules #2 and #3
Connecting molecules #2 and #4
Connecting molecules #2 and #5
Connecting molecules #3 and #4
Connecting molecules #3 and #5
Connecting molecules #4 and #5
ADDING 3 5 (value = 00.37)
ADDING 4 5 (value = 00.37)
ADDING 1 3 (value = 00.32)
DISCARDING 3 4
DISCARDING 1 4
DISCARDING 2 3
DISCARDING 1 5
ADDING 2 4 (value = 00.26)
----------
ADDING 1 2 (value = 00.22)
[82]:
print("Result: \n\t", "\n\t".join(map(str, found_restraints)))
Result:
DistanceRestraint 93 173 0.020928573118637137
DistanceRestraint 107 188 1.3080112183729382
DistanceRestraint 82 162 0.02509969137475135
DistanceRestraint 101 181 0.024372021542387032
DistanceRestraint 110 202 0.0859593190244359
DistanceRestraint 94 174 0.016248190446675838
DistanceRestraint 133 173 0.0009999275207519531
DistanceRestraint 147 188 1.336934099940074
DistanceRestraint 122 162 0.01445687293670089
DistanceRestraint 141 181 0.020049805866126494
DistanceRestraint 150 202 0.03459786772954851
DistanceRestraint 134 174 0.0022359059725316787
DistanceRestraint 12 93 0.024758467490798183
DistanceRestraint 25 107 0.1347001548421799
DistanceRestraint 1 82 0.033970555741711594
DistanceRestraint 20 101 0.03277216022777024
DistanceRestraint 21 102 0.03656542498433159
DistanceRestraint 13 94 0.013038264376255066
DistanceRestraint 52 133 0.016552840275103946
DistanceRestraint 68 147 1.471557002595128
DistanceRestraint 60 141 0.05418529920277415
DistanceRestraint 41 122 0.005477263884099628
DistanceRestraint 70 150 0.08960487678350591
DistanceRestraint 53 134 0.014176991082075412
DistanceRestraint 12 52 0.014422217798542254
DistanceRestraint 25 67 0.699488284822284
DistanceRestraint 1 41 0.024556647550918718
DistanceRestraint 20 60 0.02576847867236797
DistanceRestraint 21 61 0.07475267519104152
DistanceRestraint 13 53 0.008124036536692249
Export
The Generated restraints can be exported in three file formats currently: * Gromos * Gromacs * JSON
[83]:
from restraintmaker.io import Exporter
exporter = Exporter.export_Gromos_Distance_Restraints(found_restraints)
exporter.out_path = "out_disres.dat"
#writes out to path, is the path is not none
disres_text = exporter.export_restraints()
wrote to: out_disres.dat.disres
[84]:
print(disres_text)
TITLE
generated disres file with restraintmaker
>>> Generated with python lib function_libs utilities. (riniker group)
>>> line_seperator: ' \n' field_seperator: ' \t '
END
DISTANCERESSPEC
# KDISH KDISC
0.1 0.153
# i j k l type i j k l type r0 w0 rah
## KL1/C12 93 - KL21/C12 173
93 0 0 0 0 173 0 0 0 0 0.00000 1.00000 1
## KL1/O26 107 - KL21/C27 188
107 0 0 0 0 188 0 0 0 0 0.13000 1.00000 1
## KL1/N1 82 - KL21/N1 162
82 0 0 0 0 162 0 0 0 0 0.00000 1.00000 1
## KL1/C20 101 - KL21/C20 181
101 0 0 0 0 181 0 0 0 0 0.00000 1.00000 1
## KL1/C29 110 - KL21/C31 202
110 0 0 0 0 202 0 0 0 0 0.00000 1.00000 1
## KL1/N13 94 - KL21/N13 174
94 0 0 0 0 174 0 0 0 0 0.00000 1.00000 1
## KL20/C12 133 - KL21/C12 173
133 0 0 0 0 173 0 0 0 0 0.00000 1.00000 1
## KL20/O26 147 - KL21/C27 188
147 0 0 0 0 188 0 0 0 0 0.13000 1.00000 1
## KL20/N1 122 - KL21/N1 162
122 0 0 0 0 162 0 0 0 0 0.00000 1.00000 1
## KL20/C20 141 - KL21/C20 181
141 0 0 0 0 181 0 0 0 0 0.00000 1.00000 1
## KL20/C29 150 - KL21/C31 202
150 0 0 0 0 202 0 0 0 0 0.00000 1.00000 1
## KL20/N13 134 - KL21/N13 174
134 0 0 0 0 174 0 0 0 0 0.00000 1.00000 1
## KL17/C12 12 - KL1/C12 93
12 0 0 0 0 93 0 0 0 0 0.00000 1.00000 1
## KL17/O25 25 - KL1/O26 107
25 0 0 0 0 107 0 0 0 0 0.01000 1.00000 1
## KL17/N1 1 - KL1/N1 82
1 0 0 0 0 82 0 0 0 0 0.00000 1.00000 1
## KL17/C20 20 - KL1/C20 101
20 0 0 0 0 101 0 0 0 0 0.00000 1.00000 1
## KL17/C21 21 - KL1/C21 102
21 0 0 0 0 102 0 0 0 0 0.00000 1.00000 1
## KL17/N13 13 - KL1/N13 94
13 0 0 0 0 94 0 0 0 0 0.00000 1.00000 1
## KL19/C12 52 - KL20/C12 133
52 0 0 0 0 133 0 0 0 0 0.00000 1.00000 1
## KL19/C28 68 - KL20/O26 147
68 0 0 0 0 147 0 0 0 0 0.14000 1.00000 1
## KL19/C20 60 - KL20/C20 141
60 0 0 0 0 141 0 0 0 0 0.00000 1.00000 1
## KL19/N1 41 - KL20/N1 122
41 0 0 0 0 122 0 0 0 0 0.00000 1.00000 1
## KL19/C30 70 - KL20/C29 150
70 0 0 0 0 150 0 0 0 0 0.00000 1.00000 1
## KL19/N13 53 - KL20/N13 134
53 0 0 0 0 134 0 0 0 0 0.00000 1.00000 1
## KL17/C12 12 - KL19/C12 52
12 0 0 0 0 52 0 0 0 0 0.00000 1.00000 1
## KL17/O25 25 - KL19/O27 67
25 0 0 0 0 67 0 0 0 0 0.06000 1.00000 1
## KL17/N1 1 - KL19/N1 41
1 0 0 0 0 41 0 0 0 0 0.00000 1.00000 1
## KL17/C20 20 - KL19/C20 60
20 0 0 0 0 60 0 0 0 0 0.00000 1.00000 1
## KL17/C21 21 - KL19/C21 61
21 0 0 0 0 61 0 0 0 0 0.00000 1.00000 1
## KL17/N13 13 - KL19/N13 53
13 0 0 0 0 53 0 0 0 0 0.00000 1.00000 1
END
[85]:
from restraintmaker.io import Exporter
exporter = Exporter.export_Gromacs_Distance_Restraints(found_restraints)
exporter.out_path = "out_disres_gmx.itp"
#writes out to path, is the path is not none
disres_text = exporter.export_restraints()
[86]:
print(disres_text)
[ distance_restraints ]
;i j type index type' low up1 up2 fac
93 173 1 1 1 0.0 0.0 0.1 1.0; KL1/C12 - KL21/C12
107 188 1 1 1 0.0 0.0 0.1 1.0; KL1/O26 - KL21/C27
82 162 1 1 1 0.0 0.0 0.1 1.0; KL1/N1 - KL21/N1
101 181 1 1 1 0.0 0.0 0.1 1.0; KL1/C20 - KL21/C20
110 202 1 1 1 0.0 0.0 0.1 1.0; KL1/C29 - KL21/C31
94 174 1 1 1 0.0 0.0 0.1 1.0; KL1/N13 - KL21/N13
133 173 1 1 1 0.0 0.0 0.1 1.0; KL20/C12 - KL21/C12
147 188 1 1 1 0.0 0.0 0.1 1.0; KL20/O26 - KL21/C27
122 162 1 1 1 0.0 0.0 0.1 1.0; KL20/N1 - KL21/N1
141 181 1 1 1 0.0 0.0 0.1 1.0; KL20/C20 - KL21/C20
150 202 1 1 1 0.0 0.0 0.1 1.0; KL20/C29 - KL21/C31
134 174 1 1 1 0.0 0.0 0.1 1.0; KL20/N13 - KL21/N13
12 93 1 1 1 0.0 0.0 0.1 1.0; KL17/C12 - KL1/C12
25 107 1 1 1 0.0 0.0 0.1 1.0; KL17/O25 - KL1/O26
1 82 1 1 1 0.0 0.0 0.1 1.0; KL17/N1 - KL1/N1
20 101 1 1 1 0.0 0.0 0.1 1.0; KL17/C20 - KL1/C20
21 102 1 1 1 0.0 0.0 0.1 1.0; KL17/C21 - KL1/C21
13 94 1 1 1 0.0 0.0 0.1 1.0; KL17/N13 - KL1/N13
52 133 1 1 1 0.0 0.0 0.1 1.0; KL19/C12 - KL20/C12
68 147 1 1 1 0.0 0.0 0.1 1.0; KL19/C28 - KL20/O26
60 141 1 1 1 0.0 0.0 0.1 1.0; KL19/C20 - KL20/C20
41 122 1 1 1 0.0 0.0 0.1 1.0; KL19/N1 - KL20/N1
70 150 1 1 1 0.0 0.0 0.1 1.0; KL19/C30 - KL20/C29
53 134 1 1 1 0.0 0.0 0.1 1.0; KL19/N13 - KL20/N13
12 52 1 1 1 0.0 0.0 0.1 1.0; KL17/C12 - KL19/C12
25 67 1 1 1 0.0 0.0 0.1 1.0; KL17/O25 - KL19/O27
1 41 1 1 1 0.0 0.0 0.1 1.0; KL17/N1 - KL19/N1
20 60 1 1 1 0.0 0.0 0.1 1.0; KL17/C20 - KL19/C20
21 61 1 1 1 0.0 0.0 0.1 1.0; KL17/C21 - KL19/C21
13 53 1 1 1 0.0 0.0 0.1 1.0; KL17/N13 - KL19/N13
[87]:
from restraintmaker.io import Exporter
exporter = Exporter.export_JSON_Distance_Restraints(found_restraints)
exporter.out_path = "out_disres.json"
#writes out to path, is the path is not none
disres_text = exporter.export_restraints()
[88]:
print(disres_text)
{0: {'a1': {'elem': 'C', 'id': 93, 'name': 'C12', 'x': 6.335000038146973, 'y': -4.25, 'z': 11.592000007629395, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 173, 'name': 'C12', 'x': 6.323999881744385, 'y': -4.238999843597412, 'z': 11.57800006866455, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0020928573118637137}, 1: {'a1': {'elem': 'O', 'id': 107, 'name': 'O26', 'x': 17.4060001373291, 'y': -2.811000108718872, 'z': 7.202000141143799, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 188, 'name': 'C27', 'x': 17.940000534057617, 'y': -3.9670000076293945, 'z': 6.9029998779296875, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.1308011218372938}, 2: {'a1': {'elem': 'N', 'id': 82, 'name': 'N1', 'x': 13.229000091552734, 'y': -4.570000171661377, 'z': 12.550000190734863, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 162, 'name': 'N1', 'x': 13.220000267028809, 'y': -4.5879998207092285, 'z': 12.53499984741211, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.002509969137475135}, 3: {'a1': {'elem': 'C', 'id': 101, 'name': 'C20', 'x': 9.967000007629395, 'y': 0.22300000488758087, 'z': 7.839000225067139, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 181, 'name': 'C20', 'x': 9.989999771118164, 'y': 0.21899999678134918, 'z': 7.831999778747559, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0024372021542387033}, 4: {'a1': {'elem': 'C', 'id': 110, 'name': 'C29', 'x': 14.432000160217285, 'y': -0.6299999952316284, 'z': 6.744999885559082, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 202, 'name': 'C31', 'x': 14.442000389099121, 'y': -0.7129999995231628, 'z': 6.724999904632568, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.00859593190244359}, 5: {'a1': {'elem': 'N', 'id': 94, 'name': 'N13', 'x': 9.286999702453613, 'y': -2.61299991607666, 'z': 10.019000053405762, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 174, 'name': 'N13', 'x': 9.28499984741211, 'y': -2.5989999771118164, 'z': 10.027000427246094, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0016248190446675839}, 6: {'a1': {'elem': 'C', 'id': 133, 'name': 'C12', 'x': 6.323999881744385, 'y': -4.239999771118164, 'z': 11.57800006866455, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 173, 'name': 'C12', 'x': 6.323999881744385, 'y': -4.238999843597412, 'z': 11.57800006866455, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 9.999275207519531e-05}, 7: {'a1': {'elem': 'O', 'id': 147, 'name': 'O26', 'x': 17.408000946044922, 'y': -2.8299999237060547, 'z': 7.36299991607666, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 188, 'name': 'C27', 'x': 17.940000534057617, 'y': -3.9670000076293945, 'z': 6.9029998779296875, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.13369340999400742}, 8: {'a1': {'elem': 'N', 'id': 122, 'name': 'N1', 'x': 13.217000007629395, 'y': -4.590000152587891, 'z': 12.548999786376953, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 162, 'name': 'N1', 'x': 13.220000267028809, 'y': -4.5879998207092285, 'z': 12.53499984741211, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0014456872936700889}, 9: {'a1': {'elem': 'C', 'id': 141, 'name': 'C20', 'x': 9.973999977111816, 'y': 0.23000000417232513, 'z': 7.836999893188477, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 181, 'name': 'C20', 'x': 9.989999771118164, 'y': 0.21899999678134918, 'z': 7.831999778747559, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0020049805866126495}, 10: {'a1': {'elem': 'C', 'id': 150, 'name': 'C29', 'x': 14.428999900817871, 'y': -0.6809999942779541, 'z': 6.7230000495910645, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 202, 'name': 'C31', 'x': 14.442000389099121, 'y': -0.7129999995231628, 'z': 6.724999904632568, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.003459786772954851}, 11: {'a1': {'elem': 'N', 'id': 134, 'name': 'N13', 'x': 9.284000396728516, 'y': -2.5969998836517334, 'z': 10.027000427246094, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 174, 'name': 'N13', 'x': 9.28499984741211, 'y': -2.5989999771118164, 'z': 10.027000427246094, 'chain': 'E', 'resn': 'KL21', 'resi': '5', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.00022359059725316787}, 12: {'a1': {'elem': 'C', 'id': 12, 'name': 'C12', 'x': 6.327000141143799, 'y': -4.235000133514404, 'z': 11.574000358581543, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 93, 'name': 'C12', 'x': 6.335000038146973, 'y': -4.25, 'z': 11.592000007629395, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0024758467490798184}, 13: {'a1': {'elem': 'O', 'id': 25, 'name': 'O25', 'x': 17.474000930786133, 'y': -2.7070000171661377, 'z': 7.150000095367432, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'O', 'id': 107, 'name': 'O26', 'x': 17.4060001373291, 'y': -2.811000108718872, 'z': 7.202000141143799, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.01347001548421799}, 14: {'a1': {'elem': 'N', 'id': 1, 'name': 'N1', 'x': 13.211999893188477, 'y': -4.593999862670898, 'z': 12.567000389099121, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 82, 'name': 'N1', 'x': 13.229000091552734, 'y': -4.570000171661377, 'z': 12.550000190734863, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0033970555741711594}, 15: {'a1': {'elem': 'C', 'id': 20, 'name': 'C20', 'x': 9.998000144958496, 'y': 0.2160000056028366, 'z': 7.830999851226807, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 101, 'name': 'C20', 'x': 9.967000007629395, 'y': 0.22300000488758087, 'z': 7.839000225067139, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.003277216022777024}, 16: {'a1': {'elem': 'C', 'id': 21, 'name': 'C21', 'x': 13.581000328063965, 'y': -1.3799999952316284, 'z': 7.539999961853027, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 102, 'name': 'C21', 'x': 13.555999755859375, 'y': -1.3539999723434448, 'z': 7.546000003814697, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.003656542498433159}, 17: {'a1': {'elem': 'N', 'id': 13, 'name': 'N13', 'x': 9.295999526977539, 'y': -2.6050000190734863, 'z': 10.02400016784668, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 94, 'name': 'N13', 'x': 9.286999702453613, 'y': -2.61299991607666, 'z': 10.019000053405762, 'chain': 'C', 'resn': 'KL1', 'resi': '3', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0013038264376255067}, 18: {'a1': {'elem': 'C', 'id': 52, 'name': 'C12', 'x': 6.327000141143799, 'y': -4.243000030517578, 'z': 11.562000274658203, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 133, 'name': 'C12', 'x': 6.323999881744385, 'y': -4.239999771118164, 'z': 11.57800006866455, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0016552840275103945}, 19: {'a1': {'elem': 'C', 'id': 68, 'name': 'C28', 'x': 18.47800064086914, 'y': -2.880000114440918, 'z': 8.371999740600586, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'O', 'id': 147, 'name': 'O26', 'x': 17.408000946044922, 'y': -2.8299999237060547, 'z': 7.36299991607666, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.1471557002595128}, 20: {'a1': {'elem': 'C', 'id': 60, 'name': 'C20', 'x': 10.020000457763672, 'y': 0.20399999618530273, 'z': 7.824999809265137, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 141, 'name': 'C20', 'x': 9.973999977111816, 'y': 0.23000000417232513, 'z': 7.836999893188477, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.005418529920277415}, 21: {'a1': {'elem': 'N', 'id': 41, 'name': 'N1', 'x': 13.218999862670898, 'y': -4.589000225067139, 'z': 12.543999671936035, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 122, 'name': 'N1', 'x': 13.217000007629395, 'y': -4.590000152587891, 'z': 12.548999786376953, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0005477263884099628}, 22: {'a1': {'elem': 'C', 'id': 70, 'name': 'C30', 'x': 14.456000328063965, 'y': -0.7630000114440918, 'z': 6.698999881744385, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 150, 'name': 'C29', 'x': 14.428999900817871, 'y': -0.6809999942779541, 'z': 6.7230000495910645, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.00896048767835059}, 23: {'a1': {'elem': 'N', 'id': 53, 'name': 'N13', 'x': 9.29699993133545, 'y': -2.6010000705718994, 'z': 10.031000137329102, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 134, 'name': 'N13', 'x': 9.284000396728516, 'y': -2.5969998836517334, 'z': 10.027000427246094, 'chain': 'D', 'resn': 'KL20', 'resi': '4', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0014176991082075411}, 24: {'a1': {'elem': 'C', 'id': 12, 'name': 'C12', 'x': 6.327000141143799, 'y': -4.235000133514404, 'z': 11.574000358581543, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 52, 'name': 'C12', 'x': 6.327000141143799, 'y': -4.243000030517578, 'z': 11.562000274658203, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0014422217798542255}, 25: {'a1': {'elem': 'O', 'id': 25, 'name': 'O25', 'x': 17.474000930786133, 'y': -2.7070000171661377, 'z': 7.150000095367432, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'O', 'id': 67, 'name': 'O27', 'x': 17.534000396728516, 'y': -2.1570000648498535, 'z': 7.578000068664551, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0699488284822284}, 26: {'a1': {'elem': 'N', 'id': 1, 'name': 'N1', 'x': 13.211999893188477, 'y': -4.593999862670898, 'z': 12.567000389099121, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 41, 'name': 'N1', 'x': 13.218999862670898, 'y': -4.589000225067139, 'z': 12.543999671936035, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0024556647550918716}, 27: {'a1': {'elem': 'C', 'id': 20, 'name': 'C20', 'x': 9.998000144958496, 'y': 0.2160000056028366, 'z': 7.830999851226807, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 60, 'name': 'C20', 'x': 10.020000457763672, 'y': 0.20399999618530273, 'z': 7.824999809265137, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0025768478672367973}, 28: {'a1': {'elem': 'C', 'id': 21, 'name': 'C21', 'x': 13.581000328063965, 'y': -1.3799999952316284, 'z': 7.539999961853027, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'C', 'id': 61, 'name': 'C21', 'x': 13.611000061035156, 'y': -1.3880000114440918, 'z': 7.607999801635742, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.007475267519104152}, 29: {'a1': {'elem': 'N', 'id': 13, 'name': 'N13', 'x': 9.295999526977539, 'y': -2.6050000190734863, 'z': 10.02400016784668, 'chain': 'A', 'resn': 'KL17', 'resi': '1', 'alt': '', 'b': 0.0, 'label': ''}, 'a2': {'elem': 'N', 'id': 53, 'name': 'N13', 'x': 9.29699993133545, 'y': -2.6010000705718994, 'z': 10.031000137329102, 'chain': 'B', 'resn': 'KL19', 'resi': '2', 'alt': '', 'b': 0.0, 'label': ''}, 'd': 0.0008124036536692249}}
[ ]: