Computing volume¶
The povme volume
command in POVME is designed to compute and analyze the volume of molecular pockets based on user-specified inclusion and exclusion regions.
This command can process both static protein structures and molecular dynamics (MD) trajectories to identify binding pocket volumes and characteristics.
YAML configuration¶
The command is configured through a YAML input file that will be used to update PocketVolumeConfig
that defines the parameters for pocket volume calculations.
grid_spacing: 1.0
load_points_path: null
points_inclusion_sphere:
- center: [65.0, 98.0, 50.0]
radius: 16.0
- center: [-100.0, -100.0, -100.0]
radius: 10.0
save_points: true
distance_cutoff: 1.09
convex_hull_exclusion: true
contiguous_pocket_seed_sphere:
- center: [67.0, 102.0, 57.0]
radius: 4.0
contiguous_points_criteria: 3
use_ray: true
n_cores: 8
save_individual_pocket_volumes: true
save_pocket_volumes_trajectory: true
output_equal_num_points_per_frame: true
save_volumetric_density_map: true
compress_output: false
compress_output: bool = False
¶
Whether to compress all output files using gz compression to save disk space.
contiguous_pocket_seed_box: list[dict[str, list[float]]] = []
¶
Seed boxes for contiguous pocket detection.
A list of dictionaries, each specifying a rectangular region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
box's center.
- `"lengths"` (`list[float]`): The lengths of the box along the
x, y, and z axes.
contiguous_pocket_seed_sphere: list[dict[str, list[float] | float]] = []
¶
Seed regions for contiguous pocket detection.
A list of dictionaries, each specifying a spherical region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
sphere's center.
- `"radius"` (`float`): The radius of the sphere.
contiguous_points_criteria: int = 4
¶
The minimum number of neighboring points required to consider two pocket volumes contiguous.
convex_hull_exclusion: bool = True
¶
Whether to calculate the convex hull of receptor atoms near the pocket and exclude points outside it.
distance_cutoff: float = 1.09
¶
The distance from a receptor atom's van der Waals surface below which points are excluded.
Default is 1.09 Angstroms, the van der Waals radius of a hydrogen atom.
grid_spacing: float = 1.0
¶
The distance, in Angstroms, between adjacent points.
Smaller values improve accuracy but increase computational cost.
load_points_filename: str | None = None
¶
Optional filename to load a previously saved point field.
Should use the .pdb.npy
format.
load_points_path: str | None = None
¶
Load points from npy
file.
n_cores: int = 4
¶
Number of processors to use for the calculation on Unix-based systems.
output_equal_num_points_per_frame: bool = False
¶
Whether to add extra points at the origin (0.0, 0.0, 0.0) to ensure the same number of points in each frame.
points_exclusion_box: list[dict[str, list[float]]] = []
¶
A list of rectangular prisms ('boxes') to exclude from the pocket-encompassing region.
A list of dictionaries, each specifying a rectangular region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
box's center.
- `"lengths"` (`list[float]`): The lengths of the box along the
x, y, and z axes.
points_exclusion_sphere: list[dict[str, list[float] | float]] = []
¶
A list of spheres to exclude from the pocket-encompassing region.
A list of dictionaries, each specifying a spherical region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
sphere's center.
- `"radius"` (`float`): The radius of the sphere.
points_inclusion_box: list[dict[str, list[float]]] = []
¶
A list of rectangular prisms ('boxes') to include in the pocket-encompassing region.
A list of dictionaries, each specifying a rectangular region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
box's center.
- `"lengths"` (`list[float]`): The lengths of the box along the
x, y, and z axes.
points_inclusion_sphere: list[dict[str, list[float] | float]] = []
¶
A list of spheres to include in the pocket-encompassing region.
A list of dictionaries, each specifying a spherical region. Each dictionary must have:
- `"center"` (`list[float]`): The x, y, and z coordinates of the
sphere's center.
- `"radius"` (`float`): The radius of the sphere.
save_individual_pocket_volumes: bool = False
¶
Whether to save the pocket-volume points for each frame to separate PDB files.
save_pocket_volumes_trajectory: bool = False
¶
Whether to save all pocket-volume points for each frame to a single PDB trajectory file.
save_points: bool = False
¶
Whether to save the point field to a PDB file for visualization or reuse.
save_volumetric_density_map: bool = False
¶
Whether to save a volumetric density map in DX format.
use_ray: bool = False
¶
Parallelize computations with ray.
Running the command¶
Once the configuration file is ready, you can use the povme detect
command to identify pockets.
The command syntax is:
-c
: Path to the YAML configuration file.-i
: Input file, typically a PDB structure or trajectory.-o
: Output directory.
Outputs¶
By default, POVME writes several files to the disk. POVME will save the volume measurements to a CSV file that can be easily pasted into popular spreadsheet programs.
POVME also optionally saves the pocket-occupying points of each frame to PDB file(s) on this disk. The user can instruct the program to save these points to separate files and/or to a single PDB trajectory. Some visualization programs (e.g., VMD) are only compatible with trajectories with the same number of atoms in each frame. To satisfy this requirement, POVME can optionally write extra points to the origin (0.0, 0.0, 0.0) on a frame-by-frame basis.
Finally, POVME also optionally saves a volumetric density map in the Data Explorer (DX) format. A volumetric density value is associated with each pocket-occupying point by calculating the fraction of all trajectory pocket volumes that include the given point. If the density map is displayed as an isosurface, the value of the isosurface expresses the fraction of time (e.g., throughout the simulation) that the pocket included the displayed volume.