drug-pose-validation
Goal
To filter docked or generated ligand poses through physical plausibility checks (bond lengths, angles, planarity, internal clashes, protein-ligand clashes, stereochemistry) using PoseBusters, producing a validated subset of poses plus a machine-readable report.
This skill sits between docking (drug-docking-vina) and downstream refinement (drug-complex-system-builder, drug-protein-ligand-md), ensuring that only physically reasonable poses enter expensive simulation stages.
Instructions
1. Prepare inputs
You need:
- Docked poses: an SDF file containing one or more ligand poses (e.g., output from Vina converted to SDF, or from any pose-generation tool).
- Receptor structure (optional but recommended): PDB file of the protein. When provided, PoseBusters also checks for protein-ligand steric clashes.
If your docked poses are in PDBQT format, convert them to SDF first:
# Env: drugdisc-agent
obabel docking/results/ligand_docked.pdbqt -O docking/results/ligand_docked.sdf -m
2. Run pose validation
# Env: drugdisc-agent
python .agents/skills/drug-pose-validation/scripts/validate_poses.py \
--poses docking/results/ligand_docked.sdf \
--receptor docking/inputs/protein_prepared.pdb \
--output_dir docking/validation/
This produces:
docking/validation/validation_report.json: per-pose pass/fail results for each checkdocking/validation/valid_poses.sdf: SDF containing only poses that pass all checksdocking/validation/summary.txt: human-readable summary
3. Run without receptor (ligand-only checks)
When no receptor is available, run ligand-only validation (checks bond geometry, planarity, stereochemistry, internal clashes):
# Env: drugdisc-agent
python .agents/skills/drug-pose-validation/scripts/validate_poses.py \
--poses generated/conformers.sdf \
--output_dir generated/validation/
4. Interpret results
The validation report JSON contains per-pose results:
{
"n_poses_input": 10,
"n_poses_valid": 7,
"pass_rate": 0.7,
"per_pose": [
{
"pose_index": 0,
"valid": true,
"tests": {
"mol_pred_loaded": true,
"sanitization": true,
"bond_lengths": true,
"bond_angles": true,
"internal_steric_clash": true,
"aromatic_ring_flatness": true,
"internal_energy": true,
"minimum_distance_to_protein": true,
"volume_overlap_with_protein": true
},
"diagnostics": { "...": "..." }
}
]
}
The tests dict contains the PoseBusters pass/fail columns that determine validity. The diagnostics dict includes all boolean columns from the full report (loading status, extra sanitization checks, etc.) for debugging. Column names come directly from PoseBusters and vary by mode.
Key tests (ligand-only, mol mode):
- bond_lengths / bond_angles: flags chemically unreasonable geometry
- aromatic_ring_flatness: aromatic rings should be planar
- internal_steric_clash: atoms within the ligand should not overlap
- internal_energy: conformer energy should be reasonable relative to an ensemble average
Additional tests with receptor (dock mode):
- minimum_distance_to_protein: ligand atoms should not penetrate protein atoms
- volume_overlap_with_protein: ligand should not occupy protein-filled space
Poses failing any test are excluded from valid_poses.sdf. If all poses fail, revisit docking parameters or ligand preparation.
Examples
Example: validate Vina docking output for HIV-1 protease
# Env: drugdisc-agent
obabel hiv_docking/results/indinavir_docked.pdbqt -O hiv_docking/results/indinavir_docked.sdf -m
# Env: drugdisc-agent
python .agents/skills/drug-pose-validation/scripts/validate_poses.py \
--poses hiv_docking/results/indinavir_docked.sdf \
--receptor hiv_docking/inputs/1HSG_prepared.pdb \
--output_dir hiv_docking/validation/
Constraints
- Environment: Requires
drugdisc-agentwithposebustersinstalled. - Input format: Poses must be SDF. Convert PDBQT to SDF with Open Babel before running.
- Receptor: Optional but strongly recommended. Without it, protein-ligand clash checks are skipped.
- Hydrogen handling: PoseBusters expects explicit hydrogens on the ligand. Ensure hydrogens are present in the input SDF (they should be if you used drug-ligand-prep).
References
- Buttenschoen, M.; Morris, G. M.; Deane, C. M. PoseBusters: AI-Based Docking Methods Fail to Generate Physically Valid Poses or Generalise to Novel Sequences. Chem. Sci. 2024, 15, 3130-3139. https://doi.org/10.1039/D3SC04185A
Author: Matthew Cox Contact: GitHub @mcox3406
Scan to join WeChat group