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}}
[ ]: