Skip to content

Repository files navigation

Anyone can dock, everyone can do!

Anyone docking: Browser-based molecular docking β€” no installation required.

Streamlit App Python 3.10+ License: MIT

Paste a SMILES, draw a structure, or upload a file. Pick a PDB or CIF. Dock in seconds.

Recent updates: New CLI and Python API via anyonecandock on PyPI. New redock command β€” automatically re-docks the co-crystal ligand with zero SMILES input (RCSB CCD lookup β†’ CIF block β†’ 3D fallback). Receptor setup now auto-scans ligand-like HETATM records. Ligand preparation supports pKaNET-ranked microstates with manual rank selection.


πŸš€ Six ways to use Anyone Can Dock

Mode Best for How
🌐 Streamlit Web App Quickest start, no setup Open in browser β†’
☁️ Streamlit via Colab Web UI on free GPU/CPU Open In Colab
πŸ–₯️ Streamlit locally Full control, own machine pip install anyonecandock && streamlit run app.py
πŸ““ Colab notebook Batch docking, scripting Open In Colab
⌨️ CLI (acd) Automation, pipelines, scripts pip install anyonecandock then acd dock ...
🐍 Python API Programmatic integration from anyonecandock import core
πŸ€– GPT / Claude plugin Natural-language docking See below ↓

πŸ€– AI Interfaces

Anyone Can Dock GPT

Ask GPT-4o to dock molecules using natural language.

ChatGPT

Anyone Can Dock in Claude

Connect Claude to the ACD API as a custom MCP connector β€” ask Claude to dock molecules, search PDB targets, and interpret results directly in the chat.

Setup (3 steps):

  1. Copy the MCP server URL:

    https://anyone-can-dock-mcp.anyonecandock.workers.dev
    
  2. Click the badge below to open Claude Connectors settings, then click "Add custom connector"

    Add to Claude

  3. Paste the URL into Remote MCP server URL and click Add

Example prompts after connecting:

"dock quercetin into JAK2 and report binding affinity"
"compare erlotinib vs gefitinib binding to EGFR (1M17)"

Powered by: AutoDock Vina 1.2.7 Β· pKaNET protonation at pH 7.4 Β· MCP Streamable HTTP

MCP server URL: https://anyone-can-dock-mcp.anyonecandock.workers.dev


⌨️ CLI β€” acd command

Install from PyPI:

pip install anyonecandock

Commands

acd <command> [options]

  dock      Full pipeline: receptor + ligand + Vina (single ligand)
  redock    Self-docking validation β€” no SMILES input needed
  batch     Batch docking from a .smi file or SMILES list
  receptor  Prepare receptor only (download/convert β†’ .pdb + .pdbqt + box)
  ligand    Prepare ligand only (SMILES/file β†’ .pdbqt + .sdf)
  diagram   Generate a 2D interaction diagram SVG for a completed run

Quick examples

# Dock a single ligand by compound name
acd dock --receptor 1M17 --compound erlotinib

# Dock by SMILES
acd dock --receptor 4AGN --smiles "CCO" --name ethanol

# Dock from an existing receptor preparation (skips re-prep)
acd dock --receptor-json ./rec/receptor_summary.json --compound baicalein

# Dock from a structure file
acd dock --receptor structure.cif --ligand-file ligand.sdf --name mylig

# ── Redocking (self-docking validation) β€” NEW ──────────────────────────
# Re-docks the co-crystal ligand automatically; no SMILES required.
# SMILES acquired via: RCSB CCD β†’ CIF _chem_comp.pdbx_smiles β†’ 3D fallback
acd redock --receptor 4AGN
acd redock --receptor structure.cif --fmt CIF
acd redock --receptor 4AGN --resname DC3 --diagram
acd redock --receptor-json ./rec/receptor_summary.json

# Batch docking
acd batch --receptor 1M17 --ligands compounds.smi
acd batch --receptor 4AGN --smiles-list "CCO ethanol" "c1ccccc1O phenol"

acd redock β€” self-docking validation

The redock command automatically identifies and re-docks the co-crystal ligand present in a PDB/CIF structure β€” no SMILES input required.

acd redock --receptor <PDB_ID_or_FILE> [options]

Options:
  --resname     Override the auto-detected ligand residue name (e.g. DC3, ATP)
  --name        Output name for the re-docked ligand (default: residue code)
  --ph          Target pH for protonation (default: 7.4)
  --diagram     Generate 2D interaction diagram after docking
  --save-poses  Save each docked pose as an individual SDF/PDB file
  -e / --exhaustiveness   Vina exhaustiveness (default: 16)
  -n / --poses            Max poses to output (default: 10)
  -o / --output           Output directory (default: ./acd_redock)

