What Is AutoDock Vina?

AutoDock Vina is the most widely used open-source molecular docking program, developed by the Scripps Research Institute. It predicts how a small molecule — the ligand — binds to a protein — the receptor — by sampling thousands of orientations and scoring each pose using a machine-learning-derived scoring function. Vina has been cited over 12,000 times and is the gold standard for free molecular docking.

Unlike its predecessor AutoDock 4, Vina uses an iterative local-lamarckian genetic optimization algorithm that is both faster and more accurate. A typical single-ligand docking completes in 5–10 seconds on modern hardware. Vina supports flexible receptor docking (side-chain flexibility for specified residues) and can be run from the command line or via the Python API.

Vina outputs PDBQT files containing the docked pose and a binding affinity estimate in kcal/mol. More negative values indicate stronger predicted binding. The tool is free for academic and commercial use under the Apache 2.0 license.

Installing Vina and Dependencies

Before docking, you need three tools installed: AutoDock Vina (the docking engine), AutoDockTools (for structure preparation), and Open Babel (for file format conversion). Here is the installation process for each major platform.

Using conda (Recommended)

Conda is the simplest installation path on all platforms:

conda create -n vina python=3.10
conda activate vina
conda install -c conda-forge vina
conda install -c conda-forge openbabel
conda install -c conda-forge autodocktools

Using pip + Binary

If you prefer pip, install the Python bindings and download the Vina binary separately:

pip install meeko vina
# Download binary from https://vina.scripps.edu/downloads/
# Extract and add to PATH

From Source

For full control, build from the GitHub repository:

git clone https://github.com/ccsb-scripps/AutoDock-Vina.git
cd AutoDock-Vina/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

Verifying the Installation

Run a quick test to confirm everything works:

vina --help
# Should print usage information
python -c "from vina import Vina; v = Vina(sf_name='vina'); print('Vina OK')"

Ligand Preparation

Docking requires the ligand in PDBQT format — a PDB extension that includes partial charges and atom types. There are two common workflows depending on whether your ligand is a SMILES string, an SDF file, or a PDB file.

From SMILES to PDBQT

If you have a SMILES string (for example, imatinib: CC1=C(C=C(C=C1)NC(=O)C2=CC=C(C=C2)CN3CCN(CC3)C)NC4=NC=CC(=N4)C5=CN=CC=C5), convert it step by step:

# Step 1: Generate 3D coordinates
obabel -:"CC1=C(C=C(C=C1)NC(=O)C2=CC=C(C=C2)CN3CCN(CC3)C)NC4=NC=CC(=N4)C5=CN=CC=C5" -O imatinib.sdf --gen3d

# Step 2: Add charges and convert to PDBQT
obabel imatinib.sdf -O imatinib.pdbqt --partialcharge gasteiger

From SDF to PDBQT

obabel input.sdf -O ligand.pdbqt --partialcharge gasteiger

From PDB to PDBQT

obabel input.pdb -O ligand.pdbqt --partialcharge gasteiger
Worked Example: Imatinib Preparation

Imatinib (Gleevec) has the molecular formula C₂₉H₃₁N₇O. When converting from SMILES to PDBQT, Open Babel generates a 3D structure with Gasteiger partial charges. The resulting PDBQT file contains 73 heavy atoms. The ligand should be saved with all rotatable bonds free — Vina will sample these during the search.

Protein Preparation

Protein preparation is the most critical step. A poorly prepared receptor will produce unreliable docking results regardless of how good the ligand preparation is.

Step 1: Download the Structure

Download a PDB file from the Protein Data Bank. For our worked example, we use the ABL1 kinase domain in complex with imatinib (PDB: 2HYY):

wget https://files.rcsb.org/download/2HYY.pdb

Step 2: Clean the Structure

Remove water molecules, co-crystallized ligands, and alternative conformations. In AutoDockTools:

  • Open the PDB file in AutoDockTools
  • Delete all water molecules (Edit → Delete → Delete Water)
  • Remove the co-crystallized imatinib ligand
  • Remove alternate conformations (keep only the first conformer)

Step 3: Add Hydrogens and Charges

AutoDockTools adds polar hydrogens and Gasteiger charges automatically:

  • Edit → Hydrogens → Add → Polar Only
  • Edit → Charges → Compute Gasteiger
  • Grid → Macromolecule → Choose → select the cleaned protein
  • Save as PDBQT: Grid → Output → Save GPF (then run autogrid4)

Step 4: Define the Grid Box

The grid box defines the search space. Center it on the binding site:

  • Grid → Grid Box → set center to the known binding site coordinates
  • For 2HYY, center on the ATP-binding pocket: x=28.5, y=12.3, z=17.8
  • Set box size: typically 20–30 Å in each dimension
  • Save the grid parameter file (.gpf)

Running Docking

With both protein and ligand prepared, run docking with a single command:

