{"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/geometric-latent-diffusion-models-for-3d","title":"Geometric Latent Diffusion Models for 3D Molecule Generation","arxiv_id":"2305.01140","date":"2023-05-02","proceeding":null,"authors":["Minkai Xu","Alexander Powers","Ron Dror","Stefano Ermon","Jure Leskovec"],"abstract":"Generative models, especially diffusion models (DMs), have achieved promising results for generating feature-rich geometries and advancing foundational science problems such as molecule design. Inspired by the recent huge success of Stable (latent) Diffusion models, we propose a novel and principled method for 3D molecule generation named Geometric Latent Diffusion Models (GeoLDM). GeoLDM is the first latent DM model for the molecular geometry domain, composed of autoencoders encoding structures into continuous latent codes and DMs operating in the latent space. Our key innovation is that for modeling the 3D molecular geometries, we capture its critical roto-translational equivariance constraints by building a point-structured latent space with both invariant scalars and equivariant tensors. Extensive experiments demonstrate that GeoLDM can consistently achieve better performance on multiple molecule generation benchmarks, with up to 7\\% improvement for the valid percentage of large biomolecules. Results also demonstrate GeoLDM's higher capacity for controllable generation thanks to the latent modeling. Code is provided at \\url{https://github.com/MinkaiXu/GeoLDM}.","url_abs":"https://arxiv.org/abs/2305.01140v1","url_pdf":"https://arxiv.org/pdf/2305.01140v1.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":"geometric-latent-diffusion-models-for-3d","repo_url":"https://github.com/minkaixu/geoldm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"geometric-latent-diffusion-models-for-3d","repo_url":"https://github.com/rlacombe/accgeoldm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-molecule-generation","task_name":"3D Molecule Generation"},{"task_slug":"unconditional-molecule-generation","task_name":"Unconditional Molecule Generation"},{"task_slug":null,"task_name":"valid"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/unconditional-molecule-generation-on-qm9","task":"Unconditional Molecule Generation","dataset":"QM9","model":"GeoLDM","rank_in_archive_order":2,"of":4,"metrics":{"Validity":"93.80"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2305.01140","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2305.01140"}},"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/MinkaiXu/GeoLDM","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/minkaixu/geoldm","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rlacombe/accgeoldm","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"ran_draft_wrong":1,"unverified":5},"by_repo_kind":{"official":{"samples":6,"ran":2,"repositories":1},"listed":{"samples":3,"ran":2,"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":"4ed06d5114046b7e","entry":"compute_loss_and_nll","repo":"rlacombe/accgeoldm","repo_kind":"listed","path":"qm9/losses.py","file_url":"https://github.com/rlacombe/accgeoldm/blob/HEAD/qm9/losses.py","link_basis":"plan_row","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":"4ed06d5114046b7e"}},{"code_sha256_prefix":"e372872a463628a7","entry":"random_rotation","repo":"minkaixu/geoldm","repo_kind":"official","path":"utils.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/utils.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e372872a463628a7"}},{"code_sha256_prefix":"90c529ca8e85d3db","entry":"sum_except_batch","repo":"rlacombe/accgeoldm","repo_kind":"listed","path":"qm9/losses.py","file_url":"https://github.com/rlacombe/accgeoldm/blob/HEAD/qm9/losses.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"90c529ca8e85d3db"}},{"code_sha256_prefix":"dfdf6dc1a0720e57","entry":"unsorted_segment_sum","repo":"minkaixu/geoldm","repo_kind":"official","path":"egnn/egnn.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/egnn/egnn.py","link_basis":"harvester_set","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":"dfdf6dc1a0720e57"}},{"code_sha256_prefix":"f576c0a0e0ae29c2","entry":"get_args_gen","repo":"rlacombe/accgeoldm","repo_kind":"listed","path":"eval_conditional_qm9.py","file_url":"https://github.com/rlacombe/accgeoldm/blob/HEAD/eval_conditional_qm9.py","link_basis":"plan_row","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":"f576c0a0e0ae29c2"}},{"code_sha256_prefix":"6ee9e481f2c35447","entry":"get_dataset_info","repo":"minkaixu/geoldm","repo_kind":"official","path":"configs/datasets_config.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/configs/datasets_config.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":"6ee9e481f2c35447"}},{"code_sha256_prefix":"e033860884ced8ac","entry":"gradient_clipping","repo":"minkaixu/geoldm","repo_kind":"official","path":"utils.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/utils.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":"e033860884ced8ac"}},{"code_sha256_prefix":"fc4da23dd75dcb46","entry":"load_model","repo":"minkaixu/geoldm","repo_kind":"official","path":"utils.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/utils.py","link_basis":"plan_row","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":"fc4da23dd75dcb46"}},{"code_sha256_prefix":"edf83b952680cf55","entry":"load_split_data","repo":"minkaixu/geoldm","repo_kind":"official","path":"build_geom_dataset.py","file_url":"https://github.com/minkaixu/geoldm/blob/HEAD/build_geom_dataset.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":"edf83b952680cf55"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}