1. Download POVME

Begin by downloading POVME! POVME is released under the GNU General Public License. If you have any questions, comments, or suggestions, please don't hesitate to contact me, Jacob Durrant, at jdurrant [at] ucsd [dot] edu.

If you use POVME in your work, please cite Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776..

 

2. Select pocket-encompassing region

To use POVME, the user must first select a region, defined by overlapping spheres and right rectangular prisms, that entirely encompasses the binding pocket but is still contained within the boundaries of the protein. Additionally, volume can be subtracted from this region using exclusion spheres and prisms. If multiple protein structures are to be measured (e.g. frames extracted from a molecular dynamics trajectory), all protein structures must be aligned so that the defined region encompasses each of the binding pockets.

 

3. Create a volume-grid file

Next, a single volume-grid file must be generated by filling the defined region with equispaced points. Here's an example of a POVME input file (generate_points.ini) to generate a volume-grid file from a pocket-encompassing region:

GridSpacing     2.0

InclusionSphere 60.4 29.7 63.0 9.0
InclusionSphere 51.4 34.5 69.6 10.0
InclusionBox 64.1 21.7 58.9 14.0 14.0 14.0

ExclusionSphere 51.4 29.7 63.0 11.0
ExclusionBox 71.1 28.7 65.9 10.0 10.0 10.0

SavePointsFilename points.pdb

The command InclusionSphere takes four inputs. The first three inputs specify the center of the sphere in X-Y-Z coordinates, and the fourth input specifies the sphere radius. The command InclusionBox takes six inputs. The first three inputs specify the center of the box in X-Y-Z coordinates, and the last three inputs specify the X, Y, and Z dimensions of the box, respectively.

To generate the volume-grid file, run POVME with the specified input file:

python POVME.py generate_points.ini

This generates a PDB file (points.pdb) containing the specified points.

 

4. Delete points near protein atoms

For each aligned receptor to be analyzed (protein.pdb in this case), the previously generated volume-grid file (points.pdb) is loaded, and points near protein atoms are systematically deleted. Here is an example of a POVME input file (measure_pocket.ini) to accomplish this:

PDBFileName protein.pdb
LoadPointsFilename points.pdb
Padding 1.09
GridSpacing     2.0

(Note that the particular region selected here is given for didactic purposes only. In fact, it is not well suited for the chosen protein binding site, protein.pdb, because it does not fully encompass the binding pocket and extends beyond the boundaries of the protein.)

The Padding variable is set to 1.09 because that is the radius of a hydrogen atom. Basically, we will be measuring the volume of the binding site that can be occupied by hydrogen atoms.

To obtain the volume of the pocket, simply run POVME with the specified input file:

python POVME.py measure_pocket.ini > pocket.pdb

If you open the file pocket.pdb in a text editor, you'll see that the volume is given in the header:

REMARK PDBFileName = protein.pdb
REMARK LoadPointsFileName = points.pdb
REMARK padding = 1.09
REMARK Volume = 32.25 Cubic Angtroms
REMARK Execution time = 5.87918996811 sec
ATOM      1  X     X X   1      60.000  22.000  60.000  1.00  0.00
ATOM      1  X     X X   1      62.000  24.000  62.000  1.00  0.00
ATOM      1  X     X X   1      62.000  36.000  64.000  1.00  0.00
ATOM      1  X     X X   1      64.000  34.000  66.000  1.00  0.00
ATOM      1  X     X X   1      64.000  36.000  66.000  1.00  0.00
...

Note that if the following line is included in the input file:

OutputReceptor yes

the output file (pocket.pdb) will also contain the protein atoms immediately adjact to the binding pocket, in addition to including the points occupying the volume of the binding site.

 

5. Optionally remove discontiguous points

As an optional step, remaining points that are isolated or discontiguous can be removed. For example, suppose a tunnel-like binding site collapses in the middle, so that the points used to define the volume of that binding site are divided into two discontinuous regions (see pocket.pdb, for example). The sum of these two discontiguous volumes may misrepresent the actual volume of the pocket; rather, it may be useful to remove the region distal to the collapse and consider only the volume of the proximal region.

To accomplish this, the ContiguousSeedSphere and ContiguousSeedBox commands are used. These define a region of the binding site that is considered essential. Only points that are contiguous with points in this region will be considered when calculating the volume. Additionally, the ContiguousPointsCriteria variable determines the minimum number of points that must be adjacent to a given point for it to be considered contiguous. Here's an example of an input file (measure_pocket_contiguous.ini) to implement this:

PDBFileName protein.pdb
LoadPointsFilename points.pdb
Padding 1.09
GridSpacing 2.0

Contiguous True
ContiguousSeedSphere 48.0 38.0 76.0 3.0
ContiguousPointsCriteria 2

To generate the contiguous volume (pocket_contiguous.pdb), simply run:

python POVME.py measure_pocket_contiguous.ini > pocket_contiguous.pdb