vina --receptor protein.pdbqt \
     --ligand imatinib.pdbqt \
     --center_x 28.5 --center_y 12.3 --center_z 17.8 \
     --size_x 22 --size_y 22 --size_z 22 \
     --exhaustiveness 32 \
     --num_modes 10 \
     --out imatinib_out.pdbqt

Key Parameters Explained

ParameterDefaultWhat It Does
--exhaustiveness8Controls search thoroughness. Increase to 32–64 for harder targets.
--num_modes9Maximum number of binding poses to return.
--energy_range3Maximum energy difference from the best pose (kcal/mol).
--cpuall coresNumber of CPU threads. More threads = faster search.

Running Batch Docking

For screening multiple ligands, use a shell loop:

for ligand in ligands/*.pdbqt; do
    name=$(basename "$ligand" .pdbqt)
    vina --receptor protein.pdbqt \
         --ligand "$ligand" \
         --center_x 28.5 --center_y 12.3 --center_z 17.8 \
         --size_x 22 --size_y 22 --size_z 22 \
         --exhaustiveness 16 \
         --out "results/${name}_out.pdbqt" \
         --log "results/${name}.log"
done

Try Docking Without Installing Software

Paste your ligand, upload a protein, and get docked poses in seconds — no command line required.

Open VigyanLLM Docking →

Interpreting Results

Vina outputs the docked poses in PDBQT format and prints a summary to the terminal or log file. The key output is the binding affinity estimate for each pose.

Reading the Output

The Vina output log shows each pose ranked by binding affinity:

-----  |  kcal/mol
-----  |  1        -10.2    |  0.000
-----  |  2         -9.8    |  1.423
-----  |  3         -9.4    |  2.107
-----  |  4         -9.1    |  2.851
-----  |  5         -8.7    |  3.218

Pose 1 has the best (most negative) score at −10.2 kcal/mol. The second column shows the RMSD from the best pose — lower RMSD means the poses are more similar in orientation.

Visualizing in PyMOL

To visualize the best pose in PyMOL:

pymol protein.pdb imatinib_out.pdbqt
# In PyMOL:
# select ligand, resn imatinib
# show sticks, ligand
# show surface, protein and binding_site
# zoom ligand

What the Score Means

  • Below −8.0 kcal/mol: strong predicted binding — worth experimental validation.
  • −6.0 to −8.0 kcal/mol: moderate binding — possible hit, verify with consensus scoring.
  • Above −5.0 kcal/mol: weak binding — unlikely to be a meaningful hit.

For our imatinib-ABL1 example, Vina reproduces the crystallographic pose with an RMSD of 1.4 Å and a score of −10.2 kcal/mol, consistent with imatinib's experimentally determined IC₅₀ of approximately 25 nM.

Frequently Asked Questions

What is AutoDock Vina?

AutoDock Vina is an open-source molecular docking program developed by the Scripps Research Institute. It predicts how small molecules (ligands) bind to protein targets by sampling thousands of orientations and scoring each pose using a machine-learning-derived scoring function. Vina is widely used for drug discovery, virtual screening, and structural biology research. It is free for all use under the Apache 2.0 license and supports flexible receptor docking.

How do I install Vina?

The easiest way to install AutoDock Vina is via conda: conda install -c conda-forge vina. You also need Open Babel for file conversion (conda install -c conda-forge openbabel) and AutoDockTools for structure preparation. Alternatively, download binaries from vina.scripps.edu or build from source on GitHub. Verify the installation by running vina --help.

What file formats does Vina use?

AutoDock Vina uses PDBQT files for both protein and ligand inputs. PDBQT extends the standard PDB format with partial charges and atom types needed for docking. Convert PDB or SDF files to PDBQT using Open Babel (obabel input.pdb -O output.pdbqt) or AutoDockTools. The output is also PDBQT, which can be visualized in PyMOL, Chimera, or VMD.

How do I interpret Vina scores?

Vina scores are binding affinity estimates in kcal/mol where more negative values indicate stronger predicted binding. Below −8.0 kcal/mol suggests good binding, −6.0 to −8.0 indicates moderate binding, and above −5.0 suggests weak or no meaningful binding. Scores are most reliable for relative ranking of compounds against the same target, not for absolute binding affinity prediction.

What is a good Vina binding affinity?

A good Vina binding affinity is typically below −8.0 kcal/mol, though this depends on the target and ligand class. Imatinib against ABL1 kinase scores approximately −10.2 kcal/mol in Vina. Scores below −10.0 kcal/mol are considered very strong. Always validate docking predictions experimentally and use consensus scoring across multiple tools for higher confidence.

References

  1. Trott O., Olson A.J. (2010). AutoDock Vina: Improving the speed and accuracy of docking with a new scoring function, efficient optimization, and multithreading. Journal of Computational Chemistry, 31(2), 455-461.
  2. Morris G.M., et al. (2009). AutoDock4 and AutoDockTools4: Automated docking with selective receptor flexibility. Journal of Computational Chemistry, 30(16), 2785-2791.
  3. O'Boyle N.M., et al. (2011). Open Babel: An open chemical toolbox. Journal of Cheminformatics, 3(1), 33.