{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/diffdock-diffusion-steps-twists-and-turns-for","title":"DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking","arxiv_id":"2210.01776","date":"2022-10-04","proceeding":null,"authors":["Gabriele Corso","Hannes Stärk","Bowen Jing","Regina Barzilay","Tommi Jaakkola"],"abstract":"Predicting the binding structure of a small molecule ligand to a protein -- a task known as molecular docking -- is critical to drug design. Recent deep learning methods that treat docking as a regression problem have decreased runtime compared to traditional search-based methods but have yet to offer substantial improvements in accuracy. We instead frame molecular docking as a generative modeling problem and develop DiffDock, a diffusion generative model over the non-Euclidean manifold of ligand poses. To do so, we map this manifold to the product space of the degrees of freedom (translational, rotational, and torsional) involved in docking and develop an efficient diffusion process on this space. Empirically, DiffDock obtains a 38% top-1 success rate (RMSD<2A) on PDBBind, significantly outperforming the previous state-of-the-art of traditional docking (23%) and deep learning (20%) methods. Moreover, while previous methods are not able to dock on computationally folded structures (maximum accuracy 10.4%), DiffDock maintains significantly higher precision (21.7%). Finally, DiffDock has fast inference times and provides confidence estimates with high selective accuracy.","url_abs":"https://arxiv.org/abs/2210.01776v2","url_pdf":"https://arxiv.org/pdf/2210.01776v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"diffdock-diffusion-steps-twists-and-turns-for","repo_url":"https://github.com/gcorso/diffdock","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"diffdock-diffusion-steps-twists-and-turns-for","repo_url":"https://github.com/chenruduan/oareactdiff","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"blind-docking","task_name":"Blind Docking"},{"task_slug":"drug-design","task_name":"Drug Design"},{"task_slug":"molecular-docking","task_name":"Molecular Docking"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"DIFFDOCK (40)","rank_in_archive_order":2,"of":14,"metrics":{"Top-1 RMSD (%<2)":"38.2±1.0","Top-1 RMSD (Med.)":"3.30±0.11"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"DIFFDOCK (10)","rank_in_archive_order":3,"of":14,"metrics":{"Top-1 RMSD (%<2)":"35.0±1.4","Top-1 RMSD (Med.)":"3.56±0.05"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"EQUIBIND+GNINA","rank_in_archive_order":5,"of":14,"metrics":{"Top-1 RMSD (%<2)":" 28.8"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"GNINA","rank_in_archive_order":7,"of":14,"metrics":{"Top-1 RMSD (%<2)":"22.9","Top-1 RMSD (Med.)":"7.7"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"GLIDE","rank_in_archive_order":8,"of":14,"metrics":{"Top-1 RMSD (%<2)":"21.8","Top-1 RMSD (Med.)":"9.3"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"QVINAW","rank_in_archive_order":9,"of":14,"metrics":{"Top-1 RMSD (%<2)":" 20.9"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"P2RANK+SMINA","rank_in_archive_order":10,"of":14,"metrics":{"Top-1 RMSD (%<2)":" 20.4","Top-1 RMSD (Med.)":" 6.9"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"SMINA","rank_in_archive_order":11,"of":14,"metrics":{"Top-1 RMSD (%<2)":" 18.7","Top-1 RMSD (Med.)":"7.1 "},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"TANKBIND","rank_in_archive_order":13,"of":14,"metrics":{"Top-1 RMSD (Med.)":"4.0"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind","task":"Blind Docking","dataset":"PDBBind","model":"P2RANK+GNINA","rank_in_archive_order":14,"of":14,"metrics":{"Top-1 RMSD (Med.)":"5.5"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind-1","task":"Blind Docking","dataset":"PDBbind","model":"P2RANK+SMINA","rank_in_archive_order":2,"of":4,"metrics":{"Top-1 RMSD (%<2)":" 20.4"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind-1","task":"Blind Docking","dataset":"PDBbind","model":"EQUIBIND+GNINA","rank_in_archive_order":3,"of":4,"metrics":{"Top-1 RMSD (Med.)":"4.9"},"uses_additional_data":false},{"leaderboard":"/sota/blind-docking-on-pdbbind-1","task":"Blind Docking","dataset":"PDBbind","model":"GNINA","rank_in_archive_order":4,"of":4,"metrics":{"Top-1 RMSD (Med.)":" 7.7"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2210.01776","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.01776"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/gcorso/DiffDock","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/rlabduke/reduce","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/HannesStark/EquiBind","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/rdk/p2rank","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gcorso/diffdock","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chenruduan/oareactdiff","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":4,"ran_violates":1,"ran":1,"ran_fixture":1,"unverified":5},"by_repo_kind":{"official":{"samples":12,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"dd1fc8af16f94740","entry":"_get_formatter","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dd1fc8af16f94740"}},{"code_sha256_prefix":"8b2cbf9f7298d8ad","entry":"get_logger","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8b2cbf9f7298d8ad"}},{"code_sha256_prefix":"7d1feb05f26a2576","entry":"is_iterable","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7d1feb05f26a2576"}},{"code_sha256_prefix":"81d3587785b99d33","entry":"modify_conformer_batch","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"81d3587785b99d33"}},{"code_sha256_prefix":"79e085fc404eefab","entry":"modify_conformer_torsion_angles_batch","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"79e085fc404eefab"}},{"code_sha256_prefix":"7f55408373a53a61","entry":"rigid_transform_Kabsch_3D_torch_batch","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7f55408373a53a61"}},{"code_sha256_prefix":"7b74bb496ccfde99","entry":"t_to_sigma","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7b74bb496ccfde99"}},{"code_sha256_prefix":"b5238b72be31068a","entry":"configure_logger","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b5238b72be31068a"}},{"code_sha256_prefix":"cf897b89eedd1053","entry":"crop_beyond","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cf897b89eedd1053"}},{"code_sha256_prefix":"af1877b2200aa411","entry":"remove_all_handlers","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"af1877b2200aa411"}},{"code_sha256_prefix":"ddec9c8dadb825db","entry":"sampling","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ddec9c8dadb825db"}},{"code_sha256_prefix":"3592579cbdbde1ef","entry":"set_time","repo":"gcorso/diffdock","repo_kind":"official","path":"utils/sampling.py","file_url":"https://github.com/gcorso/diffdock/blob/HEAD/utils/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3592579cbdbde1ef"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}