Uni-Dock is a GPU-accelerated molecular docking program developed by DP Technology. It supports various scoring functions including vina, vinardo, and ad4. Uni-Dock achieves more than 1000-fold speed-up on V100 GPU with high-accuracy compared with the AutoDock Vina running in single CPU core. The paper has been accepted by JCTC (doi: 10.1021/acs.jctc.2c01145).
- 2023-08-14: Add
unidock_tools
to support SDF format input for vina and vinardo scoring functions.
This project is licensed under the terms of the GNU Lesser General Public License v3.0. See LICENSE for details.
Developed by DP Technology, Hermite® is a new-generation drug computing design platform which integrates artificial intelligence, physical modeling and high-performance computing to provide a one-stop computing solution for preclinical drug research and development. It integrates the features of Uni-Dock, along with virtual screening workflow for an efficient drug discovery process.
Uni-Dock is now available on the new-generation drug computing design platform Hermite® for ultralarge virtual screening.
For further cooperations on developing Uni-Dock and trying out Hermite®, please contact us at [email protected] .
Uni-Dock supports NVIDIA GPUs on Linux platform. CUDA toolkit is required.
-
Install dependencies
-
CUDA toolkit: Please refer to the installation tutorial provided by nvidia.
-
CMake >= 3.16
-
A C++ compiler (should be compatible with NVCC;
g++
works for most cases) -
Boost >= 1.72
sudo apt install libboost-system-dev libboost-thread-dev libboost-serialization-dev libboost-filesystem-dev libboost-program-options-dev libboost-timer-dev
Alternatively, install from boost source codes or from anaconda with
conda install -c anaconda libboost
-
-
Clone repo or retrieve source code from release page:
git clone https://github.com/dptech-corp/Uni-Dock.git
-
Build Uni-Dock using CMake:
cd Uni-Dock/unidock cmake -B build cmake --build build -j4 cmake --install build # This will add `unidock` to the default installation path for executables. # Otherwise, prepend the building directory to your `PATH` environment variable.
code foramt
cd ./build/
make clang-format
Please download the latest binary of Uni-Dock at the assets tab of the Release page.
Executable unidock
supports vina and vinardo scoring functions, and unidock_ad4
supports ad4 scoring function.
After downloading, please make sure that the path to unidock
is in your PATH
environment variable.
To launch a Uni-Dock job, the most important parameters are as follows:
--receptor
: filepath of the receptor (PDBQT)--gpu_batch
: filepath of the ligands to dock with GPU (PDBQT), enter multiple at a time, separated by spaces (" ")--search_mode
: computational complexity, choice in [fast
,balance
, anddetail
].
Advanced options
--search_mode
is the recommended setting of --exhaustiveness
and --max_step
, with three combinations called fast
, balance
, and detail
.
fast
mode:--exhaustiveness 128
&--max_step 20
balance
mode:--exhaustiveness 384
&--max_step 40
detail
mode:--exhaustiveness 512
&--max_step 40
The larger --exhaustiveness
and --max_step
, the higher the computational complexity, the higher the accuracy, but the larger the computational cost.
unidock --receptor <receptor.pdbqt> \
--gpu_batch <lig1.pdbqt> <lig2.pdbqt> ... <ligN.pdbqt> \
--search_mode balance \
--scoring vina \
--center_x <center_x> \
--center_y <center_y> \
--center_z <center_z> \
--size_x <size_x> \
--size_y <size_y> \
--size_z <size_z> \
--num_modes 1 \
--dir <save dir>
>> unidock --help
Input:
--receptor arg rigid part of the receptor (PDBQT or PDB)
--flex arg flexible side chains, if any (PDBQT or PDB)
--ligand arg ligand (PDBQT)
--ligand_index arg file containing paths to ligands (PDBQT or SDF)
--batch arg batch ligand (PDBQT)
--gpu_batch arg gpu batch ligand (PDBQT or SDF)
--scoring arg (=vina) scoring function (ad4, vina or vinardo)
Search space (required):
--maps arg affinity maps for the autodock4.2 (ad4) or vina
scoring function
--center_x arg X coordinate of the center (Angstrom)
--center_y arg Y coordinate of the center (Angstrom)
--center_z arg Z coordinate of the center (Angstrom)
--size_x arg size in the X dimension (Angstrom)
--size_y arg size in the Y dimension (Angstrom)
--size_z arg size in the Z dimension (Angstrom)
--autobox set maps dimensions based on input ligand(s) (for
--score_only and --local_only)
Output (optional):
--out arg output models (PDBQT), the default is chosen based
on the ligand file name
--dir arg output directory for batch mode
--write_maps arg output filename (directory + prefix name) for
maps. Option --force_even_voxels may be needed to
comply with .map format
Misc (optional):
--cpu arg (=0) the number of CPUs to use (the default is to try
to detect the number of CPUs or, failing that, use
1)
--seed arg (=0) explicit random seed
--exhaustiveness arg (=8) exhaustiveness of the global search (roughly
proportional to time): 1+
--max_evals arg (=0) number of evaluations in each MC run (if zero,
which is the default, the number of MC steps is
based on heuristics)
--num_modes arg (=9) maximum number of binding modes to generate
--min_rmsd arg (=1) minimum RMSD between output poses
--energy_range arg (=3) maximum energy difference between the best binding
mode and the worst one displayed (kcal/mol)
--spacing arg (=0.375) grid spacing (Angstrom)
--verbosity arg (=1) verbosity (0=no output, 1=normal, 2=verbose)
--max_step arg (=0) maximum number of steps in each MC run (if zero,
which is the default, the number of MC steps is
based on heuristics)
--refine_step arg (=5) number of steps in refinement, default=5
--max_gpu_memory arg (=0) maximum gpu memory to use (default=0, use all
available GPU memory to optain maximum batch size)
--search_mode arg search mode of unidock (fast, balance, detail), using
recommended settings of exhaustiveness and search
steps; the higher the computational complexity,
the higher the accuracy, but the larger the
computational cost
Configuration file (optional):
--config arg the above options can be put here
Information (optional):
--help display usage summary
--help_advanced display usage summary with advanced options
--version display program version
We have provided a target from DUD-E dataset for screening test. Python version >=3.6
is recommended.
git clone https://github.com/dptech-corp/Uni-Dock.git
cd Uni-Dock/example/screening_test
# target def
cp config_def.json config.json
python run_dock.py
# target mmp13
cp config_mmp13.json config.json
python run_dock.py
If you want to use search mode presets, specify the parameter search_mode
in config.json
and delete nt
and ns
in config.json
.
Please report bugs to Issues page.
If you used Uni-Dock in your work, please cite:
Yu, Y., Cai, C., Wang, J., Bo, Z., Zhu, Z., & Zheng, H. (2023). Uni-Dock: GPU-Accelerated Docking Enables Ultralarge Virtual Screening. Journal of Chemical Theory and Computation. https://doi.org/10.1021/acs.jctc.2c01145
Tang, S., Chen, R., Lin, M., Lin, Q., Zhu, Y., Ding, J., ... & Wu, J. (2022). Accelerating autodock vina with gpus. Molecules, 27(9), 3041. DOI 10.3390/molecules27093041
J. Eberhardt, D. Santos-Martins, A. F. Tillack, and S. Forli AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings, J. Chem. Inf. Model. (2021) DOI 10.1021/acs.jcim.1c00203
O. Trott, A. J. Olson, AutoDock Vina: improving the speed and accuracy of docking with a new scoring function, efficient optimization and multithreading, J. Comp. Chem. (2010) DOI 10.1002/jcc.21334
-
The GPU encounters out-of-memory error.
Uni-Dock estimates the number of ligands put into GPU memory in one pass based on the available GPU memory size. If it fails, please use
--max_gpu_memory
to limit the usage of GPU memory size by Uni-Dock. -
I want to put all my ligands in
--gpu_batch
, but it exceeds the maximum command line length that linux can accept.- You can save your command in a shell script like
run.sh
, and run the command bybash run.sh
. - You can save your ligands path in a file (separated by spaces) by
ls *.pdbqt > index.txt
, and use--ligand_index index.txt
in place of--gpu_batch
.
- You can save your command in a shell script like
-
Uni-Dock computes slowly for few (<10) ligands.
The optimal application of Uni-Dock occurs in scenarios where one binding pocket interacts with numerous (in an order of 1000) ligands. As the number of ligands within a single computational batch increases, the average processing speed improves. In instances where only a few ligands are present for one binding pocket, the overhead proportion becomes considerably large, leading to slower computational performance.