{"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/geomol-torsional-geometric-generation-of","title":"GeoMol: Torsional Geometric Generation of Molecular 3D Conformer Ensembles","arxiv_id":"2106.07802","date":"2021-06-08","proceeding":"NeurIPS 2021 12","authors":["Octavian-Eugen Ganea","Lagnajit Pattanaik","Connor W. Coley","Regina Barzilay","Klavs F. Jensen","William H. Green","Tommi S. Jaakkola"],"abstract":"Prediction of a molecule's 3D conformer ensemble from the molecular graph holds a key role in areas of cheminformatics and drug discovery. Existing generative models have several drawbacks including lack of modeling important molecular geometry elements (e.g. torsion angles), separate optimization stages prone to error accumulation, and the need for structure fine-tuning based on approximate classical force-fields or computationally expensive methods such as metadynamics with approximate quantum mechanics calculations at each geometry. We propose GeoMol--an end-to-end, non-autoregressive and SE(3)-invariant machine learning approach to generate distributions of low-energy molecular 3D conformers. Leveraging the power of message passing neural networks (MPNNs) to capture local and global graph information, we predict local atomic 3D structures and torsion angles, avoiding unnecessary over-parameterization of the geometric degrees of freedom (e.g. one angle per non-terminal bond). Such local predictions suffice both for the training loss computation, as well as for the full deterministic conformer assembly (at test time). We devise a non-adversarial optimal transport based loss function to promote diverse conformer generation. GeoMol predominantly outperforms popular open-source, commercial, or state-of-the-art machine learning (ML) models, while achieving significant speed-ups. We expect such differentiable 3D structure generators to significantly impact molecular modeling and related applications.","url_abs":"https://arxiv.org/abs/2106.07802v1","url_pdf":"https://arxiv.org/pdf/2106.07802v1.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":"geomol-torsional-geometric-generation-of","repo_url":"https://github.com/PattanaikL/GeoMol","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"drug-discovery","task_name":"Drug Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2106.07802","atlas_url":"https://app.syntology.ai/?focus=2106.07802","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.07802"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/PattanaikL/GeoMol","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":14,"ran":0,"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":"fdc6dfef50dc96a5","entry":"align_coords_Kabsch","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/cycle_utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/cycle_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":"fdc6dfef50dc96a5"}},{"code_sha256_prefix":"f3b6b2dc21ade673","entry":"build_lr_scheduler","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/training.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/training.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":"f3b6b2dc21ade673"}},{"code_sha256_prefix":"c53f106655f17cee","entry":"create_logger","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"utils.py","file_url":"https://github.com/PattanaikL/GeoMol/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":"c53f106655f17cee"}},{"code_sha256_prefix":"27e50d18e39112b5","entry":"dict_to_str","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"utils.py","file_url":"https://github.com/PattanaikL/GeoMol/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":"27e50d18e39112b5"}},{"code_sha256_prefix":"e693f25a1bb24d46","entry":"get_current_cycle_indices","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/cycle_utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/cycle_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":"e693f25a1bb24d46"}},{"code_sha256_prefix":"4e06e9c15ee22a8d","entry":"get_cycle_indices","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/cycle_utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/cycle_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":"4e06e9c15ee22a8d"}},{"code_sha256_prefix":"2e822d9e573cc527","entry":"get_leaf_hydrogens","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/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":"2e822d9e573cc527"}},{"code_sha256_prefix":"5a9ab5d161c9a73a","entry":"get_neighbor_bonds","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/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":"5a9ab5d161c9a73a"}},{"code_sha256_prefix":"fda3759e6eb6e75b","entry":"get_neighbor_ids","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/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":"fda3759e6eb6e75b"}},{"code_sha256_prefix":"6951294bc9abd0f3","entry":"one_k_encoding","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/featurization.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/featurization.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":"6951294bc9abd0f3"}},{"code_sha256_prefix":"95bfca8bb584d202","entry":"set_hyperparams","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/parsing.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/parsing.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":"95bfca8bb584d202"}},{"code_sha256_prefix":"161ef3d3ca57875b","entry":"string_representer","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"utils.py","file_url":"https://github.com/PattanaikL/GeoMol/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":"161ef3d3ca57875b"}},{"code_sha256_prefix":"63f6decfce240abe","entry":"test","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/training.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/training.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":"63f6decfce240abe"}},{"code_sha256_prefix":"2297b4a1ae504ecf","entry":"train","repo":"PattanaikL/GeoMol","repo_kind":"official","path":"model/training.py","file_url":"https://github.com/PattanaikL/GeoMol/blob/HEAD/model/training.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":"2297b4a1ae504ecf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}