{"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/geodiff-a-geometric-diffusion-model-for-1","title":"GeoDiff: a Geometric Diffusion Model for Molecular Conformation Generation","arxiv_id":"2203.02923","date":"2022-03-06","proceeding":"ICLR 2022 4","authors":["Minkai Xu","Lantao Yu","Yang song","Chence Shi","Stefano Ermon","Jian Tang"],"abstract":"Predicting molecular conformations from molecular graphs is a fundamental problem in cheminformatics and drug discovery. Recently, significant progress has been achieved with machine learning approaches, especially with deep generative models. Inspired by the diffusion process in classical non-equilibrium thermodynamics where heated particles will diffuse from original states to a noise distribution, in this paper, we propose a novel generative model named GeoDiff for molecular conformation prediction. GeoDiff treats each atom as a particle and learns to directly reverse the diffusion process (i.e., transforming from a noise distribution to stable conformations) as a Markov chain. Modeling such a generation process is however very challenging as the likelihood of conformations should be roto-translational invariant. We theoretically show that Markov chains evolving with equivariant Markov kernels can induce an invariant distribution by design, and further propose building blocks for the Markov kernels to preserve the desirable equivariance property. The whole framework can be efficiently trained in an end-to-end fashion by optimizing a weighted variational lower bound to the (conditional) likelihood. Experiments on multiple benchmarks show that GeoDiff is superior or comparable to existing state-of-the-art approaches, especially on large molecules.","url_abs":"https://arxiv.org/abs/2203.02923v1","url_pdf":"https://arxiv.org/pdf/2203.02923v1.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":"geodiff-a-geometric-diffusion-model-for-1","repo_url":"https://github.com/minkaixu/geodiff","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"geodiff-a-geometric-diffusion-model-for-1","repo_url":"https://github.com/seonghann/tsdiff","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"drug-discovery","task_name":"Drug Discovery"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.02923","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.02923"}},"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/seonghann/tsdiff","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/minkaixu/geodiff","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_fixture":1,"ran_draft_wrong":1,"ran":2,"unverified":9},"by_repo_kind":{"official":{"samples":14,"ran":5,"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":"ca0cea1ca1eeec89","entry":"get_beta_schedule","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/epsnet/diffusion.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/epsnet/diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca0cea1ca1eeec89"}},{"code_sha256_prefix":"cb49209c125de1b4","entry":"get_timestep_embedding","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/epsnet/diffusion.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/epsnet/diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cb49209c125de1b4"}},{"code_sha256_prefix":"3137073275f8c21a","entry":"nonlinearity","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/epsnet/diffusion.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/epsnet/diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3137073275f8c21a"}},{"code_sha256_prefix":"f5f36de2ea7941ea","entry":"repeat_batch","repo":"minkaixu/geodiff","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/utils/common.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":"f5f36de2ea7941ea"}},{"code_sha256_prefix":"c1f07219e3023a8e","entry":"repeat_data","repo":"minkaixu/geodiff","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/utils/common.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":"c1f07219e3023a8e"}},{"code_sha256_prefix":"27a01a34aebe121a","entry":"assemble_atom_pair_feature","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/common.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/common.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":"27a01a34aebe121a"}},{"code_sha256_prefix":"ab68381cba40254d","entry":"generate_symmetric_edge_noise","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/common.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/common.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":"ab68381cba40254d"}},{"code_sha256_prefix":"5befa7d29d90c70b","entry":"get_distance","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/geometry.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/geometry.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":"5befa7d29d90c70b"}},{"code_sha256_prefix":"9709623b5759d7ad","entry":"get_edge_encoder","repo":"minkaixu/geodiff","repo_kind":"official","path":"models/encoder/edge.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/models/encoder/edge.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":"9709623b5759d7ad"}},{"code_sha256_prefix":"331254d07dafb6ca","entry":"get_ensemble_energy","repo":"minkaixu/geodiff","repo_kind":"official","path":"eval_prop.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/eval_prop.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":"331254d07dafb6ca"}},{"code_sha256_prefix":"4c6d0b3e84364cbc","entry":"get_optimizer","repo":"minkaixu/geodiff","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/utils/common.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":"4c6d0b3e84364cbc"}},{"code_sha256_prefix":"b5ea28e5e1631ede","entry":"get_prop_matrix","repo":"minkaixu/geodiff","repo_kind":"official","path":"eval_prop.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/eval_prop.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":"b5ea28e5e1631ede"}},{"code_sha256_prefix":"5ad06a60ad46fa2e","entry":"set_conformer_positions","repo":"minkaixu/geodiff","repo_kind":"official","path":"utils/chem.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/utils/chem.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":"5ad06a60ad46fa2e"}},{"code_sha256_prefix":"4738ff7d50f1b6c7","entry":"update_data_rdmol_positions","repo":"minkaixu/geodiff","repo_kind":"official","path":"utils/chem.py","file_url":"https://github.com/minkaixu/geodiff/blob/HEAD/utils/chem.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":"4738ff7d50f1b6c7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}