{"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/group-selfies-a-robust-fragment-based","title":"Group SELFIES: A Robust Fragment-Based Molecular String Representation","arxiv_id":"2211.13322","date":"2022-11-23","proceeding":null,"authors":["Austin Cheng","Andy Cai","Santiago Miret","Gustavo Malkomes","Mariano Phielipp","Alán Aspuru-Guzik"],"abstract":"We introduce Group SELFIES, a molecular string representation that leverages group tokens to represent functional groups or entire substructures while maintaining chemical robustness guarantees. Molecular string representations, such as SMILES and SELFIES, serve as the basis for molecular generation and optimization in chemical language models, deep generative models, and evolutionary methods. While SMILES and SELFIES leverage atomic representations, Group SELFIES builds on top of the chemical robustness guarantees of SELFIES by enabling group tokens, thereby creating additional flexibility to the representation. Moreover, the group tokens in Group SELFIES can take advantage of inductive biases of molecular fragments that capture meaningful chemical motifs. The advantages of capturing chemical motifs and flexibility are demonstrated in our experiments, which show that Group SELFIES improves distribution learning of common molecular datasets. Further experiments also show that random sampling of Group SELFIES strings improves the quality of generated molecules compared to regular SELFIES strings. Our open-source implementation of Group SELFIES is available online, which we hope will aid future research in molecular generation and optimization.","url_abs":"https://arxiv.org/abs/2211.13322v1","url_pdf":"https://arxiv.org/pdf/2211.13322v1.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":"group-selfies-a-robust-fragment-based","repo_url":"https://github.com/aspuru-guzik-group/group-selfies","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2211.13322","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2211.13322"}},"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/aspuru-guzik-group/group-selfies","reach":{"status":"ok","spdx":"Apache-2.0"}}],"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":"3520591cc23c9595","entry":"find_next_available","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/group_decoder.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/group_decoder.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3520591cc23c9595"}},{"code_sha256_prefix":"fb596900403bbe31","entry":"get_alphabet_from_selfies","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/selfies_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/selfies_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fb596900403bbe31"}},{"code_sha256_prefix":"8bbd72500b3c4898","entry":"get_attachment_points","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/fragment_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/fragment_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8bbd72500b3c4898"}},{"code_sha256_prefix":"f4c14d9d2317957b","entry":"get_bonding_capacity","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/bond_constraints.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/bond_constraints.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f4c14d9d2317957b"}},{"code_sha256_prefix":"32fdc12223f433f5","entry":"get_preset_constraints","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/bond_constraints.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/bond_constraints.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"32fdc12223f433f5"}},{"code_sha256_prefix":"5abbee63fffd1547","entry":"len_selfies","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/selfies_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/selfies_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5abbee63fffd1547"}},{"code_sha256_prefix":"fc3bc3a290dd0e71","entry":"map_to_smiles","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/group_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/group_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fc3bc3a290dd0e71"}},{"code_sha256_prefix":"b54dccf6f9db3c1f","entry":"merge_list","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/fragment_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/fragment_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b54dccf6f9db3c1f"}},{"code_sha256_prefix":"ab248e43c0596418","entry":"name_to_token","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/group_grammar.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/group_grammar.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ab248e43c0596418"}},{"code_sha256_prefix":"9d7d94f69eeab43f","entry":"process_branch_symbol","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/grammar_rules.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/grammar_rules.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9d7d94f69eeab43f"}},{"code_sha256_prefix":"823657d43f7742e2","entry":"process_ring_symbol","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/grammar_rules.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/grammar_rules.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"823657d43f7742e2"}},{"code_sha256_prefix":"ce0e92c409b8665a","entry":"to_nx","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/utils/group_utils.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/utils/group_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ce0e92c409b8665a"}},{"code_sha256_prefix":"410d3cb9e01623f2","entry":"token_to_name","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/group_grammar.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/group_grammar.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"410d3cb9e01623f2"}},{"code_sha256_prefix":"fedf675c4c98a0de","entry":"update_member_idxs","repo":"aspuru-guzik-group/group-selfies","repo_kind":"official","path":"group_selfies/group_decoder.py","file_url":"https://github.com/aspuru-guzik-group/group-selfies/blob/HEAD/group_selfies/group_decoder.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fedf675c4c98a0de"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}