{"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/generating-3d-molecules-for-target-protein","title":"Generating 3D Molecules for Target Protein Binding","arxiv_id":"2204.09410","date":"2022-04-19","proceeding":null,"authors":["Meng Liu","Youzhi Luo","Kanji Uchino","Koji Maruhashi","Shuiwang Ji"],"abstract":"A fundamental problem in drug discovery is to design molecules that bind to specific proteins. To tackle this problem using machine learning methods, here we propose a novel and effective framework, known as GraphBP, to generate 3D molecules that bind to given proteins by placing atoms of specific types and locations to the given binding site one by one. In particular, at each step, we first employ a 3D graph neural network to obtain geometry-aware and chemically informative representations from the intermediate contextual information. Such context includes the given binding site and atoms placed in the previous steps. Second, to preserve the desirable equivariance property, we select a local reference atom according to the designed auxiliary classifiers and then construct a local spherical coordinate system. Finally, to place a new atom, we generate its atom type and relative location w.r.t. the constructed local coordinate system via a flow model. We also consider generating the variables of interest sequentially to capture the underlying dependencies among them. Experiments demonstrate that our GraphBP is effective to generate 3D molecules with binding ability to target protein binding sites. Our implementation is available at https://github.com/divelab/GraphBP.","url_abs":"https://arxiv.org/abs/2204.09410v2","url_pdf":"https://arxiv.org/pdf/2204.09410v2.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":"generating-3d-molecules-for-target-protein","repo_url":"https://github.com/divelab/graphbp","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"generating-3d-molecules-for-target-protein","repo_url":"https://github.com/edapinenut/cbgbench","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"drug-discovery","task_name":"Drug Discovery"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2204.09410","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2204.09410"}},"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/divelab/GraphBP","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/edapinenut/cbgbench","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/divelab/graphbp","reach":null}],"summary":{"ran":11,"ran_honours":2,"ran_draft_wrong":5,"unverified":15},"by_repo_kind":{"official":{"samples":16,"ran":5,"repositories":1},"listed":{"samples":17,"ran":13,"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":33,"samples":[{"code_sha256_prefix":"34b8212fc9513c9e","entry":"AngularEncoding","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"34b8212fc9513c9e"}},{"code_sha256_prefix":"e24a856c46572f3c","entry":"Envelope","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e24a856c46572f3c"}},{"code_sha256_prefix":"62d1965dd2705ad4","entry":"GaussianSmearing","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"62d1965dd2705ad4"}},{"code_sha256_prefix":"dec3fa39f328fde1","entry":"GaussianSmearing","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"dec3fa39f328fde1"}},{"code_sha256_prefix":"4390133ddddf910d","entry":"Jn","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"4390133ddddf910d"}},{"code_sha256_prefix":"5a3e9439dc4d5004","entry":"Jn_zeros","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"5a3e9439dc4d5004"}},{"code_sha256_prefix":"fca8d29cd38d5526","entry":"MLP","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"fca8d29cd38d5526"}},{"code_sha256_prefix":"e3abbd9f9468836f","entry":"PowerDistEmb","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e3abbd9f9468836f"}},{"code_sha256_prefix":"f07d9cdf1a2e80f0","entry":"Rescale","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"f07d9cdf1a2e80f0"}},{"code_sha256_prefix":"616301f5de123480","entry":"ST_Net_Exp","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"616301f5de123480"}},{"code_sha256_prefix":"ec41f7aaf8662b96","entry":"ShiftedSoftplus","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ec41f7aaf8662b96"}},{"code_sha256_prefix":"8431aee6929c8eaf","entry":"Swish","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"8431aee6929c8eaf"}},{"code_sha256_prefix":"bb93de631c153a73","entry":"dattoxyz","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"bb93de631c153a73"}},{"code_sha256_prefix":"d58d72190fc358d8","entry":"dist_emb","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"d58d72190fc358d8"}},{"code_sha256_prefix":"c50e13d34bdff910","entry":"flow_forward","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c50e13d34bdff910"}},{"code_sha256_prefix":"3cae02bcbcdc54d4","entry":"flow_reverse","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3cae02bcbcdc54d4"}},{"code_sha256_prefix":"473940629e9724bb","entry":"get_angle_emb","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"473940629e9724bb"}},{"code_sha256_prefix":"be3d8f2945b52b90","entry":"register_model","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"be3d8f2945b52b90"}},{"code_sha256_prefix":"f374baee794b32ed","entry":"CFConv","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"f374baee794b32ed"}},{"code_sha256_prefix":"c79cf3bf8df59587","entry":"GraphBP","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c79cf3bf8df59587"}},{"code_sha256_prefix":"597630af9dadde90","entry":"GraphBP","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"597630af9dadde90"}},{"code_sha256_prefix":"80e522911b5c48c7","entry":"InteractionBlock","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"80e522911b5c48c7"}},{"code_sha256_prefix":"a53a8b7742e6a178","entry":"SchNet","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"a53a8b7742e6a178"}},{"code_sha256_prefix":"b7a5f51f383aa0e5","entry":"SchNet","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b7a5f51f383aa0e5"}},{"code_sha256_prefix":"547fcced1643c7a6","entry":"SphericalAngularEncoding","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"547fcced1643c7a6"}},{"code_sha256_prefix":"825919cf2181e127","entry":"angle_emb","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"825919cf2181e127"}},{"code_sha256_prefix":"45d9293a0a306ef5","entry":"associated_legendre_polynomials","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"45d9293a0a306ef5"}},{"code_sha256_prefix":"a252e82f651aed50","entry":"bessel_basis","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"a252e82f651aed50"}},{"code_sha256_prefix":"c0661943ad1eaea4","entry":"get_dist_emb","repo":"edapinenut/cbgbench","repo_kind":"listed","path":"repo/models/autoregression/graphbp.py","file_url":"https://github.com/edapinenut/cbgbench/blob/HEAD/repo/models/autoregression/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c0661943ad1eaea4"}},{"code_sha256_prefix":"3379dd10c2c99ec0","entry":"get_rd_atom_res_id","repo":"divelab/GraphBP","repo_kind":"official","path":"GraphBP/main_eval.py","file_url":"https://github.com/divelab/GraphBP/blob/HEAD/GraphBP/main_eval.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3379dd10c2c99ec0"}},{"code_sha256_prefix":"39b7c249b00f4e9f","entry":"real_sph_harm","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"39b7c249b00f4e9f"}},{"code_sha256_prefix":"3857b573e3c562bb","entry":"sph_harm_prefactor","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3857b573e3c562bb"}},{"code_sha256_prefix":"1389580b692981df","entry":"spherical_bessel_formulas","repo":"divelab/graphbp","repo_kind":"official","path":"GraphBP/model/graphbp.py","file_url":"https://github.com/divelab/graphbp/blob/HEAD/GraphBP/model/graphbp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"1389580b692981df"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}