Skip to main content

Proto is not affiliated with Scripps Research and the Forli Lab. This toolkit is open source and builds on the implementations produced by these organizations. Product names, logos, and trademarks are the property of their respective owners.


ccsb-scripps/AutoDock-Vina
ccsb-scripps/AutoDock-Vina
AutoDock Vina
1.1k stars
View repo
vina.scripps.edu
Visit website
AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings
Jerome Eberhardt, Diogo Santos-Martins, … Stefano Forli
Journal of Chemical Information and Modeling (2021)
Read paper
Copy citation
evo-design/proto-tools/proto_tools/tools/molecular_docking/vina
View source
Open Notebook
Open notebook
proto-tools on GitHub
Run locally with proto-tools
Toolkit contributors
License: AutoDock Vina’s own code is licensed under Apache-2.0, and it federates over bundled data sources and components, each under its own license terms.Bundled dependencies, each under its own license:Review each source’s terms before commercial use or redistribution.

Background

AutoDock Vina (Trott and Olson, 2010) combines a knowledge-inspired scoring function with iterated local search to explore ligand translations, orientations, and rotatable bonds inside a user-defined three-dimensional grid. Vina 1.2 (Eberhardt et al., 2021) added Python bindings, expanded atom typing, and support for the Vinardo scoring function (Quiroga and Villarreal, 2016). Docking requires two distinct decisions: the chemical state of the molecules and the region to search. The receptor remains rigid, while Vina samples the ligand’s movable torsions. Meeko (Santos-Martins et al., 2025) assigns AutoDock atom types and partial charges, writes PDBQT inputs, and reconstructs each predicted pose as an SDF record with the ligand’s original bond orders. The reported affinity is a docking score in kcal/mol. More negative scores rank more favorably within the same receptor, ligand, box, and scoring setup, but they are not calibrated experimental binding free energies. The RMSD lower and upper bounds measure each returned mode’s distance from the best predicted mode; they are not RMSDs against a crystallographic reference pose. Docking is most useful for generating plausible binding hypotheses, enriching a virtual-screening shortlist, or comparing poses before higher-cost simulation or experimental validation. The bundled receptor and reference-ligand fixtures are derived from chain A of RCSB PDB entry 1IEP, the c-Abl/imatinib complex reported by Nagar et al. (2002). RCSB PDB archive data is distributed under CC0-1.0.

Learning Resources

Tools

AutoDock Vina Docking (vina-docking)

Prepares one rigid receptor and one or more small-molecule ligands, searches either an explicit box or a box derived from a coordinate-bearing reference ligand, and returns the ranked poses retained by Vina for each ligand. Bare SMILES strings are accepted, and a single ligand is normalized into a one-element list; the tool generates a seeded three-dimensional conformer per ligand before docking.

API Reference

Source
Structure
required
Receptor coordinates to parameterize as a rigid PDBQT model.
List[Fragment]
required
Small molecules to dock against the receptor, each scored independently. SMILES strings are accepted, and a single ligand is normalized into a one-element list.
Explicit search box or a box derived from a reference ligand in the receptor coordinate frame.
Source
enum
default:"vina"
Vina-family scoring function.Available options: vina, vinardo
integer
default:"8"
Number of independent Monte Carlo search runs.
integer
default:"9"
Maximum poses retained and returned.
number
default:"3.0"
Maximum affinity difference from the best returned pose.
number
default:"1.0"
Minimum RMSD separation between retained poses.
integer
default:"0"
Search evaluation cap; zero uses Vina’s heuristic.
integer
default:"0"
Worker threads; zero lets Vina use all available CPUs.
number
default:"0.375"
Affinity-map grid spacing in angstroms.
boolean
default:"False"
Delete receptor residues Meeko cannot parameterize.
integer
default:"0"
Verbosity level (0=quiet, 1=info, 2=debug, 3=raw subprocess stderr). True is coerced to 1 and False to 0.
string
default:"cpu"
Device to run the tool on.
integer
default:"3600"
Maximum execution time in seconds. None waits indefinitely.
integer
Positive signed 32-bit seed; generated and returned when omitted.
Source
List[VinaLigandResult]
required
One entry per input ligand, in input order.
integer
required
Concrete random seed used by Vina and ligand conformer generation.
VinaSearchBox
required
Resolved search-box coordinates.
enum
required
Scoring function used.
Metrics (one set per results item)

Applications

Use this tool for redocking a known ligand into an experimental receptor, proposing binding modes for analogs, screening a focused set of compounds against a defined pocket, or producing initial protein-ligand poses for molecular dynamics and free-energy workflows. It is also useful for checking whether a designed pocket can accommodate a candidate ligand without severe steric conflicts.

