{"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/arxiv-2509-20719","title":"A Genetic Algorithm for Navigating Synthesizable Molecular Spaces","arxiv_id":"2509.20719","date":"2025-09-25","proceeding":"ICLR","authors":["Alston Lo","Connor W. Coley","Wojciech Matusik"],"abstract":"Inspired by the effectiveness of genetic algorithms and the importance of synthesizability in molecular design, we present SynGA, a simple genetic algorithm that operates directly over synthesis routes. Our method features custom crossover and mutation operators that explicitly constrain it to synthesizable molecular space. By modifying the fitness function, we demonstrate the effectiveness of SynGA on a variety of design tasks, including synthesizable analog search and sample-efficient property optimization, for both 2D and 3D objectives. Furthermore, by coupling SynGA with a machine learning-based filter that focuses the building block set, we boost SynGA to state-of-the-art performance. For property optimization, this manifests as a model-based variant SynGBO, which employs SynGA and block filtering in the inner loop of Bayesian optimization. Since SynGA is lightweight and enforces synthesizability by construction, our hope is that SynGA can not only serve as a strong standalone baseline but also as a versatile module that can be incorporated into larger synthesis-aware workflows in the future.","url_abs":"https://arxiv.org/abs/2509.20719","url_pdf":"https://arxiv.org/pdf/2509.20719","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2509.20719","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.20719"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/alstonlo/synga","reach":null}],"summary":{"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"found_in_text":{"samples":8,"ran":1,"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":"7f32c9e212527220","entry":"synthesis_crossmut","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7f32c9e212527220"}},{"code_sha256_prefix":"038622c9c761de69","entry":"GA","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"038622c9c761de69"}},{"code_sha256_prefix":"2ec43d8dbdad6e8c","entry":"MolecularOptimizer","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"2ec43d8dbdad6e8c"}},{"code_sha256_prefix":"41f92d9f9de1d0fc","entry":"SynthesisGA","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"41f92d9f9de1d0fc"}},{"code_sha256_prefix":"92bcbba5a06c4c7a","entry":"synthesis_cross","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"92bcbba5a06c4c7a"}},{"code_sha256_prefix":"253f865e1c3fdd8b","entry":"synthesis_init","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"253f865e1c3fdd8b"}},{"code_sha256_prefix":"68ad7adf169fc26e","entry":"synthesis_mutate","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"68ad7adf169fc26e"}},{"code_sha256_prefix":"3c5bcdf151d7eda6","entry":"synthesis_start","repo":"alstonlo/synga","repo_kind":"found_in_text","path":"src/optim/synga.py","file_url":"https://github.com/alstonlo/synga/blob/HEAD/src/optim/synga.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":"3c5bcdf151d7eda6"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_api"},"syntology_extracted_results":null}