• Docs »
  • Visualizing Protein-Ligand Interactions new

Visualizing Protein-Ligand Interactions new

Problem

You want to visualize protein-ligand interactions. See example in Figure 1.

../_images/complex2img-pdb13gs1.png

Figure 1. Example of visualizing protein-ligand interactions (PDB: 13GS)

Ingredients

  • OEChem TK - cheminformatics toolkit (including OEBio TK)
  • OEDepict TK - molecule depiction toolkit
  • Grapheme TK - molecule and property visualization toolkit

Note

Requires OpenEye toolkits version 2017.Feb or later.

Difficulty level

../_images/chilly6.png ../_images/chilly6.png

Solution

The DepictComplex illustrates how to generate protein-ligand iteration images.

  1. OEInteractionHintContainer object is constructed that stores information about possible interactions between the ligand and the protein.
  2. The interactions are perceived by calling the OEPerceiveInteractionHints function.
  3. The image is then separated into two frames: the ligand and the residues around it is going to rendered into one frame, while the corresponding legend into the other frame.
  4. The active site is then prepared for 2D depiction by invoking the OEPrepareActiveSiteDepiction function.
  5. When the OE2DActiveSiteDisplay object is constructed, residues are positioned around the ligand close to those atoms which they are interacting with. The OERenderActiveSite function generates an image in which each residue cycle are colored based on the types in which they are interact with the ligand.
  6. The legend associated with the active site is rendered by invoking the OEDrawActiveSiteLegend function.
 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
def DepictComplex(image, protein, ligand, itf):

    # perceive interactions

    asite = OEInteractionHintContainer(protein, ligand)
    if not asite.IsValid():
        OEThrow.Fatal("Cannot initialize active site!")
    asite.SetTitle(ligand.GetTitle())

    OEPerceiveInteractionHints(asite)

    # depiction

    width, height = image.GetWidth(), image.GetHeight()
    cframe = OEImageFrame(image, width * 0.80, height, OE2DPoint(0.0, 0.0))
    lframe = OEImageFrame(image, width * 0.20, height, OE2DPoint(width * 0.80, 0.0))

    opts = OE2DActiveSiteDisplayOptions(cframe.GetWidth(), cframe.GetHeight())
    OESetup2DMolDisplayOptions(opts, itf)

    OEPrepareActiveSiteDepiction(asite)
    adisp = OE2DActiveSiteDisplay(asite, opts)

    OERenderActiveSite(cframe, adisp)

    lopts = OE2DActiveSiteLegendDisplayOptions(10, 1)
    OEDrawActiveSiteLegend(lframe, adisp, lopts)

Download code

complex2img.py

Usage:

prompt > wget https://files.rcsb.org/download/13gs.pdb
prompt > python3 complex2img.py 13gs.pdb 13gs.svg

Discussion

Interaction perception

Currently the OEPerceiveInteractionHints function perceives the following interaction types:

The default geometric parameters used by the OEPerceiveInteractionHints function have been set based on literature data ([Kumar-2002], [Cavallo-2016], [Bissantz-2010], and [Marcou-2007] ). The interaction parameters can be customized by using the OEPerceiveInteractionOptions class.

Interaction depiction

../_images/complex2img-final.png

Figure 2. Example of visualizing protein-ligand interactions (PDB: 1GKC)

Protein-ligand interaction images (such as Figure 2) are generated in the following steps:

  1. Determining the 2D layout of the ligand

    The 2D coordinates of the ligand are generated using the OEPrepareDepictionFrom3D function. The 2D layout is driven by the 3D coordinates of the bound ligand.

    ../_images/complex2img-ligand-layout.png

    Step 1. Determining the 2D layout of the ligand

  2. Visualizing the shape of the active site

    The shape of active site is represented with a continuous gray line around the ligand. First, 2D molecule surface is constructed from adjoining arcs. The radius of each arc reflects the distance between the molecule surface of the ligand and the protein in 3D. The absence of an arc indicates regions where the ligand is exposed to the solvent. This 2D molecule surface is then smoothed to get the final aesthetic pleasing representation.

    ../_images/complex2img-pocket.png

    Step 2. Visualizing the shape of the active site

  3. Positioning the residues

    The residues are positioned close to the ligand atoms they interacts with. The distances of residue glyphs for the 2D ligand do not indicate distances in the 3D complex. Residues that only have contact interaction with the ligand are positioned further away, while those that have other type of interactions such as hydrogen bonding, salt bridge etc. are positioned closer to the atoms they are interacting with

    Step 3. Positioning the residues (click on any residues in the image above)

    ../_images/complex2img-residue-positioning.svg
  4. Visualizing residues and interactions interactions

    The type of the residues and other components around the ligand are represented by different shapes. For example, nearby water is depicted with a glyph resembling a water drop. Basic amino acid residues are represented with a circle and further annotated whether their atoms that are interact with ligand are in the backbone, side-chain or in both.

    ../_images/complex2img-legend.png

    Legend of residue and interaction styles

    Each interaction type is associated with a color (see image above). If a residue participates in more than one type of interactions than the residue glyph has multiple colors (see examples below).

    Example of of residues contributing to more than one types of interactions
    ../_images/complex2img-multi-inters-A.png ../_images/complex2img-multi-inters-B.png

See also in OEChem TK manual

Theory

API

See also in OEDepict TK manual

Theory

API