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.
- Meeko: Custom (LGPL-2.1-or-later)
- RCSB Protein Data Bank fixture data: CC0-1.0
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
- AutoDock Vina documentation - official installation, docking, and scoring documentation.
- AutoDock Vina repository - source code, releases, and issue tracker.
- Meeko repository - receptor and ligand preparation implementation used by this toolkit.
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
Input: VinaDockingInput
Input: VinaDockingInput
Config: VinaDockingConfig
Config: VinaDockingConfig
vina, vinardoTrue is coerced to 1 and False to 0.None waits indefinitely.Output: VinaDockingOutput
Output: VinaDockingOutput
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
VinaSearchBoxwhen a known pocket center is available. UseVinaReferenceLigandBoxwhen a co-crystallized ligand is aligned to the receptor;paddingis 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_spacingmust 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
HIEtemplate. Inspectreceptor_template_assignmentsin output metadata. Unsupported residues fail by default;allow_bad_residues=Truedeletes residues Meeko cannot parameterize, reports their identifiers inignored_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.
ligandsis 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)inhelpers.pydraws 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
exhaustivenessfor 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
seedfor 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=0lets 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.
cpubounds 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_sizecaps 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.

Scripps Research
Forli Lab