{"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/graph-denoising-diffusion-for-inverse-protein","title":"Graph Denoising Diffusion for Inverse Protein Folding","arxiv_id":"2306.16819","date":"2023-06-29","proceeding":"NeurIPS 2023 11","authors":["Kai Yi","Bingxin Zhou","Yiqing Shen","Pietro Liò","Yu Guang Wang"],"abstract":"Inverse protein folding is challenging due to its inherent one-to-many mapping characteristic, where numerous possible amino acid sequences can fold into a single, identical protein backbone. This task involves not only identifying viable sequences but also representing the sheer diversity of potential solutions. However, existing discriminative models, such as transformer-based auto-regressive models, struggle to encapsulate the diverse range of plausible solutions. In contrast, diffusion probabilistic models, as an emerging genre of generative approaches, offer the potential to generate a diverse set of sequence candidates for determined protein backbones. We propose a novel graph denoising diffusion model for inverse protein folding, where a given protein backbone guides the diffusion process on the corresponding amino acid residue types. The model infers the joint distribution of amino acids conditioned on the nodes' physiochemical properties and local environment. Moreover, we utilize amino acid replacement matrices for the diffusion forward process, encoding the biologically-meaningful prior knowledge of amino acids from their spatial and sequential neighbors as well as themselves, which reduces the sampling space of the generative process. Our model achieves state-of-the-art performance over a set of popular baseline methods in sequence recovery and exhibits great potential in generating diverse protein sequences for a determined protein backbone structure.","url_abs":"https://arxiv.org/abs/2306.16819v2","url_pdf":"https://arxiv.org/pdf/2306.16819v2.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":"graph-denoising-diffusion-for-inverse-protein","repo_url":"https://github.com/ykiiiiii/grade_if","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"protein-folding","task_name":"Protein Folding"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2306.16819","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2306.16819"}},"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/ykiiiiii/GraDe_IF","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ykiiiiii/grade_if","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4,"ran_draft_wrong":3,"ran_honours":2,"ran_violates":2,"unverified":10},"by_repo_kind":{"official":{"samples":21,"ran":11,"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":"01cbb7848fc50864","entry":"PredefinedNoiseScheduleDiscrete","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"01cbb7848fc50864"}},{"code_sha256_prefix":"582b2f1aa69315a0","entry":"batched_index_select","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/egnn_pytorch.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/egnn_pytorch.py","link_basis":"plan_row","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":"582b2f1aa69315a0"}},{"code_sha256_prefix":"227cedce4e185b09","entry":"clip_noise_schedule","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/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":"227cedce4e185b09"}},{"code_sha256_prefix":"826fe75952e9c8fb","entry":"cosine_beta_schedule","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/utils.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"826fe75952e9c8fb"}},{"code_sha256_prefix":"aa5486a3650902d8","entry":"exists","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/egnn_pytorch.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/egnn_pytorch.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aa5486a3650902d8"}},{"code_sha256_prefix":"608e364a9d2376a3","entry":"exists","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/gradeif.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"608e364a9d2376a3"}},{"code_sha256_prefix":"9d3a88ecd04c9fa7","entry":"has_nan_or_inf","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d3a88ecd04c9fa7"}},{"code_sha256_prefix":"4f66ae7f14b3b240","entry":"num_to_groups","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4f66ae7f14b3b240"}},{"code_sha256_prefix":"d92b80051870e976","entry":"safe_div","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/egnn_pytorch.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/egnn_pytorch.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d92b80051870e976"}},{"code_sha256_prefix":"556ccfd77bd3c202","entry":"safe_index","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"dataset_src/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/dataset_src/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":"556ccfd77bd3c202"}},{"code_sha256_prefix":"2cee3f8f2583fd9d","entry":"sum_except_batch","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/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":"2cee3f8f2583fd9d"}},{"code_sha256_prefix":"bf6b44b1a6414f1c","entry":"BlosumTransition","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.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":"bf6b44b1a6414f1c"}},{"code_sha256_prefix":"5f6908aac98fe703","entry":"DiscreteUniformTransition","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.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":"5f6908aac98fe703"}},{"code_sha256_prefix":"eb48da1c7c545b9e","entry":"GraDe_IF","repo":"ykiiiiii/grade_if","repo_kind":"official","path":"diffusion/gradeif.py","file_url":"https://github.com/ykiiiiii/grade_if/blob/HEAD/diffusion/gradeif.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":"eb48da1c7c545b9e"}},{"code_sha256_prefix":"40c02c9bb61dccd1","entry":"dataset_argument","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"dataset_src/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/dataset_src/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":"40c02c9bb61dccd1"}},{"code_sha256_prefix":"53c6f2683e5d4b78","entry":"get_pdb","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"dataset_src/download_pdb.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/dataset_src/download_pdb.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":"53c6f2683e5d4b78"}},{"code_sha256_prefix":"d04f9a6f7f21ed3c","entry":"get_stat","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"dataset_src/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/dataset_src/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":"d04f9a6f7f21ed3c"}},{"code_sha256_prefix":"3edd03452fa3816d","entry":"prepare_graph","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"dataset_src/generate_graph.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/dataset_src/generate_graph.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":"3edd03452fa3816d"}},{"code_sha256_prefix":"ce6e710ab3f70a4e","entry":"rot","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/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":"ce6e710ab3f70a4e"}},{"code_sha256_prefix":"01d34e165ddda4f6","entry":"rot_y","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/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":"01d34e165ddda4f6"}},{"code_sha256_prefix":"65804fe33d6057cf","entry":"rot_z","repo":"ykiiiiii/GraDe_IF","repo_kind":"official","path":"diffusion/model/egnn_pytorch/utils.py","file_url":"https://github.com/ykiiiiii/GraDe_IF/blob/HEAD/diffusion/model/egnn_pytorch/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":"65804fe33d6057cf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}