{"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/protein-design-with-guided-discrete-diffusion-1","title":"Protein Design with Guided Discrete Diffusion","arxiv_id":"2305.20009","date":"2023-05-31","proceeding":"NeurIPS 2023 11","authors":["Nate Gruver","Samuel Stanton","Nathan C. Frey","Tim G. J. Rudner","Isidro Hotzel","Julien Lafrance-Vanasse","Arvind Rajpal","Kyunghyun Cho","Andrew Gordon Wilson"],"abstract":"A popular approach to protein design is to combine a generative model with a discriminative model for conditional sampling. The generative model samples plausible sequences while the discriminative model guides a search for sequences with high fitness. Given its broad success in conditional sampling, classifier-guided diffusion modeling is a promising foundation for protein design, leading many to develop guided diffusion models for structure with inverse folding to recover sequences. In this work, we propose diffusioN Optimized Sampling (NOS), a guidance method for discrete diffusion models that follows gradients in the hidden states of the denoising network. NOS makes it possible to perform design directly in sequence space, circumventing significant limitations of structure-based methods, including scarce data and challenging inverse design. Moreover, we use NOS to generalize LaMBO, a Bayesian optimization procedure for sequence design that facilitates multiple objectives and edit-based constraints. The resulting method, LaMBO-2, enables discrete diffusions and stronger performance with limited edits through a novel application of saliency maps. We apply LaMBO-2 to a real-world protein design task, optimizing antibodies for higher expression yield and binding affinity to several therapeutic targets under locality and developability constraints, attaining a 99% expression rate and 40% binding rate in exploratory in vitro experiments.","url_abs":"https://arxiv.org/abs/2305.20009v2","url_pdf":"https://arxiv.org/pdf/2305.20009v2.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":"protein-design-with-guided-discrete-diffusion-1","repo_url":"https://github.com/ngruver/nos","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"bayesian-optimization","task_name":"Bayesian Optimization"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"protein-design","task_name":"Protein Design"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2305.20009","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2305.20009"}},"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/ngruver/nos","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran":1,"unverified":14},"by_repo_kind":{"official":{"samples":16,"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":"2ab2316ac6fdd869","entry":"betas_for_alpha_bar","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/schedule/noise_schedule.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/schedule/noise_schedule.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":"2ab2316ac6fdd869"}},{"code_sha256_prefix":"6c617b25817f8107","entry":"timestep_embedding","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/nets/util.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/nets/util.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":"6c617b25817f8107"}},{"code_sha256_prefix":"fd26f763d09f5953","entry":"betas_for_alpha_bar2","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/schedule/noise_schedule.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/schedule/noise_schedule.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":"fd26f763d09f5953"}},{"code_sha256_prefix":"ba68ea0d339e00f9","entry":"chains_to_formatted","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/sample.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/sample.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":"ba68ea0d339e00f9"}},{"code_sha256_prefix":"c7011cc258dff6b6","entry":"formatted_to_chains","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/sample.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/sample.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":"c7011cc258dff6b6"}},{"code_sha256_prefix":"14cec0043dedf345","entry":"get_named_beta_schedule","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/schedule/noise_schedule.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/schedule/noise_schedule.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":"14cec0043dedf345"}},{"code_sha256_prefix":"58f8c46fa4402e38","entry":"get_ranges","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/compare_samples.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/compare_samples.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":"58f8c46fa4402e38"}},{"code_sha256_prefix":"000d647ece3c1093","entry":"iglm_perplexity","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/compare_samples.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/compare_samples.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":"000d647ece3c1093"}},{"code_sha256_prefix":"8ad4d05cd69ac220","entry":"infill_metrics_sample","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/compare_samples.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/compare_samples.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":"8ad4d05cd69ac220"}},{"code_sha256_prefix":"a0447d09ab7442d2","entry":"make_tags","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/sample.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/sample.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":"a0447d09ab7442d2"}},{"code_sha256_prefix":"c6234f423e26b09b","entry":"make_wandb_log","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/metrics.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/metrics.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":"c6234f423e26b09b"}},{"code_sha256_prefix":"8c3f4d642b502689","entry":"pad_to_length","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/data.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/data.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":"8c3f4d642b502689"}},{"code_sha256_prefix":"02575eab5609b8d7","entry":"pplm_step","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/model/autoregressive.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/model/autoregressive.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":"02575eab5609b8d7"}},{"code_sha256_prefix":"a063d5b22365eced","entry":"random_sequences","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/data.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/data.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":"a063d5b22365eced"}},{"code_sha256_prefix":"26fe4feb6d44885d","entry":"reformat","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/data.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/data.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":"26fe4feb6d44885d"}},{"code_sha256_prefix":"1854c648c2dc84eb","entry":"regression_labels","repo":"ngruver/nos","repo_kind":"official","path":"seq_models/metrics.py","file_url":"https://github.com/ngruver/nos/blob/HEAD/seq_models/metrics.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":"1854c648c2dc84eb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}