Structure: Pocket

Once you have installed the package, you will have access (among others) to the opencadd.structure.pocket module.

This module offers a simple API to define and visualize (nglview) subpockets and regions within a pocket.

nglview: http://nglviewer.org/nglview/latest/

Pocket

The Pocket class is the main API to work with. A Pocket object is initialized from a protein structure file, a name, pocket residue PDB IDs and optionally pocket residue labels. For instance, pocket residue labels can be used to label residues with alignment IDs, such as the KLIFS residue ID (pocket residues 1-85 are aligned across all kinases).

from opencadd.structure.pocket import Pocket

pocket = Pocket.from_file(
    filepath="protein.mol2",  # Dummy file path
    pocket_residue_pdb_ids=[50, 51, ..., 198],
    name="example kinase",
    pocket_residue_labels=[1, 2, ..., 85]
)

Subpockets

Currently, the main focus of this module is the definition of subpockets within a pocket. Once a Pocket object is initialized, subpockets can be added one-by-one. The user can define each subpocket by so-called anchor residues. The centroid of all anchor residues’ CA atoms is the subpocket center and will be visualized as a subpocket sphere (together with the anchor residues’ CA atoms as small spheres). Anchor residues need to be selected manually, in a way that their centroid will cover the subpocket center as intended.

As an example, we add here a kinase subpocket called "hinge", which will be visualized in magenta and whose center is calculated based on the CA atoms of residues 73, 128, and 193 (residue PDB IDs). These residue PDB IDs correspond to the KLIFS alignment IDs 16, 47, and 80.

pocket.add_subpocket(
    name="hinge",
    anchor_residue_pdb_ids=[73, 128, 193],
    color="magenta",
    anchor_residue_labels=[16, 47, 80]  # Optionally
)

Regions

Usually, it is helpful to highlight the pocket region, which inspired the subpocket choice, hence the module allows definitions of important pocket regions.

In our example, the subpocket "hinge" is intended to target one of the most important regions in kinases, the hinge region, where kinase inhibitors form hydrogen bonds with the kinase. We use the hinge region residues to add a region to our Pocket object.

pocket.add_region(
    name="hinge region",
    residue_pdb_ids=[127, 128, 129],
    color="magenta",
    residue_labels=[46, 47, 48]  # Optionally
)

Visualize the pocket

Now we can visualize the pocket using:

pocket.visualize()

Check out our tutorial to find out more!