SMILES acquisition order:

  1. RCSB CCD REST API β€” ideal, stereo-correct, curated SMILES from the PDB chemical component dictionary
  2. CIF _chem_comp.pdbx_smiles β€” parsed directly from the structure CIF (no network required)
  3. 3D coordinate conversion β€” RDKit + OpenBabel with hydrogen-aware bond perception (last resort; a warning is shown)

Redocking verdict (printed automatically):

  • βœ“ PASS β€” best pose RMSD ≀ 2.0 Γ… vs crystal
  • ⚠ BORDERLINE β€” RMSD 2–3 Γ…
  • βœ— FAIL β€” RMSD > 3.0 Γ…

All acd dock options

usage: acd dock [options]
acd dock --help

Protein:
  --receptor PDB_ID_or_FILE
      PDB ID (auto-downloaded) or path to .pdb/.cif
  --receptor-json PATH
      JSON from a previous acd receptor run
  --fmt {PDB,CIF}
      Input format (default: PDB)

Ligand:
  --smiles SMILES
      Ligand SMILES string
  --compound NAME
      Compound name for PubChem lookup
  --ligand-file PATH
      Ligand structure file (.sdf/.mol2/.pdb)
  --name NAME
      Output name (default: LIG)
  --ph PH
      Target pH (default: 7.4)
  --neutral
      Keep the input charge and add hydrogens only
  --no-pubchem
      Skip PubChem pKa lookup

Docking box:
  --center {auto,manual,selection}
      Box center mode (default: auto)
  --cx X
      Manual box-center X coordinate
  --cy Y
      Manual box-center Y coordinate
  --cz Z
      Manual box-center Z coordinate
  --bx Γ…
      Box X size, 10–40 Γ… (default: 18)
  --by Γ…
      Box Y size, 10–40 Γ… (default: 18)
  --bz Γ…
      Box Z size, 10–40 Γ… (default: 18)

pKaNET:
  --max-tautomers N
      Maximum tautomers, 1–20 (default: 8)
  --ph-window PH
      pH window, 0.2–2.0 (default: 1.0)
  --conformer-seed N
      RDKit conformer seed (default: random)

Vina:
  -e N, --exhaustiveness N
      Vina exhaustiveness (default: 16)
  -n N, --poses N
      Maximum poses (default: 10)
  --energy-range KCAL
      Energy range in kcal/mol (default: 3)
  --seed N
      Vina random seed (default: random)

Validation and output:
  --redock-smiles "SMILES [name]"
      Dock a reference co-crystal ligand
  --save-poses
      Save individual pose files
  --diagram
      Generate a 2D interaction diagram
  -o OUTPUT, --output OUTPUT
      Output directory (default: ./acd_results)

🐍 Python API

from anyonecandock import core

# Reproducibility settings
SEED = 72
BOX_SIZE = (18, 18, 18)
vina_bin = "/path/to/vina"

# Prepare receptor
result = core.prepare_receptor(
    raw_pdb="raw.pdb",
    wdir="./rec",
    box_size=BOX_SIZE,
)

# Prepare ligand using heuristic pKaNET backend
lig = core.prepare_ligand(
    smiles="c1ccc(cc1)O",
    name="phenol",
    ph=7.4,
    wdir="./lig",
    mode="pkanet",
    use_pubchem=False,
    max_tautomers=8,
    ph_window=1.0,
    conformer_seed=SEED,
)

# Run deterministic docking
dock = core.run_vina(
    receptor_pdbqt=result["rec_pdbqt"],
    ligand_pdbqt=lig["pdbqt"],
    config_txt=result["config_txt"],
    vina_path=vina_bin,
    exhaustiveness=16,
    n_modes=10,
    energy_range=3,
    seed=SEED,
    wdir="./out",
    out_name="phenol",
)

print("Top score:", dock["top_score"])

# Auto-detect co-crystal SMILES
smiles, source, warning = core.get_cocrystal_smiles(
    ligand_pdb_path=result["ligand_pdb_path"],
    cocrystal_ligand_id=result["cocrystal_ligand_id"],
    raw_pdb="raw.cif",
)

print(f"SMILES source: {source}")
print(f"SMILES: {smiles}")
if warning:
    print(f"Warning: {warning}")

# 2D interaction diagram
svg_bytes = core.draw_interaction_diagram(
    receptor_pdb=result["rec_fh"],
    pose_sdf="./out/phenol_out.sdf",
    smiles=lig["prot_smiles"],
    title="Phenol Β· 4AGN",
)

with open("./out/diagram.svg", "wb") as handle:
    handle.write(svg_bytes)

🌐 Streamlit Web App

The simplest entry point β€” no installation, runs in the browser.

Streamlit App

Supports single and batch docking, all 2D diagram engines, interactive drag layout, ADME predictions, and ready-to-use figure export.


☁️ Streamlit via Google Colab

Run the full Streamlit web interface on Colab's free compute tier β€” no local install needed.

