{"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/metalic-meta-learning-in-context-with-protein","title":"Metalic: Meta-Learning In-Context with Protein Language Models","arxiv_id":"2410.08355","date":"2024-10-10","proceeding":null,"authors":["Jacob Beck","Shikha Surana","Manus McAuliffe","Oliver Bent","Thomas D. Barrett","Juan Jose Garau Luis","Paul Duckworth"],"abstract":"Predicting the biophysical and functional properties of proteins is essential for in silico protein design. Machine learning has emerged as a promising technique for such prediction tasks. However, the relative scarcity of in vitro annotations means that these models often have little, or no, specific data on the desired fitness prediction task. As a result of limited data, protein language models (PLMs) are typically trained on general protein sequence modeling tasks, and then fine-tuned, or applied zero-shot, to protein fitness prediction. When no task data is available, the models make strong assumptions about the correlation between the protein sequence likelihood and fitness scores. In contrast, we propose meta-learning over a distribution of standard fitness prediction tasks, and demonstrate positive transfer to unseen fitness prediction tasks. Our method, called Metalic (Meta-Learning In-Context), uses in-context learning and fine-tuning, when data is available, to adapt to new tasks. Crucially, fine-tuning enables considerable generalization, even though it is not accounted for during meta-training. Our fine-tuned models achieve strong results with 18 times fewer parameters than state-of-the-art models. Moreover, our method sets a new state-of-the-art in low-data settings on ProteinGym, an established fitness-prediction benchmark. Due to data scarcity, we believe meta-learning will play a pivotal role in advancing protein engineering.","url_abs":"https://arxiv.org/abs/2410.08355v2","url_pdf":"https://arxiv.org/pdf/2410.08355v2.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":"metalic-meta-learning-in-context-with-protein","repo_url":"https://github.com/instadeepai/metalic","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"in-context-learning","task_name":"In-Context Learning"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"prediction","task_name":"Prediction"},{"task_slug":"protein-design","task_name":"Protein Design"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.08355","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.08355"}},"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/instadeepai/metalic","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":10,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"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":"74701b1a5017757a","entry":"full_ranking_bce","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/models/losses.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"74701b1a5017757a"}},{"code_sha256_prefix":"99474d787c5c14b3","entry":"get_device","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/utils.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"99474d787c5c14b3"}},{"code_sha256_prefix":"cf6b0616253db16d","entry":"label_smoothed_ranking_loss","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/models/losses.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cf6b0616253db16d"}},{"code_sha256_prefix":"800fbd05b709b1ff","entry":"load_json","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/io.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/io.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"800fbd05b709b1ff"}},{"code_sha256_prefix":"c0273d113af483cb","entry":"load_yaml","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/io.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/io.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c0273d113af483cb"}},{"code_sha256_prefix":"d884cc8e472e6f1e","entry":"mse","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/tasks/metrics.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/tasks/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d884cc8e472e6f1e"}},{"code_sha256_prefix":"61a7414ab0dba873","entry":"norm_mse","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/tasks/metrics.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/tasks/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"61a7414ab0dba873"}},{"code_sha256_prefix":"35455700ee312018","entry":"read_fasta","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/utils.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"35455700ee312018"}},{"code_sha256_prefix":"361f81985b5d1c16","entry":"read_msa","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/utils.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"361f81985b5d1c16"}},{"code_sha256_prefix":"105f87deadc73752","entry":"standard_mse","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/tasks/metrics.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/tasks/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"105f87deadc73752"}},{"code_sha256_prefix":"d1dcb1c8bd375716","entry":"mse","repo":"instadeepai/metalic","repo_kind":"official","path":"meta/models/losses.py","file_url":"https://github.com/instadeepai/metalic/blob/HEAD/meta/models/losses.py","link_basis":"first_harvest_node","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":"d1dcb1c8bd375716"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}