diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index ebf182eb..40056fa4 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,7 +11,7 @@ Even better, you can submit a Pull Request with a patch. ## Feature requests We highly appreciate your contributions, and would like to help you crafting the changes and making contributions to the community. -If you would like to implement a new feature, please **submit a feature requesting issue with a proposal for your work first**. +If you would like to implement a new feature, please **submit a feature requesting issue with a proposal for your work first**. This help fitting your ideas and work with the development road map well, coordinating our efforts, and avoiding duplication of work. ## Submitting a Pull Request @@ -35,7 +35,7 @@ This help fitting your ideas and work with the development road map well, coordi ``` 5. On GitHub, create a pull request (PR) from your bug-fix branch targeting `dptech-corp/Uni-Dock`. - + 6. After your pull request is merged, you can safely delete your branch and sync the changes from the main (upstream) repository: - Delete the remote branch on GitHub either [through the GitHub web UI](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request#deleting-a-branch-used-for-a-pull-request) or your local shell as follows: diff --git a/README.md b/README.md index 2cd25fe1..6a701127 100644 --- a/README.md +++ b/README.md @@ -3,28 +3,26 @@ Uni-Dock logo [![DeepModeling](https://img.shields.io/badge/DeepModeling-Incubating_Project-blue)](https://github.com/deepmodeling) -## Introduction **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](https://pubs.acs.org/doi/10.1021/acs.jctc.2c01145) has been accepted by JCTC (doi: 10.1021/acs.jctc.2c01145). -![Runtime performance of Uni-Dock on different GPUs in three modes](./unidock/assets/gpu_speeds.png) +**Uni-Dock** joins the DeepModeling community, a community devoted of AI for science, as an incubating level project. [Learn more about DeepModeling](https://github.com/deepmodeling/community) -Check this [subfolder](./unidock/) for instructions on installing Uni-Dock. +![Runtime performance of Uni-Dock on different GPUs in three modes](./unidock/assets/gpu_speeds.png) -**Uni-Dock** joins the DeepModeling community, a community devoted of AI for science, as an incubating level project. To learn more about the DeepModeling community, see the [introduction of community](https://github.com/deepmodeling/community). -## UniDockTools +Please check [`unidock` folder](./unidock/) for installing instructions, source codes, and usage. -**UniDockTools** is a python package developed to handle the inputs and outputs of Uni-Dock. -In the future, UniDockTools will support more input formats and scoring functions. We hope it could be an easy-to-use virtual screening workflow for all users. +**Uni-Dock Tools** is a Python package developed to handle the inputs and outputs of Uni-Dock. +It is committed to support more input formats and scoring functions. We hope it could be an easy-to-use virtual screening workflow for users with diversed backgrounds. -Check this [subfolder](./unidock_tools/) for more details. +Please check [`unidock_tools` folder](./unidock_tools/) for installing instructions, source codes, and usage. ## Changelog - 2023-08-21: Upload source codes of Uni-Dock. -- 2023-08-14: Add unidock_tools to support SDF format input for vina and vinardo scoring functions. +- 2023-08-14: Add Uni-Dock Tools to support SDF format input for vina and vinardo scoring functions. ## Citation @@ -34,18 +32,3 @@ 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 diff --git a/unidock/README.md b/unidock/README.md index 558ea57a..438469f3 100644 --- a/unidock/README.md +++ b/unidock/README.md @@ -7,20 +7,6 @@ The [paper](https://pubs.acs.org/doi/10.1021/acs.jctc.2c01145) has been accepted ![Runtime performance of Uni-Dock on different GPUs in three modes](assets/gpu_speeds.png) -## Changelog - -- 2023-08-14: Add `unidock_tools` to support SDF format input for vina and vinardo scoring functions. - -## License - -This project is licensed under the terms of the GNU Lesser General Public License v3.0. See [LICENSE](./LICENSE) for details. - -Developed by [DP Technology](https://dp.tech/en), [Hermite®](https://dp.tech/en/product/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®](https://dp.tech/en/product/hermite) for ultralarge virtual screening. - -For further cooperations on developing Uni-Dock and trying out Hermite®, please contact us at . - ## Installation Uni-Dock officially supports NVIDIA GPUs with [compute capability](https://en.wikipedia.org/wiki/CUDA#GPUs_supported) >= 7.0 on Linux platform. @@ -57,7 +43,7 @@ The performance is not guaranteed on legacy GPU models. To build Uni-Dock with a # Otherwise, prepend the building directory to your `PATH` environment variable. ``` -code foramt +To format codes if changes are made: ```shell cd ./build/ @@ -195,9 +181,33 @@ 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`. -## Bug Report +## Contributing + +We warmly welcome contributions from the open source community. Your bug reports, feature requests, and pull requests helps Uni-Dock improve. + +Please submit bug reports and feature requests to the Github [issue tracker](https://github.com/dptech-corp/Uni-Dock/issues/new/choose). -Please report bugs to [Issues](https://github.com/dptech-corp/Uni-Dock/issues) page. +If you would like to improve the codes, please refer to the [contributing guide](../.github/CONTRIBUTING.md) for details. + +## Changelog + +Major changes are documented. For the detailed changes, please refer to the commit history. + +### v1.1 + +- Optimize 1:1 ligand docking. +- Optimize Monte-Carlo simulation speed. +- Generate compute kernels for various ligands sizes. + +## License + +This project is licensed under the terms of the GNU Lesser General Public License v3.0. See [LICENSE](./LICENSE) for details. + +Developed by [DP Technology](https://dp.tech/en), [Hermite®](https://dp.tech/en/product/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®](https://dp.tech/en/product/hermite) for ultralarge virtual screening. + +For further cooperations on developing Uni-Dock and trying out Hermite®, please contact us at . ## Ackowledgement diff --git a/unidock_tools/README.md b/unidock_tools/README.md index 22d0302f..da15a80d 100644 --- a/unidock_tools/README.md +++ b/unidock_tools/README.md @@ -13,7 +13,7 @@ Main features are: ## Dependency -- Uni-Dock +- [Uni-Dock](../unidock/README.md#installation) - Python >= 3.6 - RDKit - networkx @@ -92,4 +92,4 @@ See [MCDock Usage](./MCDOCK.md#usage) # License -This project is licensed under the terms of Apache license 2.0. See [LICENSE](./LICENSE) for additional details. +This project is licensed under the terms of Apache license 2.0. See [LICENSE](./LICENSE) for additional details. \ No newline at end of file diff --git a/unidock_tools/tests/applications/test_ligprep.py b/unidock_tools/tests/applications/test_ligprep.py index fba62f12..08d42eba 100644 --- a/unidock_tools/tests/applications/test_ligprep.py +++ b/unidock_tools/tests/applications/test_ligprep.py @@ -12,7 +12,7 @@ def input_ligand(): def test_ligprep_app_ligand_file(input_ligand): results_dir = "prepared_ligands" - cmd = f"unidocktools ligprep -l {input_ligand} -sd {results_dir}" + cmd = f"unidocktools ligandprep -l {input_ligand} -sd {results_dir}" print(cmd) resp = subprocess.run(cmd, shell=True, capture_output=True, encoding="utf-8") print(resp.stdout) @@ -25,7 +25,7 @@ def test_ligprep_app_ligand_index(input_ligand): with open(index_file, "w") as f: f.write(input_ligand) results_dir = "prepared_ligands" - cmd = f"unidocktools ligprep -i {index_file} -sd {results_dir}" + cmd = f"unidocktools ligandprep -i {index_file} -sd {results_dir}" print(cmd) resp = subprocess.run(cmd, shell=True, capture_output=True, encoding="utf-8") print(resp.stdout) diff --git a/unidock_tools/tests/applications/test_pdb2pdbqt.py b/unidock_tools/tests/applications/test_proprep.py similarity index 75% rename from unidock_tools/tests/applications/test_pdb2pdbqt.py rename to unidock_tools/tests/applications/test_proprep.py index 8bf9982e..66977be5 100644 --- a/unidock_tools/tests/applications/test_pdb2pdbqt.py +++ b/unidock_tools/tests/applications/test_proprep.py @@ -11,9 +11,9 @@ def pdb_file(): def test_pdb2pdbqt_app(pdb_file): pdbqt_file = "protein.pdbqt" - cmd = f"unidocktools pdb2pdbqt -r {pdb_file} -o {pdbqt_file}" + cmd = f"unidocktools proteinprep -r {pdb_file} -o {pdbqt_file}" print(cmd) resp = subprocess.run(cmd, shell=True, capture_output=True, encoding="utf-8") print(resp.stdout) - assert resp.returncode==0, f"run pdb2pdbqt app err:\n{resp.stderr}" + assert resp.returncode==0, f"run proteinprep app err:\n{resp.stderr}" Path(pdbqt_file).unlink(missing_ok=True) \ No newline at end of file diff --git a/unidock_tools/tests/applications/test_unidock.py b/unidock_tools/tests/applications/test_unidock.py index b8fd44c2..9f49f1fb 100644 --- a/unidock_tools/tests/applications/test_unidock.py +++ b/unidock_tools/tests/applications/test_unidock.py @@ -33,7 +33,7 @@ def read_scores(sdf_file, score_name): def test_unidock_pipeline_default(receptor, ligand, pocket): results_dir = "unidock_results" - cmd = f"unidocktools unidock -r {receptor} -l {ligand} -sd {results_dir} \ + cmd = f"unidocktools unidock_pipeline -r {receptor} -l {ligand} -sd {results_dir} \ -cx {pocket[0]} -cy {pocket[1]} -cz {pocket[2]} -sx {pocket[3]} -sy {pocket[4]} -sz {pocket[5]} \ -sf vina -nm 1" print(cmd) @@ -55,7 +55,7 @@ def test_unidock_pipeline_ligand_index(receptor, ligand, pocket): with open(index_file, "w") as f: f.write(str(ligand)) results_dir = "unidock_results_input_index" - cmd = f"unidocktools unidock -r {receptor} -i {index_file} -sd {results_dir} \ + cmd = f"unidocktools unidock_pipeline -r {receptor} -i {index_file} -sd {results_dir} \ -cx {pocket[0]} -cy {pocket[1]} -cz {pocket[2]} -sx {pocket[3]} -sy {pocket[4]} -sz {pocket[5]} \ -sf vina -nm 1" print(cmd) @@ -95,7 +95,7 @@ def test_unidock_pipeline_ligand_index(receptor, ligand, pocket): def test_unidock_pipeline_multi_pose(receptor, ligand, pocket): results_dir = "unidock_results_multi_pose" - cmd = f"unidocktools unidock -r {receptor} -l {ligand} -sd {results_dir} \ + cmd = f"unidocktools unidock_pipeline -r {receptor} -l {ligand} -sd {results_dir} \ -cx {pocket[0]} -cy {pocket[1]} -cz {pocket[2]} -sx {pocket[3]} -sy {pocket[4]} -sz {pocket[5]} \ -sf vina -nm 4" print(cmd)