OPAL ML Score
OPAL ML Score works out how favourable a protein and ligand sitting together is, reported as an interaction energy in kcal/mol that is written ΔG. It uses the OPAL machine learning potential, a neural network model that predicts the energy of a molecular system quickly while staying close to quantum level accuracy.
The score is the energy of the protein and ligand together minus the energy of each on its own. A more negative number means the two are happier together, that is, the ligand binds more strongly. The tool computes this directly on the structure you give it, without running a long simulation, so it is a fast way to score and rank poses.
A pose is one position and orientation of the ligand in the pocket. If you give the tool several poses, it scores each one and ranks them.
When to use it
Section titled “When to use it”Use it as the scoring step after docking and optional optimisation. The usual flow is Docking or Covalent Docking to get poses, then OPAL ML Optimize to relax them, then this tool to score them. You can feed it the ZIP of optimised structures from OPAL ML Optimize, or score raw structures directly from a protein file and a ligand. It is much faster than a free energy simulation; when you want the most accurate binding strength on your best hits, follow up with Absolute Binding Free Energy.
Inputs
Section titled “Inputs”You provide the structure either as a ZIP of optimised poses, or as a protein file together with a ligand. All inputs are optional in the schema, but you must give one of those two starting points.
| Input | Required | What it is |
|---|---|---|
optimized_file | no | A ZIP of optimised .traj files from an OPAL ML Optimize run. |
protein_file | no | A protein structure in PDB or CIF format, for scoring a raw structure directly. |
ligand_file | no | A ligand structure in SDF format. |
ligand_resname | no | The residue name of the ligand if it is already inside the protein PDB. |
chain_id | no | Which protein chain to use. |
protein_charge | no, default 0 | The formal charge of the protein fragment. |
ligand_charge | no, default 0 | The formal charge of the ligand. Worked out from the SDF when left at 0. |
keep_cofactors | no | JSON list of cofactor residue names to keep, for example ["ZN", "HEM"]. |
extra_chains | no | JSON list of extra protein chain IDs to include, for example ["B"]. |
How to run it
Section titled “How to run it”Submit your structures from Azulene Studio, the Python SDK, or the CLI. New here? The Get started page walks through installing, logging in, and running a ready made example first.
In Azulene Studio
Section titled “In Azulene Studio”Open OPAL ML Score from the tools list, then on the Inputs and Parameters step provide your input. Either upload the ZIP of optimised poses, or upload a protein file plus a ligand file (or name the ligand already inside the protein with its residue name and chain), then Review and Submit.
From the Python SDK
Section titled “From the Python SDK”from opal import jobs
result = jobs.submit( job_type="opal_ml_score", input_data={ "protein_file": "/path/to/your/protein.pdb", "ligand_resname": "PJE", "chain_id": "C", },)From the CLI
Section titled “From the CLI”Pass the inputs as a JSON string.
opal jobs submit --job-type opal_ml_score \ --input-data '{"protein_file": "/path/to/your/protein.pdb", "ligand_resname": "PJE", "chain_id": "C"}'Reading the result
Section titled “Reading the result”The headline numbers are the best ΔG in kcal/mol (best_dg_kcal_mol), the score of the strongest binding pose, and the number of poses scored (n_poses_scored). A more negative ΔG means stronger predicted binding.
Below that is a ranked table of every scored pose, sorted strongest first. Each row has a rank (numbered from 1), a pose label (trial_label), and that pose’s ΔG in kcal/mol (dg_kcal_mol). The scores are also drawn as a bar chart of ΔG per pose. You can sort the table, colour it by score, and export it to CSV. (For protein to protein inputs, the table adds extra columns for the per chain charges and atom counts; for the ordinary protein and ligand case those columns are blank.)
This is a fast interaction energy, not a full free energy simulation, so use it to rank poses and pick winners rather than as a final, publication grade binding number. For the most reliable score, score structures that have already been relaxed by OPAL ML Optimize rather than raw docked poses. If your ligand carries a charge and you are not starting from an SDF, set ligand_charge so the energy is computed correctly. When you need an accurate absolute binding free energy on your best hits, follow up with Absolute Binding Free Energy.