{"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/a-multi-modal-contrastive-diffusion-model-for","title":"A Multi-Modal Contrastive Diffusion Model for Therapeutic Peptide Generation","arxiv_id":"2312.15665","date":"2023-12-25","proceeding":null,"authors":["Yongkang Wang","Xuan Liu","Feng Huang","Zhankun Xiong","Wen Zhang"],"abstract":"Therapeutic peptides represent a unique class of pharmaceutical agents crucial for the treatment of human diseases. Recently, deep generative models have exhibited remarkable potential for generating therapeutic peptides, but they only utilize sequence or structure information alone, which hinders the performance in generation. In this study, we propose a Multi-Modal Contrastive Diffusion model (MMCD), fusing both sequence and structure modalities in a diffusion framework to co-generate novel peptide sequences and structures. Specifically, MMCD constructs the sequence-modal and structure-modal diffusion models, respectively, and devises a multi-modal contrastive learning strategy with intercontrastive and intra-contrastive in each diffusion timestep, aiming to capture the consistency between two modalities and boost model performance. The inter-contrastive aligns sequences and structures of peptides by maximizing the agreement of their embeddings, while the intra-contrastive differentiates therapeutic and non-therapeutic peptides by maximizing the disagreement of their sequence/structure embeddings simultaneously. The extensive experiments demonstrate that MMCD performs better than other state-of-theart deep generative methods in generating therapeutic peptides across various metrics, including antimicrobial/anticancer score, diversity, and peptide-docking.","url_abs":"https://arxiv.org/abs/2312.15665v2","url_pdf":"https://arxiv.org/pdf/2312.15665v2.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":"a-multi-modal-contrastive-diffusion-model-for","repo_url":"https://github.com/wyky481l/mmcd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"diversity","task_name":"Diversity"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"},{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.15665","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.15665"}},"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/wyky481l/mmcd","reach":{"status":"ok"}}],"summary":{"ran":7,"unverified":4},"by_repo_kind":{"official":{"samples":11,"ran":7,"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":11,"samples":[{"code_sha256_prefix":"eb16345c96520506","entry":"compute_alpha","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/diffusion_util.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/diffusion_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eb16345c96520506"}},{"code_sha256_prefix":"3be3b2db6a953d98","entry":"get_backbone_atom_embedding","repo":"wyky481l/mmcd","repo_kind":"official","path":"modules/structure/encode.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/modules/structure/encode.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3be3b2db6a953d98"}},{"code_sha256_prefix":"44615ce18d103b20","entry":"get_para_schedule","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/diffusion_util.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/diffusion_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"44615ce18d103b20"}},{"code_sha256_prefix":"22e8c42531899b22","entry":"get_timestep_embedding","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/diffusion_util.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/diffusion_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"22e8c42531899b22"}},{"code_sha256_prefix":"bc1fe7803fe2da5d","entry":"index_to_onehot","repo":"wyky481l/mmcd","repo_kind":"official","path":"modules/sequence/encode.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/modules/sequence/encode.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bc1fe7803fe2da5d"}},{"code_sha256_prefix":"2f48abb89828e7c1","entry":"logit_to_index","repo":"wyky481l/mmcd","repo_kind":"official","path":"modules/sequence/encode.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/modules/sequence/encode.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2f48abb89828e7c1"}},{"code_sha256_prefix":"00f30f7846d103be","entry":"multinomial_kl","repo":"wyky481l/mmcd","repo_kind":"official","path":"modules/sequence/encode.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/modules/sequence/encode.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"00f30f7846d103be"}},{"code_sha256_prefix":"cf9cc37efcfc324a","entry":"get_seq_constant_init","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/constant.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/constant.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cf9cc37efcfc324a"}},{"code_sha256_prefix":"51a122d71e1979a0","entry":"sequence_embedding","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/embed/embedding.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/embed/embedding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"51a122d71e1979a0"}},{"code_sha256_prefix":"d3fc6e9a7d5fc0af","entry":"sequence_embedding_from_fastaFile","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/embed/embedding.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/embed/embedding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d3fc6e9a7d5fc0af"}},{"code_sha256_prefix":"1a6e4c615125df1b","entry":"structure_embeddings_from_pdb","repo":"wyky481l/mmcd","repo_kind":"official","path":"util/embed/embedding.py","file_url":"https://github.com/wyky481l/mmcd/blob/HEAD/util/embed/embedding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1a6e4c615125df1b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}