Open In Colab


πŸ““ Colab Notebook (batch docking)

Batch docking with 4 docking engines in a Python notebook environment: Open In Colab

Batch Docking


πŸ–₯️ Run Streamlit locally

The local app uses the deterministic heuristic pKaNET backend. ML pKa backends are disabled.

Linux (Ubuntu/Debian)

sudo apt update

sudo apt install -y \
  python3.11 \
  python3.11-venv \
  openbabel \
  libcairo2-dev \
  libpango1.0-dev \
  libpangocairo-1.0-0

git clone https://github.com/nyelidl/anyone-docking-local.git
cd anyone-docking-local

python3.11 -m venv venv
source venv/bin/activate

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

streamlit run app.py

macOS

brew update
brew install python@3.11 open-babel cairo pango

git clone https://github.com/nyelidl/anyone-docking-local.git
cd anyone-docking-local

python3.11 -m venv venv
source venv/bin/activate

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

streamlit run app.py

Apple Silicon (M1–M4): Fully supported β€” the app auto-downloads the correct aarch64 Vina binary.

Windows

Recommended: Use WSL2 with Ubuntu and follow the Linux instructions above.

For native Windows:

  1. Install OpenBabel from openbabel.org and add to PATH
  2. Install Cairo/Pango via conda: conda install -c conda-forge cairo pango
git clone https://github.com/nyelidl/anyone-docking-local.git
cd anyone-docking-local
python -m venv venv && venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py

Streamlit Cloud deployment

anyone-docking/
β”œβ”€β”€ app.py
β”œβ”€β”€ core.py
β”œβ”€β”€ requirements.txt   # Python packages
└── packages.txt       # System packages (openbabel, libcairo2-dev, …)

✨ What it does

πŸ”¬ Single & batch docking via AutoDock Vina 1.2.7
♻️ redock β€” self-docking validation β€” auto-fetches co-crystal SMILES (RCSB CCD β†’ CIF β†’ 3D), docks, reports RMSD verdict
πŸ—οΈ Guided receptor prep β€” download any PDB/CIF, review ligand candidates automatically, strip solvent, add hydrogens
πŸ“„ PDB & mmCIF support β€” upload .pdb or .cif files or download from RCSB (auto-fallback to CIF for large entries)
🎯 Smart grid detection β€” auto-detects ligand-like HETATM records; shows dropdown only when multiple candidates exist
✏️ 3-way ligand input β€” SMILES text, file upload, or draw in Ketcher
🧬 pKaNET-ranked microstates β€” tautomer-aware protonation at target pH with manual rank selection Open in browser β†’
βš–οΈ Conservative docking-state selection β€” avoids over-deprotonated states for polyphenols, flavonoids, coumarins
🧬 Heme-aware preparation β€” HEM/HEC/HEA/HEB stripped before OpenBabel, re-injected with correct AD4 atom types
βš—οΈ Water/cofactor/metal control β€” remove waters, keep metals, keep/strip FAD/NAD/ATP/CoA independently
πŸ—ΊοΈ Three 2D diagram engines: ACD custom SVG Β· RDKit Β· PoseView (proteins.plus)
πŸ–±οΈ Interactive drag mode β€” reposition residue labels in real time, export PNG (up to 600 dpi) or SVG
πŸ”­ Binding pocket viewer β€” interacting residues as orange sticks with adjustable distance cutoff
πŸ€– AI-ready prompt β€” auto-filled for Claude, GPT-4o, Gemini; adapts to redocking context
πŸ“Š 3D viewers β€” animated multi-pose sweep, pose selector, binding pocket view
πŸ“ One-click ZIP β€” all poses, corrected SDFs, diagrams, score plot, pKaNET log

πŸ—ΊοΈ 2D Interaction Diagrams

Three tabs β€” each with a different rendering engine:

🧬 Anyone Can Dock 2D Diagram (default)

Feature Detail
8 interaction types H-bond (distance on line), hydrophobic, Ο€-Ο€, cation-Ο€, ionic, metal/heme, halogen bond, HΒ·Β·Β·halogen
Geometry-based All interactions computed from 3D coordinates β€” no server, works offline
ACS-style bonds Bond widths, double-bond spacing, and wedge geometry follow ACS publication standards
Smart layout Radial placement by interaction angle; push-apart prevents overlap
Interactive drag Reposition any residue label in real time; distance labels update live
Export SVG (vector) Β· PNG at 1Γ— / 2Γ— (150 dpi) / 3Γ— (300 dpi) / 4Γ— (600 dpi)

πŸ”¬ RDKit 2D Diagram

Classic highlight-circle style. H-bond (blue) Β· Hydrophobic (green) Β· Other/metal (pink). Side-by-side with co-crystal reference when available.

πŸ”¬ PoseView (proteins.plus)