Usage Tips

  • Define the search box from pocket evidence. Use VinaSearchBox when a known pocket center is available. Use VinaReferenceLigandBox when a co-crystallized ligand is aligned to the receptor; padding is added on both sides of each ligand axis.
  • Keep the box focused but large enough for the ligand. An oversized box makes the search less efficient, while a box that clips the ligand or pocket can exclude valid poses. A 20 to 25 angstrom box is a common starting point for drug-like ligands.
  • Stay within the grid-allocation limits. Each box axis is limited to 100 angstroms, grid_spacing must be at least 0.1 angstrom, and the resolved map may contain at most 2,000,000 grid points. Increase spacing or reduce the box when validation reports a larger allocation.
  • Prepare the receptor’s chemical state deliberately. Resolve missing atoms, alternate locations, protonation states, cofactors, metals, and waters before docking. Meeko adds missing hydrogens from its residue templates but does not perform environment-aware pKa prediction; a hydrogen-free ambiguous histidine can therefore receive the default HIE template. Inspect receptor_template_assignments in output metadata. Unsupported residues fail by default; allow_bad_residues=True deletes residues Meeko cannot parameterize, reports their identifiers in ignored_receptor_residues, and emits a warning.
  • Encode ligand protonation and stereochemistry in the SMILES. The tool preserves the input graph, generates a new seeded conformer, and minimizes it with MMFF94 or UFF when parameters are available. It does not enumerate tautomers, protonation states, or undefined stereocenters; an undefined center may produce one seed-dependent geometry. Specify stereochemistry explicitly and evaluate each intended chemical state as a separate input.
  • Pass a whole ligand set in one call. ligands is the per-item field, so a screen is fanned out and cached per ligand rather than per call. Receptor preparation is the expensive setup step and depends only on the receptor, so it runs once and is reused for every ligand in a request. Results are returned in input order, one entry per ligand. Each ligand advances the request seed by its position, so duplicate ligands in one call still sample independently while a given (seed, position) stays reproducible.
  • visualize_search_box(inputs, config) in helpers.py draws the receptor with the resolved search box, and the reference ligand when the box was derived from one, so a misplaced or undersized box is visible before the run. Passing the config also reports the affinity-map grid size and flags an oversized grid up front rather than at dispatch.
  • Increase exhaustiveness for production searches. The default of 8 is suitable for an initial run. Larger or more flexible ligands often need repeated seeds and higher exhaustiveness to establish that the top-ranked pose is stable.
  • Use seed for exact reruns. When omitted, the framework generates a positive signed 32-bit seed and returns it in the output. Reuse the returned seed with the same environment and configuration to reproduce the search.
  • Treat affinity as a ranking signal, not an absolute binding measurement. Compare scores only across chemically and procedurally consistent runs, and inspect interactions and pose plausibility before drawing conclusions.
  • Use SDF for downstream chemistry workflows. Each pose and the combined result are returned as SDF with reconstructed bond orders. PDBQT is also retained for AutoDock interoperability and auditability.

Toolkit Notes

These apply to every AutoDock Vina tool in this toolkit (vina-docking).
  • The first local call creates an isolated environment. It installs Vina 1.2.7 from conda-forge and pinned Meeko 0.7.1, after which the environment is reused. Conda-forge supplies Vina builds for supported Linux and macOS architectures. Persistent execution avoids repeated worker startup and chemistry-library imports across a docking batch.
  • Docking is CPU-only. cpu=0 lets Vina use all visible CPUs; set a positive value to bound each run’s thread consumption. GPU device settings do not accelerate this toolkit.
  • Within one call, ligands are docked one after another. cpu bounds the threads Vina uses for a single ligand’s search, so throughput across a set comes from that per-ligand threading rather than from ligands running concurrently. Receptor preparation is hoisted out of the loop and paid once per call. To use more cores than one search can saturate, split the set across parallel calls; max_chunk_size caps how many ligands the framework sends to a worker at a time.
  • The receptor is rigid. Side-chain or backbone flexibility, covalent docking, explicit-solvent sampling, and induced-fit refinement are outside this tool’s scope.
  • Outputs include complete provenance needed to repeat a run. The concrete seed, resolved box, effective search controls, Vina, Meeko, and RDKit versions, requested pose count, ligand count, and receptor omissions and template assignments are returned at the top level, while each ligand’s minimization convergence, warnings, poses, and SDF/PDBQT payloads live on that ligand’s result.
Example notebook: See the full working example for a copy-paste-ready walkthrough.

Infrastructure Guides

The following guides cover how to run tools efficiently and at scale.

Tool Persistence

Keep a tool’s model warm across calls instead of reloading it every invocation.

Device Management

How GPUs are allocated to tools and how to target specific devices.

Parallel Execution

Fan a batch of inputs out across multiple GPUs.