> ## Documentation Index
> Fetch the complete documentation index at: https://proto.evodesign.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# AutoDock Vina

> [AutoDock Vina](https://github.com/ccsb-scripps/AutoDock-Vina) predicts how a small molecule can bind within a specified region of a rigid receptor. This toolkit prepares receptor and ligand PDBQT models with Meeko, runs Vina or Vinardo scoring on CPU, and returns ranked poses with affinity scores, RMSD bounds, bond-correct SDF and PDBQT exports, and preparation provenance including residue-template assignments and ligand-minimization convergence.

<div class="page-hero"><img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/tool/vina/hero.png" alt="AutoDock Vina" /><div class="tool-org-badges page-hero-badges"><a href="/docs/tools/organizations/scripps-research" class="tool-org-badge" style={{background: "#00629B"}} title="Scripps Research"><img src="https://mintcdn.com/bio-pro/2KNs-ARSUr3ypt0h/assets/images/cached/fa61cb4f1189.png?fit=max&auto=format&n=2KNs-ARSUr3ypt0h&q=85&s=c48936b823339f7c1649760e1c21e9a9" alt="" class="tool-org-badge-logo" width="200" height="200" data-path="assets/images/cached/fa61cb4f1189.png" /> Scripps Research</a> <a href="/docs/tools/organizations/forli-lab" class="tool-org-badge" style={{background: "#2E7D8F"}} title="Forli Lab"><img src="https://mintcdn.com/bio-pro/2KNs-ARSUr3ypt0h/assets/images/cached/bc5ca659e459.png?fit=max&auto=format&n=2KNs-ARSUr3ypt0h&q=85&s=53e1a96eaa8ad2a4f1086848f98abbeb" alt="" class="tool-org-badge-logo" width="200" height="200" data-path="assets/images/cached/bc5ca659e459.png" /> Forli Lab</a></div></div>

<p class="entity-disclaimer">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.</p>

<hr class="entity-rule" />

<input type="radio" name="tab-vina" id="none-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="github-vina" class="tab-radio-input" defaultChecked />

<input type="radio" name="tab-vina" id="website-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="paper-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="cite-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="source-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="notebook-vina" class="tab-radio-input" />

<input type="radio" name="tab-vina" id="proto-vina" class="tab-radio-input" />

<div class="tool-tab-bar">
  <span class="tool-tab-wrap"><label for="github-vina" class="tool-tab tab-open badge-github"><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> GitHub <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" /></svg> 1.1k</label><label for="none-vina" class="tool-tab tab-close badge-github"><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> GitHub <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" /></svg> 1.1k</label></span> <span class="tool-tab-wrap"><label for="website-vina" class="tool-tab tab-open badge-website"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Website</label><label for="none-vina" class="tool-tab tab-close badge-website"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Website</label></span> <span class="tool-tab-wrap"><label for="paper-vina" class="tool-tab tab-open badge-paper"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Publication</label><label for="none-vina" class="tool-tab tab-close badge-paper"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Publication</label></span> <span class="tool-tab-wrap"><label for="cite-vina" class="tool-tab tab-open badge-cite"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Cite</label><label for="none-vina" class="tool-tab tab-close badge-cite"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Cite</label></span> <span class="tool-tab-wrap"><label for="source-vina" class="tool-tab tab-open badge-source"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Tool Source</label><label for="none-vina" class="tool-tab tab-close badge-source"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Tool Source</label></span> <span class="tool-tab-wrap"><label for="notebook-vina" class="tool-tab tab-open badge-notebook"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open as Notebook</label><label for="none-vina" class="tool-tab tab-close badge-notebook"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open as Notebook</label></span> <span class="tool-tab-wrap"><label for="proto-vina" class="tool-tab tab-open badge-local"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5" /><line x1="12" y1="19" x2="20" y2="19" /></svg> Run Locally</label><label for="none-vina" class="tool-tab tab-close badge-local"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5" /><line x1="12" y1="19" x2="20" y2="19" /></svg> Run Locally</label></span>
</div>

<a href="https://github.com/ccsb-scripps/AutoDock-Vina" target="_blank" class="tab-panel github-panel" data-tab="github-vina">
  <div class="gh-card-wrap">
    <img src="https://opengraph.githubassets.com/1/ccsb-scripps/AutoDock-Vina" class="gh-card-img img-fallback" alt="ccsb-scripps/AutoDock-Vina" />

    <div class="gh-card-fallback">
      <div class="gh-fallback-org"><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> ccsb-scripps/AutoDock-Vina</div>
      <div class="gh-fallback-desc">AutoDock Vina</div>
      <div class="gh-fallback-stats"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" /></svg> 1.1k stars</div>
    </div>
  </div>

  <span class="panel-goto-btn gh-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> View repo</span></span>
</a>

<a href="https://vina.scripps.edu" target="_blank" class="tab-panel website-panel" data-tab="website-vina">
  <div class="website-info">
    <img src="https://www.google.com/s2/favicons?domain=vina.scripps.edu&sz=32" class="website-favicon" width="24" height="24" />

    <span class="website-url">vina.scripps.edu</span>
  </div>

  <span class="panel-goto-btn website-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Visit website</span></span>
</a>

<a href="https://doi.org/10.1021/acs.jcim.1c00203" target="_blank" class="tab-panel paper-panel" data-tab="paper-vina">
  <div class="paper-info">
    <div class="paper-title">AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings</div>
    <div class="paper-meta">Jerome Eberhardt, Diogo Santos-Martins, ... Stefano Forli</div>
    <div class="paper-meta paper-venue">Journal of Chemical Information and Modeling (2021)</div>
  </div>

  <span class="panel-goto-btn pub-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Read paper</span></span>
</a>

<div class="tab-panel cite-panel" data-tab="cite-vina">
  <div class="cite-code-wrap">
    ```bibtex theme={null}
    @article{eberhardt2021autodockvina,
      title={{AutoDock Vina 1.2.0}: New Docking Methods, Expanded Force Field, and Python Bindings},
      author={Eberhardt, Jerome and Santos-Martins, Diogo and Tillack, Andreas F. and Forli, Stefano},
      journal={Journal of Chemical Information and Modeling},
      volume={61},
      number={8},
      pages={3891--3898},
      year={2021},
      publisher={American Chemical Society},
      doi={10.1021/acs.jcim.1c00203}
    }

    @article{trott2010autodockvina,
      title={{AutoDock Vina}: Improving the Speed and Accuracy of Docking with a New Scoring Function, Efficient Optimization, and Multithreading},
      author={Trott, Oleg and Olson, Arthur J.},
      journal={Journal of Computational Chemistry},
      volume={31},
      number={2},
      pages={455--461},
      year={2010},
      publisher={Wiley},
      doi={10.1002/jcc.21334}
    }

    @article{santosmartins2025meeko,
      title={Meeko: Molecule Parametrization and Software Interoperability for Docking and Beyond},
      author={Santos-Martins, Diogo and He, Yiran and Eberhardt, Jerome and Sharma, Parnika and Bruciaferri, Niccolo and Holcomb, Matthew and Llanos, Manuel A. and Hansel-Harris, Althea and Barkdull, Allison Pearl and Tillack, Andreas Frank and Bianco, Giulia and Paulsen, May-Linn and Mato, Joani and Taneja, Ishan and Forli, Stefano},
      journal={Journal of Chemical Information and Modeling},
      volume={65},
      number={24},
      pages={13045--13050},
      year={2025},
      publisher={American Chemical Society},
      doi={10.1021/acs.jcim.5c02271}
    }

    @article{quiroga2016vinardo,
      title={Vinardo: A Scoring Function Based on {AutoDock Vina} Improves Scoring, Docking, and Virtual Screening},
      author={Quiroga, Rodrigo and Villarreal, Marcos A.},
      journal={PLOS ONE},
      volume={11},
      number={5},
      pages={e0155183},
      year={2016},
      publisher={Public Library of Science},
      doi={10.1371/journal.pone.0155183}
    }

    @article{nagar2002abl,
      title={Crystal Structures of the Kinase Domain of {c-Abl} in Complex with the Small Molecule Inhibitors {PD173955} and Imatinib ({STI-571})},
      author={Nagar, Bhushan and Bornmann, William G. and Pellicena, Patricia and Schindler, Thomas and Veach, Darren R. and Miller, W. Todd and Clarkson, Bayard and Kuriyan, John},
      journal={Cancer Research},
      volume={62},
      number={15},
      pages={4236--4243},
      year={2002},
      publisher={American Association for Cancer Research},
      pmid={12154025},
      url={https://pubmed.ncbi.nlm.nih.gov/12154025/}
    }
    ```
  </div>

  <span class="panel-goto-btn cite-copy-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Copy citation</span></span>
</div>

<a href="https://github.com/evo-design/proto-tools/tree/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina" target="_blank" class="tab-panel source-panel" data-tab="source-vina">
  <div class="source-info">
    <img src="https://github.com/evo-design.png?size=40" class="source-avatar" width="36" height="36" />

    <span class="source-path">evo-design/proto-tools<span class="source-subpath">/proto\_tools/tools/molecular\_docking/vina</span></span>
  </div>

  <span class="panel-goto-btn source-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> View source</span></span>
</a>

<a href="https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/examples/example.ipynb" target="_blank" class="tab-panel notebook-panel" data-tab="notebook-vina">
  <div class="notebook-info">
    <span class="notebook-icon">
      <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" />

        <path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" />
      </svg>
    </span>

    <span class="notebook-label">Open Notebook</span>
  </div>

  <span class="panel-goto-btn notebook-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open notebook</span></span>
</a>

<div class="tab-panel proto-panel run-local-panel" data-tab="proto-vina">
  <a href="https://github.com/evo-design/proto-tools" target="_blank" class="run-local-preview">
    <img noZoom src="https://opengraph.githubassets.com/1/evo-design/proto-tools" alt="proto-tools on GitHub" />
  </a>

  <div class="run-local-install">
    <span class="run-local-label">Run locally with proto-tools</span>

    <div class="run-local-code">
      ```bash theme={null}
      pip install git+https://github.com/evo-design/proto-tools.git
      ```
    </div>
  </div>
</div>

<div class="entity-contributors"><span class="entity-contributors-label">Toolkit contributors</span><span class="entity-contributors-people"><a class="entity-contributor" href="https://github.com/jaeHbk" target="_blank" rel="noopener" title="jaeHbk: 1 commit"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/101753425?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">jaeHbk</span></a></span></div>

| Function             | Description                                                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| -------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `run_vina_docking()` | Dock a small molecule into a rigid receptor with AutoDock Vina or Vinardo scoring. | <a href="#api-run-vina-docking" class="func-table-btn func-api-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" /></svg> Docs</a> <a href="https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/vina_docking.py#L563" target="_blank" class="func-table-btn func-source-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</a> |

<Note>
  **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:

  * [Meeko](https://github.com/forlilab/Meeko/blob/develop/LICENSE): Custom (LGPL-2.1-or-later)
  * [RCSB Protein Data Bank fixture data](https://www.rcsb.org/pages/policies): CC0-1.0

  Review each source's terms before commercial use or redistribution.
</Note>

## Background

AutoDock Vina ([Trott and Olson, 2010](https://doi.org/10.1002/jcc.21334)) 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](https://doi.org/10.1021/acs.jcim.1c00203)) added Python bindings, expanded atom typing, and support for the Vinardo scoring function ([Quiroga and Villarreal, 2016](https://doi.org/10.1371/journal.pone.0155183)).

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](https://doi.org/10.1021/acs.jcim.5c02271)) 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](https://www.rcsb.org/structure/1IEP), the c-Abl/imatinib complex reported by [Nagar et al. (2002)](https://pubmed.ncbi.nlm.nih.gov/12154025/). RCSB PDB archive data is distributed under CC0-1.0.

### Learning Resources

* [AutoDock Vina documentation](https://autodock-vina.readthedocs.io/en/latest/) - official installation, docking, and scoring documentation.
* [AutoDock Vina repository](https://github.com/ccsb-scripps/AutoDock-Vina) - source code, releases, and issue tracker.
* [Meeko repository](https://github.com/forlilab/Meeko) - receptor and ligand preparation implementation used by this toolkit.

## Tools

<a name="api-run-vina-docking" />

<div class="tool-section-card">
  ### 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

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/vina_docking.py#L156" target="_blank" class="func-table-btn func-source-btn api-model-source"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</a>

    <Accordion title="Input: VinaDockingInput">
      <ParamField path="receptor" type="Structure" required>
        Receptor coordinates to parameterize as a rigid PDBQT model.

        <Expandable title="Structure">
          <ParamField path="structure" type="string" required>
            Raw structure content in PDB or CIF format.
          </ParamField>

          <ParamField path="structure_format" type="string">
            Format of the content string (auto-detected if omitted).
          </ParamField>

          <ParamField path="b_factor_type" type="BFactorType" default="unspecified">
            What the B-factor column represents.
          </ParamField>

          <ParamField path="source" type="string">
            Optional source identifier (filepath or tool name).
          </ParamField>

          <ParamField path="metrics" type="Metrics">
            Associated metrics (e.g., pLDDT, pTM scores, per-chain lists, pairwise matrices). None values are stripped at construction.
          </ParamField>
        </Expandable>
      </ParamField>

      <ParamField path="ligands" type="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.

        <Expandable title="Fragment">
          <ParamField path="id" type="string">
            Optional identifier (free-form; e.g. a chain letter for in-complex use).
          </ParamField>

          <ParamField path="smiles" type="string">
            SMILES string (canonicalized to RDKit form on construction).
          </ParamField>

          <ParamField path="ccd_code" type="string">
            CCD code from the Chemical Component Dictionary.
          </ParamField>

          <ParamField path="entity_type" type="string" default="ligand">
            Always `"ligand"`. Lets Fragments be used interchangeably with `Chain` in structure-prediction inputs.
          </ParamField>

          <ParamField path="name" type="string">
            Human-readable molecule name.
          </ParamField>

          <ParamField path="metrics" type="Dict[string, number]">
            Computed metrics for this fragment.
          </ParamField>
        </Expandable>
      </ParamField>

      <ParamField path="search_box" type="VinaSearchBox | VinaReferenceLigandBox" required>
        Explicit search box or a box derived from a reference ligand in the receptor coordinate frame.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-config-section">
    <a href="https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/vina_docking.py#L438" target="_blank" class="func-table-btn func-source-btn api-model-source"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</a>

    <Accordion title="Config: VinaDockingConfig">
      <ParamField path="scoring_function" type="enum" default="vina">
        Vina-family scoring function.

        Available options: `vina`, `vinardo`
      </ParamField>

      <ParamField path="exhaustiveness" type="integer" default="8">
        Number of independent Monte Carlo search runs.
      </ParamField>

      <ParamField path="num_poses" type="integer" default="9">
        Maximum poses retained and returned.
      </ParamField>

      <ParamField path="energy_range" type="number" default="3.0">
        Maximum affinity difference from the best returned pose.
      </ParamField>

      <ParamField path="min_rmsd" type="number" default="1.0">
        Minimum RMSD separation between retained poses.
      </ParamField>

      <ParamField path="max_evaluations" type="integer" default="0">
        Search evaluation cap; zero uses Vina's heuristic.
      </ParamField>

      <ParamField path="cpu" type="integer" default="0">
        Worker threads; zero lets Vina use all available CPUs.
      </ParamField>

      <ParamField path="grid_spacing" type="number" default="0.375">
        Affinity-map grid spacing in angstroms.
      </ParamField>

      <ParamField path="allow_bad_residues" type="boolean" default="False">
        Delete receptor residues Meeko cannot parameterize.
      </ParamField>

      <ParamField path="verbose" type="integer" default="0">
        Verbosity level (0=quiet, 1=info, 2=debug, 3=raw subprocess stderr). `True` is coerced to `1` and `False` to `0`.
      </ParamField>

      <ParamField path="device" type="string" default="cpu">
        Device to run the tool on.
      </ParamField>

      <ParamField path="timeout" type="integer" default="3600">
        Maximum execution time in seconds. `None` waits indefinitely.
      </ParamField>

      <ParamField path="seed" type="integer">
        Positive signed 32-bit seed; generated and returned when omitted.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-output-section">
    <a href="https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/vina_docking.py#L339" target="_blank" class="func-table-btn func-source-btn api-model-source"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</a>

    <Accordion title="Output: VinaDockingOutput">
      <ResponseField name="results" type="List[VinaLigandResult]" required>
        One entry per input ligand, in input order.

        <Expandable title="VinaLigandResult">
          <ResponseField name="smiles" type="string" required>
            SMILES of the docked ligand, echoed for provenance.
          </ResponseField>

          <ResponseField name="seed" type="integer" required>
            Seed actually used for this ligand, advanced from the request seed by the ligand's position so duplicate ligands still sample independently.
          </ResponseField>

          <ResponseField name="poses" type="List[VinaDockingPose]" required>
            Ranked poses in ascending affinity order.
          </ResponseField>

          <ResponseField name="poses_sdf" type="string" required>
            This ligand's returned poses in a combined SDF payload.
          </ResponseField>

          <ResponseField name="poses_pdbqt" type="string" required>
            This ligand's returned poses in a combined PDBQT payload.
          </ResponseField>

          <ResponseField name="optimization_method" type="string">
            Force field used to minimize the input conformer.
          </ResponseField>

          <ResponseField name="optimization_converged" type="boolean">
            Whether conformer minimization converged.
          </ResponseField>

          <ResponseField name="optimization_attempts" type="integer">
            Conformer minimization attempts made.
          </ResponseField>

          <ResponseField name="optimization_iteration_limits" type="List[integer]">
            Iteration cap used for each attempt.
          </ResponseField>

          <ResponseField name="warnings" type="List[string]">
            Ligand-specific preparation warnings.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="seed" type="integer" required>
        Concrete random seed used by Vina and ligand conformer generation.
      </ResponseField>

      <ResponseField name="search_box" type="VinaSearchBox" required>
        Resolved search-box coordinates.

        <Expandable title="VinaSearchBox">
          <ResponseField name="mode" type="string">
            Use an explicitly positioned search box.
          </ResponseField>

          <ResponseField name="center" type="array" required>
            Box center `(x, y, z)` in angstroms.
          </ResponseField>

          <ResponseField name="size" type="array" required>
            Positive box dimensions `(x, y, z)` in angstroms.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="scoring_function" type="enum" required>
        Scoring function used.
      </ResponseField>

      **Metrics** (one set per `results` item)

      | Metric             | Type  | Range     | Availability |
      | ------------------ | ----- | --------- | ------------ |
      | `affinity`         | float | unbounded | always       |
      | `rmsd_lower_bound` | float | ≥ 0.0     | always       |
      | `rmsd_upper_bound` | float | ≥ 0.0     | always       |
    </Accordion>
  </div>

  #### 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.
</div>

## 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.

<Tip>
  **Example notebook:** See the [full working example](https://github.com/evo-design/proto-tools/blob/55339880a8d5da4f1c7677518bcf90974a6365b7/proto_tools/tools/molecular_docking/vina/examples/example.ipynb) for a copy-paste-ready walkthrough.
</Tip>

## Infrastructure Guides

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

<CardGroup cols={2}>
  <Card title="Tool Persistence" icon="repeat" href="/docs/tools/guides/tool-persistence">Keep a tool's model warm across calls instead of reloading it every invocation.</Card>
  <Card title="Device Management" icon="cpu" href="/docs/tools/guides/device-management">How GPUs are allocated to tools and how to target specific devices.</Card>
  <Card title="Parallel Execution" icon="layers" href="/docs/tools/guides/parallel-execution">Fan a batch of inputs out across multiple GPUs.</Card>
</CardGroup>
