This repository hosts the source code for our work “Protenix-Dock: An accurate and trainable end-to-end protein-ligand docking framework using empirical scoring functions”.
For more information about the implementation and the performance of Protenix-Dock, see our technical report.
🔍 Protenix-Dock is a classical protein-ligand docking method designed for rigid docking tasks. For our deep learning complex structure prediction model, see Protenix.
Features
✨ Advanced docking conformation sampling.
✨ Accurate and interpretable scoring functions incorporating force field and empirical terms.
✨ Independent scoring functions for geometry minimization, pose selection and affinity ranking.
✨ Easy-to-use Python API and command-line tools.
Work in progress
🚧 Affinity-ranking score checkpoint and screening power evaluation result.
🚧 Traninig code.
Installation
1. Create a conda environment:
To minimize environment setup cost, it is recommended to create an Conda environment.
If receptors & ligands are already prepared and only docking/optimizatioin/evaluation
is required, you can install command-lines tools from source.
pushd engine
mkdir build
cd build
destdir=~/pxdock
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$destdir \
-DBDOCK_AVX2=OFF # If your CPU supports AVX2, turn on it for better speed
make -j8 install
confdir=$destdir/conf
mkdir $confdir
cp ../../pxdock/data/pscore-v7_and_bscore-fake.json $confdir
popd
Docking
Usage
Run with Python (recommended):
from pxdock import ProtenixDock
receptor_pdb = "path/to/receptor.pdb"
ligand_sdf = "path/to/ligand.sdf"
box_center = [0., 0., 0.] # box center for receptor
box_size = [10., 10., 10.] # box size for receptor
dock_instance = ProtenixDock(receptor_pdb)
dock_instance.set_box(box_center, box_size)
# Optional: you can generate cache maps for receptor, and then you can load it for next docking.
# In our tests, setting this parameter to 0.175 can achieve a balance between effect and performance.
# out_dir = dock_instance.generate_cache_maps(spacing=0.175)
# and in next run:
# dock_instance.load_cache_maps(out_dir)
# the docking_res_files is in json format.
docking_res_files = dock_instance.run_docking(ligand_sdf)
Run tests
# In these tests, we set the spacing to 0.5 in order to quickly complete the functional test.
cd test
# performing preare ligand, receptor and docking separately.
python3 test_data_prepare.py
# run docking or pose_opt by `ProtenixDock` class.
python3 test_protenix_dock.py
# calculate pose rmsd.
python3 test_rmsd.py
Contribution
Please check Contributing for more details. If you encounter problems using Protenix—Dock, feel free to create an issue! We also welcome pull requests from the community.
If you discover a potential security issue in this project, or think you may
have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.
Please do not create a public GitHub issue.
License
The Protenix-Dock project is made available under the GPLv3 License
Portions of the source code are based on the Meeko and posebusters project.
Portions of the SMARTS patterns used in Protenix-Dock are derived from the ProLIF and OpenFF project.
Contact
We welcome inquiries and collaboration opportunities for advanced applications of our framework, such as developing new features and more. Please feel free to contact us at ai4s-bio@bytedance.com.
Protenix-Dock
This repository hosts the source code for our work “Protenix-Dock: An accurate and trainable end-to-end protein-ligand docking framework using empirical scoring functions”.
For more information about the implementation and the performance of Protenix-Dock, see our technical report.
🔍 Protenix-Dock is a classical protein-ligand docking method designed for rigid docking tasks. For our deep learning complex structure prediction model, see Protenix.
Features
✨ Advanced docking conformation sampling.
✨ Accurate and interpretable scoring functions incorporating force field and empirical terms.
✨ Independent scoring functions for geometry minimization, pose selection and affinity ranking.
✨ Easy-to-use Python API and command-line tools.
Work in progress
🚧 Affinity-ranking score checkpoint and screening power evaluation result.
🚧 Traninig code.
Installation
1. Create a conda environment:
To minimize environment setup cost, it is recommended to create an Conda environment.
2. Install the Python package:
For better compatibility between packages, it is safe to install Protenix-Dock from source.
If your CPU is equiped with AVX2 instructions, you can build a faster one.
3. Install command-line tools (Optional):
If receptors & ligands are already prepared and only docking/optimizatioin/evaluation is required, you can install command-lines tools from source.
Docking
Usage
Run with Python (recommended):
Run tests
Contribution
Please check Contributing for more details. If you encounter problems using Protenix—Dock, feel free to create an issue! We also welcome pull requests from the community.
Code of Conduct
Please check Code of Conduct for more details.
Security
If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.
Please do not create a public GitHub issue.
License
The Protenix-Dock project is made available under the GPLv3 License
Portions of the source code are based on the Meeko and posebusters project.
Portions of the SMARTS patterns used in Protenix-Dock are derived from the ProLIF and OpenFF project.
Contact
We welcome inquiries and collaboration opportunities for advanced applications of our framework, such as developing new features and more. Please feel free to contact us at ai4s-bio@bytedance.com.