| name | autodock-vina |
| description | Structure-based docking with AutoDock Vina, Vinardo, and AutoDock4 through the Meeko toolchain. Use this skill to define a docking box, prepare receptors and ligands as PDBQT, run single or batch docking, rescore, and interpret affinities, poses, and ligand efficiency. Covers box definition from a reference ligand or pocket residues, protonation and tautomer decisions, flexible side chains, exhaustiveness and seeds, redocking validation, and virtual screening over compound libraries. Also trigger on vina, smina, gnina, mk_prepare_ligand, mk_prepare_receptor, mk_export, scrub.py, PDBQT, autogrid4, docking box, or binding-pose prediction. |
| license | MIT |
| allowed-tools | Read Write Edit Bash |
| compatibility | The bundled scripts need only Python 3.10+ and the standard library. Running a docking calculation additionally needs the AutoDock Vina binary (conda install -c conda-forge vina, or pip install vina 1.2.7) and Meeko 0.7+ (pip install meeko) on PATH; SMILES input also needs molscrub. CPU only; no GPU or API key required. |
| metadata | {"version":"1.0","skill-author":"K-Dense Inc.","openclaw":{"emoji":"🔬","homepage":"https://autodock-vina.readthedocs.io"},"hermes":{"category":"research"}} |
AutoDock Vina
Classical, CPU-only, physics-style docking: put a ligand in a defined box and search for the pose
that minimises an empirical scoring function. Unlike diffdock, it returns a score you can rank
with; unlike boltz, it needs a receptor structure and a defined site, and runs on a laptop.
Docs: autodock-vina.readthedocs.io ·
meeko.readthedocs.io
Checked against: Vina 1.2.7, Meeko 0.7.1.
Read references/receptor-preparation.md and
references/ligand-preparation.md before running anything —
that is where accuracy is won. Read
references/scoring-and-interpretation.md before
reporting a number, and references/troubleshooting.md when
something fails.
Before anything else: what the score is
Vina's "affinity" in kcal/mol is an empirical scoring function with roughly 2–3 kcal/mol
error — about two orders of magnitude in Kd. It is useful for enriching a library and for
predicting a pose. It is not a predicted binding free energy, it is not comparable across targets
or across scoring functions, and a −9.5 and a −8.2 are not distinguishable. Report it as what it
is.
It also scales with heavy-atom count, so a library ranked by raw score puts the biggest
molecules on top. Rank with ligand efficiency alongside; the parser computes it.
The workflow
python skills/autodock-vina/scripts/make_box.py 1iep.cif \
--reference-ligand STI --out box.txt --box-pdb box.pdb
mk_prepare_receptor.py -i receptor_H.pdb -o receptor -p -v \
--box_center 15.190 53.903 16.917 --box_size 20 20 20
scrub.py ligands.smi -o ligands_3d.sdf --ph 7.4
python skills/autodock-vina/scripts/dock_batch.py run \
--receptor receptor.pdbqt --config box.txt --ligands ligands_3d.sdf \
--exhaustiveness 32 --seed 42 --workers 8 --out-dir docking/
python skills/autodock-vina/scripts/parse_vina_output.py docking/*_out.pdbqt \
--config box.txt --summary
dock_batch.py check verifies the toolchain first; --dry-run prints every command without
running it.
The box is the parameter that matters
Too small and the correct pose cannot fit. Too large and the search dilutes — the exhaustiveness
budget is fixed, so doubling the volume halves the sampling density and quietly degrades every
result.