{"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/structure-based-drug-design-with-equivariant","title":"Structure-based Drug Design with Equivariant Diffusion Models","arxiv_id":"2210.13695","date":"2022-10-24","proceeding":null,"authors":["Arne Schneuing","Charles Harris","Yuanqi Du","Kieran Didi","Arian Jamasb","Ilia Igashov","Weitao Du","Carla Gomes","Tom Blundell","Pietro Lio","Max Welling","Michael Bronstein","Bruno Correia"],"abstract":"Structure-based drug design (SBDD) aims to design small-molecule ligands that bind with high affinity and specificity to pre-determined protein targets. Generative SBDD methods leverage structural data of drugs in complex with their protein targets to propose new drug candidates. These approaches typically place one atom at a time in an autoregressive fashion using the binding pocket as well as previously added ligand atoms as context in each step. Recently a surge of diffusion generative models has entered this domain which hold promise to capture the statistical properties of natural ligands more faithfully. However, most existing methods focus exclusively on bottom-up de novo design of compounds or tackle other drug development challenges with task-specific models. The latter requires curation of suitable datasets, careful engineering of the models and retraining from scratch for each task. Here we show how a single pre-trained diffusion model can be applied to a broader range of problems, such as off-the-shelf property optimization, explicit negative design, and partial molecular design with inpainting. We formulate SBDD as a 3D-conditional generation problem and present DiffSBDD, an SE(3)-equivariant diffusion model that generates novel ligands conditioned on protein pockets. Our in silico experiments demonstrate that DiffSBDD captures the statistics of the ground truth data effectively. Furthermore, we show how additional constraints can be used to improve the generated drug candidates according to a variety of computational metrics. These results support the assumption that diffusion models represent the complex distribution of structural data more accurately than previous methods, and are able to incorporate additional design objectives and constraints changing nothing but the sampling strategy.","url_abs":"https://arxiv.org/abs/2210.13695v3","url_pdf":"https://arxiv.org/pdf/2210.13695v3.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":"structure-based-drug-design-with-equivariant","repo_url":"https://github.com/arneschneuing/diffsbdd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"structure-based-drug-design-with-equivariant","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":"drug-design","task_name":"Drug Design"},{"task_slug":"specificity","task_name":"Specificity"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2210.13695","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.13695"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/arneschneuing/diffsbdd","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chenruduan/oareactdiff","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"unverified":5},"by_repo_kind":{"official":{"samples":8,"ran":3,"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":"c81e137b6d163914","entry":"get_bb_transform","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"geometry_utils.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/geometry_utils.py","link_basis":"harvester_set","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":"c81e137b6d163914"}},{"code_sha256_prefix":"be813c0c5a49cea2","entry":"get_n_nodes","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"process_crossdock.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/process_crossdock.py","link_basis":"harvester_set","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":"be813c0c5a49cea2"}},{"code_sha256_prefix":"cf32ddf40be29175","entry":"rotation_matrix","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"geometry_utils.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/geometry_utils.py","link_basis":"harvester_set","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":"cf32ddf40be29175"}},{"code_sha256_prefix":"7f62ceaa80a2427c","entry":"filter_and_flatten","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"process_bindingmoad.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/process_bindingmoad.py","link_basis":"harvester_set","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":"7f62ceaa80a2427c"}},{"code_sha256_prefix":"975b957da34b7db7","entry":"get_grad_norm","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"utils.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/utils.py","link_basis":"harvester_set","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":"975b957da34b7db7"}},{"code_sha256_prefix":"a05fbc2a9d5ee01c","entry":"read_label_file","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"process_bindingmoad.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/process_bindingmoad.py","link_basis":"harvester_set","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":"a05fbc2a9d5ee01c"}},{"code_sha256_prefix":"ff5d5f7240e49c90","entry":"residues_to_atoms","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"utils.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/utils.py","link_basis":"harvester_set","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":"ff5d5f7240e49c90"}},{"code_sha256_prefix":"f69f2334c7ce9784","entry":"reverse_tensor","repo":"arneschneuing/diffsbdd","repo_kind":"official","path":"utils.py","file_url":"https://github.com/arneschneuing/diffsbdd/blob/HEAD/utils.py","link_basis":"harvester_set","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":"f69f2334c7ce9784"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}