Interaction Perception¶
OEBio TK provides the following APIs to perceive protein-ligand interactions:
OEPerceiveInteractionHints
The function that perceives protein-ligand interactions.
- OEPerceiveInteractionOptions
The class that stores the parameters that control the interaction perception.
The default geometric parameters have been set based on literature data ([Kumar-2002], [Cavallo-2016], [Bissantz-2010], and [Marcou-2007] ).
Interaction Hint Container¶
Interactions perceived by the OEPerceiveInteractionHints
function are stored
in an OEInteractionHintContainer object.
The architecture of the OEInteractionHintContainer class is depicted
in Schematic representation of interaction hint container.
- OEInteractionHintContainer
This is the main container that stores typed molecules (OEMolBase), fragments of those molecules (OEInteractionHintFragment) and typed interactions (OEInteractionHint) between the fragments.
- OEInteractionHintComponentTypeBase
The abstract class that enables to type molecules stored in the interaction container. Each molecule added to the container has to have a specific type. Currently, there are two built-in component types available:
OELigandInteractionHintComponent – component type that classifies a molecule as a ‘ligand’
OEProteinInteractionHintComponent – component type that classifies a molecule as a ‘protein’
- OEInteractionHintFragment
Set of atoms of a molecule that is stored in the interaction container. These are the atoms that are contribute to an interaction (OEInteractionHint). Some interactions, such as hydrogen bonds, are between two atoms; other ones define interactions between set of atoms. For example, a stacking interaction is between atoms of two aromatic ring systems.
- OEInteractionHint
An iteration is defined between two fragments (OEInteractionHintFragment) stored in the container. An interaction can be either inter (
OEInteractionHint.IsInter
) or intra (OEInteractionHint.IsIntra
) molecular. Each interaction has a specific type that is derived from the OEInteractionHintTypeBase class.- OEInteractionHintTypeBase
The abstract class that enables to type interactions stored in the interaction container. The table below shows the specific interaction types currently available in OEBio TK. Some interaction classes are also associated with namespaces that enable to subtype the main interaction types. For example, the stacking interaction have two subtypes:
Pi-stacking – OEStackingInteractionHint (
OEStackingInteractionHintType_Pi
)T-stacking – OEStackingInteractionHint (
OEStackingInteractionHintType_T
)
¶ name
corresponding interaction class
corresponding interaction type namespace
cation-pi
chelator
clash
None
contact
None
covalent
None
halogen bond
hydrogen bond
salt-bridge
stacking (T and Pi)
Other related APIs:
- OEIsValidActiveSite
This function checks whether the interaction container initialized correctly as active site i.e. containing two molecules: one typed as ligand and one typed as protein.
- OEGetActiveSiteInteractionHintTypes
This function iterates over all interaction types (including subtypes) that are perceived by the OEPerceiveInteractionHints function.
Code Examples
Perceive and Print Protein-Ligand Interactions OEChem TK example
Depicting Active Site Interactions Grapheme TK example
Accessing Interaction Hint Information OpenEye Python Cookbook recipe
Interaction Hint Predicates¶
The table below list all interaction predicates that are currently available in OEBio TK.
Access interactions |
Functor Name |
---|---|
with given interaction type |
|
with given atom |
|
with given residue |
|
contact |
|
hydrogen bond |
|
inter-molecular hydrogen bond |
|
intra-molecular hydrogen bond |
|
chelator |
|
inter-molecular chelator |
|
intra-molecular chelator |
|
covalent |
|
clash |
|
salt-bridge |
|
T and Pi-stacking |
|
cation-Pi |
|
halogen bond |
|
inter-molecular |
|
intra-molecular |
|
non-ideal hydrogen bond |
|
unpaired ligand |
|
unpaired protein |
The following logical operations allow to combine both the built-in and the user defined interaction predicates.
Composite Functor |
Description |
---|---|
logical not |
|
logical or |
|
logical and |
Accessing Calculated Interaction Hint Geometries¶
When interaction hints are perceived using the OEPerceiveInteractionHints
function, various geometries (such as distances and angles) are calculated
that are checked against the geometric constraints stored in the given
OEPerceiveInteractionOptions class.
The following code snippet shows how to access these calculated geometries:
oechem.OEPerceiveInteractionHints(asite)
itype = oechem.OEHBondInteractionHint(oechem.OEHBondInteractionHintType_LigandDonates)
ipred = oechem.OEHasInteractionHintType(itype)
for inter in asite.GetInteractions(ipred):
itype = inter.GetInteractionType()
print("Calculated geometries for '{}' interaction type:".format(itype.GetName()))
for gname in inter.GetCalculatedGeometries():
print("{0:30} : {1:.3f}".format(gname, inter.GetCalculatedGeometry(gname)))
For the OEHBondInteractionHintType_LigandDonates
hydrogen bond
interaction type, three geometries are calculated:
the distance between the acceptor and the donor heavy atoms (see also the
OEPerceiveInteractionOptions.SetMaxHBondDistance
method)the acceptor angle (see also the
OEPerceiveInteractionOptions.SetMaxAcceptorAngle
method)the donor angle (see also the
OEPerceiveInteractionOptions.SetMaxDonorAngle
method)
The “distance” values are always given in Angstroms and the “angle” values are always given in radians. The output of the code snippet above might look like this:
Calculated geometries for 'bio:active-site:hbond:ligand2protein' interaction type:
bio:interaction:distance : 2.722
bio:intaraction:acceptor-angle : 0.155
bio:interaction:donor-angle : 0.241
For different interactions, different geometries are calculated.
The following snippet shows how to access the names of the geometries that are
available for a given interaction type using the OEGetCalculatedInteractionGeometries
function:
hbondacc = oechem.OEHBondInteractionHint(oechem.OEHBondInteractionHintType_LigandAccepts)
print("Calculated geometries for '{}' interaction type:".format(hbondacc.GetName()))
for geom in oechem.OEGetCalculatedInteractionGeometries(hbondacc):
print(geom)
All interaction geometry names start with the bio:interaction:
prefix.
However, both the OEInteractionHint.HasCalculatedGeometry
and
OEInteractionHint.GetCalculatedGeometry
methods accept
names with or without the bio:interaction:
prefix.
The following code snippet shows how to access the calculated geometries directly:
if inter.HasCalculatedGeometry("distance"):
distance = inter.GetCalculatedGeometry("distance")
print("distance: {:.3f} Angstrom(s)".format(distance))
if inter.HasCalculatedGeometry("acceptor-angle"):
angle = math.degrees(inter.GetCalculatedGeometry("acceptor-angle"))
print("acceptor angle: {:.3f} degree(s)".format(angle))
The output of the code snippet above might look like this:
distance: 2.722 Angstrom(s)
acceptor angle: 8.863 degree(s)
Hint
It is a good practice to call OEInteractionHint.HasCalculatedGeometry
prior to invoking the OEInteractionHint.GetCalculatedGeometry
method to check whether the interaction hint has a geometry with a given name.
Currently, the following names are used for the interaction geometries:
bio:interaction:distance
bio:interaction:angle
bio:interaction:acceptor-angle
bio:interaction:donor-angle
For most interactions (except the unpaired ones), the calculated distance
is available by using the bio:interaction:distance
name.
None of the unpaired interactions have any calculated geometries since
they only “suggest” how they could contribute to the binding but are not
actually formed in the complex.
A calculated geometry, such as a distance, can have different meanings based on the interaction type. For example, in a hydrogen bond interaction it means the distance between the acceptor and donor heavy atoms. For a pi-staking interaction, it means the distance between the center of the two ring systems. The following table shows the correspondence between the calculated geometries and the geometric constraints.
Set method |
Interaction type |
Associated geometry name |
hbond |
|
|
hbond (charged) |
|
|
non-ideal hbond |
|
|
hbond |
|
|
hbond |
|
|
non-ideal hbond |
|
|
non-ideal hbond |
|
|
chelator |
|
|
salt bridge |
|
|
cation-Pi |
|
|
cation-Pi |
|
|
Pi-stacking |
|
|
Pi-stacking |
|
|
T-stacking |
|
|
T-stacking |
|
|
halogen bond |
|
|
halogen bond |
|