Skip to content

Protein-Ligand Pose Refinement

Protein-Ligand Pose Refinement

Refine the shape of a docked protein and ligand with a machine learning potential.

Protein-Ligand Pose Refinement relaxes a binder within a receptor structure using the OPAL machine learning potential. The job then scores the relaxed geometry and returns a scoring envelope. The relaxed complex is published as relaxed_complex_file, and the reported score corresponds to the coordinates after relaxation.

The job supports small molecules, peptides, macrocycles and stapled peptides. Specifying binder_chain selects the peptide path.

Apply Protein-Ligand Pose Refinement after Docking or Covalent Docking to poses selected for geometric refinement and rescoring. The job returns its own score. A separate Protein-Ligand Scoring run is required only for geometries that must remain unrelaxed.

Submit the complex as a structure. A small-molecule calculation requires the protein and either a ligand file or the ligand residue name within the protein structure. A peptide, macrocycle or stapled-peptide calculation requires the receptor and binder chain identifiers.

InputRequiredWhat it is
protein_fileyesProtein structure in PDB or CIF format.
chain_idnoReceptor chain containing the target against which the binder is scored.
ligand_filenoLigand structure in SDF format, positioned in the protein coordinate frame.
ligand_resnamenoResidue name of a ligand represented as a HETATM within the protein file.
binder_chainnoBinder chain within the same structure. Specifying this field selects the peptide path.
ligand_smilesnoChemical representation of the binder. Required for a binder with no AMBER parameters, including a macrocycle containing non-canonical amino acids, a stapled peptide, or a single-residue ligand transferred from docking. Omission causes the run to be rejected to prevent scoring without binder electrostatics. Specify no more than one of ligand_smiles, helm and drug_smiles.
helmnoBinder in HELM2 notation, as an alternative to ligand_smiles. HELM2 is preferred for a macrocycle. See the HELM reference.
drug_smilesnoSynonym for ligand_smiles, retained so a chain from Docking can forward the field under the name used by that job.
opt_fmaxno, default 0.05Force convergence threshold in eV per Angstrom. Smaller values produce tighter geometries and require more steps.
opt_maxiterno, default 200Maximum number of optimisation steps. Reaching this limit before convergence does not cause an error; the resulting geometry is scored.
flexible_radiusno, default 0Radius in Angstroms within which receptor side chains can relax with the binder. A value of 0 fixes every receptor atom and preserves the established default behaviour. A value of 4 defines a suitable pocket shell. Only side chains move; the backbone remains fixed.
flexible_residuesnoReceptor residues selected for relaxation, specified as CHAIN:RESSEQ, for example A:145,A:41. This field takes precedence over flexible_radius. Residue numbers must be used because protonation relabels histidines before relaxation.
crop_radiusno, default 10For a peptide binder, distance within which receptor residues are retained around the binder.
interior_dielectricno, default 1Solute interior dielectric for the peptide path. See Protein-Ligand Scoring for the dependence of a charged binder’s score sign on this value.
keep_cofactorsnoCofactor residue names to retain, for example ZN or ZN,NDP.
extra_chainsnoAdditional protein chain IDs to include.

Jobs can be submitted through Azulene Studio, the Python SDK, or the CLI. The Get started page contains installation, authentication and submission instructions.

Select Protein-Ligand Pose Refinement from the tools list. On the Inputs and Parameters step, upload the protein structure. For a small molecule, add a ligand file or specify the ligand residue name and chain. For a peptide binder, specify the receptor and binder chains. Select Review and Submit to start the job.

from azulene import jobs
result = jobs.submit(
job_type="opal_ml_optimize",
input_data={
"protein_file": "/path/to/your/protein.pdb",
"ligand_resname": "N3",
"chain_id": "A",
},
)

Pass the inputs as a JSON string.

Terminal window
azulene jobs submit --job-type opal_ml_optimize \
--input-data '{"protein_file": "/path/to/your/protein.pdb", "ligand_resname": "N3", "chain_id": "A"}'

The output contains a score for the relaxed geometry in the same envelope used by Protein-Ligand Scoring, together with the relaxed structure in relaxed_complex_file.

Check pose_relaxed_in_pocket first. This field records whether relaxation completed for the job. If relaxation fails for a pose, the supplied pose is scored without coordinate modification, and the result records this outcome. The resulting score remains valid; it describes the supplied, unrelaxed geometry.

binder_route identifies the executed path as either the small-molecule path or the peptide path.

When receptor residues are permitted to move, receptor_shift_a, n_flexible_residues and flexible_residues_resolved report the receptor displacement and the residues selected for relaxation. Specified residues absent from the scored receptor, owing to an incorrect chain or removal during cropping, are listed in the warnings.

Do not compare an induced-fit score against a rigid-pocket one. Side-chain relaxation through flexible_radius or flexible_residues produces systematically more negative results than the frozen-receptor default. Maintain a constant setting for all compounds ranked within a campaign.

Side-chain flexibility should be selected deliberately. It may be appropriate for a macrocycle or peptide at a shallow protein-protein interface, where binding depends partly on side-chain accommodation. The frozen-receptor default is appropriate for a small molecule in a well-formed pocket.

Relaxation requires several minutes for a peptide binder and approximately one minute for a small molecule. Specify structural cofactors with keep_cofactors to preserve the corresponding pocket geometry.