This is a forked repo from the original dockstring code, a python package for easy molecular docking and docking benchmarking. This code is modfied to incorporate automated docking of protein bining ligands from LLMs.
What's changed: - Incorporated timeout block (The code spends 15 minutes to try to find the docking site, after 15 minutes it restarts the docking process). The motivation behind this code block is to avoid the code getting stuck at a certain site and to accelerate docking process. - Prints out time taken to dock a single ligand to a protein target.
For details, see paper and website:
García-Ortegón, Miguel, et al. "DOCKSTRING: easy molecular docking yields better benchmarks for ligand design." Journal of Chemical Information and Modeling (2021).
Supported platforms:
To install run pip install .
You might have to do chmod +x dockstring/build/lib/dockstring/resources/bin/{VINA_FILE} if you get Permission_denied error.
For rdkit installation: conda install -c conda-forge rdkit
For openbabel installation: pip install openbabel-wheel.
-
Check whether the installation was successful by running a test script. Running without error indicates a successful install.
python tutorials/simple_example.py
-
(optional) Install PyMol for target, search box and ligand visualization:
conda install -c conda-forge pymol-open-source
-
(optional) Check whether your local version of dockstring matches the dockstring dataset. This is only necessary if you plan to mix pre-computed docking scores from the dockstring dataset with locally-computed scores, or if you want to compare results with the dockstring paper.
We have created a
pytesttest which randomly docksNmolecules from the dockstring dataset and checks whether they match. The value ofNcan be changed by setting the environment variablenum_dockstring_test_molecules. We recommend starting withN=50, then progressing toN=1000to do a full test. The test can be run with the following commands:conda install -c conda-forge pytest # only if not installed already num_dockstring_test_molecules=1000 python -m pytest tests/test_dataset_matching.py # change "1000" to the number you wish to dock
If the test passes then your local version of docktring matches the dataset exactly! 🥳 If the test does not pass, we encourage you to look how the error rate (this will be displayed in the error messages). If 99%+ of scores match then it is probably ok to use dockstring in the benchmarks, but there will of course be some error and this should be noted.