Docking Plugin¶
Package: caddforge-docking
Public source tag
This page describes caddforge-docking 0.7.0, tagged as v0.7.0.
Published on PyPI; see the version matrix.
The docking plugin provides docking and rescoring workflows through the standard CADDForge workflow/job interface.
Install optional GUI support with:
Requirements and example status¶
The example library provides downloadable configuration templates for every workflow on this page, plus a shared Python runner. File paths refer to inputs you must prepare; these are not bundled research datasets. Schema validation does not establish scientific validity or engine availability. See the version matrix for release tags and publication status.
unidock¶
Runs GPU-accelerated docking with Uni-Dock.
CLI:
YAML:
receptor_path: data/protein.pdbqt
ligand_multisdf_path: data/ligands.sdf
center_x: 0.0
center_y: 0.0
center_z: 0.0
size_x: 20
size_y: 20
size_z: 20
search_mode: fast
exhaustiveness: 384
batch_size: 50000
Python:
from caddforge.core.execution import load_result_for_job, submit_workflow
from caddforge.plugins import get_tool
spec = get_tool("docking", "unidock")
cfg = spec.config_cls(
receptor_path="data/protein.pdbqt",
ligand_multisdf_path="data/ligands.sdf",
center_x=0.0,
center_y=0.0,
center_z=0.0,
size_x=20.0,
size_y=20.0,
size_z=20.0,
backend="local",
)
workflow = spec.workflow_cls(cfg)
job = submit_workflow(
workflow, cfg, backend_name=cfg.backend,
input_ports=tuple(getattr(spec.plugin, "input_ports", ())),
)
result = load_result_for_job(job)
if result is not None:
print(result.paths["best_scores_csv"])
Outputs to inspect: results/docked_out/, results/best_scores.csv,
results/result_record.json.
exhaustiveness defaults to 384 in this release. Set it explicitly when reproducing runs made
with an earlier default.
idockya¶
Runs docking with OpenChemLib iDockYa through pyocl, provided by
pyocl-idor>=0.8.3. Java 21 or newer is required; configure JAVA_HOME accordingly.
CLI:
YAML:
receptor_path: data/receptor.sdf
native_ligand_path: data/native_ligand.sdf
ligand_path: data/ligands.sdf
output_format: sdf
output_dir_name: docked_out
num_workers: 0
max_inflight_tasks: 0
Python:
from caddforge.core.execution import load_result_for_job, submit_workflow
from caddforge.plugins import get_tool
spec = get_tool("docking", "idockya")
cfg = spec.config_cls(
receptor_path="data/receptor.sdf",
native_ligand_path="data/native_ligand.sdf",
ligand_path="data/ligands.sdf",
output_format="sdf",
backend="local",
)
workflow = spec.workflow_cls(cfg)
job = submit_workflow(
workflow, cfg, backend_name=cfg.backend,
input_ports=tuple(getattr(spec.plugin, "input_ports", ())),
)
result = load_result_for_job(job)
if result is not None:
print(result.metrics)
Outputs to inspect: results/docked_out/, results/best_scores.csv,
results/result_record.json.
gnina¶
Runs docking or rescoring with the gnina executable.
CLI:
YAML:
receptor_path: data/protein.pdb
ligand_path: data/ligands.sdf
autobox_ligand_path: data/reference_ligand.sdf
flexres:
- A:194
- A:244
- A:252
scoring: dkoes_fast
cnn_scoring: rescore
no_gpu: true
output_format: sdf
Python:
from caddforge.core.execution import load_result_for_job, submit_workflow
from caddforge.plugins import get_tool
spec = get_tool("docking", "gnina")
cfg = spec.config_cls(
receptor_path="data/protein.pdb",
ligand_path="data/ligands.sdf",
autobox_ligand_path="data/reference_ligand.sdf",
flexres=["A:194", "A:244", "A:252"],
no_gpu=True,
backend="local",
)
workflow = spec.workflow_cls(cfg)
job = submit_workflow(
workflow, cfg, backend_name=cfg.backend,
input_ports=tuple(getattr(spec.plugin, "input_ports", ())),
)
result = load_result_for_job(job)
if result is not None:
print(result.paths["best_scores_csv"])
Outputs to inspect: results/docked_out/, results/gnina_logs/,
results/best_scores.csv, results/result_record.json.
Flexible docking also writes raw gnina flex receptor outputs when write_flex_receptor_output is
enabled. By default, gnina additionally writes one full protein-ligand complex PDB, one protein-only
PDB, and one ligand-only SDF per generated pose under results/flexible_complexes/. These artifacts
preserve protein and ligand hydrogen presence from the input receptor and ligand records. Ligand
bond orders and formal charges are copied from the input ligand; PDB complexes emit ligand bond
orders as CONECT records, but downstream support for interpreting those bond orders is
reader-dependent. Use a PDB receptor for this mode, or set
write_flexible_complexes: false to keep only the raw gnina outputs.
Pipeline output aliases include scores, poses, flexible_complexes_manifest,
flexible_complexes, flexible_proteins, and flexible_ligand_poses. The flexible artifact
aliases are optional and are emitted only when flexible complex generation produces them.
On Slurm, GNINA stages static inputs once in node-local scratch, synchronizes live text logs, and
publishes completed ligand artifacts asynchronously. log_sync_interval_seconds and
result_sync_interval_seconds control those retry intervals. A temporary shared-filesystem outage
does not interrupt docking, but the workflow does not report success if required artifacts remain
unpublished after the final retry.
Compressed inputs¶
Declared receptor, ligand, and reference inputs may use a trailing .gz; CADDForge expands
them in runtime scratch. UniDock indexes can reference .sdf.gz ligands.