REST API submission of receptor + docked pose. PoseView v1 (docked pose) + PoseView2 (co-crystal reference by PDB code + ligand ID). Built-in API test and manual fallback download.

⚠️ PoseView limitation: charged species are shown in neutral form. Use ACD or RDKit diagrams for ligands with formal charges.


🧬 Supported protein types

Protein class Support Notes
Standard single-chain proteins βœ… Full Primary use case
Multi-chain / homo-oligomers βœ… Full Duplicate chains deduplicated; chain A ligand auto-selected
Heme proteins (CYP450, peroxidases, Hb, Mb) βœ… Full Fe-porphyrin handled separately; grid auto-centers on Fe
Metal-binding proteins (zinc fingers, carbonic anhydrase) βœ… Full ZN, MG, CA, MN, FE, CU re-injected with correct charges
MD simulation outputs (GROMACS, AMBER) βœ… Full Blank chain IDs auto-assigned to chain A
Non-standard ligand names (MOL, LIG, UNL, INH) βœ… Full
Modified amino acids (CYP, MSE, TPO, SEP) βœ… Full Backbone atom check keeps them in receptor
Multiple co-crystal ligands βœ… Full Dropdown shown only when needed
Cofactor-binding proteins (FAD, NAD, ATP, CoA) βœ… Full Kept or stripped independently
Glycoproteins ⚠️ Partial Glycans kept in receptor; not in 2D diagram
Membrane proteins ⚠️ Partial Dockable without lipids; lipids not auto-filtered
RNA / DNA targets ⚠️ Partial Basic interaction detection; no nucleic-acid-specific types
Covalent docking ❌ No Vina is non-covalent only

♻️ Redocking validation

Available in all modes (Streamlit, CLI acd redock, API, Colab):

Feature Description
Auto SMILES acquisition RCSB CCD API β†’ CIF _chem_comp.pdbx_smiles β†’ 3D conversion (no manual input needed)
RMSD vs crystal Heavy-atom RMSD via MCS matching against original crystal pose
Verdict PASS ≀ 2.0 Γ… Β· BORDERLINE 2–3 Γ… Β· FAIL > 3.0 Γ…
Reference score line Dashed red line on affinity plot
Pose confirmation Browse reference poses, pin as baseline for score comparisons
Download Export reference poses as SDF/PDBQT

πŸ’» Platform compatibility

Platform Vina binary OpenBabel Status
Linux x86_64 βœ… Auto-download apt install openbabel Fully supported (primary)
macOS Intel βœ… Auto-download brew install open-babel Fully supported
macOS Apple Silicon (M1–M4) βœ… Native aarch64 brew install open-babel Fully supported
Windows x86_64 βœ… Auto-download Installer Supported (WSL2 recommended)
Streamlit Cloud βœ… Auto-download via packages.txt Fully supported
Google Colab βœ… Auto-download !apt install openbabel Fully supported

🧬 pKaNET microstate selection

Mode Meaning
Auto recommended pKaNET recommendation. For ambiguous systems (polyphenols, coumarins, flavonoids), may choose a conservative state rather than the highest score
Highest-scoring Top-ranked pKaNET state directly
Manual rank Choose any ranked microstate from a dropdown before docking

βš—οΈ Water, cofactor & metal options

Option Default Effect
Remove waters βœ… On Removes crystallographic waters
Keep metal ions βœ… On Keeps ZN, MG, CA, MN, FE, CU, CO, NI, CD, HG, NA, K
Keep cofactors βœ… On Keeps ATP, ADP, FAD, FMN, NAD, CoA, SAM, HEM

Buffers and additives (GOL, EDO, PEG, SO4, PO4) are removed by default.


πŸ“„ Citation

If you use this tool in research, please cite:

AutoDock Vina 1.2.7 Eberhardt et al., J. Chem. Inf. Model., 2021 Β· DOI: 10.1021/acs.jcim.1c00203

DFDD Hengphasatporn, K.; Duan, L.; Harada, R.; Shigeta, Y., J. Chem. Inf. Model., 2026 Β· DOI: 10.1021/acs.jcim.5c02852

RDKit Β· Landrum, G. (2023) Β· https://www.rdkit.org

ProDy Β· Bakan et al., Bioinformatics, 2011 Β· DOI: 10.1093/bioinformatics/btr168

stmol Β· NΓ‘poles-Duarte et al., Front. Mol. Biosci., 2022 Β· DOI: 10.3389/fmolb.2022.990846

Dimorphite-DL Β· Ropp et al., J. Cheminform., 2019 Β· DOI: 10.1186/s13321-019-0336-9

pKaNET Cloud Β· Please cite the corresponding manuscript when available.

gemmi (optional, for CIF support) Β· Wojdyr, M., JOSS, 2022 Β· DOI: 10.21105/joss.04200


πŸ“œ License

MIT License β€” see LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages